isdicomplement:=lambda(i) and( forall(x in L, forall(y in L, if <=(indexof(L, y), i) then yc:=item(argumentlist,indexof(L,y)); infxy:=inf(x,y); infxyc:=inf(x,yc); s:=sup(infxy,infxyc); if equal(s,x) then true else false endif else true endif)), forall(x in L, if <=(indexof(L, x), i) then xc:=item(argumentlist,indexof(L,x)); if <=(indexof(L, xc), i) then xcc:=item(argumentlist,indexof(L,xc)); if <=(xcc,x) then true else false endif else true endif else true endif), forall(x in L, forall(y in L, if and(<=(indexof(L, x), i),<=(indexof(L, y), i),<=(x,y)) then xc:=item(argumentlist,indexof(L,x)); yc:=item(argumentlist,indexof(L,y)); if >=(xc,yc) then true else false endif else true endif))) endlambda; findnextlist:=lambda(i) for k in L do setitem(argumentlist, i, k); if isdicomplement(i) then if equal(i,maxindex) then numfound:=+(numfound,1); writeln(""); write("No. "); writeln(numfound); for k1 in L do write(k1); write(" -> "); writeln(item(argumentlist,indexof(L,k1))) endfor; true else findnextlist(+(i,1)) endif else false endif endfor endlambda; L:=listprompt("Select a structure", structures); prepare(L); maxindex:=difference(card(L),1); argumentlist:=emptyset; numfound:=0; for e in L do additem(argumentlist, item(L,0)) endfor; findnextlist(0);