this bug is on sourceforge -- [ 1450519 ] Segfault computing syzygies

=============================================================================

I've been using .92, getting segfaults in big
calculations, and this morning discovered .98. More
segfaults. Here's some code that segfaults in about two
minutes.

------------------------------------------------
syze = 5; -- for 3 and 4, no segfault

R = QQ[t, x_(1,1) .. x_(syze,syze)];

X = matrix apply(syze, i->apply(syze, j->x_(i+1,j+1)));

SlowerPart = M -> matrix apply(syze, i->apply(syze,
j->(if (i>j)
then M_(i,j) else 0)));
brake = A -> {A-SlowerPart(A),SlowerPart(A)};
cpl = (p1,p2)->{p1_0 * p2_0, SlowerPart(p1_0*p2_1 +
p1_1*p2_0)}
cp = (A,B)->(p := cpl(brake(A),brake(B)); p_0 + p_1)

Xcp3 = cp(X,cp(X,X));
I3 = ideal Xcp3;

print "Computing syzygies";
sy = syz gens I3;
------------------------------------------------

It only gets up to 15% memory usage on this machine, so
that shouldn't be an issue. I'm not running this in emacs.


=============================================================================

Followups:

Comments

Date: 2006-05-19 14:13
Sender: dangraysonProject Admin
Logged In: YES 
user_id=494917

Mike, let Allen know whether there is anything to be done,
or whether his problem just leads to too large a
computation, in which case we should close this bug report.
 I'm assigning it to you.
							

Date: 2006-05-06 18:59
Sender: dangraysonProject Admin
Logged In: YES 
user_id=494917

I ran your code on a 64 bit machine with 16GB ram, and
limiting it to 6GB, it took only 11 minutes to fill memory
and then it died with an out of memory error message.

It found 4001 basis elements and 13742 syzygies as it worked
its way up to degree 10 almost.

I don't know why M2 didn't terminate gracefully for
you. 
Maybe I've fixed something.  In any case, it seems your
problem is not realistically solvable.

I'll have Mike take a look at it.


							

Date: 2006-05-06 17:26
Sender: aknaton
Logged In: YES 
user_id=1476959

It's not my machine. Is it still possible for me to work
with shared libraries? The more out-of-the-box solution the
better, really; not a very deep philosophy but I'm
sticking
with it.

I imagine the machine is 32 bit. But just in case I'm
wrong,
here's /proc/cpuinfo.

processor       : 0
vendor_id       : AuthenticAMD
cpu family      : 15
model           : 5
model name      : AMD Opteron(tm) Processor 248
stepping        : 8
cpu MHz         : 2193.779
cache size      : 1024 KB
fpu             : yes
fpu_exception   : yes
cpuid level     : 1
wp              : yes
flags           : fpu vme de pse tsc msr pae mce cx8 apic
sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2
syscall nx mmxext lm 3dnowext 3dnow
bogomips        : 4308.99
TLB size        : 1088 4K pages
clflush size    : 64
cache_alignment : 64
address sizes   : 40 bits physical, 48 bits virtual
power management: ts ttp

							

Date: 2006-05-06 14:19
Sender: dangraysonProject Admin
Logged In: YES 
user_id=494917

The garbage collector we use, gc by Hans Boehm, seems to
have a 1GB limit built in.  I asked the author about it, and
he told me how to compile it (-DUSE_MMAP) to get past that
limit.  I did and that works well.

This is an argument in favor of distributing the binaries
with shared libraries instead of linking statically, for
then I could just give you another library.  I assume your
machine is 32 bit, in which case 3GB will be the limit
ultimately.  Or do you have access to a 64 bit machine?  If
so, you should switch.

							

Date: 2006-05-05 21:18
Sender: aknaton
Logged In: YES 
user_id=1476959

Making the only change gbTrace=3, it now dies with an "out
of memory" complaint, when it has only used 15% of the
machine's memory (I was watching with top, and there was
plenty free). The results are attached, in case they're of
any use.
							

Date: 2006-05-05 20:50
Sender: dangraysonProject Admin
Logged In: YES 
user_id=494917

with gbTrace=3 you'll see how it's making progress on
the
syzygies, and Mike may be able to tell something from that
during a postmortem.  But the best way is to compile a
debugging version and run it in gdb, and for Mike to be the
one running it.  I think he may actually have a machine that
could handle that.

							

Date: 2006-05-05 20:40
Sender: aknaton
Logged In: YES 
user_id=1476959

8 gig. It got to 35.2% and stayed exactly there for at least
a week.
							

Date: 2006-05-05 19:58
Sender: dangraysonProject Admin
Logged In: YES 
user_id=494917

How much memory do you have?  I just ran it again and it ran
out of memory in a little while, using at least 800MB, and
probably dieing at 1024MB.

							

Date: 2006-05-04 23:51
Sender: aknaton
Logged In: YES 
user_id=1476959

This ran for several days at syze=5, and I'm pretty sure
it
froze (in the syz step), because it hit a certain memory
usage  and stayed exactly there for the next week. Then
after a couple of weeks it died. It never ran out of memory.
Is there more debugging information I could be printing out
that would be of use?
							

Date: 2006-03-21 14:12
Sender: dangraysonProject Admin
Logged In: YES 
user_id=494917

I think we have fixed this.  M2 should terminate with a
message about being out of memory.

							

Date: 2006-03-21 00:01
Sender: dangraysonProject Admin
Logged In: YES 
user_id=494917

Your code actually does run out of memory on my machine and
on Mike's.  Usually when we run out of memory we succeed
in
giving an error message instead of crashing, but your code
shows that's not always true.  We've found where those
spots
in our code are and will fix them and let you know.


							

=============================================================================

-- 5out file:

-----------------------------------------------------------------------------

i1 : syze = 5;

i2 : chequing = false;

i3 : gbTrace=3;

i4 : 
     -- 3/16/06
     -- This should tell me some of the equations I'm missing in the
     -- normal cone degeneration of {M^3=0}. 
     -- That Grobner basis calculation dies, so instead I'll just compute
     -- the syzygy module of the initial forms (of the obvious equations),
     -- and see which such combinations of the actual equations are nontrivial.
     -- 3/27/06
     -- In moving from .92 to .95 (or .98) the divideByVariable has broken.
     -- This is the .98 version.
     
     R = QQ[t, x_(1,1) .. x_(syze,syze), 
          m_(1,1) .. m_(syze,syze),
          s1_(1,1) .. s1_(syze,2)];

i5 : 
     X = matrix apply(syze, i->apply(syze, j->x_(i+1,j+1)));

             5       5
o5 : Matrix R  <--- R

i6 : M = matrix apply(syze, i->apply(syze, j->m_(i+1,j+1)));

             5       5
o6 : Matrix R  <--- R

i7 : Mgens = gens ideal M; -- just for use as placeholders 

             1       25
o7 : Matrix R  <--- R

i8 : 
     cols = A->apply(entries transpose A,r->matrix apply(r,i->{i}));

i9 : -- rows = A->apply(entries A,r->matrix {r});
     
     matrixapply = (M,f)->matrix apply(entries M,r->apply(r,f))

o9 = matrixapply

o9 : Function

i10 : divByVar = (p,v)->(flatten entries ((divideByVariable(matrix {{p}},v))_0))_0

o10 = divByVar

o10 : Function

i11 : 
      SupperPart = M -> matrix apply(syze, i->apply(syze, j->(if (i<j) 
      	       then M_(i,j) else 0)));

i12 : diagPart   = M -> matrix apply(syze, i->apply(syze, j->(if (i==j) 
      	       then M_(i,i) else 0)));

i13 : SlowerPart = M -> matrix apply(syze, i->apply(syze, j->(if (i>j) 
      	       then M_(i,j) else 0)));

i14 : ent = (M,i,j)->(M_(i%syze,j%syze));

i15 : 
      -- this is the only part that should depend on the degeneration
      Xt = SupperPart(X) + diagPart(X) + t*SlowerPart(X);

              5       5
o15 : Matrix R  <--- R

i16 : -- this is the only part that should depend on the ideal. IMt redefined below!
      IMt = flatten entries Xt^3;

i17 : ph  = flatten flatten {entries M}; -- placeholders

i18 : 
      IMt = apply(IMt,elt->divByVar(elt,t)); 
{1}(1)m{1}(1)m{1}(1)m{1}(1)m{1}(1)m{1}(1)m{1}(1)m{1}(1)m{1}(1)m{1}(1)m
   -- {1}(1)m{1}(1)m{1}(1)m{1}(1)m{1}(1)m{1}(1)m{1}(1)m{1}(1)m{1}(1)m{1}(1)m{1}(1)m
   -- {1}(1)m{1}(1)m{1}(1)m{1}(1)m
i19 : IM  = apply(IMt,elt->elt % ideal(t-1));
{1}(1)m{1}(1)m{1}(1)m{1}(1)m{1}(1)m{1}(1)m{1}(1)m
   -- {1}(1)m{1}(1)m{1}(1)m{1}(1)m{1}(1)m{1}(1)m{1}(1)m{1}(1)m{1}(1)m{1}(1)m{1}(1)m
   -- {1}(1)m{1}(1)m{1}(1)m{1}(1)m{1}(1)m{1}(1)m{1}(1)m
i20 : initIMt = apply(IMt, elt->(elt % (ideal t)));

i21 : gIt = matrix {IMt}; -- the wtd generators of my Grobner? basis

              1       25
o21 : Matrix R  <--- R

i22 : gI2 = matrix {initIMt}; -- their leading terms

              1       25
o22 : Matrix R  <--- R

i23 : I  = ideal IM;   -- the original scheme, ignoring t

o23 : Ideal of R

i24 : It = ideal gIt;  -- the naive Grobner family (may have t-torsion)

o24 : Ideal of R

i25 : I2 = ideal gI2;  -- the zero fiber, spread out

o25 : Ideal of R

i26 : 
      if (chequing) then (
           print "Finding the flat extension";
           oldIt := It;
           F = It : (ideal t); -- this will be the flat family, with no t-torsion
           while (oldIt != F) do (oldIt = F; F = F : (ideal t););
           );

i27 : 
      print "Computing syzygies";Computing syzygies

{3}(25)mmmmmmmmmmmmmmmmmmmmmmmm
   -- m{4}(60)zmzzmmmzzzmmmmmmmmmmmmmmzmmmmzzmmmzmzmzmmmmzzmmzzmmmzzzzzzzz
   -- {5}(153)zmomommmmmmmmmmzzzmmmmommzmmzzzmmmzzmmzmzzzzzmmmmommmmmooooozzozoozmzzmzzo
   -- mozzzzmmzzmoozzzmmmmmmzzzmmzzozzzmzzzmmzmzozzzozzmzoozozozzoozzzzzzzzzzzzzz
   -- zzzz{6}(586)zzmzzzzzzzzzzmmmmmmmzzmmmzmmzzzzzzzzzzzzmzzzzzzzzzzzzzmmmmmmmmm
   -- mzmzmmzzzzmzmmmmmmmmmmmmmooooooooooooomoooomzzmzmmzmmzzzmozzmzmzmzzzzzzzzzm
   -- mmzzzzzzzzzmmzmmmmmzzmzzzzmmmzozmmmzzmzzomomzzozzzzzzmozozzzmmmmoomzmmmmmzz
   -- mmmmmmmmmmmmmmmmzzzmzmmmzmmmmmzzzzzzmmzzzzzzmzzzmzzmzmomzmmmzzzzzzzmzzzzzzm
   -- mmzzmmzzzzzmzmzzzmzzzzzmzmzmzmzmmmzzzzzzzzmzommzzzzmmmzzzzzzzzzzzzzzzzzzzzz
   -- zzzzzzzmzzzmmmzzzzmzmzzommmzzmmzmmzommmmmmzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz
   -- ozzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz
   -- zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz
   -- {7}(1849)zzmzmmzmmzmmzmzmmzzmmzzzzzzzzzzmzzzmzzzozzzmmmozmzzzzzmzzmzzmzzzzzzzzmzzzz
   -- zzzmzmzmzzmzzzzzmmmmmommmmmmmmmmmzzzmmmmmmmmmmmmmmmzzmmmzoommoomoozzoozmzmm
   -- mmmmmmmmzmzmmoozmmzzzzzzzzmmmmmmmozmmmozzmmmoommmmmzmmooooozoooooozmzmmmzmm
   -- zzzzmmzmzzmzmmzzzzzmzzzzzzzzzzzzzzzzzzmmmmmmmmmmzzzzmzmmmmmmmmmmmmomomoozmm
   -- mmmmmmmzzzmmmzzmmmommzmmmmmzzmmmmzzmzzmmmmzzmzzmmmmmzzmmmzzzzmmomzzmmmmzzmz
   -- mmmmzzzzzzmmzzmzzzzzzzzzzzzzomzzzzzzzzzzzzzzzmzzzzzzmmmzzmmzzmmzmmmmmmzzzzz
   -- zzmzmozzzmzzzmmmzzzzmozzmmmmzzzzzzzzzzmzzzzzzzzzzzzmzzzzzzzzzmzzzmzzzzmmzmm
   -- mmmmmzzzzmzzzzmmzzommmzmmmmmzzzzzmzzzmzzomozzzzzzommmmozoommmmzzzmmzozzommz
   -- zzzzzzzzzzzzomommmzmmmzzzzmmzzzzzzmzzzzzzzzzzzzmozzzzzzommzzmzzmzzoomzzzzzz
   -- zozmzzmzmzzzzoozmmmzzzzzzozzzzzzzzozommmzmmmzzzzzzozzzzzzzzzzzzzzzzzzzzzzzz
   -- zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzmzzozzzmmoooommoomozmmmommmmm
   -- mzzzzzzzzzzzzzzzzzmmmzzmzzmzzzzzmmzzzzzzmzzzzzzzmzmzzzzzzzzzzzzozmmmmmzzzzz
   -- zzzzmzmzzmzzzzmmzzmzzzmmzzzzzzzzzzzzzzzzzzzzzzmzzzzzzzzzzzzzmmmmmozzzzzzzzz
   -- zzzzzozzozzzzzzzzzzzmmzzzzzzmzzozzzzzzzzzzmzzzzzzzzzzzzzzzzzzzzzzzzzzmmmomm
   -- mmmmmmmmzzzmmmmmzzzzzmmmzmmzzzzmzmoomzmzmmzzzzommzzzzmmzzzmzzzzzzzzzmmzzzzz
   -- zzozzzzzzzzzzzzzmzzzzzzzzzzzzzzzzozzzzzzzzzzzzzzzzzzzozzzzzzzzzzzzzzzzzzzzz
   -- zzzzzzozzzozzzzoozozzzozzozzzooozzzzoozzzzzzzzzzzzzzzzzzzzzzzzzmmzmmzzmmzmm
   -- mzmmmmmmzmzzzzzzzzzzzzzzzzzzmzzzzmmzmmzzomommommmzzzmozzzzzmzzzzzzzzzzzzzzz
   -- zzzzzzzzzzzzzzzzzzzzmmmzzzozmzzzozzzzzzzzzzzzzzzozzzzzzzzzzzzzzzzzzzzzzzzmm
   -- mmmmozmzmmzzozzmzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzmmzzzzzzzzzzzzzzzzzzzzzz
   -- zzzzzzzzzzmmmzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz
   -- zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz
   -- zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz
   -- zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz
   -- zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz{8}(4440)mzzzmmomzzzzzmmz
   -- mmzozmmmmzzzzmzzmzzzzmzzzmmzozzzzmooommmmmmmommooommzmmmmmmomzmomozzmzzzzmm
   -- zzzmzzmozomozommzzommzzzozzzzzozozzzzmmzzmmmmzzzzzzzzzzzzzzmmmzommmmmmoommm
   -- mmmooozoooomzommmmmzzzzzmoomzmomzmoommoomoozomooommzzmmmommmmzzmzzzzzzzzzzz
   -- zmmomzzmmmmmzmmmmmmmmmzzmzzmmomozzmozzzmomozzzzzzzzmzmmmmommzzzmmmmmmmmzmmz
   -- zmzzmzooozzzmmzzzmmmmmmmmmmzzzmozzzzzmmzmmmmzmmmzzmzmzzzzzzmmzmmzzoomozzzmm
   -- zmmmmmmzmmmzozzmzmzmzzzzzzzzzmzmmmzmzmmmmmmmmmzmzzmmmzzzmzzzzzmzzzzzzzomooz
   -- mzzmmmzozmmzzmzzmzmmozozzoomzmzzzzzmmmmzzmzzzmzzmzzzzmzzzmzzzmzzzzzzzzzzzzz
   -- zzmmmmzzzzzzmzzzmmmmmzmomomoommmmmmmmmmmmmmmmmmmmmmmmzzmozmmmzzzmommmmmmmmm
   -- mmzmmzmoozzzzmzzzzzzzmmzzmzmzmmmmmzmzmzmmzmmmmmmzzzzzzzzommmmzzzzzzzzzzzzzz
   -- zozzmzzmzzzzzmzzzzzzzzzzzomzmmzmmmmmmmzzmzzzzzmmzzzzzmzzzzzzzzzzzzzzzzzzzzz
   -- zzzzmzmzmmmmzzzmmzzoozzzzmmzmzozomzzoozooozmmzzzzzzzzzzzmmzzzzzzmmmmzzmzzzz
   -- zommmooooozzmmzzzzzzzmmzzzzzzzzzzzzzomzmmmmzmmzmzzzmmmzzzzzmmzzzmmmzmzmzmzz
   -- mmzmmzzzmmmzzzmmzzzzzzzzmzmzmmmzzmmzmmzzzzzomzzzzzzzzzzozzzozmmmmmoozzzzzzz
   -- mzmmmmmmmmmmmmmmmmmzzozzmmommzzzzzzzmzzzmzzzmzzzozzozmmzzzmmzzmzzzzozzzmmmz
   -- mmmmzzmmmmmmzzmzmmzzzmmmmzzzozomzooozmmmmmmmzozzzzmzzzzmzzzzzzzzzzzzmzzmomz
   -- mzzzzzmoozzzzmzzzzzzzzzmmozzzzzzzzzzzmmmmmzzzmmzzzzozzmmmoomzzzmmmmzzzzzzoz
   -- ozzzoozzooooozzzzmmmmmmmzmmmmmzzoozzzmmmzzzzmzmzzmmmzzzzzzzzzmmzzmmzomzzomm
   -- mzzzzzzzzzzzzomommmmmzmzzzzzzzzzzzzzzzzzzzzzzzmzzzmozmomzmmomzzzzzozzzmzzoz
   -- mmzmzmzzmoozoooozzzzzzzzzozmzozzooozmzzzzzzzmzzzzozzzzzzzzzzzzzzzzzzzmmzzmm
   -- zmzzmmmmzzmzzmzzzzzzzmzzmzmzzoozzommzomomozzmzmzmzzoomzzzzzzzzozmmzzmzzzooz
   -- oooozzzzzozzzzzzzozoooozooomzzmzzzzzzmzzzzzmzmzzmzomzzzzmmzmoozmzzzzzzzzzzz
   -- mmzzzmzzmzzmmmmzzzzzzzzmzzzzzzzzzzzzzzzzzzmmmmzzzmmmzzzzzzzmzzzzzzzzzzzzzzz
   -- zzzzzzzzzzzzzzzmzzmmmmmmzzzzmmmzzzzommzmzzozzzozzmmzzzzzoozzzzzzzzzzzzzzzzz
   -- zzzzzoozozzozzzozzzzzzzzzzzzzzzzzzzmzzzmmzzzzzommmmmmmzzzmmmmmzzmzzzzzzzmmz
   -- zmozzzzzzzzzzzzzmzzzzmzmzzzmmmzmzmzzzzzmzzzzzzzmmzzzzzzzzmmzzzzommmzmmmmzzz
   -- mmmzmzzzzzzzzzzzzmzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzozzzzzzzzmzzzzzmzz
   -- zzzzzzzzzzzzzzzzzzzzzzomzzzzzzmzmzozzzmmzzzzzzzzzzmzzzozzzzmzzzzzzzzzzzzzzz
   -- zmzzmzmzzzzzzzzzzzzzzzzzzzzzzzzzmmmmmzzmzzzzzzzzzzzzmzzzzzzzzzzzzmzmmzzzzzz
   -- zzzzzzzmmzzzzmmmzzzzzzzzzzzzzzozooozzzoommzzozzzzzomzzmommzmzzzzzzmmzzzmmmm
   -- mmmmmooozzzzzzzzzzzzmzzzzzzzzmzzmzzoomomooozzmzzmzzzzmmzzzzzzzzozzzzozzzzzz
   -- zzzzzzzzzzzzzooooozzzzzmmmmzzmoomzzzmzzzmmmmmzzzzzzzzzzozzzzzzzzzzzzzoozzzz
   -- zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz
   -- ozzzzzzzzzzzozzzozzzzzzoozzzzzzzzzzzoozzzzoomzommmmzmmmzmmzzzzzzoozzzzzzzzo
   -- oozzzzomzzmmzzzzzzzoozzozozozzzzzzzzzzzzzzzzzzzzzzzzozzzzzzzzzzzzzzzzozzzzz
   -- zzzzzzzzzzzzzzozozzozzozoozzozzzzzzzzzzzzmzzzzzzzzzmzzzzmzzzzmzzzzzzmmmzzzz
   -- zzzzzzzzzzzzzzzzzzzzzmzzzzzzzzzzzmzzzzzzzzzmzzzzzzzzzzzzzzzmzzmzzzzzzzzzzzz
   -- zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz
   -- zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz
   -- zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzozzzzzzzzzzzzzzzzzzzz
   -- zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz
   -- zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzozzzzzzzzzz
   -- zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz
   -- zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz
   -- zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz
   -- zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz
   -- zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz
   -- zzzzzzzozzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz
   -- zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz
   -- zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz
   -- zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz
   -- zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz
   -- zzzzzzzzozzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz
   -- zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz
   -- zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzozzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz
   -- zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz
   -- zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz
   -- zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz
   -- zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz
   -- zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz
   -- {9}(9197)mmommmzzzmzzzzzzzzzmzzzzzmzmzzzzmmmzmmmmmmzzmmmmoomzmmzmmmmmommmmmmzmmzzzz
   -- zmmmmmmmmmzzzmomzzzzoooommmmzzzzooozmmzzzzzmmmommzzzmzmmmmmzmmzzozzmmmzmzmm
   -- momommzmzommzmzmmmmmmmmmmzmmmzzmmmzzmzzmzzmmmmmmmmmmmmzmzmmzzzzmmzmzmzzzmmm
   -- mmmmmmmzmmzzmzzzzmzmzommzzmzzzmzmzzzzzzzzzzzzzzzzzzzmzzomzzzzzzozzozzzmzzzz
   -- ooooooooozmzmzmmzzmmzzzmzoooooomoooozzmmzzmmozzzzzozzzzzzzzzmzzmmzmzzzzmzzz
   -- zzzmzzzzzzzzzzzzmzmomzomozzzzzzzmzzzmzmzzzzzmmzzzzzzzzzzzzzomzmmmzzzzzzzzzz
   -- zzzzzzzzmzmmmmmmmmmmmmmmmmmmmmmzzommmmmmmmmmmmmmmmmmmmmmmmmzzmmmmmz
   
   
-----------------
syze = 5; -- for 3 and 4, no segfault
kk = QQ
kk = ZZ/101
R = kk[t, x_(1,1) .. x_(syze,syze), MonomialSize=>8];

X = matrix apply(syze, i->apply(syze, j->x_(i+1,j+1)));

SlowerPart = M -> matrix apply(syze, i->apply(syze,
j->(if (i>j)
then M_(i,j) else 0)));
brake = A -> {A-SlowerPart(A),SlowerPart(A)};
cpl = (p1,p2)->{p1_0 * p2_0, SlowerPart(p1_0*p2_1 +
p1_1*p2_0)}
cp = (A,B)->(p := cpl(brake(A),brake(B)); p_0 + p_1)

Xcp3 = cp(X,cp(X,X));
I3 = ideal Xcp3;

print "Computing syzygies";
sy = syz gens I3;
   