#This program creates a facet-vertex matrix from a satisfying output. Replace the output below by output to be tested, #and update d and n. T=(None, True, True, True, True, True, False, True, True, True, False, True, False, True, True, False, True, False, True, False, False, True, False, True, False, True, True, True, False, True, False, False, False, False, False, False, False, False, False, False, True, True, False, True, True, False, False, False, False, True, False, False, False, False, False, False, True, False, True, True, False, True, False, False, True, False, False, False, False, True, False, True, False, False, True, False, True, False, True, True, False, False, False, True, False, True, True, True, True, False, True, True, True, True, False, True, False, False, True, False, False, True, False, True, True, False, False, True, True, False, True, True, True, False, True, False, True, False, True, True, False, True, True, False, True, False, True, False, False, True, False, True, False, True, False, False, True, True, True, False, True, True, True, True, True, True, False, False, True, False, True, True, True, True, True, False, False, False, True, False, True, True, True, True, True, False, False, False, False, False, False, True, False, False, True, True, False, False, True, False, True, True, True, True, True, False, False, True, False, True, True, False, False, False, True, True, False, True, True, True, True, False, False, False, True, False, True, True, False, False, True, False, False, False, False, True, False, False, False, False, True, False, True, True, False, True, True, False, True, False, False, True, True, False, False, True, False, False, False, True, False, True, False, True, True, True, False, False, False, True, False, True, False, True, True, True, False, False, True, False, False, False, True, False, False, True, True, False, False, False, False, False, True, True, False, True, False, False, False, False, False, True, True, False, False, False, False, False, False, False, False, True, True, True, True, True, True, False, True, True, False, False, True, True, False, True, False, False, False, False, False, True, True, False, True, False, False, True, True, True, False, True, False, False, False, False, False, True, True, True, False, True, False, False, True, True, False, True, True, True, False, True, False, False, True, False, True, True, True, True, True, False, True, True, False, True, True, True, True, True, True, False, False, False, False, False, False, True, False, False, True, True, False, False, True, False, True, True, True, True, True, False, False, True, False, True, True, False, False, False, True, True, True, True, True, True, True, False, False, False, True, False, True, True, False, False, True, True, True, False, True, False, False, False, False, False, True, False, False, False, False, True, True, False, False, True, False, False, False, False, False, False, True, False, False, True, False, True, True, True, True, True, False, True, False, False, True, True, False, False, True, False, False, True, True, False, True, False, False, True, False, False, False, False, False, False, False, True, False, False, False, False, True, False, True, True, False, True, True, False, True, False, False, True, True, False, False, True, False, False, False, True, False, True, False, True, False, False, True, False, False, True, False, True, False, True, True, False, True, False, True, False, True, True, False, False, False, True, False, False, False, False, False, False, True, True, False, True, False, False, False, False, False, True, True, True, False, True, False, False, False, False, False, True, True, True, True, True, True, False, True, True, False, False, True, True, False, True, False, False, False, False, False, True, True, False, True, False, False, True, True, True, False, True, True, False, False, False, False, True, True, True, False, True, False, False, True, True, False, False, True, True, False, True, True, True, False, True, False, True, False, True, False, False, True, True, False, True, False, False, False, False, False, True, True, False, True, False, True, True, True, True, False, False, True, True, False, True, False, False, False, False, False, True, True, False, True, False, False, True, True, True, False, False, True, False, False, True, False, True, True, True, False, True, True, False, True, True, False, True, True, False, True, False, False, False, False, False, True, True, False, True, False, True, True, True, True, False, False, True, False, False, False, False, True, True, True, True, True, False, False, True, True, False, False, True, False, False, True, True, False, False, True, False, False, True, True, False, True, False, False, True, False, False, False, True, True, True, False, True, False, False, True, False, True, True, True, True, True, False, True, True, True, True, True, True, True, True, True, False, False, False, False, False, False, True, False, False, True, True, False, False, True, False, True, True, True, True, True, False, False, True, False, True, True, False, False, False, True, False, True, True, True, True, True, False, False, False, True, False, True, True, False, False, True, True, True, False, True, True, False, True, False, False, True, False, False, False, False, True, True, False, False, True, False, False, False, False, False, False, True, False, False, True, False, True, True, True, True, True, False, True, False, False, True, True, False, False, True, False, False, True, True, False, True, False, False, True, False, False, False, True, True, False, True, False, False, False, False, False, True, True, False, True, False, True, True, True, True, False, False, False, False, False, False, False, True, False, False, True, False, False, True, True, True, True, False, True, False, False, True, True, False, False, True, False, False, True, True, False, True, False, False, True, False, False, False, False, False, False, False, True, True, False, False, True, False, False, True, True, True, True, False, False, False, False, False, False, True, True, False, True, False, True, False) chiro=[1 for i in range(len(T))] for i in range(len(T)): if T[i]==True: chiro[i]=1 if T[i]==False: chiro[i]=-1 if T[i]==None: chiro[i]=0 print(chiro) def listsigma(os1): sig=1 for i in range(1,len(os1)): for j in range(i): if os1[j]>os1[i]: sig=-sig return sig d=5 n=10 V=Subsets(n,d) S=Subsets(n+2,d+1) vlist=[] for i in range(len(V)): nb=sorted(V[i]) nbvert=1 for i in [1..n]: if i not in nb and listsigma(nb+[i])*chiro[S.rank(nb+[i])+1]<>chiro[S.rank(nb+[n+2])+1]: nbvert=0 if nbvert==1: vlist=vlist+[nb] A=matrix(n,len(vlist)) for j in range(len(vlist)): tk=-1 for i in range(n): if i+1 not in vlist[j]: A[i,j]=0 if i+1 in vlist[j]: tk=tk+1 vlistf=vlist[j][:] vlistf[tk]=n+1 if listsigma(vlistf+[n+2])*chiro[S.rank(vlistf+[n+2])+1]==chiro[S.rank(vlist[j]+[n+2])+1]: A[i,j]=-1 if listsigma(vlistf+[n+2])*chiro[S.rank(vlistf+[n+2])+1]<>chiro[S.rank(vlist[j]+[n+2])+1]: A[i,j]=1 A