[BACK]Return to driver_for_quantum_pieri.adb CVS log [TXT][DIR] Up to [local] / OpenXM_contrib / PHC / Ada / Schubert

Annotation of OpenXM_contrib/PHC/Ada/Schubert/driver_for_quantum_pieri.adb, Revision 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 Timing_Package;                     use Timing_Package;
        !             4: with Standard_Floating_Numbers;          use Standard_Floating_Numbers;
        !             5: with Standard_Complex_Numbers;           use Standard_Complex_Numbers;
        !             6: with Standard_Floating_Vectors;
        !             7: with Standard_Natural_Vectors;
        !             8: with Standard_Complex_Vectors;
        !             9: with Standard_Complex_Norms_Equals;      use Standard_Complex_Norms_Equals;
        !            10: with Standard_Natural_Matrices;
        !            11: with Standard_Natural_Matrices_io;       use Standard_Natural_Matrices_io;
        !            12: with Standard_Complex_Matrices;          use Standard_Complex_Matrices;
        !            13: with Standard_Random_Vectors;            use Standard_Random_Vectors;
        !            14: with Standard_Complex_VecMats;           use Standard_Complex_VecMats;
        !            15: with Symbol_Table;                       use Symbol_Table;
        !            16: with Standard_Complex_Polynomials;       use Standard_Complex_Polynomials;
        !            17: with Standard_Complex_Poly_Matrices;
        !            18: with Standard_Complex_Poly_Matrices_io;  use Standard_Complex_Poly_Matrices_io;
        !            19: with Standard_Complex_Poly_Systems;      use Standard_Complex_Poly_Systems;
        !            20: with Standard_Complex_Poly_Systems_io;   use Standard_Complex_Poly_Systems_io;
        !            21: with Standard_Complex_Solutions;         use Standard_Complex_Solutions;
        !            22: with Homotopy;
        !            23: with Drivers_for_Poly_Continuation;      use Drivers_for_Poly_Continuation;
        !            24: with Increment_and_Fix_Continuation;     use Increment_and_Fix_Continuation;
        !            25: with Standard_Root_Refiners;             use Standard_Root_Refiners;
        !            26: with Brackets,Brackets_io;               use Brackets,Brackets_io;
        !            27: with Localization_Posets;                use Localization_Posets;
        !            28: with Localization_Posets_io;             use Localization_Posets_io;
        !            29: with Curves_into_Grassmannian;           use Curves_into_Grassmannian;
        !            30: with Curves_into_Grassmannian_io;        use Curves_into_Grassmannian_io;
        !            31: with Deformation_Posets;                 use Deformation_Posets;
        !            32: with Determinantal_Systems;              use Determinantal_Systems;
        !            33: with Plane_Representations;              use Plane_Representations;
        !            34: with Drivers_for_Input_Planes;           use Drivers_for_Input_planes;
        !            35:
        !            36: procedure Driver_for_Quantum_Pieri
        !            37:                 ( file : in file_type; n,d,q : in natural ) is
        !            38:
        !            39:   function Solution_Plane
        !            40:               ( top,bottom : Bracket;
        !            41:                 locmap : Standard_Natural_Matrices.Matrix;
        !            42:                 mat : Standard_Complex_Matrices.Matrix )
        !            43:               return Solution is
        !            44:
        !            45:   -- DESCRIPTION :
        !            46:   --   Returns the representation of the solution plane as a vector.
        !            47:
        !            48:     solloc : constant Standard_Complex_Vectors.Vector
        !            49:            := Column_Vector_Rep(locmap,Localize(locmap,mat));
        !            50:     sol : Solution(solloc'length);
        !            51:
        !            52:   begin
        !            53:     sol.m := 1;
        !            54:     sol.t := Create(0.0);
        !            55:     sol.res := 0.0;
        !            56:     sol.err := 0.0;
        !            57:     sol.rco := 0.0;
        !            58:     sol.v := solloc;
        !            59:     return sol;
        !            60:   end Solution_Plane;
        !            61:
        !            62:   function Solution_Planes ( top,bottom : Bracket;
        !            63:                              locmap : Standard_Natural_Matrices.Matrix;
        !            64:                              vm : VecMat ) return Solution_List is
        !            65:
        !            66:   -- DESCRIPTION :
        !            67:   --   Returns the representation of the vector of planes as a solution list.
        !            68:
        !            69:     res,res_last : Solution_List;
        !            70:
        !            71:   begin
        !            72:     for i in vm'range loop
        !            73:       Append(res,res_last,Solution_Plane(top,bottom,locmap,vm(i).all));
        !            74:     end loop;
        !            75:     return res;
        !            76:   end Solution_Planes;
        !            77:
        !            78:   function Create_Polynomial_System
        !            79:                ( top,bottom : Bracket;
        !            80:                  locmap : Standard_Natural_Matrices.Matrix;
        !            81:                  xpm : Standard_Complex_Poly_Matrices.Matrix;
        !            82:                  svals : Standard_Complex_Vectors.Vector;
        !            83:                  planes : VecMat ) return Poly_Sys is
        !            84:
        !            85:   -- DESCRIPTION :
        !            86:   --   Returns the polynomial system that collects the intersection
        !            87:   --   conditions for meeting the given m-planes at the specified s-values.
        !            88:   --   The system is localized according to the given localization map.
        !            89:
        !            90:     res,wrksys : Poly_Sys(svals'range);
        !            91:
        !            92:   begin
        !            93:     for i in svals'range loop
        !            94:       declare
        !            95:         eva : Standard_Complex_Poly_Matrices.Matrix(xpm'range(1),xpm'range(2))
        !            96:             := Elim(xpm,svals(i),Create(1.0));
        !            97:         wrk : constant Poly_Sys := Polynomial_Equations(planes(i).all,eva);
        !            98:       begin
        !            99:         wrksys(i) := wrk(wrk'first);
        !           100:         Standard_Complex_Poly_Matrices.Clear(eva);
        !           101:       end;
        !           102:     end loop;
        !           103:     res := Column_Localize(top,bottom,locmap,wrksys);
        !           104:     Clear(wrksys);
        !           105:     return res;
        !           106:   end Create_Polynomial_System;
        !           107:
        !           108:   procedure Refine_Roots ( file : in file_type;
        !           109:                            p : in Poly_Sys; sols : in out Solution_List ) is
        !           110:
        !           111:   -- DESCRIPTION :
        !           112:   --   Calls the root refiner, for square polynomial systems only.
        !           113:
        !           114:     epsxa : constant double_float := 10.0**(-8);
        !           115:     epsfa : constant double_float := 10.0**(-8);
        !           116:     tolsing : constant double_float := 10.0**(-8);
        !           117:     max : constant natural := 3;
        !           118:     numit : natural := 0;
        !           119:
        !           120:   begin
        !           121:     Reporting_Root_Refiner(file,p,sols,epsxa,epsfa,tolsing,numit,max,false);
        !           122:   end Refine_Roots;
        !           123:
        !           124:   procedure Solve_Target_System
        !           125:                ( file : in file_type; start,target : in Poly_Sys;
        !           126:                  sols : in out Solution_List; report : in boolean ) is
        !           127:
        !           128:   -- DESCRIPTION :
        !           129:   --   Calls the standard continuation routines to solve a specific
        !           130:   --   target system, starting at the solutions of the start system.
        !           131:
        !           132:   -- REQUIRED : not Is_Null(sols).
        !           133:
        !           134:     timer : Timing_Widget;
        !           135:     n : constant natural := target'last;
        !           136:     a : Standard_Complex_Vectors.Vector(1..n) := Random_Vector(1,n);
        !           137:     b : Standard_Complex_Vectors.Vector(1..n) := Random_Vector(1,n);
        !           138:
        !           139:   begin
        !           140:     tstart(timer);
        !           141:     Homotopy.Create(target,start,1,a,b,true);        -- linear cheater
        !           142:     Set_Continuation_Parameter(sols,Create(0.0));
        !           143:     declare
        !           144:       procedure Sil_Cont is
        !           145:         new Silent_Continue(Max_Norm,
        !           146:                             Homotopy.Eval,Homotopy.Diff,Homotopy.Diff);
        !           147:       procedure Rep_Cont is
        !           148:         new Reporting_Continue(Max_Norm,
        !           149:                                Homotopy.Eval,Homotopy.Diff,Homotopy.Diff);
        !           150:     begin
        !           151:       if report
        !           152:        then Rep_Cont(file,sols,false,Create(1.0));
        !           153:        else Sil_Cont(sols,false,Create(1.0));
        !           154:       end if;
        !           155:     end;
        !           156:     tstop(timer);
        !           157:     new_line(file);
        !           158:     print_times(file,timer,"Cheater's homotopy to target system");
        !           159:     Refine_Roots(file,target,sols);
        !           160:   end Solve_Target_System;
        !           161:
        !           162:   procedure Solve_Hypersurface_Target_System
        !           163:                      ( file : in file_type; m,p,q : in natural;
        !           164:                        start_svals,target_svals
        !           165:                          : in Standard_Complex_Vectors.Vector;
        !           166:                        start_planes,target_planes : in VecMat;
        !           167:                        index_poset : in Array_of_Array_of_Nodes;
        !           168:                        deform_poset : in Array_of_Array_of_VecMats;
        !           169:                        report : in boolean ) is
        !           170:
        !           171:   -- DESCRIPTION :
        !           172:   --   This procedure tests the output of the deformation poset,
        !           173:   --   creating polynomial representations of the intersection conditions
        !           174:   --   and solution lists representing the solution planes.
        !           175:
        !           176:   -- ON ENTRY :
        !           177:   --   file            to write intermediate output on;
        !           178:   --   m               dimension of the input planes;
        !           179:   --   p               dimension of the solution planes;
        !           180:   --   q               degree of the maps;
        !           181:   --   start_svals     interpolation points at the start;
        !           182:   --   target_svals    interpolation points at the target;
        !           183:   --   start_planes    input m-planes in general position;
        !           184:   --   target_planes   specific input m-planes;
        !           185:   --   index_poset     indexed localization poset;
        !           186:   --   deform_poset    poset with the solution p-planes;
        !           187:   --   report          switch for intermediate output during continuation.
        !           188:
        !           189:     dim : constant natural := m*p+q*(m+p);
        !           190:     top : constant Bracket := index_poset(dim)(1).top;
        !           191:     bot : constant Bracket := index_poset(dim)(1).bottom;
        !           192:     xpm : Standard_Complex_Poly_Matrices.Matrix(1..m+p,1..p)
        !           193:         := Symbolic_Create(m,p,q,top,bot);
        !           194:     solplanes : constant VecMat := deform_poset(dim)(1).all;
        !           195:     locmap : Standard_Natural_Matrices.Matrix(1..(m+p)*(q+1),1..p)
        !           196:            := Standard_Coordinate_Frame(m,p,q,top,bot,solplanes(1).all);
        !           197:     locsys : Poly_Sys(start_planes'range)
        !           198:            := Create_Polynomial_System
        !           199:                 (top,bot,locmap,xpm,start_svals,start_planes);
        !           200:     target : Poly_Sys(target_planes'range)
        !           201:            := Create_Polynomial_System
        !           202:                 (top,bot,locmap,xpm,target_svals,target_planes);
        !           203:     sols : Solution_List := Solution_Planes(top,bot,locmap,solplanes);
        !           204:
        !           205:   begin
        !           206:     One_Set_up_Symbol_Table(m,p,q,top,bot);
        !           207:     new_line(file);
        !           208:     put(file,"The "); put(file,q,1); put(file,"-map of "); put(file,p,1);
        !           209:     put_line(file,"-planes representation : ");
        !           210:     put(file,xpm);
        !           211:     put_line(file,"with as localization map :"); put(file,locmap);
        !           212:     new_line(file);
        !           213:     Reduce_Symbols(top,bot,locmap);
        !           214:     put_line(file,"THE GENERIC SYSTEM : ");
        !           215:     put_line(file,locsys);
        !           216:     new_line(file);
        !           217:     Refine_Roots(file,locsys,sols);
        !           218:     new_line(file);
        !           219:     put_line(file,"THE TARGET SYSTEM : ");
        !           220:     put_line(file,target);
        !           221:     new_line(file);
        !           222:     Solve_Target_System(file,locsys,target,sols,report);
        !           223:   end Solve_Hypersurface_Target_System;
        !           224:
        !           225:   procedure Set_Parameters ( file : in file_type; report : out boolean ) is
        !           226:
        !           227:   -- DESCRIPTION :
        !           228:   --   Interactive determination of the continuation and output parameters.
        !           229:
        !           230:     oc : natural;
        !           231:
        !           232:   begin
        !           233:     new_line;
        !           234:     Driver_for_Continuation_Parameters(file);
        !           235:     new_line;
        !           236:     Driver_for_Process_io(file,oc);
        !           237:     report := not (oc = 0);
        !           238:     new_line;
        !           239:     put_line("No more input expected.  See output file for results...");
        !           240:     new_line;
        !           241:     new_line(file);
        !           242:   end Set_Parameters;
        !           243:
        !           244:   procedure Write_Poset_Times
        !           245:                ( file : in file_type; timer : in Timing_Widget;
        !           246:                  npaths : in Standard_Natural_Vectors.Vector;
        !           247:                  timings : in Duration_Array ) is
        !           248:
        !           249:   -- DESCRIPTION :
        !           250:   --   Writes a overview of #paths and timings spent during deformations
        !           251:   --   along the poset structure.
        !           252:
        !           253:   begin
        !           254:     new_line(file);
        !           255:     put_line(file,"--------------------------------------");
        !           256:     put_line(file,"|    TIMING INFORMATION OVERVIEW     |");
        !           257:     put_line(file,"--------------------------------------");
        !           258:     put_line(file,"|   n   |  #paths  |  user cpu time  |");
        !           259:     put_line(file,"--------------------------------------");
        !           260:     for i in npaths'range loop
        !           261:       if npaths(i) /= 0
        !           262:        then put(file,"|"); put(file,i,4); put(file,"   |");
        !           263:             put(file,npaths(i),7);        put(file,"   | ");
        !           264:             print_hms(file,timings(i));   put(file,"  |"); new_line(file);
        !           265:       end if;
        !           266:     end loop;
        !           267:     put_line(file,"--------------------------------------");
        !           268:     put(file,"| total |");
        !           269:     put(file,Standard_Natural_Vectors.Sum(npaths),7);
        !           270:     put(file,"   | ");
        !           271:     print_hms(file,Elapsed_User_Time(timer));
        !           272:     put(file,"  |"); new_line(file);
        !           273:     put_line(file,"--------------------------------------");
        !           274:   end Write_Poset_Times;
        !           275:
        !           276:   procedure Solve_Deformation_Poset
        !           277:               ( file : in file_type; m,p,q : in natural;
        !           278:                 index_poset : in out Array_of_Array_of_Nodes ) is
        !           279:
        !           280:   -- DESCRIPTION :
        !           281:   --   Writes the symbolic form of the maps.
        !           282:
        !           283:     lnd : Link_to_Node;
        !           284:     deform_poset : Array_of_Array_of_VecMats(index_poset'range)
        !           285:                  := Create(index_poset);
        !           286:     dim : constant natural := (m*p)+q*(m+p);
        !           287:     input : VecMat(1..dim) := Random_Complex_Planes(m,p,q);
        !           288:     svals : Standard_Complex_Vectors.Vector(1..dim) := Random_Vector(1,dim);
        !           289:     target_planes : VecMat(1..dim);
        !           290:     target_svals : Standard_Floating_Vectors.Vector(1..dim);
        !           291:     comp_target_svals : Standard_Complex_Vectors.Vector(1..dim);
        !           292:     root : Node := index_poset(dim)(1).all;
        !           293:     ans : character;
        !           294:     report,outlog : boolean;
        !           295:     timer : Timing_Widget;
        !           296:     npaths : Standard_Natural_Vectors.Vector(1..dim) := (1..dim => 0);
        !           297:     timings : Duration_Array(1..dim) := (1..dim => 0.0);
        !           298:
        !           299:   begin
        !           300:     new_line;
        !           301:     put("Do you want to have the homotopies on file ? (y/n) ");
        !           302:     Ask_Yes_or_No(ans);
        !           303:     outlog := (ans = 'y');
        !           304:     Driver_for_Input_Planes(file,m,p,q,target_svals,target_planes);
        !           305:     Set_Parameters(file,report);
        !           306:     tstart(timer);
        !           307:     Solve(file,m+p,q,deform_poset,root,input,svals,report,outlog,
        !           308:           npaths,timings);
        !           309:     tstop(timer);
        !           310:     new_line(file);
        !           311:     print_times(file,timer,"Solving along the deformation poset");
        !           312:     Write_Poset_Times(file,timer,npaths,timings);
        !           313:     for i in target_svals'range loop
        !           314:       comp_target_svals(i) := Create(target_svals(i));
        !           315:     end loop;
        !           316:     Solve_Hypersurface_Target_System
        !           317:       (file,m,p,q,svals,comp_target_svals,input,target_planes,
        !           318:        index_poset,deform_poset,report);
        !           319:   end Solve_Deformation_Poset;
        !           320:
        !           321:   procedure Create_Hypersurface_Localization_Poset
        !           322:                 ( file : in file_type;
        !           323:                   lnkroot : in Link_to_Node; m,p,q : in natural ) is
        !           324:
        !           325:   -- DESCRIPTION :
        !           326:   --   Creates the posets and outputs them to the screen and on file.
        !           327:   --   Calls the solver afterwards.
        !           328:
        !           329:     nq : constant natural := m*p + q*(m+p);
        !           330:     level_poset : Array_of_Nodes(0..nq);
        !           331:     index_poset : Array_of_Array_of_Nodes(0..nq);
        !           332:     nbp : natural;
        !           333:
        !           334:   begin
        !           335:     level_poset := Create_Leveled_Poset(lnkroot);
        !           336:     Count_Roots(level_poset);
        !           337:     index_poset := Create_Indexed_Poset(level_poset);
        !           338:     put(index_poset);
        !           339:     put(file,index_poset);
        !           340:     put_line("The size of the poset : "); put_roco(index_poset);
        !           341:     put_line(file,"The size of the poset : "); put_roco(file,index_poset);
        !           342:     nbp := Root_Count_Sum(level_poset);
        !           343:     put("The number of paths : "); put(nbp,1); new_line;
        !           344:     put(file,"The number of paths : "); put(file,nbp,1); new_line(file);
        !           345:     Solve_Deformation_Poset(file,m,p,q,index_poset);
        !           346:   end Create_Hypersurface_Localization_Poset;
        !           347:
        !           348:   procedure Create_General_Localization_Poset
        !           349:                 ( file : in file_type; lnkroot : in Link_to_Node;
        !           350:                   m,p,q : in natural; codim : in Bracket ) is
        !           351:
        !           352:   -- DESCRIPTION :
        !           353:   --   Creates the posets and outputs them to the screen and on file.
        !           354:
        !           355:     nq : constant natural := m*p + q*(m+p);
        !           356:     level_poset : Array_of_Nodes(0..nq);
        !           357:     index_poset : Array_of_Array_of_Nodes(0..nq);
        !           358:     nbp : natural;
        !           359:
        !           360:   begin
        !           361:     level_poset := Create_Leveled_Poset(lnkroot);
        !           362:     Count_Roots(level_poset);
        !           363:     index_poset := Create_Indexed_Poset(level_poset);
        !           364:     put(index_poset);
        !           365:     put(file,index_poset);
        !           366:     put_line("The size of the poset : "); put_roco(index_poset);
        !           367:     put_line(file,"The size of the poset : "); put_roco(file,index_poset);
        !           368:     nbp := Root_Count_Sum(level_poset);
        !           369:     put("The number of paths : "); put(nbp,1); new_line;
        !           370:     put(file,"The number of paths : "); put(file,nbp,1); new_line(file);
        !           371:    -- Solve_Deformation_Poset(file,m,p,q,index_poset);
        !           372:   end Create_General_Localization_Poset;
        !           373:
        !           374:   procedure Create_Top_Hypersurface_Poset
        !           375:                ( file : in file_type; m,p,q : in natural ) is
        !           376:
        !           377:   -- DESCRIPTION :
        !           378:   --   Creates the poset by incrementing only top pivots.
        !           379:
        !           380:     timer : Timing_Widget;
        !           381:     root : Node(p) := Trivial_Root(m,p,q);
        !           382:     lnkroot : Link_to_Node := new Node'(root);
        !           383:
        !           384:   begin
        !           385:     tstart(timer);
        !           386:     Q_Top_Create(lnkroot,root.bottom(p),m+p);
        !           387:     put_line("The poset created from the top : ");
        !           388:     put_line(file,"The poset created from the top : ");
        !           389:     Create_Hypersurface_Localization_Poset(file,lnkroot,m,p,q);
        !           390:     tstop(timer);
        !           391:     new_line(file);
        !           392:     print_times(file,timer,"Total time for Quantum Pieri Homotopy Algorithm");
        !           393:   end Create_Top_Hypersurface_Poset;
        !           394:
        !           395:   procedure Create_Bottom_Hypersurface_Poset
        !           396:                ( file : in file_type; m,p,q : in natural ) is
        !           397:
        !           398:   -- DESCRIPTION :
        !           399:   --   Creates the poset by decrementing only bottom pivots.
        !           400:
        !           401:     timer : Timing_Widget;
        !           402:     root : Node(p) := Trivial_Root(m,p,q);
        !           403:     lnkroot : Link_to_Node := new Node'(root);
        !           404:
        !           405:   begin
        !           406:     tstart(timer);
        !           407:     Q_Bottom_Create(lnkroot,m+p);
        !           408:     put_line("The poset created from the bottom : ");
        !           409:     put_line(file,"The poset created from the bottom : ");
        !           410:     Create_Hypersurface_Localization_Poset(file,lnkroot,m,p,q);
        !           411:     tstop(timer);
        !           412:     new_line(file);
        !           413:     print_times(file,timer,"Total time for Quantum Pieri Homotopy Algorithm");
        !           414:   end Create_Bottom_Hypersurface_Poset;
        !           415:
        !           416:   procedure Create_Mixed_Hypersurface_Poset
        !           417:                ( file : in file_type; m,p,q : in natural ) is
        !           418:
        !           419:   -- DESCRIPTION :
        !           420:   --   Creates the poset by incrementing top and decrementing bottom pivots.
        !           421:
        !           422:     timer : Timing_Widget;
        !           423:     root : Node(p) := Trivial_Root(m,p,q);
        !           424:     lnkroot : Link_to_Node := new Node'(root);
        !           425:
        !           426:   begin
        !           427:     tstart(timer);
        !           428:     Q_Top_Bottom_Create(lnkroot,root.bottom(p),m+p);
        !           429:     put_line("The poset created in a mixed fashion : ");
        !           430:     put_line(file,"The poset created in a mixed fashion :");
        !           431:     Create_Hypersurface_Localization_Poset(file,lnkroot,m,p,q);
        !           432:     tstop(timer);
        !           433:     new_line(file);
        !           434:     print_times(file,timer,"Total time for Quantum Pieri Homotopy Algorithm");
        !           435:   end Create_Mixed_Hypersurface_Poset;
        !           436:
        !           437:   procedure Create_Top_General_Poset
        !           438:                ( file : in file_type; m,p,q : in natural ) is
        !           439:
        !           440:   -- DESCRIPTION :
        !           441:   --   Creates the poset by incrementing top pivots.
        !           442:
        !           443:     timer : Timing_Widget;
        !           444:     root : Node(p) := Trivial_Root(m,p,q);
        !           445:     lnkroot : Link_to_Node := new Node'(root);
        !           446:     codim : constant Bracket := Read_Codimensions(m,p,q);
        !           447:
        !           448:   begin
        !           449:     tstart(timer);
        !           450:     Q_Top_Create(lnkroot,codim,root.bottom(p),m+p);
        !           451:     put_line("The poset created from the top : ");
        !           452:     put_line(file,"The poset created from the top :");
        !           453:     Create_General_Localization_Poset(file,lnkroot,m,p,q,codim);
        !           454:     tstop(timer);
        !           455:     new_line(file);
        !           456:     print_times(file,timer,"Total time for Quantum Pieri Homotopy Algorithm");
        !           457:   end Create_Top_General_Poset;
        !           458:
        !           459:   procedure Create_Bottom_General_Poset
        !           460:                ( file : in file_type; m,p,q : in natural ) is
        !           461:
        !           462:   -- DESCRIPTION :
        !           463:   --   Creates the poset by decrementing bottom pivots.
        !           464:
        !           465:     timer : Timing_Widget;
        !           466:     root : Node(p) := Trivial_Root(m,p,q);
        !           467:     lnkroot : Link_to_Node := new Node'(root);
        !           468:     codim : constant Bracket := Read_Codimensions(m,p,q);
        !           469:
        !           470:   begin
        !           471:     tstart(timer);
        !           472:     Q_Bottom_Create(lnkroot,codim,m+p);
        !           473:     put_line("The poset created from the bottom : ");
        !           474:     put_line(file,"The poset created from the bottom :");
        !           475:     Create_General_Localization_Poset(file,lnkroot,m,p,q,codim);
        !           476:     tstop(timer);
        !           477:     new_line(file);
        !           478:     print_times(file,timer,"Total time for Quantum Pieri Homotopy Algorithm");
        !           479:   end Create_Bottom_General_Poset;
        !           480:
        !           481:   procedure Create_Mixed_General_Poset
        !           482:                ( file : in file_type; m,p,q : in natural ) is
        !           483:
        !           484:   -- DESCRIPTION :
        !           485:   --   Creates the poset by incrementing top and decrementing bottom pivots.
        !           486:
        !           487:     timer : Timing_Widget;
        !           488:     root : Node(p) := Trivial_Root(m,p,q);
        !           489:     lnkroot : Link_to_Node := new Node'(root);
        !           490:     codim : constant Bracket := Read_Codimensions(m,p,q);
        !           491:
        !           492:   begin
        !           493:     tstart(timer);
        !           494:     Q_Top_Bottom_Create(lnkroot,codim,root.bottom(p),m+p);
        !           495:     put_line("The poset created from the bottom : ");
        !           496:     put_line(file,"The poset created from the bottom :");
        !           497:     Create_General_Localization_Poset(file,lnkroot,m,p,q,codim);
        !           498:     tstop(timer);
        !           499:     new_line(file);
        !           500:     print_times(file,timer,"Total time for Quantum Pieri Homotopy Algorithm");
        !           501:   end Create_Mixed_General_Poset;
        !           502:
        !           503:   procedure Main is
        !           504:
        !           505:     p : constant natural := d;
        !           506:     m : constant natural := n-d;
        !           507:     ans : character;
        !           508:
        !           509:   begin
        !           510:     new_line;
        !           511:     put_line("MENU for interpolating maps of fixed degree in Grassmannian.");
        !           512:     put_line("  1. k_i = 1  consistently incrementing top pivots.");
        !           513:     put_line("  2.          consistently decrementing bottom pivots.");
        !           514:     put_line("  3.          mixed top-bottom sequence for poset creation.");
        !           515:     put_line("  4. k_i >= 1 consistently incrementing top pivots.");
        !           516:     put_line("  5.          consistently incrementing bottom pivots.");
        !           517:     put_line("  6.          mixed top-bottom sequence for poset creation.");
        !           518:     put("Type 1, 2, 3, 4, 5, or 6 to choose : ");
        !           519:     Ask_Alternative(ans,"123456");
        !           520:     new_line;
        !           521:     case ans is
        !           522:       when '1' => Create_Top_Hypersurface_Poset(file,m,p,q);
        !           523:       when '2' => Create_Bottom_Hypersurface_Poset(file,m,p,q);
        !           524:       when '3' => Create_Mixed_Hypersurface_Poset(file,m,p,q);
        !           525:       when '4' => Create_Top_General_Poset(file,m,p,q);
        !           526:       when '5' => Create_Bottom_General_Poset(file,m,p,q);
        !           527:       when '6' => Create_Mixed_General_Poset(file,m,p,q);
        !           528:       when others => put_line("Option not recognized.  Please try again.");
        !           529:     end case;
        !           530:   end Main;
        !           531:
        !           532: begin
        !           533:   Main;
        !           534: end Driver_for_Quantum_Pieri;

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