import java.applet.Applet; import java.awt.*; import java.awt.event.*; import java.applet.*; import java.awt.geom.*; import java.math.*; /**This class contains the proof that the compactification map is well defined on all of the polyhedra of the compactification. It is the only place where we use the lift to 4 dimensions. The proof here is half of the verification of the Compactification Theorem. The other half consists in checking that the polyhedra we have listed really do form a partition of the torus.*/ public class ProofCompact2 implements Runnable { int halt; Manager M; public ProofCompact2(Manager MM) { this.M=MM; } public void run() { for(int i=0;i<64;++i) { boolean test=checkPoly(i); int[] e=sequencePoly(i); System.out.print(i+" "+test+" "); for(int k=1;k<=8;++k) System.out.print(e[k]+" "); System.out.println(""); } } public boolean checkPoly(int i) { for(int j=0;j<4;++j) { GoldenPolyhedron GP=DataPartition.getGoldenPolyhedron(i); GoldenPolytope GX=I(j,GP); int[] e=sequencePoly(i); for(int k=1;k<=8;++k) { boolean test=checkSqueezed(e[k],k,GX); if(test==false) return(false); GX=tilde_EGuided(e[k],k,GX); } } return(true); } /**This routine uses floating point arithmetic to compute a certain sequence associated to each polyhedron. We do this by tracking the centroid of the lifted polytope. It actually doesn't matter how we compute this sequence. Once we have it, we feed it into our rigorous verifier.*/ public int[] sequencePoly(int i) { Polyhedron P=DataPartition.getPolyhedron(i); Polytope X=Compactify.I(0,P); Vector4 V=X.getCenter(); int[] u=Compactify.determineSequence(V); return(u); } /**Now for all the supporting routines**/ /**The piecewise affine maps of R^4**/ public static GoldenPolytope tilde_EGuided(int e,int j,GoldenPolytope X) { GoldenPolytope Y=new GoldenPolytope(); Y.count=X.count; for(int i=0;i