[BACK]Return to ts_conint.adb CVS log [TXT][DIR] Up to [local] / OpenXM_contrib / PHC / Ada / Root_Counts / Stalift

Annotation of OpenXM_contrib/PHC/Ada/Root_Counts/Stalift/ts_conint.adb, Revision 1.1.1.1

1.1       maekawa     1: with text_io,integer_io;                 use text_io,integer_io;
                      2: with Communications_with_User;           use Communications_with_User;
                      3: with Numbers_io;                         use Numbers_io;
                      4: with Standard_Integer_Vectors;           use Standard_Integer_Vectors;
                      5: with Standard_Integer_Vectors_io;        use Standard_Integer_Vectors_io;
                      6: with Standard_Integer_Matrices;          use Standard_Integer_Matrices;
                      7: with Standard_Integer_Matrices_io;       use Standard_Integer_Matrices_io;
                      8: with Standard_Complex_Poly_Systems;      use Standard_Complex_Poly_Systems;
                      9: with Standard_Complex_Poly_Systems_io;   use Standard_Complex_Poly_Systems_io;
                     10: with Power_Lists;                        use Power_Lists;
                     11: with Lists_of_Integer_Vectors;           use Lists_of_Integer_Vectors;
                     12: with Lists_of_Integer_Vectors_io;        use Lists_of_Integer_Vectors_io;
                     13: with Arrays_of_Integer_Vector_Lists;     use Arrays_of_Integer_Vector_Lists;
                     14: with Arrays_of_Integer_Vector_Lists_io;  use Arrays_of_Integer_Vector_Lists_io;
                     15: with Inner_Normal_Cones;                 use Inner_Normal_Cones;
                     16: with Normal_Cone_Intersections;          use Normal_Cone_Intersections;
                     17: with Normal_Cone_Intersections_io;       use Normal_Cone_Intersections_io;
                     18:
                     19: procedure ts_conint is
                     20:
                     21: -- DESCRIPTION :
                     22: --   Test on the operations of the package Normal_Cone_Intersections.
                     23:
                     24:   procedure Compute_Intersection_Matrix
                     25:               ( supports : in Array_of_Lists; g : in List;
                     26:                 x : Vector; i : in natural ) is
                     27:
                     28:   -- DESCRIPTION :
                     29:   --   Computes and displays the intersection matrix on screen.
                     30:   --   Lists all complementary columns.
                     31:
                     32:     ans : character;
                     33:     n1 : constant natural := supports'length - 1;
                     34:     mg : constant natural := Length_Of(g);
                     35:     nc : constant natural := Number_of_Cones(supports,i);
                     36:     ima : Intersection_Matrix(n1,mg,nc);
                     37:
                     38:     procedure Write_Selection ( cols : in Vector; continue : out boolean ) is
                     39:     begin
                     40:       put("selected columns : "); put(cols); new_line;
                     41:       continue := true;
                     42:     end Write_Selection;
                     43:     procedure Write_Complementary_Columns is
                     44:       new Complementary_Columns(Write_Selection);
                     45:
                     46:     procedure Check_Selection ( cols : in Vector; continue : out boolean ) is
                     47:
                     48:       part : Array_of_Lists(cols'range);
                     49:
                     50:     begin
                     51:       put("selected columns : "); put(cols); new_line;
                     52:       part := Partition(ima,cols,g);
                     53:       put_line("The partition of the set of generators : "); put(part);
                     54:       if Partition_in_Union(part,supports,i,cols)
                     55:        then put_line("The partition is contained in the union of cones.");
                     56:        else put_line("The partition is NOT contained in the union of cones.");
                     57:       end if;
                     58:      -- Deep_Clear(part);
                     59:       put("The point "); put(x); put(" is ");
                     60:       if Contained_in_Union(supports,i,g,ima,cols)   -- double check
                     61:        then put("contained in the union of columns ");
                     62:        else put("not contained in the union of columns ");
                     63:       end if;
                     64:       put(cols); put_line(".");
                     65:       continue := true;
                     66:     end Check_Selection;
                     67:     procedure Check_Complementary_Columns is
                     68:       new Complementary_Columns(Check_Selection);
                     69:
                     70:   begin
                     71:     ima := Create(supports,g,i);
                     72:     put(ima);
                     73:     put_line("The complementary columns :");
                     74:     Write_Complementary_Columns(ima);
                     75:     put("Do you want to check the complementary columns ? (y/n) ");
                     76:     get(ans);
                     77:     if ans = 'y'
                     78:      then Check_Complementary_Columns(ima);
                     79:     end if;
                     80:   end Compute_Intersection_Matrix;
                     81:
                     82:   procedure Test_Intersection_Matrix ( p : in Poly_Sys ) is
                     83:
                     84:   -- DESCRIPTION :
                     85:   --   Allows the computation of intersection matrix of cones
                     86:   --   on the points in the support lists of the polynomial system.
                     87:
                     88:     supp : Array_of_Lists(p'range) := Create(p);
                     89:     genx : List;
                     90:     ind : natural;
                     91:     x : Vector(p'range) := (p'range => 0);
                     92:     ans : character;
                     93:
                     94:   begin
                     95:     loop
                     96:       new_line;
                     97:       put("Give a vector : "); get(x);
                     98:       put("Give an index : "); get(ind);
                     99:       genx := Generators(supp(ind),x);
                    100:       put("The generators of the normal cone at "); put(x); put_line(" :");
                    101:       put(genx);
                    102:       Compute_Intersection_Matrix(supp,genx,x,ind);
                    103:       put("Do you want more tests ? (y/n) "); Ask_Yes_or_No(ans);
                    104:       exit when ans /= 'y';
                    105:     end loop;
                    106:   end Test_Intersection_Matrix;
                    107:
                    108:   procedure Main is
                    109:
                    110:     p : Link_to_Poly_Sys;
                    111:
                    112:   begin
                    113:     new_line;
                    114:     put_line("Testing the intersection of normal cones.");
                    115:     new_line;
                    116:     get(p);
                    117:     Test_Intersection_Matrix(p.all);
                    118:   end Main;
                    119:
                    120: begin
                    121:   Main;
                    122: end ts_conint;

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>