#read "/home/ph/maple/RC.txt": #with(RandomTools): #read "/home/ph/maple/Solv.txt": writeto(terminal): interface(echo=1): RUNONE:=proc(R,B) ## SET UP CONSTANTS HERE nd:=rowdim(R); J:=IdentityMatrix(nd): u=vector(nd,1): NN:=binomial(nd,2): J2:=evalm(IdentityMatrix(NN)): uu:=vector(NN,1): UJ:=matrix(nd,nd,1): liecliff(nd): ### outfile:="/home/ph/maple/FileIn"||nd||".html"; writeto(outfile);print(); writeto(terminal): interface(echo=1): mr:=map(convert,matrans(R),decimal,hex); mb:=map(convert,matrans(B),decimal,hex); pd:=false:loop:=false:per:=false: prod1:=`*`(seq((mr[k]-mb[k]),k=1..nd)): prod2:=`*`(seq((mr[k]-k),k=1..nd)): prod3:=`*`(seq((k-mb[k]),k=1..nd)): prod:=prod1*prod2*prod3; loop:=evalb(prod<>0): if (not loop) then print("loopcheck",loop): fi; A:=evalm((R+B)/2):Delta:=evalm((R-B)/2): AA:=sympow(A,2): Del2:=sympow(Delta,2): nsj:=nullspace(evalm(J2-AA)): per:=evalb(nops(nsj)=0): print("is irred, aperiodic?",per): pi:=nullspace(J-transpose(A)): prod:=`*`(seq(pi[1][k],k=1..nd)): pd:=evalb(prod<>0); ### end IRRAP CHECK `R`=matrans(R);`B`=matrans(B); cx:=add(pi[1][k],k=1..nd): pi:=evalm(pi[1]/cx); Omega:=stackmatrix(seq(pi,q=1..nd)): dx:=rank(Delta): print(); if(rank(A)=dx) then print("<--> CC <-->") else print("NOT CC", "RANKDIFF",rank(A)-rank(Delta)) fi; print(); NSA:=nullspace(A); nullA:=nops(NSA): "DIM NULLSPACE OF A",nullA; #+========+++++++++=+===== MAIN SET HERE======+++++++++=+====== unassign('w'): `rank of Delta`=dx,`for n equals`=nd; `rank of A`=rank(A); NA:=NullSpace(Matrix(A)): NTA:=NullSpace(Matrix(transpose(A))): nu:=nd-rank(Delta): print("R",matrans(R),"B",matrans(B)); print(): spi:=evalm(pi): twoS:=iszero(u-multiply(u,A)): unassign('x'): # TEMPLATE HERE appendto(outfile); interface(echo=2): print();print(); print(``); print(``); print(``); print(`

New Graph

`);print(`
`);
	print(matrans(R),matrans(B));
	print(`

`); print(`

 
`); print(`


`); print(`

 
`); writeto(terminal): count:=0: synccount:=0; rnccount:=0; nsynccount:=0; print(`===========================================================`); print(); unassign('t','s'): colrs:={}: NSA:=nullspace(A): "NullSpace for A",NSA; XAX:=symult(A,J): cc:={}: rg:={}: appendto(outfile); print(`

`); pi:=clearDenoms(pi): W:=add(pi[k],k=1..nd): print(`π = `); print(pi); print(`

POSSIBLE RANKS

`); for i in numtheory[divisors](W) do if( evalf(i)<= evalf(sqrt(W))) then print(i); print(`x`); print(W/i); print(`
`) fi; od; dt:=det(J2-AA): print(`

BASE DETERMINANT`); print(numer(dt)); print(` / `); print(denom(dt),evalf(dt),`

`); unassign('x'); nsd:=nullspace(Delta): print(` NullSpace of Δ

`); print(seq(readVec(nsd[k]),k=1..nullity(Delta))); nsk:=nullspace(Delta): NSK:=stackmatrix(seq(nsk[k],k=1..nullity(Delta))); unassign('lambda'): print(`

`); print(`Range of Δ:`); print(clearDenoms(linsolve(NSK,vector(max(1,nullity(Delta)),0),'rr',lambda))); print(`

 
`); print(`

`); for k from 0 to nd do for i in choose(nd,k) do ee:=vector(nd,1): if (1 in i) then next fi; for j to nd do if(j in i) then ee[j]:=-1 fi od; phi:=diag(seq(ee[q],q=1..nd)); psi:=sympow(phi,2); dl:=multiply(phi,Delta); D2:=multiply(psi,Del2); A2:=evalm(AA+D2): dt:=det(J2-A2); count:=count+1; if((count mod 20)=0) then print(count,`
`) else print(`
`); fi; KK:=stackmatrix(seq(multiply(pi,dl^i),i=1..dx)): print(ee,`Delta Rank `); print(rank(KK)); print(`vs`); print(dx); if(rank(KK)=dx) then synccount:=synccount+1; print(` --->  SYNC'D`); print(numer(dt)); print(` / `); print(denom(dt),evalf(dt),`
`); elif(det(J2-A2)>0) then rnccount:=rnccount+1; print(` --->  SYNC'D NOT RANK'D`); print(numer(dt)); print(` / `); print(denom(dt),evalf(dt),`
`); print(`

`); print(`   Nullspace of {Ω&Deltai}: `); print(`
`); print(clearDenoms(linsolve(transpose(KK),vector(n,0),'rr',x))); print(`
`); print(clearDenoms(linsolve(KK,vector(dx,0),'rr',y))); nsk:=nullspace(KK): NSK:=stackmatrix(seq(nsk[k],k=1..nops(nsk))); unassign('mu'): print(`

`); print(`Range of {ΩΔi}:`); print(clearDenoms(linsolve(NSK,vector(nops(nsk),0),'rr',mu))); fi; print(`
`); sw:=false: ### RGSW CASE if(det(J2-A2)=0) then nsynccount:=nsynccount+1; print(`
NOT SYNC'D
`); RX:=evalm(A+dl):BX:=evalm(A-dl): print(`

`); print(`Nullspace of {Ω&Deltai}: `); print(`
`); print(clearDenoms(linsolve(transpose(KK),vector(n,0),'rr',x))); print(`
`); print(clearDenoms(linsolve(KK,vector(dx,0),'rr',y))); nsk:=nullspace(KK): NSK:=stackmatrix(seq(nsk[k],k=1..nops(nsk))); unassign('mu'): print(`

`); print(`Range of {ΩΔi}:`); print(clearDenoms(linsolve(NSK,vector(nops(nsk),0),'rr',mu))); print(`

`); dim:=nops(nullspace(J2-A2)); if(dim>1) then AB:=abel(A2):u2:=evalm(AB&*uu) ;pi2:=evalm(uu&*AB): else u2:=evalm(1/x[1]*linsolve(J2-A2,vector(NN,0),'rr',x)); pi2:=evalm(1/x[1]*linsolve(J2-transpose(A2),vector(NN,0),'rr',x)); fi; ux:=evalm(u2); m:=max(seq(u2[k],k=1..NN)): NX:=matvec(evalm(u2/m)); rh:=multiply(spi,NX): rk:=1/(1-rh[1]): pp:=multiply(UJ-NX,u): print(`

 
`); if(rk>1) then Rk:=sympow(RX,rk): Bk:=sympow(BX,rk): Ak:=evalm(1/2*(Rk+Bk)); nk:=binomial(n,rk):jk:=evalm(IdentityMatrix(nk)): u||rk:=evalm(1/x[1]*linsolve(jk-Ak,vector(nk,0),'rr',x)); pi||rk:=evalm(1/x[1]*linsolve(jk-transpose(Ak),vector(nk,0),'rr',x)); fi; M:=matvec(pi2): print(`rank of M is`);print(rank(M)); print(`, rank of N is`);print(rank(NX)); print(`

`); print(`Check is ΩΔN zero? `); print(iszero(multiply(Omega,dl,NX)),`πΔ=`); print(evalm(pi&*dl)); print(`

`); unassign('lambda','mu'): print(`ker M`,clearDenoms(linsolve(M,vector(n,0),'rr',lambda)));print(`

`); print(`ker N`,clearDenoms(linsolve(NX,vector(n,0),'rr',mu)));print(`

`); NSM:=matrix(1,n,0); if(nullity(M)>0) then nsm:=nullspace(M): NSM:=stackmatrix(seq(nsm[k],k=1..nullity(M))); fi; unassign('x','y'): print(`Range M`,clearDenoms(linsolve(NSM,vector(max(1,nullity(M)),0),'rr',x))); print(`

`); rv:=readVec(pi||rk); nr:=nops(rv): CK:=map(convert,choose(n,rk),set): print(`

`); print(`Ranges`); print(`

`); betasum:=add(pi||rk[k],k=1..nk); for i to nr do prob:=pi||rk[rv[i]]/betasum; print(`β`(CK[rv[i]])=numer(prob));print(` / `);print(denom(prob)); print(`
`); od; B1:=CK[rv[1]]; unassign('x','y'): lst:=[NX]; names:=[` N `]; for i to 1 do VRN:=goRange(lst[i]); print(`

Range of`); print(names[i]); print(`
   `); print(VRN); print(`

`); print(`Partitions`); print(`
`); od; GPN:=[goParts(NX)]; PN:=`union`(seq({GPN[k]},k=1..nops(GPN))); alpha:=[]; PBASIS:=[]: matr:=[]; matb:=[]; if(nops(PN)<20) then gpts:=getParts(GPN,nd,rk,CK[rv[1]],RX,BX,NX); PBASIS:=gpts[1]; alpha:=gpts[2]; if(nops(PBASIS)>1) then matr:=gpts[3]; matb:=gpts[4]; fi; else print(`

Too many possibilities to consider

`); fi;#nops(PN) if(nops(PBASIS)>1) then print(`

`); print(`Action of R on partitions`,matr); print(`
`); print(`Action of B on partitions`,matb); print(`

`); fi; for i to nops(PBASIS) do print(`α`([op(readcycles(PBASIS[i]))])=numer(alpha[i])); print(` / `); print(denom(alpha[i])); print(`
`); od; print(`

 
`); print(``); for ia to NN do if ( (ux[ia]<>1) and (ux[ia]<>0)) then print(``); sw:=true; break; fi od; if(not sw) then print(``) fi; COLR:=readVec(evalm(u-ee)): if(sw) then colrs:=colrs union {[COLR,rk]}; else if(UTC(RX,BX)=3) then utc:=`Solvable` else utc:=`Not Solvable` fi; if(rk`); print(``); print(``); print(``); print(``); print(``); if(rk>2) then print(``); print(``); fi; print(`
Sandwich
Right Group
Coloring`); print(COLR); print(`
Rank`||rk||`
R,B`); print(matrans(RX),matrans(BX)); print(`
π2`); print(evalm(clearDenoms(pi2))); print(`
u2`); print(evalm(clearDenoms(u2))); print(` (dim `||dim||`)
wpp`); print(evalm(clearDenoms(pp))); print(`
π`||rk||``); print(evalm(clearDenoms(pi||rk))); print(`
u`||rk||``); print(evalm(clearDenoms(u||rk))); print(`
`); print(`

 
`); if(iszero(symult(dl,J)-XAX)) then cc:=cc union {[COLR,sw,rk]} fi; fi od; od; print(); print(`


 
`); print(``); print(``); if(rank(A)<>rank(Delta)) then print(``); else print(``) fi; unassign('nu'): print(``); print(``); print(``); print(``); print(`
SUMMARY
Graph Type
NOT CC
Graph Type
CC
ν(A)
`); print(nd-rank(A)); print(`
ν(Δ)
`); print(nd-rank(Delta)); print(`
π
`); print(evalm(clearDenoms(pi))); print(`
Dbly Stoch
`||twoS||`

 
`); print(``); print(``); for i to nops(colrs) do print(``); od; print(`
SANDWICH
Total`); print(nops(colrs)); print(`
No .ColoringRank
`||i||``); print(colrs[i][1]); print(``); print(colrs[i][2]); print(`

 
`); print(``); print(``); for i to nops(rg) do print(``) od; print(`
RT GROUPS
Total`); print(nops(rg)); print(`
No .ColoringRankSolv
`||i||``); print(rg[i][1]); print(``); print(rg[i][2]); print(``); print(rg[i][3]); print(`

 
`); if(nops(cc)>0) then print(``); print(``); print(``); for i to nops(cc) do print(``) od; print(`
CC Colorings
Total `); print(nops(cc)); print(`
No .ColoringSandwich,Rank
`||i||``); print(cc[i][1]); print(``); print(cc[i][2],cc[i][3]); print(`

 
`); fi; print(`

`); countcheck:=synccount+rnccount+nsynccount; ctcheck:=2^(n-1); print(``); print(``); print(``); print(``); print(`
RANK'DSYNC'D NOT RANK'DNOT SYNC'DTotal Runs2n-1
`); print(synccount); print(``); print(rnccount); print(``); print(nsynccount); print(``); print(countcheck); print(``); print(ctcheck); print(`
`); print(`

`); print(`


 
`); print(``);print(``); writeto(terminal): interface(echo=1): system("perl /home/ph/maple/maplecleaner "||outfile); end: