6 import org.junit.Ignore;
 
    8 import java.util.BitSet;
 
   10 import static org.junit.Assert.assertEquals;
 
   11 import static org.junit.Assert.assertTrue;
 
   80   private static class N {
 
   81     private static int ID=0;
 
   91     N(String t, 
N... subs) {
 
  106       if( bs.get(
_id) ) 
return;
 
  108       for( 
N sub : 
_subs ) sub._sups.add(
this);
 
  109       for( 
N sub : 
_subs ) sub.walk_set_sup(bs);
 
  113       if( bs.get(
_id) ) 
return;
 
  116       for( 
N sub : 
_subs ) sub.walk_print(bs,indent+1);
 
  120       for( 
N sub : 
_subs ) sb.
p(sub._t).
p(
" ");
 
  129             System.out.println(
"Edge "+sup0._t+
" -> "+
_t+
" and also path "+sup0._t+
" ... -> "+sup.
_t+
" -> "+
_t);
 
  134       if( vs[
_id]<
_sups._len ) 
return true; 
 
  136       for( 
N sub : 
_subs ) 
if( !sub.walk_min_edge(vs,
this) ) 
return false;
 
  141       if( bs.get(
_id) ) 
return true;
 
  145         if( sub._dual._subs.find(
_dual) == -1 ) {
 
  146           System.out.println(
""+
_t+
" -> "+sub._t+
"; expect "+sub._dual._t+
" -> "+
_dual.
_t);
 
  150       for( 
N sub : 
_subs ) 
if( !sub.walk_dual(bs) ) x=
false;
 
  164     for( 
int i=0; i<
N.
ID; i++ ) {
 
  186           for( 
int x=as.nextSetBit(0); x>=0; x=as.nextSetBit(x+1) ) {
 
  190                 if( as.get(sub.
_id) && bs.get(sub.
_id) )
 
  191                   continue forall_reaches; 
 
  192               if( meet == 
null ) meet = c; 
 
  195                 System.out.println(
"No meet found for "+a.
_t+
" and "+b.
_t+
", tied candidates are: "+meet.
_t+
" and "+c.
_t);
 
  201     assertEquals(
"Found errors", 0, errs);
 
  223     N scal= 
new N( 
"scalar");
 
  224     N num = 
new N(
"num" ,scal);
 
  225     N int8= 
new N(
"int8",num );
 
  227     N oop0= 
new N( 
"oop?",scal);
 
  228     N str0= 
new N( 
"str?",oop0);
 
  229     N tup0= 
new N( 
"tup?",oop0);
 
  230     N str = 
new N( 
"str" ,str0);
 
  231     N tup = 
new N( 
"tup" ,tup0);
 
  233     N nil = 
new N( 
"0",str0,tup0,int8);
 
  235     N abc = 
new N( 
"\"abc\"",str);
 
  236     N def = 
new N( 
"\"def\"",str);
 
  237     N flx = 
new N( 
"@{x}"   ,tup);
 
  238     N fly = 
new N( 
"@{y}"   ,tup);
 
  239     N strx= 
new N(
"~str" ,abc,def);
 
  240     N tupx= 
new N(
"~tup" ,flx,fly);
 
  241     N str_= 
new N(
"~str+0",strx,nil);
 
  242     N tup_= 
new N(
"~tup+0",tupx,nil);
 
  243     N oop_= 
new N(
"~oop+0",str_,tup_);
 
  245     N i3  = 
new N(
"42",int8 );
 
  246     N xint= 
new N(
"~int8",i3,nil );
 
  247     N xnum= 
new N(
"~num",xint);
 
  249     N xscl= 
new N( 
"~scalar",oop_,xnum);
 
  276     N  ta0 = 
new N(
"[]?"   );
 
  277     N  tx0 = 
new N(
"[x]?"  ,ta0);
 
  278     N  tb0 = 
new N(
"[b]?"  ,ta0);
 
  279     N  ty0 = 
new N(
"[x,y]?",tx0);
 
  280     N  ta  = 
new N(
"[]"    ,ta0);
 
  281     N  tx  = 
new N(
"[x]"   ,ta,tx0);
 
  282     N  tb  = 
new N(
"[b]"   ,ta,tb0);
 
  283     N  ty  = 
new N(
"[x,y]" ,tx,ty0);
 
  285     N nil  = 
new N(
"0", ty0,tb0 );
 
  287     N xty  = 
new N(
"~[x,y]",ty);
 
  288     N xtx  = 
new N(
"~[x]",xty);
 
  289     N xtb  = 
new N(
"~[b]",tb);
 
  290     N xta  = 
new N(
"~[]",xtx,xtb);
 
  292     N xty0= 
new N(
"~[x,y]+?",xty,nil);
 
  293     N xtx0= 
new N(
"~[x]+?",xtx,xty0);
 
  294     N xtb0= 
new N(
"~[b]+?",xtb,nil);
 
  295     N xta0= 
new N(
"~[]+?",xta,xtx0,xtb0);
 
  321     N tb0 = 
new N(
"[_,_]0"  );
 
  322     N tx0 = 
new N(
"[x,_]0" ,tb0);
 
  323     N ty0 = 
new N(
"[y,_]0" ,tb0);
 
  324     N tt0 = 
new N(
"[^,_]0" ,tx0,ty0);
 
  326     N tb  = 
new N(
"[_,_]"  ,tb0 );
 
  327     N tx  = 
new N(
"[x,_]"  ,tb,tx0);
 
  328     N ty  = 
new N(
"[y,_]"  ,tb,ty0);
 
  329     N tt  = 
new N(
"[^,_]"  ,tx,ty,tt0);
 
  331     N bb0 = 
new N(
"[_,^]0" ,tb0);
 
  332     N bx0 = 
new N(
"[x,^]0" ,bb0,tx0);
 
  333     N by0 = 
new N(
"[y,^]0" ,bb0,ty0);
 
  334     N bt0 = 
new N(
"[^,^]0" ,bx0,by0,tt0);
 
  337     N nilbb = 
new N(
"0[_,_]0",tb0);
 
  338     N nilxb = 
new N(
"0[x,_]0",tx0);
 
  339     N nilyb = 
new N(
"0[y,_]0",ty0);
 
  340     N niltb = 
new N(
"0[^,_]0",tt0);
 
  341     N nilbt = 
new N(
"0[_,^]0",bb0);
 
  342     N nilxt = 
new N(
"0[x,^]0",bx0);
 
  343     N nilyt = 
new N(
"0[y,^]0",by0);
 
  344     N niltt = 
new N(
"0[^,^]0",bt0);
 
  349     N tbp = 
new N(
"[_,_]+" ,tb,nilbb);
 
  350     N txp = 
new N(
"[x,_]+" ,tbp,tx,nilxb);
 
  351     N typ = 
new N(
"[y,_]+" ,tbp,ty,nilyb);
 
  352     N ttp = 
new N(
"[^,_]+" ,txp,typ,tt,niltb);
 
  354     N bb  = 
new N(
"[_,^]"  ,tb, bb0 );
 
  355     N bx  = 
new N(
"[x,^]"  ,bb,bx0,tx);
 
  356     N by  = 
new N(
"[y,^]"  ,bb,by0,ty);
 
  357     N bt  = 
new N(
"[^,^]"  ,bx,by,bt0,tt);
 
  359     N bbp = 
new N(
"[_,^]+" ,bb,tbp,nilbt);
 
  360     N bxp = 
new N(
"[x,^]+" ,bbp,bx,txp,nilxt);
 
  361     N byp = 
new N(
"[y,^]+" ,bbp,by,typ,nilyt);
 
  362     N btp = 
new N(
"[^,^]+" ,bxp,byp,bt,ttp,niltt);
 
  403     N num = 
new N(  
"num" );
 
  404     N nnum= 
new N(
"N:num",num);
 
  405     N mnum= 
new N(
"M:num",num);
 
  406     N  i64= 
new N(  
"int",num );
 
  407     N ni64= 
new N(
"N:int",i64,nnum );
 
  408     N mi64= 
new N(
"M:int",i64,mnum );
 
  410     N i0  = 
new N(  
"0", i64);
 
  411     N i7  = 
new N(  
"7", i64);
 
  412     N ni0 = 
new N(
"N:0", ni64);
 
  413     N ni7 = 
new N(
"N:7", ni64);
 
  414     N mi0 = 
new N(
"M:0", mi64);
 
  415     N mi7 = 
new N(
"M:7", mi64);
 
  417     N nx64= 
new N(
"N:~int",ni0,ni7 );
 
  418     N mx64= 
new N(
"M:~int",mi0,mi7 );
 
  419     N  x64= 
new N(  
"~int",nx64,mx64, i0, i7 );
 
  420     N nxum= 
new N(
"N:~num",nx64 );
 
  421     N mxum= 
new N(
"M:~num",mx64 );
 
  422     N  xum= 
new N(  
"~num",nxum,mxum,x64 );
 
  467     N scal= 
new N(
"scalar");
 
  468     N num  =
new N(
"num"     ,scal);
 
  469     N oop0= 
new N(
"oop?"    ,scal);
 
  470     N str0= 
new N(
"str?"    ,oop0);
 
  471     N i640= 
new N(
"{i64}?"  ,oop0);
 
  472     N i64 = 
new N(
"{i64}"   ,i640);
 
  473     N i80 = 
new N(
"{i8}?"   ,i640);
 
  474     N i8  = 
new N(
"{i8}"    ,i80,i64);
 
  475     N str = 
new N(
"str"     ,str0);
 
  476     N abc0= 
new N(
"abc?"    ,str0);
 
  477     N t00 = 
new N(
"{nil}?"  ,i80);
 
  478     N abc = 
new N(
"abc"     ,abc0,str);
 
  479     N t7  = 
new N(
"{7}"     ,i8);
 
  480     N t0  = 
new N(
"{nil}"   ,i8,t00);
 
  481     N nil = 
new N(
"nil"     ,t00,abc0,num);
 
  482     N abc_= 
new N(
"abc+?"   ,abc,nil);
 
  483     N t0_ = 
new N(
"{nil}+?" ,nil,t0);
 
  484     N xstr= 
new N(
"~str"    ,abc);
 
  485     N xi8 = 
new N(
"~{~i8}"  ,t0,t7);
 
  486     N xi8_= 
new N(
"~{~i8}+?",xi8,t0_);
 
  487     N xstr_=
new N(
"~str+?"  ,xstr,abc_);
 
  488     N xi64= 
new N(
"~{~i64}" ,xi8);
 
  489     N xi64_=
new N(
"~{~i64}+?",xi64,xi8_);
 
  490     N oop_ =
new N(
"~oop+?"  ,xi64_,xstr_);
 
  491     N xnum =
new N(
"~num"    ,nil);
 
  492     N xscal=
new N(
"~scalar" ,oop_,xnum);
 
  525     N scal= 
new N(
"scalar");
 
  526     N num  =
new N(
"num"     ,scal);
 
  527     N oop0= 
new N(
"oop?"    ,scal);
 
  528     N str0= 
new N(
"str?"    ,oop0);
 
  529     N i64 = 
new N(
"{i64}"   ,oop0); 
 
  531     N i8  = 
new N(
"{i8}"    ,i64);
 
  532     N str = 
new N(
"str"     ,str0);
 
  533     N abc = 
new N(
"abc"     ,str);
 
  534     N def = 
new N(
"def"     ,str);
 
  535     N t7  = 
new N(
"{7}"     ,i8);
 
  536     N t0  = 
new N(
"{nil}"   ,i8);       
 
  537     N nil = 
new N(
"nil"     ,str0,num); 
 
  538     N xstr= 
new N(
"~str"    ,abc,def);
 
  539     N xi8 = 
new N(
"~{~i8}"  ,t0,t7);
 
  541     N xstr_=
new N(
"~str+?"  ,xstr,nil);
 
  542     N xi64= 
new N(
"~{~i64}" ,xi8);
 
  543     N oop_ =
new N(
"~oop+?"  ,xi64,xstr_);
 
  544     N xnum =
new N(
"~num"    ,nil);
 
  545     N xscal=
new N(
"~scalar" ,oop_,xnum);
 
  575     N scal= 
new N(
"scalar");
 
  576     N oop0= 
new N(
"oop?"    ,scal);
 
  577     N i64 = 
new N(
"i64"     ,scal);
 
  578     N n64 = 
new N(
"N:i64"   ,i64);
 
  579     N m64 = 
new N(
"M:i64"   ,i64);
 
  581     N i8  = 
new N(
"i8"      ,i64);
 
  582     N n8  = 
new N(
"N:i8"    ,n64,i8);
 
  583     N m8  = 
new N(
"M:i8"    ,m64,i8);
 
  585     N nil = 
new N(
"nil"     ,i8);
 
  586     N c7  = 
new N(
"7"       ,i8);
 
  587     N m0  = 
new N(
"M:0"     ,m8);
 
  588     N m7  = 
new N(
"M:7"     ,m8);
 
  589     N n0  = 
new N(
"N:0"     ,n8);
 
  590     N n7  = 
new N(
"N:7"     ,n8);
 
  591     N abc = 
new N(
"abc"     ,oop0);
 
  593     N xn8 = 
new N(
"N:~i8"   ,n0,n7);
 
  594     N xm8 = 
new N(
"M:~i8"   ,m0,m7);
 
  595     N xi8 = 
new N(
"~i8"     ,xn8,xm8,c7,nil);
 
  597     N xm64= 
new N(
"M:~i64"  ,xm8);
 
  598     N xn64= 
new N(
"N:~i64"  ,xn8);
 
  599     N xi64= 
new N(
"~i64"    ,xn64,xm64,xi8);
 
  600     N xoop= 
new N(
"~oop+?"  ,abc);
 
  602     N xscal=
new N(
"~scalar" ,xoop,xi64);
 
  644     N scal= 
new N(
"scalar");
 
  645     N nzscal= 
new N(
"nzscalar",scal);
 
  646     N oop0= 
new N(
"oop?"    ,scal);
 
  647     N i64 = 
new N(
"i64"     ,scal);
 
  648     N nzi64 = 
new N(
"nzi64"     ,i64,nzscal);
 
  649     N n64 = 
new N(
"N:i64"   ,i64);
 
  650     N m64 = 
new N(
"M:i64"   ,i64);
 
  651     N nzn64 = 
new N(
"N:nzi64"   ,n64);
 
  652     N nzm64 = 
new N(
"M:nzi64"   ,m64);
 
  654     N i1  = 
new N(
"i1"      ,i64);
 
  655     N n8  = 
new N(
"N:i1"    ,n64,i1);
 
  656     N m8  = 
new N(
"M:i1"    ,m64,i1);
 
  658     N nil = 
new N(
"nil"     ,i1);
 
  659     N c1  = 
new N(
"1"       ,i1,nzi64);
 
  660     N m0  = 
new N(
"M:0"     ,m8);
 
  661     N m1  = 
new N(
"M:1"     ,m8,nzm64);
 
  662     N n0  = 
new N(
"N:0"     ,n8);
 
  663     N n1  = 
new N(
"N:1"     ,n8,nzn64);
 
  664     N abc = 
new N(
"abc"     ,oop0);
 
  666     N xn8 = 
new N(
"N:~i1"   ,n0,n1);
 
  667     N xm8 = 
new N(
"M:~i1"   ,m0,m1);
 
  668     N xi1 = 
new N(
"~i1"     ,xn8,xm8,c1,nil);
 
  670     N xnzm64= 
new N(
"M:~nzi64"  ,m1);
 
  671     N xnzn64= 
new N(
"N:~nzi64"  ,n1);
 
  672     N xm64= 
new N(
"M:~i64"  ,xm8,xnzm64);
 
  673     N xn64= 
new N(
"N:~i64"  ,xn8,xnzn64);
 
  674     N xnzi64= 
new N(
"~nzi64"    ,c1);
 
  675     N xi64= 
new N(
"~i64"    ,xn64,xm64,xi1,xnzi64);
 
  676     N xoop= 
new N(
"~oop+?"  ,abc);
 
  678     N xnzscal=
new N(
"~nzscalar" ,xnzi64);
 
  679     N xscal=
new N(
"~scalar" ,xoop,xi64,xnzscal);
 
  713     N scal= 
new N(
"scalar");
 
  714     N num = 
new N(
"num"      ,scal);
 
  715     N oop0= 
new N(
"oop?"     ,scal);
 
  716     N oop = 
new N(
"oop"      ,oop0);
 
  717     N xi0 = 
new N(
"@{x:i64}?",oop0);
 
  718     N yi0 = 
new N(
"@{y:i64}?",oop0);
 
  719     N xi  = 
new N(
"@{x:i64}" ,xi0,oop );
 
  720     N yi  = 
new N(
"@{y:i64}" ,yi0,oop );
 
  721     N x0  = 
new N(
"@{x:nil}" ,xi  );
 
  722     N y0  = 
new N(
"@{y:nil}" ,yi  );
 
  723     N nil = 
new N(
"nil"      ,xi0,yi0,num);
 
  724     N xix = 
new N(
"~@{x:~i64}",x0  );
 
  725     N yix = 
new N(
"~@{y:~i64}",y0  );
 
  726     N xi_ = 
new N(
"~@{x:~i64}+0",xix,nil);
 
  727     N yi_ = 
new N(
"~@{y:~i64}+0",yix,nil);
 
  728     N oopx= 
new N(
"~oop"     ,xix,yix);
 
  729     N oop_= 
new N(
"~oop+0"   ,xi_,yi_,oopx);
 
  730     N numx= 
new N(
"~num"     ,nil);
 
  731     N xscal=
new N(
"~scalar" ,oop_,numx);
 
  777     N scal= 
new N(
"scalar");
 
  779     N num = 
new N(
"num"    ,scal);
 
  780     N inil= 
new N(
"0:int"  ,num);
 
  782     N oop0= 
new N(
"oop?"   ,scal);
 
  783     N oop = 
new N(
"oop"    ,oop0);
 
  784     N i0  = 
new N(
"(i64)?" ,oop0);
 
  785     N f0  = 
new N(
"(f64)?" ,oop0);
 
  786     N i70 = 
new N(
"(7)?"   ,i0);
 
  787     N f70 = 
new N(
"(7.)?"  ,f0);
 
  788     N i   = 
new N(
"(i64)"  ,oop,i0);
 
  789     N f   = 
new N(
"(f64)"  ,oop,f0);
 
  790     N n0  = 
new N(
"(nil)?" ,i70,f70);
 
  792     N n   = 
new N(
"(nil)"  ,n0,i,f);
 
  793     N i7  = 
new N(
"(7)"    ,i);
 
  794     N f7  = 
new N(
"(7.)"   ,f);
 
  795     N tnil= 
new N(
"0:tup"   ,n0);
 
  797     N str0= 
new N(
"str?"   ,oop0);
 
  798     N str = 
new N(
"str"    ,str0,oop  );
 
  799     N abc0= 
new N(
"abc?"   ,str0);
 
  800     N def0= 
new N(
"def?"   ,str0);
 
  802     N abc = 
new N(
"abc"    ,str,abc0);
 
  803     N def = 
new N(
"def"    ,str,def0);
 
  804     N abcnil= 
new N(
"0:abc",abc0);
 
  805     N defnil= 
new N(
"0:def",def0);
 
  807     N abc_= 
new N(
"abc+0"   ,abc,abcnil);
 
  808     N def_= 
new N(
"def+0"   ,def,defnil);
 
  809     N strx= 
new N(
"~str"    ,abc,def);
 
  810     N str_= 
new N(
"~str+0"  ,strx,abc_,def_);
 
  812     N n_  = 
new N(
"(nil)+0" ,tnil,n);
 
  813     N ix  = 
new N(
"(~i64)"  ,n,i7);
 
  814     N fx  = 
new N(
"(~f64)"  ,n,f7);
 
  815     N i7_ = 
new N(
"(7)+0"   ,n_);
 
  816     N f7_ = 
new N(
"(7.)+0"  ,n_);
 
  817     N i_  = 
new N(
"(~i64)+0",ix,i7_);
 
  818     N f_  = 
new N(
"(~f64)+0",fx,f7_);
 
  819     N oopx= 
new N(
"~oop"    ,ix,fx,strx);
 
  820     N oop_= 
new N(
"~oop+0"  ,oopx,i_,f_,str_);
 
  822     N numx= 
new N(
"~num"    ,inil);
 
  824     N xscl= 
new N(
"~scalar" ,oop_,numx);
 
  862     N bot = 
new N(
"( ALL,ALL)");
 
  863     N i64 = 
new N(
"( i64,ALL)",bot);
 
  864     N str = 
new N(
"( str,ALL)",bot);
 
  866     N xi64= 
new N(
"(~i64,ALL)",i64);
 
  867     N xstr= 
new N(
"(~str,ALL)",str);
 
  869     N xbot= 
new N(
"( ANY,ALL)",xstr,xi64);
 
  870     N xtop= 
new N(
"( ALL,ANY)",bot);
 
  872     N i64x= 
new N(
"( i64,ANY)",xtop);
 
  873     N strx= 
new N(
"( str,ANY)",xtop);
 
  875     N xi64x=
new N(
"(~i64,ANY)",i64x);
 
  876     N xstrx=
new N(
"(~str,ANY)",strx);
 
  878     N top = 
new N(
"( ANY,ANY)" ,xi64x,xstrx,xbot);
 
  913     N x256 = 
new N(
"{ 2&5&6}");
 
  915     N x25  = 
new N(
"{ 2&5}",x256);
 
  916     N x26  = 
new N(
"{ 2&6}",x256);
 
  917     N x56  = 
new N(
"{ 5&6}",x256);
 
  919     N c2   = 
new N(
"2",x25,x26);
 
  920     N c5   = 
new N(
"5",x25,x56);
 
  921     N c6   = 
new N(
"6",x26,x56);
 
  923     N o25  = 
new N(
"{+2+5}",c2,c5);
 
  924     N o26  = 
new N(
"{+2+6}",c2,c6);
 
  925     N o56  = 
new N(
"{+5+6}",c5,c6);
 
  927     N o256 = 
new N(
"{+2+5+6}",o25,o26,o56);
 
  957     N x256 = 
new N(
"{ 2&5&6}");
 
  959     N x25  = 
new N(
"{ 2&5}",x256);
 
  960     N x26  = 
new N(
"{ 2&6}",x256);
 
  961     N x56  = 
new N(
"{ 5&6}",x256);
 
  963     N x2   = 
new N(
"&2",x25,x26);
 
  964     N x5   = 
new N(
"&5",x25,x56);
 
  965     N x6   = 
new N(
"&6",x26,x56);
 
  967     N o2   = 
new N(
"+2",x2);
 
  968     N o5   = 
new N(
"+5",x5);
 
  969     N o6   = 
new N(
"+6",x6);
 
  971     N o25  = 
new N(
"{+2+5}",o2,o5);
 
  972     N o26  = 
new N(
"{+2+6}",o2,o6);
 
  973     N o56  = 
new N(
"{+5+6}",o5,o6);
 
  975     N o256 = 
new N(
"{+2+5+6}",o25,o26,o56);
 
 1009     N x256 = 
new N(
"{ 2&5&6}");
 
 1011     N x25  = 
new N(
"{ 2&5}",x256);
 
 1012     N x26  = 
new N(
"{ 2&6}",x256);
 
 1013     N x56  = 
new N(
"{ 5&6}",x256);
 
 1015     N x2   = 
new N(
"&2",x25,x26);
 
 1016     N x5   = 
new N(
"&5",x25,x56);
 
 1017     N x6   = 
new N(
"&6",x26,x56);
 
 1019     N mt   = 
new N(
"[]",x2,x5,x6);
 
 1021     N o2   = 
new N(
"+2",mt);
 
 1022     N o5   = 
new N(
"+5",mt);
 
 1023     N o6   = 
new N(
"+6",mt);
 
 1025     N o25  = 
new N(
"{+2+5}",o2,o5);
 
 1026     N o26  = 
new N(
"{+2+6}",o2,o6);
 
 1027     N o56  = 
new N(
"{+5+6}",o5,o6);
 
 1029     N o256 = 
new N(
"{+2+5+6}",o25,o26,o56);
 
 1065     N _1  = 
new N(
"{&1}");
 
 1066     N _234= 
new N(
"{&2&3&4}",_1);
 
 1068     N _23 = 
new N(
"{&2&3}",_234);
 
 1069     N _24 = 
new N(
"{&2&4}",_234);
 
 1070     N _34 = 
new N(
"{&3&4}",_234);
 
 1072     N _2   = 
new N(
"&2",_23,_24);
 
 1073     N _3   = 
new N(
"&3",_23,_34);
 
 1074     N _4   = 
new N(
"&4",_24,_34);
 
 1076     N x2   = 
new N(
"+2",_2);
 
 1077     N x3   = 
new N(
"+3",_3);
 
 1078     N x4   = 
new N(
"+4",_4);
 
 1080     N x23 = 
new N(
"{+2+3}",x2,x3);
 
 1081     N x24 = 
new N(
"{+2+4}",x2,x4);
 
 1082     N x34 = 
new N(
"{+3+4}",x3,x4);
 
 1084     N x234= 
new N(
"{+2+3+4}",x23,x24,x34);
 
 1086     N x1  = 
new N(
"{+1}",x234);
 
 1126     N and_234= 
new N(
"&{ 2 3 4}");
 
 1128     N and_23 = 
new N(
"&{ 2 3}",and_234);
 
 1129     N and_24 = 
new N(
"&{ 2 4}",and_234);
 
 1130     N and_34 = 
new N(
"&{ 3 4}",and_234);
 
 1132     N and_2   = 
new N(
"&{ 2}",and_23,and_24);
 
 1133     N and_3   = 
new N(
"&{ 3}",and_23,and_34);
 
 1134     N and_4   = 
new N(
"&{ 4}",and_24,and_34);
 
 1136     N oor_2   = 
new N(
"+{ 2}",and_2);
 
 1137     N oor_3   = 
new N(
"+{ 3}",and_3);
 
 1138     N oor_4   = 
new N(
"+{ 4}",and_4);
 
 1140     N oor_23 = 
new N(
"+{ 2 3}",oor_2,oor_3);
 
 1141     N oor_24 = 
new N(
"+{ 2 4}",oor_2,oor_4);
 
 1142     N oor_34 = 
new N(
"+{ 3 4}",oor_3,oor_4);
 
 1144     N oor_234= 
new N(
"+{ 2 3 4}",oor_23,oor_24,oor_34);
 
 1146     N andx234= 
new N(
"&{~2~3~4}",oor_234);
 
 1148     N andx23 = 
new N(
"&{~2~3}",andx234);
 
 1149     N andx24 = 
new N(
"&{~2~4}",andx234);
 
 1150     N andx34 = 
new N(
"&{~3~4}",andx234);
 
 1152     N andx2   = 
new N(
"&{~2}",andx23,andx24);
 
 1153     N andx3   = 
new N(
"&{~3}",andx23,andx34);
 
 1154     N andx4   = 
new N(
"&{~4}",andx24,andx34);
 
 1156     N oorx2   = 
new N(
"+{~2}",andx2);
 
 1157     N oorx3   = 
new N(
"+{~3}",andx3);
 
 1158     N oorx4   = 
new N(
"+{~4}",andx4);
 
 1160     N oorx23 = 
new N(
"+{~2~3}",oorx2,oorx3);
 
 1161     N oorx24 = 
new N(
"+{~2~4}",oorx2,oorx4);
 
 1162     N oorx34 = 
new N(
"+{~3~4}",oorx3,oorx4);
 
 1164     N oorx234= 
new N(
"+{~2~3~4}",oorx23,oorx24,oorx34);
 
 1210     N x256 = 
new N(
"{ 2&5&6}");
 
 1212     N x25  = 
new N(
"{ 2&5}",x256);
 
 1213     N x26  = 
new N(
"{ 2&6}",x256);
 
 1214     N x56  = 
new N(
"{ 5&6}",x256);
 
 1216     N x2   = 
new N(
"&2",x25,x26);
 
 1217     N x5   = 
new N(
"&5",x25,x56);
 
 1218     N x6   = 
new N(
"&6",x26,x56);
 
 1220     N mt   = 
new N(
"[]",x2,x5,x6);
 
 1222     N o2   = 
new N(
"+2",mt);
 
 1223     N o5   = 
new N(
"+5",mt);
 
 1224     N o6   = 
new N(
"+6",mt);
 
 1226     N o25  = 
new N(
"{+2+5}",o2,o5);
 
 1227     N o26  = 
new N(
"{+2+6}",o2,o6);
 
 1228     N o56  = 
new N(
"{+5+6}",o5,o6);
 
 1230     N o256 = 
new N(
"{+2+5+6}",o25,o26,o56);
 
 1265     N x250 = 
new N(
"{ 2&5&0}");
 
 1267     N x25  = 
new N(
"{ 2&5}",x250);
 
 1268     N x20  = 
new N(
"{ 2&0}",x250);
 
 1269     N x50  = 
new N(
"{ 5&0}",x250);
 
 1271     N x2   = 
new N(
"&2",x25,x20);
 
 1272     N x5   = 
new N(
"&5",x25,x50);
 
 1274     N nil  = 
new N(
"0",x20,x50);
 
 1275     N mt   = 
new N(
"[]",x2,x5);
 
 1277     N o2   = 
new N(
"+2",mt);
 
 1278     N o5   = 
new N(
"+5",mt);
 
 1280     N o25  = 
new N(
"{+2+5}",o2,o5);
 
 1281     N o20  = 
new N(
"{+2+0}",o2,nil);
 
 1282     N o50  = 
new N(
"{+5+0}",o5,nil);
 
 1284     N o250 = 
new N(
"{+2+5+0}",o25,o20,o50);
 
 1331     N xscl = 
new N(
"scalar");
 
 1332     N x250 = 
new N(
"{ 2&5&0}",xscl);
 
 1333     N xint = 
new N(
"int",xscl);
 
 1335     N x25  = 
new N(
"{ 2&5}",x250);
 
 1336     N x20  = 
new N(
"{ 2&0}",x250);
 
 1337     N x50  = 
new N(
"{ 5&0}",x250);
 
 1338     N xnint= 
new N(
"nint",xint);
 
 1340     N x2   = 
new N(
"&2",x25,x20);
 
 1341     N x5   = 
new N(
"&5",x25,x50);
 
 1342     N x0   = 
new N(
"&0",x20,x50);
 
 1344     N mt   = 
new N(
"[]",x2,x5,x0);
 
 1345     N nil  = 
new N(
"nil",x0,xint);
 
 1347     N o2   = 
new N(
"+2",mt);
 
 1348     N o5   = 
new N(
"+5",mt);
 
 1349     N o0   = 
new N(
"+0",mt,nil);
 
 1351     N onint= 
new N(
"~nint",xnint);
 
 1352     N o25  = 
new N(
"{+2+5}",o2,o5);
 
 1353     N o20  = 
new N(
"{+2+0}",o2,o0);
 
 1354     N o50  = 
new N(
"{+5+0}",o5,o0);
 
 1356     N oint = 
new N(
"~int",nil,onint);
 
 1357     N o250 = 
new N(
"{+2+5+0}",o25,o20,o50);
 
 1358     N sclr = 
new N(
"~scalar",o250,oint);
 
 1394     N n_04_obj = 
new N(
"n_04_obj");
 
 1395     N n_04_rec = 
new N(
"n_04_rec",n_04_obj);
 
 1396     N n_04_str = 
new N(
"n_04_str",n_04_obj);
 
 1397     N n_04xrec = 
new N(
"n_04xrec",n_04_rec);
 
 1398     N n_04xstr = 
new N(
"n_04xstr",n_04_str);
 
 1399     N n_04xobj = 
new N(
"n_04xobj",n_04xrec,n_04xstr);
 
 1402     N n_0__obj = 
new N(
"n_0__obj"                  ,n_04_obj);
 
 1403     N n_0__rec = 
new N(
"n_0__rec",n_0__obj         ,n_04_rec);
 
 1404     N n_0__str = 
new N(
"n_0__str",n_0__obj         ,n_04_str);
 
 1405     N n_0_xrec = 
new N(
"n_0_xrec",n_0__rec         ,n_04xrec);
 
 1406     N n_0_xstr = 
new N(
"n_0_xstr",n_0__str         ,n_04xstr);
 
 1407     N n_0_xobj = 
new N(
"n_0_xobj",n_0_xrec,n_0_xstr,n_04xobj);
 
 1410     N n__4_obj = 
new N(
"n__4_obj"                  ,n_04_obj);
 
 1411     N n__4_rec = 
new N(
"n__4_rec",n__4_obj         ,n_04_rec);
 
 1412     N n__4_str = 
new N(
"n__4_str",n__4_obj         ,n_04_str);
 
 1413     N n__4xrec = 
new N(
"n__4xrec",n__4_rec         ,n_04xrec);
 
 1414     N n__4xstr = 
new N(
"n__4xstr",n__4_str         ,n_04xstr);
 
 1415     N n__4xobj = 
new N(
"n__4xobj",n__4xrec,n__4xstr,n_04xobj);
 
 1418     N n_mt_obj = 
new N(
"n_mt_obj"                  ,n_0__obj,n__4_obj);
 
 1419     N n_mt_rec = 
new N(
"n_mt_rec",n_mt_obj         ,n_0__rec,n__4_rec);
 
 1420     N n_mt_str = 
new N(
"n_mt_str",n_mt_obj         ,n_0__str,n__4_str);
 
 1421     N n_mtxrec = 
new N(
"n_mtxrec",n_mt_rec         ,n_0_xrec,n__4xrec);
 
 1422     N n_mtxstr = 
new N(
"n_mtxstr",n_mt_str         ,n_0_xstr,n__4xstr);
 
 1423     N n_mtxobj = 
new N(
"n_mtxobj",n_mtxrec,n_mtxstr,n_0_xobj,n__4xobj);
 
 1430     N NIL = 
new N(
" NIL",n_0__obj);
 
 1431     N XNIL= 
new N(
"XNIL",n_0_xobj);
 
 1434     N nx0__obj = 
new N(
"nx0__obj"                  ,n_mt_obj, NIL);
 
 1435     N nx0__rec = 
new N(
"nx0__rec",nx0__obj         ,n_mt_rec);
 
 1436     N nx0__str = 
new N(
"nx0__str",nx0__obj         ,n_mt_str);
 
 1437     N nx0_xrec = 
new N(
"nx0_xrec",nx0__rec         ,n_mtxrec);
 
 1438     N nx0_xstr = 
new N(
"nx0_xstr",nx0__str         ,n_mtxstr);
 
 1439     N nx0_xobj = 
new N(
"nx0_xobj",nx0_xrec,nx0_xstr,n_mtxobj, XNIL);
 
 1442     N nx_4_obj = 
new N(
"nx_4_obj"                  ,n_mt_obj);
 
 1443     N nx_4_rec = 
new N(
"nx_4_rec",nx_4_obj         ,n_mt_rec);
 
 1444     N nx_4_str = 
new N(
"nx_4_str",nx_4_obj         ,n_mt_str);
 
 1445     N nx_4xrec = 
new N(
"nx_4xrec",nx_4_rec         ,n_mtxrec);
 
 1446     N nx_4xstr = 
new N(
"nx_4xstr",nx_4_str         ,n_mtxstr);
 
 1447     N nx_4xobj = 
new N(
"nx_4xobj",nx_4xrec,nx_4xstr,n_mtxobj);
 
 1450     N nx04_obj = 
new N(
"nx04_obj"                  ,nx0__obj,nx_4_obj);
 
 1451     N nx04_rec = 
new N(
"nx04_rec",nx04_obj         ,nx0__rec,nx_4_rec);
 
 1452     N nx04_str = 
new N(
"nx04_str",nx04_obj         ,nx0__str,nx_4_str);
 
 1453     N nx04xrec = 
new N(
"nx04xrec",nx04_rec         ,nx0_xrec,nx_4xrec);
 
 1454     N nx04xstr = 
new N(
"nx04xstr",nx04_str         ,nx0_xstr,nx_4xstr);
 
 1455     N nx04xobj = 
new N(
"nx04xobj",nx04xrec,nx04xstr,nx0_xobj,nx_4xobj);
 
 1505     N __obj = 
new N(
"__obj");
 
 1506     N A_obj = 
new N(
"A_obj",__obj);
 
 1507     N B_obj = 
new N(
"B_obj",__obj);
 
 1509     N __ary =   
new N(
"__ary",__obj);
 
 1510     N A_ary =     
new N(
"A_ary",__ary,A_obj);
 
 1511     N B_ary =     
new N(
"B_ary",__ary,B_obj);
 
 1512     N __tup =   
new N(
"__tup",__obj);
 
 1513     N A_tup =     
new N(
"A_tup",__tup,A_obj);
 
 1514     N B_tup =     
new N(
"B_tup",__tup,B_obj);
 
 1516     N __str =     
new N(
"__str",__ary);
 
 1517     N A_str =       
new N(
"A_str",__str,A_ary);
 
 1518     N B_str =       
new N(
"B_str",__str,B_ary);
 
 1519     N __rec =     
new N(
"__rec",__tup);
 
 1520     N A_rec =       
new N(
"A_rec",__rec,A_tup);
 
 1521     N B_rec =       
new N(
"B_rec",__rec,B_tup);
 
 1523     N Axrec =       
new N(
"A~rec",A_rec);
 
 1524     N Bxrec =       
new N(
"B~rec",B_rec);
 
 1525     N _xrec =     
new N(
"_~rec",Axrec,Bxrec);
 
 1526     N Axstr =       
new N(
"A~str",A_str);
 
 1527     N Bxstr =       
new N(
"B~str",B_str);
 
 1528     N _xstr =     
new N(
"_~str",Axstr,Bxstr);
 
 1530     N Axtup =     
new N(
"A~tup",Axrec);
 
 1531     N Bxtup =     
new N(
"B~tup",Bxrec);
 
 1532     N _xtup =   
new N(
"_~tup",_xrec,Axtup,Bxtup);
 
 1533     N Axary =     
new N(
"A~ary",Axstr);
 
 1534     N Bxary =     
new N(
"B~ary",Bxstr);
 
 1535     N _xary =   
new N(
"_~ary",_xstr,Axary,Bxary);
 
 1537     N Axobj = 
new N(
"A~obj",Axary,Axtup);
 
 1538     N Bxobj = 
new N(
"B~obj",Bxary,Bxtup);
 
 1539     N _xobj = 
new N(
"_~obj",_xtup,_xary,Axobj,Bxobj);
 
 1576     N __obj = 
new N(
"__obj");
 
 1577     N A_obj = 
new N(
"A_obj",__obj);
 
 1578     N B_obj = 
new N(
"B_obj",__obj);
 
 1580     N __ary =   
new N(
"__ary",__obj);
 
 1581     N A_ary =     
new N(
"A_ary",A_obj);
 
 1582     N B_ary =     
new N(
"B_ary",B_obj);
 
 1583     N __tup =   
new N(
"__tup",__obj);
 
 1584     N A_tup =     
new N(
"A_tup",A_obj);
 
 1585     N B_tup =     
new N(
"B_tup",B_obj);
 
 1587     N __str =     
new N(
"__str",__ary);
 
 1588     N A_str =       
new N(
"A_str",A_ary);
 
 1589     N B_str =       
new N(
"B_str",B_ary);
 
 1590     N __rec =     
new N(
"__rec",__tup);
 
 1591     N A_rec =       
new N(
"A_rec",A_tup);
 
 1592     N B_rec =       
new N(
"B_rec",B_tup);
 
 1594     N Axrec =       
new N(
"A~rec",A_rec);
 
 1595     N Bxrec =       
new N(
"B~rec",B_rec);
 
 1596     N _xrec =     
new N(
"_~rec",__rec);
 
 1597     N Axstr =       
new N(
"A~str",A_str);
 
 1598     N Bxstr =       
new N(
"B~str",B_str);
 
 1599     N _xstr =     
new N(
"_~str",__str);
 
 1601     N Axtup =     
new N(
"A~tup",Axrec);
 
 1602     N Bxtup =     
new N(
"B~tup",Bxrec);
 
 1603     N _xtup =   
new N(
"_~tup",_xrec);
 
 1604     N Axary =     
new N(
"A~ary",Axstr);
 
 1605     N Bxary =     
new N(
"B~ary",Bxstr);
 
 1606     N _xary =   
new N(
"_~ary",_xstr);
 
 1608     N Axobj = 
new N(
"A~obj",Axary,Axtup);
 
 1609     N Bxobj = 
new N(
"B~obj",Bxary,Bxtup);
 
 1610     N _xobj = 
new N(
"_~obj",_xtup,_xary,Axobj,Bxobj);