File r37/packages/groebner/groebmes.red artifact 930fac021b part of check-in 3af273af29


module groebmes;
 
 
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
%  trace messages for the algorithms
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

fluid '(vdpvars!* !*trgroeb !*trgroebs !*trgroeb1 !*trgroebr hcount!*
          hzerocount!* factorlevel!* basecount!* groetime!* pcount!*);

symbolic procedure groebpairprint (p);
  <<groebmessff(" pair(",cadr p,nil);
    groebmessff(",",caddr p,nil);
    prin2 "), ";
    prin2 " lcm = ";print car p>>;

symbolic procedure groetimeprint;
   << prin2 ">> accum. cpu time:";
      prin2  (time() - groetime!*);
      prin2t " ms">>;

symbolic procedure groebmessff (m1,f,m2);
      << prin2 m1; prin2 vdpnumber f; 
         if !*gsugar then <<prin2 "/";prin2 gsugar f>>;
         if m2 then prin2t m2 >>;

symbolic procedure groebmess0 (p);
    if !*trgroeb then vdpprint p;

symbolic procedure groebmess1 (g,d);
        if !*trgroeb then <<
               g := g; d := d;
               prin2 " variables: "; print vdpvars!*;
               printbl();
               prin2t " Start of ITERATION "; terpri (); >>;

symbolic procedure groebmess2 f;
  if !*trgroeb then << terpri();
                 groebmessff ("polynomial ",f," eliminated");
                 groetimeprint()>>;

symbolic procedure groebmess2a(f,cf,fn);
  if !*trgroeb then << terpri();
        groebmessff ("polynomial ",f,nil);
        groebmessff (" elim. with cofactor ",cf," to");
        vdpprint fn; terpri(); groetimeprint()>>;

symbolic procedure groebmess3(p,s);
     if !*trgroebs then <<
                       prin2 "S-polynomial from ";
                       groebpairprint p;
                       vdpprint s; terpri();
                            groetimeprint(); terprit 3 >>;

symbolic procedure groebmess4 (p,d);
    << hcount!* := hcount!*+1;
       hzerocount!* := hzerocount!*+1;
      if !*trgroeb then << terpri(); printbl();
                       groebmessff(" reduction (",cadr p,nil);
                       groebmessff(",", caddr p,nil);
                       prin2 ") leads to 0; ";
                       << prin2 n; 
                          prin2 if n=1 then " pair" else " pairs">>
                            where n=length d;
                       prin2t " left";
                       printbl(); groetimeprint()>>; >>;

symbolic procedure groebmess41 (p);
    << hcount!* := hcount!*+1;
       hzerocount!* := hzerocount!*+1;
      if !*trgroeb then << terpri(); printbl();
                       groebmessff(" polynomial(", p,nil);
                       prin2 ") reduced to 0;";
                       terpri(); printbl(); groetimeprint()>> >>;
        
symbolic procedure groebmess5(p,h);
   if car p then 
  << hcount!* := hcount!* + 1;
     if !*trgroeb then << terpri(); prin2  "H-polynomial ";
                       prin2 pcount!*;
                       prin2 " ev:"; prin2 vdpevlmon h;
                       groebmessff(" from pair (",cadr p,nil);
                       groebmessff(",", caddr p,")");
                       vdpprint h; terpri(); groetimeprint() >> >>
     else
     if !*trgroeb then << prin2t "from actual problem input:";
                       vdpprint h; groetimeprint() >>;

symbolic procedure groebmess50(g);
     if !*trgroeb1 then << prin2 "list of active polynomials:";
                      for each d1 in g do 
                           <<prin2 vdpgetprop(d1,'number);
                             prin2 " ">>; terprit 2 >>;

symbolic procedure groebmess51(d);
     if !*trgroeb1 then <<
                      prin2t "Candidates for pairs in this step:";
                      for each d1 in d do groebpairprint (d1);
                            terprit 2 >>;

symbolic procedure groebmess52(d);
     if !*trgroeb1 then <<
                       prin2t "Actual new pairs from this step:";
                       for each d1 in d do groebpairprint (d1);
                            terprit 2 >>;

symbolic procedure groebmess7 h;
   if !*trgroebs then
          <<prin2t "Testing factorization for "; vdpprint h>>;

symbolic procedure groebmess8 (g,d);
        if !*trgroeb1 then <<
            g := g; prin2t " actual pairs: ";
            if null d then prin2t "null"
                      else for each d1 in d do groebpairprint d1;
            groetimeprint() >>
          else if !*trgroeb then <<
              prin2 n; prin2t if n=1 then " pair" else " pairs" >>
                                          where n=length d;

symbolic procedure groebmess13(g,problems);
   if !*trgroeb or !*trgroebr then <<
      if g then << basecount!* := basecount!* +1;
         printbl(); printbl();          
         prin2  "end of iteration ";
         for each f in reverse factorlevel!* do 
                <<prin2 f; prin2 ".">>;
         prin2 "; basis "; prin2 basecount!*; prin2t ":";
         prin2 "{"; for each g1 in g do vdpprin3t g1; prin2t "}";
         printbl(); printbl(); groetimeprint() >>
        else
      << printbl(); prin2  "end of iteration branch ";
         for each f in reverse factorlevel!* do
                      <<prin2 f; prin2 ".">>;
         prin2t "  "; printbl(); groetimeprint()>>;
      if problems and !*trgroeb then
      <<    groetimeprint(); terpri(); printbl();
            prin2 " number of partial problems still to be solved:";
            prin2t length problems; terpri();
            prin2 " preparing  next problem ";
            if car car problems = 'file then prin2 cdr car problems
            else if cadddr car problems then
            vdpprint car cadddr car problems; terpri(); >> >>;

symbolic procedure groebmess14 (h,hf);
   if !*trgroeb then <<
              prin2 "******************* factorization of polynomial ";
               (if x then prin2t x else terpri() )
                           where x = vdpnumber(h);
               prin2t " factors:";
               for each g in hf do vdpprint car g; groetimeprint()>>;

symbolic procedure  groebmess15 f;
    if !*trgroeb then
          <<prin2t "***** monomial factor reduced:";
                   vdpprint vdpfmon(a2vbc 1,f)>>;

symbolic procedure groebmess19(p,restr,u);
    if !*trgroeb then <<
                u := u; restr := restr; printbl();
                prin2  "calculation branch ";
                for each f in reverse factorlevel!* do
                      <<prin2 f; prin2 ".">>;
                prin2t " cancelled because"; vdpprint p;
                prin2t "is member of an actual abort condition";
                printbl(); printbl()>>;

symbolic procedure groebmess19a(p,u);
    if !*trgroeb then << u := u; printbl();
                prin2  "during branch preparation ";
                for each f in reverse u do <<prin2 f; prin2 ".">>;
                prin2t " cancelled because"; vdpprint p;
                prin2t "was found in the ideal branch"; printbl()>>;

symbolic procedure groebmess20 (p);
    if !*trgroeb then <<
               terpri(); prin2 "secondary reduction starting with";
               vdpprint p>>;

symbolic procedure groebmess21(p1,p2);
    if !*trgroeb then <<
               prin2 "polynomial "; prin2 vdpnumber p1;
               prin2 " replaced during secondary reduction by ";
               vdpprint p2>>;

symbolic procedure groebmess22(factl,abort1,abort2);
   if null factl then nil
            else
    if !*trgroeb then
           begin integer n;
               prin2t "BRANCHING after factorization point";
               n := 0; for each x in reverse factl do
                << n := n+1; prin2 "branch ";
                   for each f in reverse factorlevel!* do
                      <<prin2 f;prin2 ".">>;
                   prin2t n; for each y in car x do vdpprint y;
                  prin2t "simple IGNORE restrictions for this branch:";
                   for each y in abort1 do vdpprint y;
                   for each y in cadr x do vdpprint y;
                   if abort2 or caddr x then
                  <<prin2t
                      "set type IGNORE  restrictions for this branch:";
                     for each y in abort2 do vdpprintset y;
                     for each y in caddr x do vdpprintset y >>;
                   printbl()>>;
          end;

symbolic procedure  groebmess23 (g0,rest1,rest2);
    if !*trgroeb then
            if null factorlevel!* then
     prin2t "** starting calculation ******************************"
            else << prin2 "** resuming calculation for branch ";
                 for each f in reverse factorlevel!* do
                      <<prin2 f; prin2 ".">>;
                     terpri(); if rest1 or rest2 then
                       <<
               prin2t "-------IGNORE restrictions for this branch:";
                      g0 := g0; for each x in rest1 do vdpprint x;
                      for each x in rest2 do vdpprintset x>> >>;

symbolic procedure groebmess24(h,problems1,restr);
 %  if !*trgroeb then
      <<prin2t "**********polynomial affected by branch restriction:";
        vdpprint h; if restr then prin2t "under current restrictions";
        for each x in restr do vdpprint x;
        if null problems1 then prin2t "        CANCELLED"
           else <<prin2t "partitioned into";
             vdpprintset car problems1>> >>;

symbolic procedure groebmess25 (h,abort2);
    <<prin2t "reduction of set type cancel conditions by";
      vdpprint h; prin2t "remaining:";
      for each x in abort2 do vdpprintset x>>;

symbolic procedure groebmess26 (f1,f2);
  if !*trgroebs and not vdpequal(f1,f2) then
    <<terpri(); prin2t  "during final reduction";
      vdpprint f1; prin2t "reduced to";
      vdpprint f2; terpri()>>;

symbolic procedure groebmess27 r;
  if !*trgroeb then <<terpri();
      prin2t  "factor ignored (considered already):"; vdpprint r>>;

symbolic procedure groebmess27a (h,r);
  if !*trgroeb then
    <<terpri();   vdpprint h;
      prin2t  "     reduced to zero by factor"; vdpprint r>>;

symbolic procedure groebmess28 r;
  if !*trgroeb then
    <<writepri("interim content reduction:", 'first);
      writepri(mkquote prepsq r, 'last)>>;

symbolic procedure groebmess29 omega;
   if !*trgroeb then
    <<terpri(); prin2 "actual weight vector: [";
      for each x in omega do <<prin2 " "; prin2 x>>; prin2 "]";
     terpri(); terpri()>>;

symbolic procedure groebmess30 gomegaplus;
    if !*trgroeb and gomegaplus then
     <<terpri(); prin2 "new head term (or full) basis "; terpri();
       for each x in gomegaplus do <<vdpprint x; terpri()>> >>;

symbolic procedure groebmess31 gg;    
     if !*trgroeb then <<prin2 "full basis"; terpri();
       for each x in gg do <<vdpprint x; terpri(); terpri() >> >>;

symbolic procedure groebmess32 g;
     if !*trgroeb then <<terpri();
       prin2 "***** start of iteation with"; terpri();
       for each x in g do vdpprint x;
       prin2 "****************************";
       terpri()>>;
   
symbolic procedure groebmess33 g;
      if !*trgroeb then
      <<terpri(); prin2 "***** resulting system *****"; terpri();
        for each x in g do vdpprint x;
        prin2 "****************************"; terpri()>>;

symbolic procedure groebmess34 mx;
       if !*trgroeb then
       <<terpri(); prin2 "sum of weight vector "; print mx;
         terpri()>>;

symbolic procedure groebmess35 omega;
       if !*trgroeb then
       <<terpri(); prin2 "next weight vector "; print omega;
         terpri()>>;

symbolic procedure groebmess36 tt;
       if !*trgroeb then
       <<terpri(); prin2 "new weight: "; print tt>>;

symbolic procedure groebmess37 s;
       if !*trgroeb then
       <<if not s then prin2 "NOT "; prin2 "taking initials";
         terpri(); terpri()>>;

symbolic procedure printbl(); printb (linelength nil #- 2); 

symbolic procedure printb n; <<for i:=1:n do prin2 "-"; terpri()>>;

symbolic procedure vdpprintset l;
   if l then << prin2 "{"; vdpprin2 car l;
        for each x in cdr l do <<prin2 "; "; vdpprin2 x>>;
      prin2t "}";>>;

symbolic procedure vdpprin2l u;
     <<prin2 "("; vdpprin2 car u;
       for each x in cdr u do <<prin2 ","; vdpprin2 x;>>;
            prin2 ")";>>;

endmodule;
end;


REDUCE Historical
REDUCE Sourceforge Project | Historical SVN Repository | GitHub Mirror | SourceHut Mirror | NotABug Mirror | Chisel Mirror | Chisel RSS ]