if get('geometry2,'version)=false then load(geometry2); /* Pappus theorem; 9 points and 9 lines Points: a0, a1, a2, b0, b1, b2, c0, c1, c2 line contains points l0 a0 b1 c0 l1 a0 b2 c1 l2 a1 b0 c0 l3 a1 b2 c2 l4 a2 b0 c1 l5 a2 b1 c2 l6 a0 a1 a2 l7 b0 b1 b2 l8 c0 c1 c2 */ /* Specs */ a00:a10:0; a20:1; a01:1; a11:0; a21:1; a12:0; a22:1; /* a02 # 0 */ l06:0; l16:1; l26:0; for i:0 thru 2 do ( a[i]:[concat('a0,i),concat('a1,i),concat('a2,i)], b[i]:[concat('b0,i),concat('b1,i),concat('b2,i)], c[i]:[concat('c0,i),concat('c1,i),concat('c2,i)] ); for i:0 thru 8 do l[i]:[concat('l0,i),concat('l1,i),concat('l2,i)]; rel(l,a,b,c):=[l.a,l.b,l.c]; eqns:append( [1-v*collinear(c[0], c[1], c[2])], rel(l[0],a[0], b[1], c[0]), rel(l[1],a[0], b[2], c[1]), rel(l[2],a[1], b[0], c[0]), rel(l[3],a[1], b[2], c[2]), rel(l[4],a[2], b[0], c[1]), rel(l[5],a[2], b[1], c[2]), rel(l[6],a[0], a[1], a[2]), rel(l[7],b[0], b[1], b[2])); vars:append(makelist(l[j],j,0,7), makelist([c[i]],i,0,2),[a[2],b[2]]); params:makelist([a[i],b[i]],i,0,1); vars:''vars; params:''params; vars:listofvars(vars); params:listofvars(params); cover:expand([[[],[]]]); eqns:expand(''eqns); cover:expand(''cover); stringout("pappus4.out",eqns,vars,params,cover);