H:=proc(): print(`Ico(),Adj1(V,E),Chop(L),`): print(`Span(base), Golay(), CheckGolay()`): end: Chop:=proc(L) local i: [op(1..nops(L)-1,L)]: end: Ico:=proc() local V, E,T,B,M1,M2,i1: V:=[T,seq(M1[i],i=0..4), seq(M2[i],i=0..4),B]: E:={ seq({T,M1[i]},i=0..4), seq({M1[i],M1[(i+1) mod 5]},i=0..4), seq({M1[i],M2[i]},i=0..4), seq({M1[i],M2[(i+1) mod 5]},i=0..4), seq({M2[i],M2[(i+1) mod 5]},i=0..4), seq({B,M2[i]},i=0..4) }: V,E: end: Adj1:=proc(V,E) local M,i,M1,j,n: M:=[]: for i from 1 to nops(V) do M1:=[]: for j from 1 to nops(V) do if member({V[i],V[j]},E) then n:=1: else n:=0: fi: M1:=[op(M1),n]: od: M:=[op(M),M1]: od: M: end: Golay:=proc() local M1,M: M1:=Adj1(Ico()): [seq( [ 0$(i-1),1,0$(12-i), seq(1-M1[i][j],j=1..12) ] ,i=1..12)]: end: Add1:=proc(L1,L2) local i: [seq((L1[i]+L2[i]) mod 2,i=1..nops(L1))]:end: Span:=proc(Base1) local Base2,Sp1,d,Last1: if Base1=[] then ERROR(`Must have at least one element`): fi: if nops(Base1)=1 then d:=nops(Base1[1]): RETURN({[0$d], Base1[1]}): fi: Base2:=Chop(Base1): Last1:=Base1[nops(Base1)]: Sp1:=Span(Base2): Sp1 union {seq(Add1(Sp1[i],Last1),i=1..nops(Sp1))}: end: CheckGolay:=proc() local V,i,tem: V:=Span(Golay()): tem:={seq(convert(V[i],`+`),i=1..nops(V))} minus {0}: evalb(min(op(tem))=8): end: