Sindbad~EG File Manager

Current Path : /usr/home/beeson/public_html/michaelbeeson/research/FormalTarski/Tools/
Upload File :
Current File : /usr/home/beeson/public_html/michaelbeeson/research/FormalTarski/Tools/TarskiTheorems.php.txt

#!/usr/bin/php
<?php 
// Strings can be written on two lines by using a period to concatenate the lines.
// We did this in some places to permit this file to be printed for archival purposes.
error_reporting(E_ALL|E_STRICT); 
ini_set('display_errors', true); 

class Theorem
{	var $name;
	var $PositiveForm;     // If a list, means conjunction of the elements; can involve a Skolem symbol
	var $NegatedForm;      // supposed to be equivalent to the negation of the PositiveForm
	                       //  with Skolem terms replaced by variables. 
	var $Diagram;          // an array of diagram equations
	var $SkolemSymbols = "";  // array of Skolem symbols introduced, in order needed
	var $Cases = "";     //  cases we used to split the problem, if any.
	function Theorem($a,$b,$c,$d="",$e="",$f="")
	   { $this->name = $a;
		 $this->PositiveForm = $b;
		 $this->NegatedForm = $c;
		 $this->Diagram = $d;
		 $this->SkolemSymbols = $e;
		 $this->Cases = $f;
	   }
}

class Axiom
{	var $name;
	var $PositiveForm;
	function Axiom($a,$b )
	   { $this->name = $a;
		 $this->PositiveForm = $b;
	   }
}

class Definition         //  relations are defined.  Functions are introduced as Skolem symbols in axioms or theorems.
{	var $name;
	var $definiens;
	var $LeftToRight;  // a list of clauses
	var $RightToLeft;  // a list of clauses
	function Definition($a,$b,$c,$d)
	   { $this->name = $a;
		 $this->definiens = $b;
		 $this->LeftToRight = $c;
		 $this->RightToLeft = $d;
	   }
}

$TarskiAxioms = array(
	new Axiom ("A1", "E(x,y,y,x)"),
	new Axiom ("A2", "-E(x,y,z,v) | -E(x,y,z2,v2) | E(z,v,z2,v2)"),
	new Axiom ("A3", "-E(x,y,z,z) | x=y"),
	new Axiom ("A4-i",  "T(x,y,ext(x,y,w,v))"),
	new Axiom ("A4-ii", "E(y,ext(x,y,w,v),w,v)"),
	new Axiom ("A5","-E(x,y,x1,y1) | -E(y,z,y1,z1) | -E(x,v,x1,v1) | -E(y,v,y1,v1) | -T(x,y,z) | -T(x1,y1,z1) | x=y | E(z,v,z1,v1)"),
	new Axiom ("A6"," -T(x,y,x) | x=y"),
	new Axiom ("A7-i","-T(xa,xp,xc) | -T(xb,xq,xc) | T(xp,ip(xa,xp,xc,xb,xq),xb)"),
	new Axiom ("A7-ii","-T(xa,xp,xc) | -T(xb,xq,xc) | T(xq,ip(xa,xp,xc,xb,xq),xa)"),
	new Axiom ("A8-i","-T(alpha,beta,gamma)"),
	new Axiom ("A8-ii","-T(beta,gamma,alpha)"),
	new Axiom ("A8-iii","-T(gamma,alpha,beta)"),
	new Axiom ("A9", "xp=xq | -E(xa,xp,xz,xq) | -E(xb,xp,xb,xq) | -E(xc,xp,xc,xq) | T(xa,xb,xc) | T(xb,xc,xa) | T(xc,xa,xb)"),
	new Axiom ("A10-i", "-T(xa,xd,xt) | -T(xb,xd,xc) | xa = xd | T(xa,xb,f10(xa,xb,xc,xd,xt))"),
	new Axiom ("A10-ii", "-T(xa,xd,xt) | -T(xb,xd,xc) | xa = xd | T(xa,xc,g10(xa,xb,xc,xd,xt))"),
	new Axiom ("A10-iii", "-T(xa,xd,xt) | -T(xb,xd,xc) | xa = xd | T(f10(xa,xb,xc,xd,xt),xt,g10(xa,xb,xc,xd,xt))")
);


$TarskiDefinitions = array(
  new Definition("Defn2.10", "AFS",
        array( 
	 	  "-AFS(xa,xb,xc,xd,za,zb,zc,zd) | T(xa,xb,xc)",
          "-AFS(xa,xb,xc,xd,za,zb,zc,zd) | T(za,zb,zc)",
          "-AFS(xa,xb,xc,xd,za,zb,zc,zd) | E(xa,xb,za,zb)",
          "-AFS(xa,xb,xc,xd,za,zb,zc,zd) | E(xb,xc,zb,zc)",
          "-AFS(xa,xb,xc,xd,za,zb,zc,zd) | E(xa,xd,za,zd)",
          "-AFS(xa,xb,xc,xd,za,zb,zc,zd) | E(xb,xd,zb,zd)"
         ),
         array(
		 "-T(xa,xb,xc) | -T(za,zb,zc) | -E(xa,xb,za,zb) | -E(xb,xc,zb,zc) | -E(xa,xd,za,zd) | -E(xb,xd,zb,zd)| AFS(xa,xb,xc,xd,za,zb,zc,zd)"
		)
	),
	new Definition("Defn4.1", "IFS",
	    array(
		  "-IFS(xa,xb,xc,xd,za,zb,zc,zd) | T(xa,xb,xc)",
		  "-IFS(xa,xb,xc,xd,za,zb,zc,zd) | T(za,zb,zc)",
		  "-IFS(xa,xb,xc,xd,za,zb,zc,zd) | E(xa,xc,za,zc)",
		  "-IFS(xa,xb,xc,xd,za,zb,zc,zd) | E(xb,xc,zb,zc)",
		  "-IFS(xa,xb,xc,xd,za,zb,zc,zd) | E(xa,xd,za,zd)",
		  "-IFS(xa,xb,xc,xd,za,zb,zc,zd) | E(xc,xd,zc,zd)"
	    ),
	    array(
		 " -T(xa,xb,xc) | -T(za,zb,zc) | -E(xa,xc,za,zc) | -E(xb,xc,zb,zc) | -E(xa,xd,za,zd) | -E(xc,xd,zc,zd)| IFS(xa,xb,xc,xd,za,zb,zc,zd)"
		)
	),
	new Definition("Defn4.4","E3",  // for n = 3
	    array(
		 "-E3(xa1,xa2,xa3,xb1,xb2,xb3) | E(xa1,xa2,xb1,xb2)",
		 "-E3(xa1,xa2,xa3,xb1,xb2,xb3) | E(xa1,xa3,xb1,xb3)",
		 "-E3(xa1,xa2,xa3,xb1,xb2,xb3) | E(xa2,xa3,xb2,xb3)"
		),
		array(
		 "-E(xa1,xa2,xb1,xb2) | -E(xa1,xa3,xb1,xb3) | -E(xa2,xa3,xb2,xb3) | E3(xa1,xa2,xa3,xb1,xb2,xb3)"
		)
	),
	new Definition("Defn4.10","Col",
	    array(
		  "-Col(xa,xb,xc) | T(xa,xb,xc) | T(xb,xc,xa) | T(xc,xa,xb)"
		),
		array( 
		  "Col(xa,xb,xc) | -T(xa,xb,xc)", "Col(xa,xb,xc) | -T(xb,xc,xa)","Col(xa,xb,xc) | -T(xc,xa,xb)"
		)
	),
	new Definition("Defn4.15","FS",
        array(
	        "-FS(xa,xb,xc,xd,xa1,xb1,xc1,xd1) | Col(xa,xb,xc)",
	        "-FS(xa,xb,xc,xd,xa1,xb1,xc1,xd1) | E3(xa,xb,xc,xa1,xb1,xc1)",
	        "-FS(xa,xb,xc,xd,xa1,xb1,xc1,xd1) | E(xa,xd,xa1,xd1)",
	        "-FS(xa,xb,xc,xd,xa1,xb1,xc1,xd1) | E(xb,xd,xb1,xd1)"
	    ),
	    array( "-Col(xa,xb,xc) | -E3(xa,xb,xc,xa1,xb1,xc1) | -E(xa,xd,xa1,xd1) | -E(xb,xd,xb1,xd1) | FS(xa,xb,xc,xd,xa1,xb1,xc1,xd1)"
	    )
	),
	new Definition("Defn5.4","le",
	      array("-le(xa,xb,xc,xd) | T(xc,insert(xa,xb,xc,xd),xd)",  
		   "-le(xa,xb,xc,xd) | E(xa,xb,xc,insert(xa,xb,xc,xd))"
		  ),
		  array("-T(xc,y,xd) | -E(xa,xb,xc,y) | le(xa,xb,xc,xd)"
		  )
	),
    new Definition("Defn6.1","sameside",
	  //  a and b are on the same side of p
	   array("-sameside(xa,xp,xb) | xa != xp",
	     "-sameside(xa,xp,xb) | xb != xp",
	     "-sameside(xa,xp,xb) | T(xp,xa,xb) | T(xp,xb,xa)"
	    ),
	    array( "-T(xp,xa,xb) | xa=xp |xb=xp | sameside(xa,xp,xb)",
          "-T(xp,xb,xa) | xa=xp | xb=xp | sameside(xa,xp,xb)"  
        )
    ),
	new Definition("Defn7.1", "M",   // m is the midpoint of ab
		array("-M(xa,xm,xb) | T(xa,xm,xb)","-M(xa,xm,xb) | E(xm,xa,xm,xb)"
		),
		array("-T(xa,xm,xb) | -E(xm,xa,xm,xb) | M(xa,xm,xb)"
		)
	),
   new Definition("Defn7.23", "KF",  // Krippenfigur 
        array(
		 "-KF(xa1,xm1,xb1,xc,xb2,xm2,xa2) | T(xa1,xc,xa2)",
		 "-KF(xa1,xm1,xb1,xc,xb2,xm2,xa2) |  T(xb1,xc,xb2)",
		 "-KF(xa1,xm1,xb1,xc,xb2,xm2,xa2) | E(xc,xa1,xc,xb1)",
		 "-KF(xa1,xm1,xb1,xc,xb2,xm2,xa2) | E(xc,xa2,xc,xb2)",
		 "-KF(xa1,xm1,xb1,xc,xb2,xm2,xa2) | M(xa1,xm1,xb1)",
		 "-KF(xa1,xm1,xb1,xc,xb2,xm2,xa2) |  M(xa2,xm2,xb2)"
		),
		array(" -T(xa1,xc,xa2) | -T(xb1,xc,xb2) | -E(xc,xa1,xc,xb1) | -E(xc,xa2,xc,xb2) | -M(xa1,xm1,xb1) | -M(xa2,xm2,xb2) | KF(xa1,xm1,xb1,xc,xb2,xm2,xa2)"
		)
	),
	new Definition("Defn8.1", "R",  // Right angle
        array(
	 	  "-R(xa,xb,xc) | E(xa,xc,xa,s(xb,xc))"
	    ),
		array("R(xa,xb,xc) | -E(xa,xc,xa,s(xb,xc))"
		)
	),
	new Definition("Defn8.11a", "perpAt",
       array(
			"-perpAt(y,z,x,y1,z1) | Col(y,z,x)",
	  		"-perpAt(y,z,x,y1,z1) | Col(y1,z1,x)",
	  		"-perpAt(y,z,x,y1,z1) |y != z",
	  		"-perpAt(y,z,x,y1,z1) |y1 != z1",
	  		"-perpAt(y,z,x,y1,z1) | -Col(y,z,u) | -Col(y1,z1,v) | R(u,x,v)"
	   ),
	   array(
			"perpAt(y,z,x,y1,z1) | y = z | y1 = z1 | -Col(y,z,x) | -Col(y1,z1,x) |  Col(y,z,f811(y,z,y1,z1,x))",
	  		"perpAt(y,z,x,y1,z1) | y = z | y1 = z1 | -Col(y,z,x) | -Col(y1,z1,x) |  Col(y1,z1,g811(y,z,y1,z1,x))",
	  		"perpAt(y,z,x,y1,z1) | y = z | y1 = z1 | -Col(y,z,x) | -Col(y1,z1,x) |  -R(f811(y,z,y1,z1,x),x,g811(y,z,y1,z1,x))"
	   )
	),
	new Definition("Defn8.11b","perp",
	   array(
			"-perp(xp,xq,xp1,xq1) | perpAt(xp,xq,il(xp,xq,xp1,xq1),xp1,xq1)"
	   ),
	   array("perp(xp,xq,xp1,xq1) | -perpAt(xp,xq,x,xp1,xq1)"
	   )
	),
	new Definition("Defn9.1", "opposite", // opposite(a,p,q,b) means a and b are on opposite sides of Line(p,q)
	   array(
			"xp = xq | Col(xp,xq,xa) | Col(xp,xq,xb) | -T(xa,xt,xb) | -Col(xp,xq,xt) | opposite(xa,xp,xq,xb)",
			"-opposite(xa,xp,xq,xb) | -Col(xp,xq,xa)",
			"-opposite(xa,xp,xq,xb) | -Col(xp,xq,xb)",
	   		"-opposite(xa,xp,xq,xb) | T(xa,il(xa,xb,xp,xq),xb)"
	   ),
	   array(
			"-opposite(xa,xp,xq,xb) | Col(xp,xq,il(xa,xb,xp,xq))"
	   )
	),
	new Definition("Defn9.7", "samesideline", // samesideline(a,p,q,b) means a and b are on the same side of Line(p,q)
	    array( 
			"-samesideline(xa,xb,xp,xq) | Col(xp,xq,ss1(xa,xb,xp,xq))",
			"-samesideline(xa,xb,xp,xq) | Col(xp,xq,ss2(xa,xb,xp,xq))",
			"-samesideline(xa,xb,xp,xq) | T(xa,ss1(xa,xb,xp,xq),ss3(xa,xb,xp,xq))",
			"-samesideline(xa,xb,xp,xq) | T(xb,ss2(xa,xb,xp,xq),ss3(xa,xb,xp,xq))",
			"-samesideline(xa,xb,xp,xq) | xa != ss1(xa,xb,xp,xq)",
			"-samesideline(xa,xb,xp,xq) | xb != ss2(xa,xb,xp,xq)",
			"-samesideline(xa,xb,xp,xq) | ss3(xa,xb,xp,xq) != ss1(xa,xb,xp,xq)",
			"-samesideline(xa,xb,xp,xq) | ss3(xa,xb,xp,xq) != ss2(xa,xb,xp,xq)", 
			"-samesideline(xa,xb,xp,xq) | xp != xq",
			"-samesideline(xa,xb,xp,xq) | -Col(xp,xq,xa)",
			"-samesideline(xa,xb,xp,xq) | -Col(xp,xq,xb)"
		),
		array(
			"-T(xa,xu,xc) | -T(xb,xv,xc) | -Col(xp,xq,xu) | -Col(xp,xq,xv) |xp=xq | xc = xu ".  
			"| xc = xv | xa = xu | xb = xv | Col(xp,xq,xa) | Col(xp,xq,xb)  | samesideline(xa,xb,xp,xq)",
		)
	),
    new Definition( "Defn11.2", "congruent",// congruent angles, not triangles.  Our definition is different from Szmielew's.
      	array(
				"-congruent(xa,xb,xc,xd,xe,xf) | E(ext(xb,xc,xe,xf),ext(xb,xa,xe,xd),ext(xe,xf,xb,xc),ext(xe,xd,xb,xa))",
				"-congruent(xa,xb,xc,xd,xe,xf) | xa != xb",
				"-congruent(xa,xb,xc,xd,xe,xf) | xc != xb",
				"-congruent(xa,xb,xc,xd,xe,xf) | xd != xe",
				"-congruent(xa,xb,xc,xd,xe,xf) | xf != xe"
		),
		array(
				 "congruent(xa,xb,xc,xd,xe,xf) | -T(xb,xa,xa1) | -E(xa,xa1,xe,xd) | -T(xb,xc,xc1)".
				 "| -E(xc,xc1,xe,xf) | -T(xe,xd,xd1) | -E(xd,xd1,xb,xa) | -T(xe,xf,xf1)".
				 "| -E(xf,xf1,xb,xc) | -E(xa1,xc1,xd1,xf1) | xa=xb | xc=xb | xd=xe | xf=xe"
	  	)
	),
	new Definition("Defn12.7", "parallel",  //  i.e. echt parallel
		array( 	"-parallel(xA,yA,xB,yB) | xA != yA", 
				"-parallel(xA,yA,xB,yB) | xB != yB", 
				"-parallel(xA,yA,xB,yB) |  samesideline(xB,yB,xA,yA)", 
				"-parallel(xA,yA,xB,yB) | -Col(xA,yA,x) | -Col(xB,yB,x)"
		),
		array("xA=yA | xB=yB  | parallel(xA,yA,xB,yB) | Col(xA,yA,e5(xA,yA,xB,yB)) | -samesideline(xB,yB,xA,yA)",    
				"xA=yA | xB=yB  | parallel(xA,yA,xB,yB) | Col(xB,yB,e5(xA,yA,xB,yB)) | -samesideline(xB,yB,xA,yA)"
		)
	)
);

/* These are cases when Skolem functions are definable.  */
$TarskiTermDefinitions = array(
	'insert' => "insert(xa,xb,xa1,xc1) = ext(ext(xc1,xa1,alpha,gamma),xa1,xa,xb)",
	'conga' => "conga(xa,xb,xd,xe) = ext(xb,xa,xe,xd)",
	'congc' => "congc(xb,xc,xe,xf) = ext(xb,xc,xe,xf)",
	'congd' => "congd(xa,xb,xd,xe) = ext(xe,xd,xb,xa)",
	'congf' => "congf(xb,xc,xe,xf) = ext(xe,xf,xb,xc)"
);
 
$TarskiTheorems = array(
	new Theorem( "Satz2.1", 
		array("E(xa,xb,xa,xb)"), 
		array("-E(a,b,a,b)")
	),  
	new Theorem( "Satz2.2", 
		array("-E(xa,xb,xc,xd) | E(xc,xd,xa,xb)"),
		array("E(a,b,c,d)","-E(c,d,a,b)")
	),  
	new Theorem( "Satz2.3", 
		array("-E(xa,xb,xc,xd) | -E(xc,xd,xe,xf) | E(xa,xb,xe,xf)"),
		array("E(a,b,c,d)","E(c,d,e,f)","-E(a,b,e,f)")
	),
	new Theorem( "Satz2.4", 
		array("-E(xa,xb,xc,xd) | E(xb,xa,xc,xd)"),
		array("E(a,b,c,d)","-E(b,a,c,d)")
	),	
	new Theorem( "Satz2.5", 
		array("-E(xa,xb,xc,xd) | E(xa,xb,xd,xc)"),
		array("E(a,b,c,d)","-E(a,b,d,c)")
	),
    new Theorem( "Satz2.8", 
		array("E(xa,xa,xb,xb)"),
		array("-E(a,a,b,b)"),
        array("cx = ext(b,a,b,b)")
	), 
	new Theorem( "Satz2.11", 
		array("-T(xa,xb,xc) | -T(xa1,xb1,xc1) | -E(xa,xb,xa1,xb1) | -E(xb,xc,xb1,xc1) | E(xa,xc,xa1,xc1)"),
		array("T(a,b,c)","T(a1,b1,c1)","E(a,b,a1,b1)","E(b,c,b1,c1)","-E(a,c,a1,c1)"
		)
	),
	new Theorem( "Satz2.12", 
		array("xq = xa | -T(xq,xa,xd) | -E(xa,xd,xb,xc) | xd = ext(xq,xa,xb,xc)"),
		array("q != a","T(q,a,d)","E(a,d,b,c)","d != ext(q,a,b,c)")
	),
    new Theorem( "Satz2.13", 
		array("-E(xb,xc,xa,xa) | xb=xc"),
		array("E(b,c,a,a)","b!=c")
    ),
    new Theorem( "Satz2.14", 
		array("-E(xa,xb,xc,xd) | E(xb,xa,xd,xc)"),
		array( "E(a,b,c,d)", "-E(b,a,d,c)")
    ),
    new Theorem( "Satz2.15", 
		array("-T(xa,xb,xc) | -T(xA,xB,xC) | -E(xa,xb,xB,xC)| -E(xb,xc,xA,xB) | E(xa,xc,xA,xC)"),
		array( "T(a,b,c)", "T(A,B,C)", "E(a,b,B,C)", "E(b,c,A,B)", "-E(a,c,A,C)"),
                   //  easy to prove using Satz 3.1 but we proved it without Satz 3.1 using this diagram:
		array( "d = ext(a,b,b,b)" ),
		"",  // no Skolem functions
		array( "T(b,c,c) | -T(b,c,c)") // eventually eliminated
    ),	
	new Theorem( "Satz3.1", 
		array("T(xa,xb,xb)"),
		array("-T(a,b,b)"),
		array("c31= ext(a,b,b,b)")
	),
    new Theorem( "Satz3.2", 
		array("-T(xa,xb,xc) | T(xc,xb,xa)"),
		array("T(a,b,c)","-T(c,b,a)")
	),
	new Theorem( "Satz3.3", 
		array("T(xa1,xa1,xb1)"),
		array("-T(a1,a1,b1)")
	),
    new Theorem( "Satz3.4",
 		array("-T(xa,xb,xc) | -T(xb,xa,xc) | xa = xb"),
		array("T(a,b,c)","T(b,a,c)","a != b"),
		array("c34 = ip(a,b,c,b,a)")
	),
    new Theorem( "Satz3.5a", 
		array("-T(xa,xb,xd) | -T(xb,xc,xd) | T(xa,xb,xc)"), 
		array("T(a,b,d)","T(b,c,d)","-T(a,b,c)"),
		array("p = ip(a,b,d,b,c)")
	),
	new Theorem( "Satz3.6a", 
		array("-T(xa,xb,xc) | -T(xa,xc,xd) | T(xb,xc,xd)"),  
		array("T(a,b,c)","T(a,c,d)","-T(b,c,d)")
	),
	new Theorem( "Satz3.7a", 
		array("-T(xa,xb,xc) | -T(xb,xc,xd) | xb = xc | T(xa,xc,xd)"),
		array("T(a,b,c)","T(b,c,d)","b != c","-T(a,c,d)"),
		array("cx = ext(a,c,c,d)")
	),
	new Theorem( "Satz3.5b",    
		array("-T(xa,xb,xd) | -T(xb,xc,xd) | T(xa,xc,xd)"),
		array("T(a,b,d)","T(b,c,d)","-T(a,c,d)")
	),
	new Theorem( "Satz3.6b",    
		array("-T(xa,xb,xc) | -T(xa,xc,xd) | T(xa,xb,xd)"),
		array("T(a,b,c)","T(a,c,d)","-T(a,b,d)")
	),
	new Theorem( "Satz3.7b", 
		array("-T(xa,xb,xc) | -T(xb,xc,xd) | xb = xc | T(xa,xb,xd)"),
		array("T(a,b,c)","T(b,c,d)","b != c","-T(a,b,d)"),
		array("cx = ext(a,c,c,d)")
	),
	new Theorem( "Satz3.13a", 
		array("alpha != beta"), 
		array("alpha = beta")
	),
	new Theorem( "Satz3.13b", 
		array("beta != gamma"), 
		array("beta = gamma")
	),
	new Theorem( "Satz3.13c", 
		array("alpha != gamma"),
		array("alpha = gamma")
	),
	new Theorem( "Satz3.14a",
		array("T(xa,xb,ext(xa,xb,alpha,gamma))"),
		array("-T(a,b,ext(a,b,alpha,gamma))")
	),
	new Theorem( "Satz3.14b",
		array("xb != ext(xa,xb,alpha,gamma)"),
		array("b=ext(a,b,alpha,gamma)")
	),
	new Theorem( "Satz3.17",
		array(  "-T(xa,xb,xc) | -T(xa1,xb1,xc) | -T(xa,xp,xa1) | T(xp,crossbar(xa,xb,xc,xa1,xb1,xp),xc)",
				"-T(xa,xb,xc) | -T(xa1,xb1,xc) | -T(xa,xp,xa1) | T(xb,crossbar(xa,xb,xc,xa1,xb1,xp),xb1)"
			 ),
		array("T(a,b,c)","T(a1,b1,c)","T(a,p,a1)","-T(p,x,c) | -T(b,x,b1)"),
		array("e = ip(c,b1,a1,a,p)","d = ip(c,b,a,b1,e)"),
		array("crossbar")
	),
	new Theorem( "Satz4.2",
		array("-IFS(xa,xb,xc,xd,xa1,xb1,xc1,xd1) | E(xb,xd,xb1,xd1)"),  
		array("IFS(a,b,c,d,a1,b1,c1,d1)","-E(b,d,b1,d1)"),
		array( "e = ext(a,c,a,c)", "e1= ext(a1,c1,a,c)")
	),   
	new Theorem( "Satz4.3",
		array("-T(xa,xb,xc) | -T(xa1,xb1,xc1) | -E(xa,xc,xa1,xc1) | -E(xb,xc,xb1,xc1) | E(xa,xb,xa1,xb1)"),
		array("T(a,b,c)","T(a1,b1,c1)","E(a,c,a1,c1)","E(b,c,b1,c1)","-E(a,b,a1,b1)")
	),
	new Theorem( "Satz4.5",
		array("-T(xa,xb,xc) | -E(xa,xc,xa1,xc1) | T(xa1,insert(xa,xb,xa1,xc1),xc1)",
	 		  "-T(xa,xb,xc) | -E(xa,xc,xa1,xc1) | E3(xa,xb,xc,xa1,insert(xa,xb,xa1,xc1),xc1)"
	    ),
		array(  "T(a,b,c)",
				"E(a,c,a1,c1)",
				"-T(a1,insert(a,b,a1,c1),c1) | -E3(a,b,c,a1,insert(a,b,a1,c1),c1)"
			 ),
		array( "d1 = ext(c1,a1,alpha,gamma)",
				"b1 = ext(d1,a1,a,b)",
				"c2 = ext(d1,b1,b,c)"
		)
	),
	new Theorem( "Satz4.6", 
		array("-T(xa,xb,xc) | -E3(xa,xb,xc,xa1,xb1,xc1) | T(xa1,xb1,xc1)"),
		array(  "T(a,b,c)",
				"E3(a,b,c,a1,b1,c1)",
				"-T(a1,b1,c1)",
				" x != y | -T(w,z,x) | T(w,z,y)" // an equality axiom!  Without it, we need hints.
		)
	),
	new Theorem( "Satz4.11a", 
		array("-Col(xa,xb,xc) | Col(xb,xc,xa)"),
		array("Col(a,b,c)","-Col(b,c,a)")
	),
	new Theorem( "Satz4.11b", 
		array( "-Col(xa,xb,xc) | Col(xc,xa,xb)"),
		array("Col(a,b,c)", "-Col(c,a,b)")
	),
	new Theorem( "Satz4.11c", 
		array( "-Col(xa,xb,xc) | Col(xc,xb,xa)"),
		array("Col(a,b,c)",  "-Col(c,b,a)")
	),
	new Theorem( "Satz4.11d", 
		array( "-Col(xa,xb,xc) | Col(xb,xa,xc)"),
		array("Col(a,b,c)","-Col(b,a,c)")
	),
	new Theorem( "Satz4.11e", 
		array( "-Col(xa,xb,xc) | Col(xa,xc,xb)"),
		array("Col(a,b,c)","-Col(a,c,b)")
	),
	new Theorem( "Satz4.12", 
		array("Col(xa,xa,xb)"), 
		array("-Col(a,a,b)")
	),
	new Theorem( "Satz4.12b", 
		array("Col(xa,xb,xa)"), 
		array("-Col(a,b,a)")
	),
    new Theorem( "Satz4.13", 
		array("-Col(xa,xb,xc) | - E3(xa,xb,xc,xa1,xb1,xc1) | Col(xa1,xb1,xc1)"),
		array("Col(a,b,c)","E3(a,b,c,a1,b1,c1)","-Col(a1,b1,c1)")
	),
    new Theorem( "Satz4.14", 
		array("-Col(xa,xb,xc) | -E(xa,xb,xa1,xb1) | E3(xa,xb,xc,xa1,xb1,insert5(xa,xb,xc,xa1,xb1))"),
		array("Col(a,b,c)","E(a,b,a1,b1)","-E3(a,b,c,a1,b1,x)"),
		array("c1 = ext(a1,b1,b,c)","c2 = ext(b1,a1,a,c)","c3 = insert(a,c,a1,b1)"),
		array("insert5")
	),
    new Theorem( "Satz4.16", 
		array("-FS(xa,xb,xc,xd,xa1,xb1,xc1,xd1) | xa = xb | E(xc,xd,xc1,xd1)"),
		array("FS(a,b,c,d,a1,b1,c1,d1)","a != b","-E(c,d,c1,d1)")
	),
	new Theorem( "Satz4.17", 
		array("xa = xb | -Col(xa,xb,xc) | -E(xa,xp,xa,xq) | -E(xb,xp,xb,xq) |E(xc,xp,xc,xq)"),
		array("a != b","Col(a,b,c)","E(a,p,a,q)","E(b,p,b,q)","-E(c,p,c,q)")
	),
	new Theorem( "Satz4.18", 
		array("xa = xb | -Col(xa,xb,xc) | -E(xa,xc,xa,xc1) | -E(xb,xc,xb,xc1) | xc = xc1"),
		array("a != b","Col(a,b,c)","E(a,c,a,c1)","E(b,c,b,c1)","c != c1")
	),
	new Theorem( "Satz4.19", 
		array("-T(xa,xc,xb) | -E(xa,xc,xa,xc1) | -E(xb,xc,xb,xc1) | xc = xc1"),
		array("T(a,c,b)","E(a,c,a,c1)","E(b,c,b,c1)","c != c1")
	),
	new Theorem( "Satz5.1",  
		array("xa = xb | -T(xa,xb,xc) | -T(xa,xb,xd) | T(xa,xc,xd) | T(xa,xd,xc)"),
		array("a != b","T(a,b,c)","T(a,b,d)","-T(a,c,d)","-T(a,d,c)"),
		array(  "c1=ext(a,d,c,d)",      
				"d1=ext(a,c,c,d)",
				"p=ext(c1,c,c,d)",
				"r=ext(d1,c,c,e)",
				"q=ext(p,r,r,p)",
				"b1 = ext(a,c1,c,b)",
				"b2 = ext(a,d1,d,b)",
				"e = ip(c1,d,b,d1,c)"
		),
		"",
		array(  "d1=e | d1!=e",
				"c = c1 | c != c1"
			)
	),   
	new Theorem( "Satz5.2", 
		array("xa = xb | -T(xa,xb,xc) | -T(xa,xb,xd)| T(xb,xc,xd) | T(xb,xd,xc)"),
		array("a != b", "T(a,b,c)","T(a,b,d)", "-T(b,c,d)","-T(b,d,c)")
	),
	new Theorem( "Satz5.3", 
		array("-T(xa,xb,xd) | -T(xa,xc,xd) | T(xa,xb,xc) | T(xa,xc,xb)"),
		array("T(a,b,d)","T(a,c,d)","-T(a,b,c)", "-T(a,c,b)")
	),
    new Theorem( "Satz5.5a",  
		array(  "-le(xa,xb,xc,xd) | T(xa,xb,ins(xc,xd,xa,xb))",
				"-le(xa,xb,xc,xd) | E(xa,ins(xc,xd,xa,xb),xc,xd)",
				"-le(xa,xb,xc,xd) | ins(xc,xd,xa,xb) = ext(xa,xb,insert(xa,xb,xc,xd),xd)"
		),
		array(  "le(a,b,c,d)",
				"-T(a,b,x) | -E(a,x,c,d)| x != ext(a,b,insert(a,b,c,d),d) "
			 ),
		"",
		array("ins")
	),
    new Theorem( "Satz5.5b",  
		array(" le(xa,xb,xc,xd) | -T(xa,xb,xe) | -E(xa,xe,xc,xd)"),
		array(  "-le(a,b,c,d)",
				"T(a,b,e)",
				"E(a,e,c,d)"
			 )
	),
	new Theorem( "Satz5.6",  
		array("-le(xa,xb,xc,xd) | -E(xa,xb,xa1,xb1) | - E(xc,xd,xc1,xd1) |le(xa1,xb1,xc1,xd1)"),
		array("le(a,b,c,d)","E(a,b,a1,b1)","E(c,d,c1,d1)","-le(a1,b1,c1,d1)")
	),
    new Theorem( "Satz5.7",  
		array("le(xa,xb,xa,xb)"),
		array("-le(a,b,a,b)")
	),
 
	new Theorem( "Satz5.8",  
		array("-le(xa,xb,xc,xd) | - le(xc,xd,xe,xf) | le(xa,xb,xe,xf)"),
		array("le(a,b,c,d)","le(c,d,e,f)","-le(a,b,e,f)")
	),
	new Theorem( "Satz5.9",  
		array("-le(xa,xb,xc,xd) | -le(xc,xd,xa,xb) | E(xa,xb,xc,xd)"),
		array("le(a,b,c,d)","le(c,d,a,b)","-E(a,b,c,d)"),
		array(  "p = ins(c,d,a,b)",
				"q = insert(c,d,a,b)"
			 )
	),
	new Theorem( "Satz5.10", 
		array("le(xa,xb,xc,xd) | le(xc,xd,xa,xb)"),
		array("-le(a,b,c,d)","-le(c,d,a,b)")
	),
	new Theorem( "Satz5.11", 
		array("le(xa,xa,xc,xd)"), 
		array("-le(a,a,c,d)")
	),
    new Theorem( "Satz5.12a1",  
		array( "-Col(xa,xb,xc) | -T(xa,xb,xc) | le(xa,xb,xa,xc)"),
		array("Col(a,b,c)","T(a,b,c)","-le(a,b,a,c)")
	),
	new Theorem( "Satz5.12a2",  
		array("-Col(xa,xb,xc) | -T(xa,xb,xc) | le(xb,xc,xa,xc)"),
		array("Col(a,b,c)","T(a,b,c)","-le(b,c,a,c)")
	),
	new Theorem( "NarbouxLemma1",
		array("-T(xa,xb,xc) | -E(xa,xc,xa,xb) | xc = xb"),
		array("T(a,b,c)","E(a,c,a,b)","c != b")
	),
	new Theorem( "Satz5.12b",
	 	array("-Col(xa,xb,xc) | T(xa,xb,xc) | -le(xa,xb,xa,xc) | -le(xb,xc,xa,xc)"),
		array("Col(a,b,c)", "-T(a,b,c)","le(a,b,a,c)","le(b,c,a,c)")
	),
	new Theorem( "Satz6.2a", 
		array("xa = xp | xb = xp | xc = xp | -T(xa,xp,xc) | -T(xb,xp,xc) | sameside(xa,xp,xb)"),
		array("a != p","b != p","c != p","T(a,p,c)","T(b,p,c)","-sameside(a,p,b)")
	),
	new Theorem( "Satz6.2b", 
		array("xa = xp | xb = xp | xc = xp | -T(xa,xp,xc) | T(xb,xp,xc) | -sameside(xa,xp,xb)"),
		array("a != p","b != p","c != p","T(a,p,c)","-T(b,p,c)","sameside(a,p,b)")
	),
    new Theorem( "Satz6.3a",  // left to right of Satz 6.3
		array(  "-sameside(xa,xp,xb) | xa != xp",   
				"-sameside(xa,xp,xb) | xb != xp",
				"-sameside(xa,xp,xb) | c63(xa,xp,xb) != xp",
				"-sameside(xa,xp,xb) | T(xa,xp,c63(xa,xp,xb))",
				"-sameside(xa,xp,xb) | T(xb,xp,c63(xa,xp,xb))"
			 ),
		array("sameside(a,p,b)","a=p | b = p | x = p | -T(a,p,x) | -T(b,p,x)"),
		"",   // no diagram 
		array("c63")
	),
	new Theorem( "Satz6.3b", 
		array("sameside(xa,xp,xb) | xa=xp | xb = xp | xc = xp | -T(xa,xp,xc) | -T(xb,xp,xc)"),
		array("-sameside(a,p,b)","a != p","b != p","c != p","T(a,p,c)","T(b,p,c)")
	),
	new Theorem( "Satz6.4a",  // left to right of Satz 6.4
		array(  "-sameside(xa,xp,xb) | Col(xa,xp,xb)",
				"-sameside(xa,xp,xb) | -T(xa,xp,xb)"
        ),
		array("sameside(a,p,b)","-Col(a,p,b) | T(a,p,b)")
	),
    new Theorem( "Satz6.4b",
 		array(" sameside(xa,xp,xb) | -Col(xa,xp,xb) | T(xa,xp,xb)"),
		array("-sameside(a,p,b)","Col(a,p,b)","-T(a,p,b)"),
		array("q64 = ext(a,p,a,p)")
	),				
	new Theorem( "Satz6.5", 
		array("xa = xp | sameside(xa,xp,xa)"),
		array("a != p","-sameside(a,p,a)")
	),
	new Theorem( "Satz6.6", 
		array("-sameside(xa,xp,xb) | sameside(xb,xp,xa)"),
		array("sameside(a,p,b)","-sameside(b,p,a)")
	),
	new Theorem( "Satz6.7", 
		array("-sameside(xa,xp,xb) | -sameside(xb,xp,xc) | sameside(xa,xp,xc)"),
		array("sameside(a,p,b)","sameside(b,p,c)","-sameside(a,p,c)")
	),
	new Theorem( "Satz6.11a", 
		array(  "xr = xa | xb = xc | sameside(insert(xb,xc,xa,xr),xa,xr)",
				"xr = xa | xb = xc | E(xa,insert(xb,xc,xa,xr),xb,xc)"
		),
		array("r != a","b != c","-sameside(insert(b,c,a,r),a,r) | -E(a,insert(b,c,a,r),b,c)"),
		array("q = ext(r,a,alpha,gamma)","c1 = ext(q,a,b,c)")
		// "insert" is a defined function, not introduced as a Skolem function.
	),
	new Theorem( "Satz6.11b", 
		array("xr = xa | xb = xc | -sameside(xp,xa,xr) | -E(xa,xp,xb,xc) | -sameside(xq,xa,xr) |  -E(xa,xq,xb,xc) | xp=xq"),
		array("r != a","b != c","sameside(p,a,r)","E(a,p,b,c)","sameside(q,a,r)","E(a,q,b,c)","p != q")
	),
	new Theorem( "Satz6.13a",     // left to right of Satz 6.13
		array("-sameside(xa,xp,xb) | -le(xp,xa,xp,xb) | T(xp,xa,xb)"),  
		array("sameside(a,p,b)","le(p,a,p,b)","-T(p,a,b)")
	),  
	new Theorem( "Satz6.13b",   // right to left of Satz 6.13
	 	array("-sameside(xa,xp,xb) | le(xp,xa,xp,xb) | -T(xp,xa,xb)"),
		array("sameside(a,p,b)","-le(p,a,p,b)","T(p,a,b)")
	),
	new Theorem( "Satz6.15a", 
		array( "xp = xq | xp = xr | -T(xq,xp,xr) | -Col(xa,xp,xq) | xa = xp | sameside(xa,xp,xq) | sameside(xa,xp,xr)"),
		array( "p != q","p != r","T(q,p,r)","Col(a,p,q)","a != p","-sameside(a,p,q)","-sameside(a,p,r)")
	),
	new Theorem( "Satz6.15b", 
		array( "xp = xq | xp = xr | -T(xq,xp,xr) | -sameside(xa,xp,xq) | Col(xa,xp,xq)"),
		array( "p != q","p != r","T(q,p,r)","sameside(a,p,q)","-Col(a,p,q)")
	),
	new Theorem( "Satz6.15c", 
		array( "xp = xq | xp = xr | -T(xq,xp,xr) | -sameside(xa,xp,xr) | Col(xa,xp,xq)"),
		array( "p != q","p != r","T(q,p,r)","sameside(a,p,r)","-Col(a,p,q)")
	),   
	new Theorem( "Satz6.15d", 
		array( "xp = xq | xp = xr | -T(xq,xp,xr) | xa != xp | Col(xa,xp,xq)"),
		array( "p != q","p != r","T(q,p,r)","a=p","-Col(a,p,q)")
	),  
	new Theorem( "Satz6.16a",  
		array( "xa=xb | -T(xc,xa,xb) | -T(xd,xa,xb) | T(xd,xc,xb) | T(xc,xd,xb)"), 
		array( "a != b","T(c,a,b)","T(d,a,b)","-T(d,c,b)","-T(c,d,b)")
	),
	new Theorem( "Satz6.16b", 
		array( "xp = xq  | xcs = xp | -Col(xp,xq,xcs) | -Col(xp,xq,xr) | Col(xp,xcs,xr)"),
		array( "p != q","cs != p","Col(p,q,cs)","Col(p,q,r)","-Col(p,cs,r)")
	),
	new Theorem( "Satz6.17a", 
		array( "xp = xq | Col(xp,xq,xp)"),
		array( "p != q","-Col(p,q,p)")
	),  
	new Theorem( "Satz6.17b", 
		array( "xp = xq | -Col(xp,xq,xr) | Col(xq,xp,xr)"),
		array( "p != q","Col(p,q,r)","-Col(q,p,r)")
		),
	new Theorem( "Satz6.18", 
		array( "xa = xb | xp = xq | -Col(xp,xq,xa) | -Col(xp,xq,xb) | -Col(xp,xq,xr) | Col(xa,xb,xr)"),
		array( "a != b","p != q","Col(p,q,a)","Col(p,q,b)","Col(p,q,r)","-Col(a,b,r)")
	), 
	new Theorem( "Satz6.21",
		array( "xa = xb | xp = xq | -Col(xa,xb,xc) | -Col(xp,xq,xc) | -Col(xa,xb,xd) | -Col(xp,xq,xd) | xc=xd | -Col(xa,xb,xe) | Col(xp,xq,xe)"),
		array(  "a!=b", "p!=q", "Col(a,b,c)", "Col(p,q,c)", "Col(a,b,d)","Col(p,q,d)", "c!=d", "Col(a,b,e)", "-Col(p,q,e)")
	),
	new Theorem( "Satz6.25",
		array( "xa = xb | -Col(xa,xb,pointOffLine(xa,xb))"),
		array( "a!=b", "Col(a,b,x)"),
		"",  // no diagram
		array("pointOffLine")
	),
	new Theorem( "Satz6.28",   // used in Satz 11.4,  but not proved in the book, so we state and prove it
		array( "-sameside(xa,xb,xc)| -sameside(xa1,xb1,xc1) | -E(xb,xa,xb1,xa1) | -E(xb,xc,xb1,xc1) | E(xa,xc,xa1,xc1)"),
		array(  "sameside(a,b,c)",
				"sameside(a1,b1,c1)",
				"E(b,a,b1,a1)",
				"E(b,c,b1,c1)",
				"-E(a,c,a1,c1)"
			 )
 	),
	new Theorem( "Satz7.2", 
		array( "-M(xa,xm,xb) | M(xb,xm,xa)"),
		array( "M(a,m,b)","-M(b,m,a)")
	),
	new Theorem( "Satz7.3a", 
		array( "-M(xa,xm,xa) | xm = xa"),
		array( "M(a,m,a)","m != a")
	),
	new Theorem( "Satz7.3b", 
		array( "M(xa,xm,xa) | xm != xa"),   
		array( "-M(a,m,a)","m = a")
	),  
	new Theorem( "Satz7.4a", 
		array( "M(xp,xa,s(xa,xp))"),     // Satz 7.4a,  and definition 7.5
		array( "-M(p,a,x)"),
		"",   // no diagram, but a Skolem function
		array("s")
	),
	new Theorem( "Satz7.4b", 
		array( "-M(xp,xa,xr) | -M(xp,xa,xq) | xr=xq"),  // uniqueness of reflection in a point
		array( "M(p,a,r)","M(p,a,q)","r != q")
	),
	new Theorem( "Satz7.6", 
		array( "-M(xp,xa,xq) | xq = s(xa,xp)"),
		array( "M(p,a,q)","q != s(a,p)")
	), 
	new Theorem( "Satz7.7", 
		array( "s(xa,s(xa,xp)) = xp"), 
		array( "s(a,s(a,p)) != p" )
	),   
	new Theorem( "Satz7.8", 
		array( "s(xa,xp) != xr | s(xa,xq) != xr | xp = xq"),
		array( "s(a,p) = r","s(a,q) = r","p != q")
		),
	new Theorem( "Satz7.9", 
		array( "s(xa,xp) != s(xa,xq) | xp = xq"),
		array( "s(a,p) = s(a,q)","p != q")
	),
	new Theorem( "Satz7.10a", 
		array( "s(xa,xp) != xp | xp = xa"),
		array( "s(a,p) = p", "p != a")
	),   
	new Theorem( "Satz7.10b", 
		array( "s(xa,xp)=xp | xp != xa"),  
		array( "s(a,p) != p","p = a")
	),
	new Theorem( "Satz7.13", 
		array( "E(xp,xq,s(xa,xp),s(xa,xq))"),    
		array( "-E(p,q,s(a,p),s(a,q))"),
		array(  "p1 = s(a,p)",
			    "q1= s(a,q)",
				"cx  = ext(p1,p,q,a)",
				"cy = ext(q1,q,p,a)",
				"cx1= ext(cx,p1,q,a)",
				"cy1 = ext(cy,q1,p,a)"   
			 ),
		"",
		array("p=a | p!=a")
	), 
	new Theorem(  "Satz7.15a", 
		array("-T(xp,xq,xr) | T(s(xa,xp),s(xa,xq),s(xa,xr))"),
		array( "T(p,q,r)","-T(s(a,p),s(a,q),s(a,r))")
	),   
	new Theorem( "Satz7.15b", 
		array( "T(xp,xq,xr) | -T(s(xa,xp),s(xa,xq),s(xa,xr))"),   
		array( "-T(p,q,r)","T(s(a,p),s(a,q),s(a,r))")
	),
	new Theorem( "Satz7.16a", 
		array( "-E(xp,xq,xr,xcs) | E(s(xa,xp),s(xa,xq),s(xa,xr),s(xa,xcs))"),
		array( "E(p,q,r,cs)","-E(s(a,p),s(a,q),s(a,r),s(a,cs))")
	),
	new Theorem( "Satz7.16b", 
		array( "E(xp,xq,xr,xcs) | -E(s(xa,xp),s(xa,xq),s(xa,xr),s(xa,xcs))"),
		array( "-E(p,q,r,cs)","E(s(a,p),s(a,q),s(a,r),s(a,cs))")
	),
	new Theorem( "Satz7.17", 
		array( "-M(xp,xa,xq) | -M(xp,xb,xq) | xa = xb"),
		array( "M(p,a,q)","M(p,b,q)","a != b")
	),
	new Theorem( "Satz7.18", 
		array( "s(xa,xp) != s(xb,xp) | xa = xb"), 
		array( "s(a,p) = s(b,p)","a != b")
	), 
	new Theorem( "Satz7.19", 
		array( "s(xa,s(xb,xp)) != s(xb,s(xa,xp)) | xa = xb"),
		array( "s(a,s(b,p)) = s(b,s(a,p))","a != b"),
		array( "p = s(a,p)")
	),
	new Theorem( "Satz7.20", 
		array( "-Col(xa,xm,xb) | -E(xm,xa,xm,xb) | xa = xb | M(xa,xm,xb)"),
		array( "Col(a,m,b)","E(m,a,m,b)","a != b","-M(a,m,b)")
		),
	//  Satz7.21 is called Lemma7.21 in SST
	new Theorem( "Satz7.21", 
		array( "Col(xa,xb,xc) | xb = xd | -E(xa,xb,xc,xd) | -E(xb,xc,xd,xa) | -Col(xa,xp,xc) | -Col(xb,xp,xd) | M(xa,xp,xc)"),
		array( "-Col(a,b,c)","b != d","E(a,b,c,d)","E(b,c,d,a)","Col(a,p,c)","Col(b,p,d)","-M(a,p,c)"),
		array( "p1 = insert5(b,d,p,d,b)")        // see 4.14 for insert5
	),
	new Theorem( "Satz7.22a",   // case 1 of the Krippenlemma (which is the next Satz)
		array( "-KF(xa1,xm1,xb1,xc,xb2,xm2,xa2) | T(xm1,xc,xm2) | -le(xc,xa1,xc,xa2) "),
		array( "KF(a1,m1,b1,c,b2,m2,a2)","-T(m1,c,m2)", "le(c,a1,c,a2)"),
		array(  "a = s(c,a2)",
				"b  = s(c,b2)",
				"m  = s(c,m2)",
				"q = crossbar(a,a1,c,b,b1,m)"		
			 )
	),
    new Theorem( "Satz7.22b",   // Krippenlemma, stated with abbreviation KF
		array( "-KF(xa1,xm1,xb1,xc,xb2,xm2,xa2) | T(xm1,xc,xm2)"),
		array( "KF(a1,m1,b1,c,b2,m2,a2)","-T(m1,c,m2)"),
		array(  "a = s(c,a2)",
				"b  = s(c,b2)",
				"m  = s(c,m2)",
				"q = crossbar(a,a1,c,b1,b,m)"
			 )
	),
	new Theorem( "Satz7.22",   // Krippenlemma, stated as in book, without KF
		array( "-T(xa1,xc,xa2) | -T(xb1,xc,xb2) | -E(xc,xa1,xc,xb1) | -E(xc,xa2,xc,xb2) | -M(xa1,xm1,xb1) | -M(xa2,xm2,xb2) | T(xm1,xc,xm2)"),
		array(  "T(a1,c,a2)",
		 		"T(b1,c,b2)",
				"E(c,a1,c,b1)",
				"E(c,a2,c,b2)",
				"M(a1,m1,b1)",
				"M(a2,m2,b2)",
				"-T(m1,c,m2)"
			 ),
		array(  "a = s(c,a2)",
				"b  = s(c,b2)",
				"m  = s(c,m2)",
				"q = crossbar(a,a1,c,b1,b,m)"
			 )
	),
	
    new Theorem( "Satz7.25",  // also called a Lemma in SST
		array( "-E(xc,xa,xc,xb) | M(xa,isomidpoint(xa,xb,xc),xb)"),
		array( "E(c,a,c,b)","-M(a,x,b)"),
		array(  "p  = ext(c,a,a,c)",
			 	"q = ext(c,b,a,p)",
				"r  = ip(p,a,c,q,b)",
				"cx = ip(b,r,p,c,a)",
				"r1 = insert(b,r,a,q)"
		 ),
		array( "isomidpoint"),  // midpoint of isosceles triangle
		array("Col(a,b,c) | -Col(a,b,c)")
	),   
	new Theorem( "Satz8.2", 
		array( "-R(xa,xb,xc) | R(xc,xb,xa)"),
		array( "R(a,b,c)","-R(c,b,a)")
	),
	new Theorem( "Satz8.3",
		array( "-R(xa,xb,xc) | xa = xb | -Col(xb,xa,xa1) | R(xa1,xb,xc)"),
		array( "R(a,b,c)","a!=b","Col(b,a,a1)", "-R(a1,b,c)")
	),
	new Theorem( "Satz8.4",
		array( "-R(xa,xb,xc) | R(xa,xb,s(xb,xc))"),
		array( "R(a,b,c)","-R(a,b,s(b,c))")
	),
	new Theorem( "Satz8.5", 
		array( "R(xa,xb,xb)"), 
		array( "-R(a,b,b)")
	),
	new Theorem( "Satz8.6",
		array( "-R(xa,xb,xc) | -R(xa1,xb,xc) | -T(xa,xc,xa1) | xb = xc"),
		array( "R(a,b,c)", "R(a1,b,c)", "T(a,c,a1)", "b != c")
	),   
	new Theorem( "Satz8.7", 
		array( "-R(xa,xb,xc) | -R(xa,xc,xb) | xb = xc"),
		array( "R(a,b,c)","R(a,c,b)","b != c"),
		array( "c1=s(b,c)", "a1=s(c,a)")
	),
	new Theorem( "Satz8.8",
		array( "-R(xa,xb,xa) | xa = xb"),
		array( "R(a,b,a)", "a != b")
	),
	new Theorem( "Satz8.9",
		array( "-R(xa,xb,xc) | -Col(xa,xb,xc) | xa=xb | xc=xb"),
		array( "R(a,b,c)","Col(a,b,c)","a!=b","c!=b")
	),   
	new Theorem( "Satz8.10",
		array( "-R(xa,xb,xc) | -E3(xa,xb,xc,xa1,xb1,xc1) | R(xa1,xb1,xc1)"),
		array( "R(a,b,c)","E3(a,b,c,a1,b1,c1)","-R(a1,b1,c1)"),
		array( "d = s(b,c)","d1 = s(b1,c1)")
	),
	new Theorem( "Satz8.12a",
		array( "-perpAt(xa,xb,xc,xp,xq) | perpAt(xp,xq,xc,xa,xb)"),
		array( "perpAt(a,b,c,p,q)", "-perpAt(p,q,c,a,b)")
	),  
	new Theorem( "Satz8.12b",
		array( "-perp(xa,xb,xp,xq) | perp(xp,xq,xa,xb)"),
		array( "perp(a,b,p,q)","-perp(p,q,a,b)")
	),

	new Theorem( "Satz8.13a",   // left-to-right of 8.13 
		array(  "-perpAt(xa,xb,xc,xp,xq) | xa != xb",
				"-perpAt(xa,xb,xc,xp,xq) | xp != xq",
				"-perpAt(xa,xb,xc,xp,xq) | Col(xp,xq,xc)",
				"-perpAt(xa,xb,xc,xp,xq) | Col(xa,xb,xc)",
				"-perpAt(xa,xb,xc,xp,xq) | Col(xa,xb,f813(xa,xb,xp,xq,xc))",
				"-perpAt(xa,xb,xc,xp,xq) | Col(xp,xq,g813(xa,xb,xp,xq,xc))",
				"-perpAt(xa,xb,xc,xp,xq) | xc != f813(xa,xb,xp,xq,xc)",
				"-perpAt(xa,xb,xc,xp,xq) | xc != g813(xa,xb,xp,xq,xc)",
				"-perpAt(xa,xb,xc,xp,xq) | R(f813(xa,xb,xp,xq,xc),xc,g813(xa,xb,xp,xq,xc))"
			),
 		array(  "perpAt(a,b,c,p,q)",
				"a=b | p=q | -Col(p,q,c) | -Col(a,b,c) | -Col(a,b,x) | -Col(p,q,y) | c = x | c = y | -R(x,c,y)"
			 ),
		"",
		array( "f813", "g813")
	), 
	new Theorem( "Satz8.13b",  // right-to-left of 8.13
		array( 
			 "xa=xb | xp=xq | -Col(xp,xq,xcx) | -Col(xa,xb,xcx) | -Col(xa,xb,u) | -Col(xp,xq,v) | xcx = u | xcx=v | -R(u,xcx,v) | perpAt(xa,xb,xcx,xp,xq)",
			 ),
		array( "a!=b","p!=q","Col(p,q,cx)","Col(a,b,cx)","Col(a,b,cu)","Col(p,q,cv)","cx != cu", "cx != cv", 
		       "R(cu,cx,cv)", "-perpAt(a,b,cx,p,q)"
		 	 ),
		array( "t = f811(a,b,p,q,cx)", "r = g811(a,b,p,q,cx)")
	),  
	new Theorem( "Satz8.14a",  // perpendicular lines are distinct lines 
		array( "-perp(xa,xb,xp,xq) | -Col(xa,xb,xp) | -Col(xa,xb,xq)"),
		array( "perp(a,b,p,q)","Col(a,b,p)", "Col(a,b,q)"),
		array( "c = il(a,b,p,q)")
	),
	// 8.14b says, if ab perp pq and c lies on both lines then ab and pq are perp at c.
	new Theorem( "Satz8.14b",
		array( "-perp(xa,xb,xp,xq) | -Col(xa,xb,xc) | -Col(xp,xq,xc) | perpAt(xa,xb,xc,xp,xq)"),
		array( "perp(a,b,p,q)","Col(a,b,c)", "Col(p,q,c)","-perpAt(a,b,c,p,q)")
	),   
	// 8.14c says that if ab and pq are perp at c, then c is unique, specifically il(a,b,p,q).
    new Theorem( "Satz8.14c",
		array( "-perpAt(xa,xb,xc,xp,xq) | xc = il(xa,xb,xp,xq)"),
		array( "perpAt(a,b,c,p,q)","c != il(a,b,p,q)")
	),  
    new Theorem( "Satz8.15",
		array( "xa=xb | -Col(xa,xb,xd) | -perp(xa,xb,xc,xd) | perpAt(xa,xb,xd,xc,xd)"),
		array( "a != b","Col(a,b,d)","perp(a,b,c,d)","-perpAt(a,b,d,c,d)")
	),
    new Theorem( "Satz8.16a",
		array(  "xa = xb | -Col(xa,xb,xp) | -Col(xa,xb,xq) | xq = xp | -Col(xa,xb,xc) | -perp(xa,xb,xc,xp) ",
 				"xa = xb | -Col(xa,xb,xp) | -Col(xa,xb,xq) | xq = xp |  R(xc,xp,xq) | -perp(xa,xb,xc,xp)"
 			 ),
		array( "a != b","Col(a,b,p)","Col(a,b,q)","q != p","Col(a,b,c) | -R(c,p,q)", "perp(a,b,c,p)")
	),
    new Theorem( "Satz8.16b",
		array( "xa = xb | -Col(xa,xb,xp) | -Col(xa,xb,xq) | xq = xp | perp(xa,xb,xc,xp) | Col(xa,xb,xc) | -R(xc,xp,xq)"),
		array( "a != b","Col(a,b,p)","Col(a,b,q)","q != p","-perp(a,b,c,p)","-Col(a,b,c)","R(c,p,q)")
	), 
    new Theorem( "Satz8.18a",  // uniqueness of dropped perpendicular
		array( "Col(xa,xb,xc) | -Col(xa,xb,xp) | -Col(xa,xb,xq) | -perp(xa,xb,xc,xp) | -perp(xa,xb,xc,xq) | xp = xq"),
		array( "-Col(a,b,c)","Col(a,b,p)","Col(a,b,q)","perp(a,b,c,p)","perp(a,b,c,q)","p != q")
	),   
	new Theorem( "Satz8.18",    // existence of dropped perpendicular (Lotsatz)
		array(  "Col(xa,xb,xc) | Col(xa,xb,foot(xa,xb,xc))",
				"Col(xa,xb,xc) | perp(xa,xb,xc,foot(xa,xb,xc))"
			 ),
		array( "-Col(a,b,c)","-Col(a,b,x) | -perp(a,b,c,x)"),
		array(  "cy = ext(b,a,a,c)",
				"p = isomidpoint(cy,c,a)",
				"cz = ext(a,cy,cy,p)",
				"q = ext(p,cy,cy,a)",
				"q1 = s(cz,q)",
				"c1 = ext(q1,cy,cy,c)",
				"cx = isomidpoint(c,c1,cy)"
			 ),
		array("foot")
	),  
	new Theorem( "Satz8.20a",
		array( "-R(xa,xb,xc) | -M(s(xa,xc),xp,s(xb,xc)) | R(xb,xa,xp)"),
		array( "R(a,b,c)","M(s(a,c),p,s(b,c))","-R(b,a,p)"),
		array( "d = s(b,c)","b1 = s(a,b)","c1 = s(a,c)","d1 = s(a,d)","p1 = s(a,p)")
	),
	new Theorem( "Satz8.20b",
		array( "-R(xa,xb,xc) | -M(s(xa,xc),xp,s(xb,xc)) |   xb = xc | xa!=xp"),
		array( "R(a,b,c)","M(s(a,c),p,s(b,c))","b != c","a=p"),
		array( "d = s(b,c)","b1 = s(a,b)","c1 = s(a,c)","d1 = s(a,d)","p1 = s(a,p)")
	),  
	new Theorem( "perp1",
		array( "-perp(xa,xb,xp,xq) | perp(xb,xa,xp,xq)"),
		array( "perp(a,b,p,q)","-perp(b,a,p,q)"),
		array( "c=il(a,b,p,q)")
	),    
	new Theorem( "ExtCol2",
		array( "xa = xb | xc = xd | -Col(xa,xb,xc) | -Col(xa,xb,xd) | -Col(xc,xd,xp) | Col(xa,xb,xp)"),
		array(  "a != b",
				"c != d",
				"Col(a,b,c)",
				"Col(a,b,d)",
				"Col(c,d,p)",
				"-Col(a,b,p)"
	 		 )
	),
	new Theorem( "Satz8.21a",  // case 1 of Satz 8.21
		array(  "xa = xb |  perp(xa,xb,erect21a(xa,xb,xc),xa) | Col(xa,xb,xc)",
				"xa = xb |  Col(xa,xb,erectAux21a(xa,xb,xc)) | Col(xa,xb,xc)",
				"xa = xb | T(xc,erectAux21a(xa,xb,xc),erect21a(xa,xb,xc)) | Col(xa,xb,xc)"
			 ),
		array(  "a != b",
				"-perp(a,b,x,a) | -Col(a,b,y) | -T(c,y,x)",
				"-Col(a,b,c)"
			 ),
		array(  "cx = foot(a,b,c)",
				"c1 = s(cx,c)",
				"a1 = s(a,c)",
				"p = isomidpoint(c1,a1,a)",
				"t = crossbar(a1,a,c,c1,cx,p)"
			 ),
		array( "erect21a", "erectAux21a")
	),
	new Theorem( "Satz8.21",
		array(  "xa = xb |  perp(xa,xb,erect(xa,xb,xc),xa)",
				"xa = xb |  Col(xa,xb,erectAux(xa,xb,xc))",
				"xa = xb | T(xc,erectAux(xa,xb,xc),erect(xa,xb,xc))"
	   		 ),
		array( "a != b","-perp(a,b,x,a) | -Col(a,b,y) | -T(c,y,x)"),
		array( "c1 = pointOffLine(a,b)","p = erect21a(a,b,c1)"),
		array("erect", "erectAux")
	),  
	new Theorem( "Satz8.22b",  // case 1 of Satz8.22
		array( "-le(xa,xp,xb,xq) | -perp(xa,xb,xa,xp) | -perp(xa,xb,xb,xq) |  -T(xp,xt,xq) | -Col(xa,xb,xt) | M(xa,midpointAux(xa,xb,xp,xq,xt),xb)"),
		array(  "le(a,p,b,q)", 
 				"perp(a,b,a,p)",
				"perp(a,b,b,q)",
				"T(p,t,q)",
				"Col(a,b,t)",
				"-M(a,x,b)"     // The main goal of 8.22
	   ),
		array( "r = insert(a,p,b,q)",
				"cx = ip(p,t,q,b,r)",
				"p1 = s(a,p)",
				"r1 = ext(p1,cx,cx,r)",
				"m = isomidpoint(r,r1,cx)" 
			 ),
		array( "midpointAux")
	), 
	new Theorem( "Satz8.22",  // existence of midpoint
		array( "M(xa,midpoint(xa,xb),xb)"),
		array( "-M(a,x,b)"),
		array(  "p = erect(a,b,b)",
				"P = erect(b,a,a)",
				"Q = erect(a,b,P)",
				"tt = erectAux(a,b,P)",
				"rr = insert(b,P,a,Q)",
				"R2 = insert(a,P,b,Q)",
				"q = erect(b,a,p)",
				"t = erectAux(b,a,p)",
				"r = insert(a,p,b,q)",
				"r2 = insert(b,q,a,p)"
			 ),
		array("midpoint")
	), 
	new Theorem( "Satz8.24a",
		array( "-perp(xp,xa,xa,xb) | -perp(xq,xb,xa,xb) | -Col(xa,xb,xt) | -T(xp,xt,xq)".
		 	   "| -T(xb,xr,xq) | -E(xa,xp,xb,xr) | xcx != ip(xp,xt,xq,xb,xr) | M(xa,xcx,xb)"),
		array(  "perp(p,a,a,b)",
				"perp(q,b,a,b)",
				"Col(a,b,t)",
				"T(p,t,q)",
				"T(b,r,q)",
				"E(a,p,b,r)",		
				"cx = ip(p,t,q,b,r)",
				"-M(a,cx,b)"  // first goal of 8.24b and 8.22
			),
		array(  "p1 = s(a,p)", 
				"m =isomidpoint(r,r1,cx)",
				"r1 = ext(p1,cx,cx,r)"
			 )
	),
	new Theorem( "Satz8.24b",
		array( "-perp(xp,xa,xa,xb) | -perp(xq,xb,xa,xb) | -Col(xa,xb,xt) | -T(xp,xt,xq)".
				"| -T(xb,xr,xq) | -E(xa,xp,xb,xr) | xcx != ip(xp,xt,xq,xb,xr) | M(xp,xcx,xr)"),
		array(  "perp(p,a,a,b)",
				"perp(q,b,a,b)",
				"Col(a,b,t)",
				"T(p,t,q)",
				"T(b,r,q)",
				"E(a,p,b,r)",		
				"cx = ip(p,t,q,b,r)",
				"-M(p,cx,r)"  // second goal of 8.24b
			),
		array(  "p1 = s(a,p)", 
				"m =isomidpoint(r,r1,cx)",
				"r1 = ext(p1,cx,cx,r)"
			 )
	),
	new Theorem( "Satz8.24",
		array( "-perp(xp,xa,xa,xb) | -perp(xq,xb,xa,xb) | -Col(xa,xb,xt) | -T(xp,xt,xq)".
		 		"| -T(xb,xr,xq) | -E(xa,xp,xb,xr) | M(xp,midpoint(xa,xb),xr)"),
		array(  "perp(p,a,a,b)",
				"perp(q,b,a,b)",
				"Col(a,b,t)",
				"T(p,t,q)",
				"T(b,r,q)",
				"E(a,p,b,r)",		
				"-M(p,midpoint(a,b),r)"
			),
		array(  "p1 = s(a,p)", 
				"cx = ip(p,t,q,b,r)",
			 )
	),
	new Theorem( "ext1",
		array( "-Col(xa,xb,xc) | -Col(xa,xb,xd) |  xa =xb | Col(xa,xc,xd)"),
		array( "Col(a,b,c)","Col(a,b,d)","a != b", "-Col(a,c,d)")
	),
    new Theorem( "ExtPerp",    
		array( "-Col(xa,xb,xp) | -Col(xa,xb,xq) | xp=xq | xa = xb | -perpAt(xp,xq,xr,xc,xd) | perpAt(xa,xb,xr,xc,xd)"),
		array( "Col(a,b,p)", "Col(a,b,q)", "p != q", "a != b", "perpAt(p,q,r,c,d)","-perpAt(a,b,r,c,d)")
    ),
	new Theorem( "ExtPerp2",   
		array( "-Col(xa,xb,xp) | -Col(xa,xb,xq) | xp=xq | xa = xb | -perp(xp,xq,xc,xd) | perp(xa,xb,xc,xd)"),
		array( "Col(a,b,p)", "Col(a,b,q)", "p != q", "a != b", "perp(p,q,c,d)","-perp(a,b,c,d)"),
		array( "p = il(a,b,p,q)")
	),
	new Theorem( "ExtPerp3",   
		array( "xa = xb | xa = xc | xb = xc | xd = xc | xa = xd | -perp(xb,xa,xa,xc) | -Col(xa,xc,xd) | perp(xb,xa,xa,xd)"),
		array( "a != b", "a != c", "b != c", "d != c", "a != d", "perp(b,a,a,c)", "Col(a,c,d)","-perp(b,a,a,d)")
	),
    new Theorem( "ExtPerp4",
		array( "-perp(xa,xb,xp,xq) | perp(xa,xb,xq,xp)"),
		array(  "perp(a,b,p,q)",
				"-perp(a,b,q,p)"
			 )
	), 
	new Theorem( "ExtPerp5",
		array( "-Col(xa,xb,xp) | -Col(xa,xb,xq) | xp=xq | xa = xb | perp(xp,xq,xc,xd) | -perp(xa,xb,xc,xd)"
 		     ),
		array(  "Col(a,b,p)",
				"Col(a,b,q)",
				"p != q",
				"a != b",
				"-perp(p,q,c,d)",
				"perp(a,b,c,d)"
			 )
	),
	new Theorem( "ExtPerp6",
		array( "-Col(xa,xb,xp) | -Col(xa,xb,xq) | xp=xq  | xa=xb |  perp(xc,xd,xp,xq) | -perp(xc,xd,xa,xb)"
 		     ),
		array(  "Col(a,b,p)",
				"Col(a,b,q)",
				"p != q",
				"a != b",
				"-perp(c,d,p,q)",
				"perp(c,d,a,b)"
			 )
	),
	new Theorem( "ExtSameSide1",
		array( "-Col(xa,xb,xc) | xa = xb | xa = xc | -samesideline(xp,xq,xa,xb) | samesideline(xp,xq,xa,xc)"),
		array(  "Col(a,b,c)",
				"a != b",
				"a != c",
				"samesideline(p,q,a,b)",
				"-samesideline(p,q,a,c)"
	  		 ),
		array(  "t1 = ss1(p,q,a,b)",
				"t2 = ss2(p,q,a,b)",
				"t3 = ss3(p,q,a,b)"
	   		 )
	),	
	new Theorem( "ExtSameSide2",
		array( "xa = xb  | -samesideline(xp,xq,xa,xb) | samesideline(xp,xq,xb,xa)"),
		array(  "a != b",
				"samesideline(p,q,a,b)",
				"-samesideline(p,q,b,a)"
			 ),
		array(  "t1 = ss1(p,q,a,b)",
				"t2 = ss2(p,q,a,b)",
				"t3 = ss3(p,q,a,b)"
			 )
	),
	new Theorem( "Satz9.2",
		array( "-opposite(xa,xp,xq,xb) | opposite(xb,xp,xq,xa)"),
		array( "opposite(a,p,q,b)","-opposite(b,p,q,a)")
    ),
	new Theorem( "Satz9.3a",  // case 1 of Satz 9.3
		array( "-opposite(xa,xp,xq,xc) | -Col(xp,xq,xm) | -M(xa,xm,xc) | -Col(xp,xq,xr)".
		 		"| -sameside(xa,xr,xb) | opposite(xb,xp,xq,xc) | -T(xr,xb,xa)"),
		array(  "opposite(a,p,q,c)",
				"Col(p,q,m)",
				"M(a,m,c)",
				"Col(p,q,r)",
				"sameside(a,r,b)",
				"-opposite(b,p,q,c)",
				"T(r,b,a)"        //  Case 1
	  		 ),
		array( "t = ip(r,b,a,c,m)")
    ),
	new Theorem( "Satz9.3",  
		array( "-opposite(xa,xp,xq,xc) | -Col(xp,xq,xm) | -M(xa,xm,xc) | -Col(xp,xq,xr)".
		 		"| -sameside(xa,xr,xb) | opposite(xb,xp,xq,xc)"),
		array(  "opposite(a,p,q,c)",
				"Col(p,q,m)",
				"M(a,m,c)",
				"Col(p,q,r)",
				"sameside(a,r,b)",
				"-opposite(b,p,q,c)"
	  		 ),
		array(	"b1 = s(m,b)",
				"r1 = s(m,r)"
			 )
	),
	new Theorem( "SideReflect",
		array( "-sameside(xa,xb,xc) | sameside(s(xm,xa),s(xm,xb),s(xm,xc))"),
		array(  "sameside(a,b,c)", 
				"-sameside(s(m,a),s(m,b),s(m,c))"
			 ),
		array(  "a1 = s(m,a)",
				"b1 = s(m,b)",
				"c1 = s(m,c)"
			 ),
		"",
		array("-T(b,a,c) | T(b,a,c)")
	),
	      // next few theorems are all special cases of Satz 9.4 in SST
	new Theorem( "Satz9.4a",   // line 1 implies left-to-right of line 2 assuming r != s and an inequality
		array( "-opposite(xa,xp,xq,xc) | xp = xq | -Col(xp,xq,xcs) | -Col(xp,xq,xr)".
		 		"| -perp(xp,xq,xa,xr) | -perp(xp,xq,xc,xcs) | -M(xr,xm,xcs) | -sameside(u,xr,xa)".
		 		"| -le(xcs,xc,xr,xa) | xr = xcs | sameside(s(xm,u),xcs,xc)"),
		array(  "opposite(a,p,q,c)",
				"p != q", 
				"Col(p,q,cs)",
				"Col(p,q,r)",
				"perp(p,q,a,r)",
				"perp(p,q,c,cs)",
				"M(r,m,cs)",
				"sameside(cu,r,a)",
				"le(cs,c,r,a)",
				"r != cs",
				"-sameside(s(m,cu),cs,c)"
			 ),
		array( 	"t = il(a,c,p,q)",
				"b = insert(cs,c,r,a)",
				"m = ip(c,t,a,r,b)"
			 )
	),  
	new Theorem( "Satz9.4a2",   // line 1 implies right-to-left of line 2 assuming r != s and an inequality
		array( "-opposite(xa,xp,xq,xc) | xp = xq | -Col(xp,xq,xcs) | -Col(xp,xq,xr)".
		 		"| -perp(xp,xq,xa,xr) | -perp(xp,xq,xc,xcs) | -M(xr,xm,xcs) | sameside(u,xr,xa)".
		 		"| -le(xcs,xc,xr,xa) | xr = xcs | -sameside(s(xm,u),xcs,xc)"),
		array(  "opposite(a,p,q,c)",
				"p != q", 
				"Col(p,q,cs)",
				"Col(p,q,r)",
				"perp(p,q,a,r)",
				"perp(p,q,c,cs)",
				"M(r,m,cs)",
				"-sameside(cu,r,a)",
				"le(cs,c,r,a)",
				"r != cs",
				"sameside(s(m,cu),cs,c)"
			 ),
		array( 	"t = il(a,c,p,q)",
				"b = insert(cs,c,r,a)"
			 )
	),
	new Theorem( "Satz9.4b",  //  line 1 implies left-to-right of line 2 assuming r = s and an inequality.
		array( "-opposite(xa,xp,xq,xc) | xp = xq | -Col(xp,xq,xcs) | -Col(xp,xq,xr) | -perp(xp,xq,xa,xr)".
		 		"| -perp(xp,xq,xc,xcs) | -M(xr,xm,xcs) | -sameside(u,xr,xa) | xr != xcs | sameside(s(xm,u),xcs,xc)"),
		array(  "opposite(a,p,q,c)",
				"p != q", 
				"Col(p,q,cs)",
				"Col(p,q,r)",
				"perp(p,q,a,r)",
				"perp(p,q,c,cs)",
				"M(r,m,cs)",
				"sameside(cu,r,a)",
				"r = cs",
				"-sameside(s(m,cu),cs,c)"
			 ),
		array(  "t = il(a,c,p,q)",
				"b = insert(cs,c,r,a)",
				"cu1 = s(m,cu)"
			 )
	),
	new Theorem( "Satz9.4",  // line 1 implies left-to-right of line 2 
		array(  "-opposite(xa,xp,xq,xc) | xp = xq | -Col(xp,xq,xcs) | -Col(xp,xq,xr) | -perp(xp,xq,xa,xr)".
		 		"| -perp(xp,xq,xc,xcs) | -M(xr,xm,xcs) | -sameside(u,xr,xa) |  sameside(s(xm,u),xcs,xc)"),
		array(  "opposite(a,p,q,c)",
				"p != q", 
				"Col(p,q,cs)",
				"Col(p,q,r)",
				"perp(p,q,a,r)",
				"perp(p,q,c,cs)",
				"M(r,m,cs)",
				"sameside(cu,r,a)",
				"-sameside(s(m,cu),cs,c)"
	  		 ),
		array(  "cu1 = s(m,cu)"),
		"",
		array(  "r = cs | r != cs" )
	),
	new Theorem( "Satz9.4c",  // line 1 implies line 3
		array(  "-opposite(xa,xp,xq,xc) | xp = xq | -Col(xp,xq,xcs) | -Col(xp,xq,xr) | -perp(xp,xq,xa,xr)".
		 		"| -perp(xp,xq,xc,xcs) | -M(xr,xm,xcs) |  -sameside(u,xr,xa) | -sameside(v,xcs,xc) | opposite(u,xp,xq,v)"),
		array(  "opposite(a,p,q,c)",
				"p != q", 
				"Col(p,q,cs)",
				"Col(p,q,r)",
				"perp(p,q,a,r)",
				"perp(p,q,c,cs)",
				"M(r,m,cs)",
				"sameside(cu,r,a)",
				"sameside(cv,cs,c)",
				"-opposite(cu,p,q,cv)"
	  		 ),
		array(  "cu1 = s(m,cu)" )
	),
	new Theorem( "Satz9.5",
		array( "-opposite(xa,xp,xq,xc) | -Col(xp,xq,xr) | -sameside(xa,xr,xb) | opposite(xb,xp,xq,xc)"),
		array(  "opposite(a,p,q,c)",
				"Col(p,q,r)",
				"sameside(a,r,b)",
				"-opposite(b,p,q,c)"
	  		 ),
		array(  "cx = foot(p,q,a)",
				"cy = foot(p,q,b)",
				"cz = foot(p,q,c)",
				"m = midpoint(cx, cz)",
				"d = s(m,a)"
	  		 )
	),
	new Theorem( "Satz9.6",   // outer Pasch
		array(  "-T(xa,xc,xp) | -T(xb,xq,xc) | T(xa,op(xq,xb,xp,xc,xa),xb)",
				"-T(xa,xc,xp) | -T(xb,xq,xc) | T(xp,xq,op(xq,xb,xp,xc,xa))"
			 ),
		array(  "T(a,c,p)",
				"T(b,q,c)",
				"-T(a,x,b) | -T(p,q,x)"
			 ),
		array(	 "d = il(a,b,p,q)",
				"t = ip(p,c,a,b,d)"
			 ),
		array( "op")
	),  
	new Theorem( "Satz9.8", 
		array( "-opposite(xa,xp,xq,xc) | opposite(xb,xp,xq,xc) | -samesideline(xa,xb,xp,xq)"),
		array(  "opposite(a,p,q,c)",
				"-opposite(b,p,q,c)",
				"samesideline(a,b,p,q)"
			 ),
	   // following is the diagram in Fig. 38, p. 72 
		array(  "cx = ss1(a,b,p,q)",
				"cy = ss2(a,b,p,q)",
				"d = ss3(a,b,p,q)",
				"cz = ip(a,cx,d,b,cy)"
 			 )
	),
	new Theorem( "Satz9.9",
		array( "-opposite(xa,xp,xq,xb) | -samesideline(xa,xb,xp,xq)"),
		array( 	"opposite(a,p,q,b)",
				"samesideline(a,b,p,q)"
	  		 )
	),
	new Theorem( "Satz9.13",
		array( "xp=xq | -samesideline(xa,xb,xp,xq) | -samesideline(xb,xc,xp,xq) | samesideline(xa,xc,xp,xq)" ),
		array(  "p != q",
				"samesideline(a,b,p,q)",
				"samesideline(b,c,p,q)",
				"-samesideline(a,c,p,q)"
			 ),
		array(  "t = ss3(a,b,p,q)",
				"r = il(t,c,p,q)",
				"cs = ss1(a,b,p,q)",
				"k = ss2(a,b,p,q)"
 			 )
	),
	new Theorem( "Lemma9.13a",
 		array( "-samesideline(xp,xq,xa,xb) | samesideline(xp,xq,xb,xa)"),
		array(  "samesideline(p,q,a,b)",
				"-samesideline(p,q,b,a)"
			 ),
		array(  "r = ss1(p,q,a,b)",
				"cs = ss2(p,q,a,b)",
				"t = ss3(p,q,a,b)"
			 )
	),
	new Theorem( "Lemma9.13b",
 		array( "xa = xb | -M(u,v,w) | -Col(xa,xb,u) | -Col(xa,xb,w) | Col(xa,xb,v)"
			 ),
		array(  "a != b",
				"M(cu,cv,cw)",
				"Col(a,b,cu)",
				"Col(a,b,cw)",
				"-Col(a,b,cv)"
			 )
	),
	new Theorem( "Lemma9.13c",
		array( "xd = xe | -T(xe,xd,xd1) | -samesideline(xa,xb,xd1,xe) | samesideline(xa,xb,xd,xe)"),
		array(  "d != e",
				"T(e,d,d1)",
				"samesideline(a,b,d1,e)",
				"-samesideline(a,b,d,e)"
			 ),
		array(  "one = ss3(a,b,d1,e)",
				"a1 = ss1(a,b,d1,e)",
				"b1 = ss2(a,b,d1,e)"
			 )
	),
	new Theorem( "Lemma9.13d",
		array( "xa = xb | -samesideline(xp,xq,xa,xb) | samesideline(xq,xp,xa,xb)" ),
		array(  "a != b",   
				"samesideline(p,q,a,b)",
				"-samesideline(q,p,a,b)"
			 )
	),
	new Theorem( "Lemma9.13e",
 		array( "-opposite(xa,xp,xq,xb) | -samesideline(xb,xc,xp,xq) | opposite(xa,xp,xq,xc)"
			 ),
		array(  "opposite(a,p,q,b)",
				"samesideline(b,c,p,q)",
				"-opposite(a,p,q,c)"
 			 )
	),
	new Theorem( "Lemma9.13g",
		array( "xp=xq | -perpAt(xp,xq,xc,xa,xc) | -perpAt(xp,xq,xc,xb,xc) | xa = xc | Col(xc,xa,xb)"
			 ),
		array(  "p != q",
				"perpAt(p,q,c,a,c)",
				"perpAt(p,q,c,b,c)",
				"a != c",
				"-Col(c,a,b)"
	  		 ),
		array(  "r = ext(p,q,p,c)",
				"t = s(c,r)"
			 )
	),
	new Theorem( "Lemma9.13f-case1",
		array( "xp = xq | Col(xp,xq,xr) | Col(xp,xq,xcs) | samesideline(xr,xcs,xp,xq) | opposite(xr,xp,xq,xcs)| xp != foot(xp,xq,xr)" 
			 ),
		array(  "p != q",
				"-Col(p,q,r)",
				"-Col(p,q,cs)",
				"-samesideline(r,cs,p,q)",
				"-opposite(r,p,q,cs)",
				 "p = foot(p,q,r)"
 			 ),
		array(  "e = foot(p,q,r)",
				"r1 = erect(e,q,cs)",
				"f = erectAux(e,q,cs)"
			 )
	),
	new Theorem( "Lemma9.13f-case2",
		array(  "xp = xq | Col(xp,xq,xr) | Col(xp,xq,xcs) | samesideline(xr,xcs,xp,xq) | opposite(xr,xp,xq,xcs)".
		 		"| xp = foot(xp,xq,xr)" 
			 ),
		array(  "p != q",
				"-Col(p,q,r)",
				"-Col(p,q,cs)",
				"-samesideline(r,cs,p,q)",
				"-opposite(r,p,q,cs)",
				"p != foot(p,q,r)"
 			 ),
		array(  "e = foot(p,q,r)",
				"r1 = erect(e,q,cs)",
				"f = erectAux(e,q,cs)",
				"r2 = erect(e,p,cs)",
				"f2 = erectAux(e,p,cs)"
			 )
	),
	new Theorem( "Lemma9.13f",
		array( "xp = xq | Col(xp,xq,xr) | Col(xp,xq,xcs) | samesideline(xr,xcs,xp,xq) | opposite(xr,xp,xq,xcs)" 
			 ),
		array(  "p != q",
				"-Col(p,q,r)",
				"-Col(p,q,cs)",
				"-samesideline(r,cs,p,q)",
				"-opposite(r,p,q,cs)"
 			 ),
		array(  "e = foot(p,q,r)",
				"r1 = erect(e,q,cs)",
				"f = erectAux(e,q,cs)",
				"r2 = erect(e,p,cs)",
				"f2 = erectAux(e,p,cs)"
			 ),
		"",
		array("e=p | e!=p")
	),
	new Theorem( "Satz9.16",  // used in Satz 11.15b 
		array( "-samesideline(xa,xb,xp,xq) | -sameside(xa,xq,xr) | samesideline(xr,xb,xp,xq)" ),
		array(  "samesideline(a,b,p,q)",
				"sameside(a,q,r)",
				"-samesideline(r,b,p,q)"		
			 ),
		array(  "t = ss3(a,b,p,q)",
				"a1 = ss1(a,b,p,q)",
				"b1 = ss2(a,b,p,q)",
				"d1 = ip(q,c,a,t,a1)",
				"d2 = op(a1,t,q,a,c)"
			 )
	),
	new Theorem( "Satz9.19b",  // right to left of 9.19
		array("xc = xd | -Col(xc,xd,xp) | -Col(xa,xb,xp) | -sameside(xa,xp,xb) | Col(xc,xd,xa) |  samesideline(xa,xb,xc,xd)"),
		array(  "c != d",
				"Col(c,d,p)",
				"Col(a,b,p)",
				"sameside(a,p,b)",
				"-Col(c,d,a)",
				"-samesideline(a,b,c,d)"
			)
	),
	new Theorem( "Satz10.2a",
		array(  "xa = xb | Col(xa,xb,midpoint(xp,reflect(xa,xb,xp)))",  
				"xa = xb | xp = reflect(xa,xb,xp) | perp(xa,xb,xp,reflect(xa,xb,xp))"
			 ),
		array(  "a!=b",
				"-Col(a,b,midpoint(p,x)) | -perp(a,b,p,x)",
				"-Col(a,b,midpoint(p,x)) | p != x"
			 ), 
		array( 
				"cx = foot(a,b,p)",
				"p1 = s(cx,p)"   
			 ),
		array( "reflect"),
      // reflect is introduced as a Skolem symbol, not as a 
      //  demodulator reflect(a,b,p) = s(foot(a,b,p),p), since foot is only 
      //  defined when p is not on Line(a,b), but reflect(a,b,p) is always defined when a!= b.
      //  In the book,  reflect(a,b,x) is also defined when a=b, to be s(a,x), but in practice 
      //  it is only used when a != b and a,b determine a line.  In our treatment it's only sensible when a!=b.
		array("b=cx | b!= cx")
    ),
	new Theorem( "Satz10.2b",
		array(  "xa = xb | -Col(xa,xb,midpoint(xp,xp1)) | -perp(xa,xb,xp,xp1) | xp1 = reflect(xa,xb,xp)",
				"xa = xb | -Col(xa,xb,midpoint(xp,xp1)) | xp != xp1  | xp1 = reflect(xa,xb,xp)"
			 ),
 		array(  "a != b", 
				"Col(a,b,midpoint(p,p1))",
				"perp(a,b,p,p1) | p = p1",
				"p1 != reflect(a,b,p)"
	  		 ),
 		array(  "q = reflect(a,b,p)",
				"r = midpoint(p,q)",
				"j = midpoint(p,p1)"
			 ),
		"",   // no Skolem symbols
		array(  "p = p1 | p != p1", 
				"Col(a,b,p) | -Col(a,b,p)"
			 )
	),
	new Theorem( "Satz10.4",
		array( "xa = xb | reflect(xa,xb,xp) != xp1 | reflect(xa,xb,xp1) = xp"),
		array(  "a != b",     
				"reflect(a,b,p) = p1",
				"reflect(a,b,p1) != p"
			 ),   
		array( "m = midpoint(p,p1)")
	),
	new Theorem( "Satz10.5",
		array( "xa = xb | reflect(xa,xb,reflect(xa,xb,xp)) = xp"),
		array(  "a != b",  
				"reflect(a,b,reflect(a,b,p)) != p"
			 )
	),
	new Theorem( "Satz10.6",
		array( "xa = xb | reflect(xa,xb,xp) != xp1  | xp = reflect(xa,xb,xp1)"),
 		array(  "a != b",    
				"reflect(a,b,p) = p1",
				"p != reflect(a,b,p1)"
			 )
	),
	new Theorem( "Satz10.7",
		array( "xa = xb | reflect(xa,xb,xp) != reflect(xa,xb,xq) | xp = xq"),
		array(  "a != b",    
				"reflect(a,b,p) = reflect(a,b,q)",
				"p != q"
			 )
	),
	new Theorem( "Satz10.8a",
		array( "xa = xb | reflect(xa,xb,xp) != xp | Col(xa,xb,xp)"),
		array(  "a != b",     
				"reflect(a,b,p) = p",  
				"-Col(a,b,p)"
			 )
	),
	new Theorem( "Satz10.8b",
		array( "xa = xb | -Col(xa,xb,xp) | reflect(xa,xb,xp) = xp"),
 		array(  "a != b",  
				"Col(a,b,p)", 
				"reflect(a,b,p) != p"
			 )
	),
	new Theorem( "Satz10.10a",  //   case of 10.10 when Col(a,b,p)
 		array( "xa=xb | -Col(xa,xb,xp) | E(xp,xq,reflect(xa,xb,xp),reflect(xa,xb,xq))"),
 		array(  "a != b",
				"Col(a,b,p)" ,
				"-E(p,q,reflect(a,b,p),reflect(a,b,q))" 
 			 ),
		array(  "p1 = reflect(a,b,p)",
				"q1 = reflect(a,b,q)",
				"cx = midpoint(p,p1)",
				"cy = midpoint(q,q1)",
				"cz = midpoint(cx,cy)",
				"r = s(cz,p)",
				"r1 = s(cz,p1)"
			 )
	),  
	new Theorem( "Satz10.10",
		array( "xa=xb | E(xp,xq,reflect(xa,xb,xp),reflect(xa,xb,xq))" ),
 		array(  "a != b",
				"-E(p,q,reflect(a,b,p),reflect(a,b,q))"
			 ),
 		array(  "p1 = reflect(a,b,p)",
				"q1 = reflect(a,b,q)",
				"cx = midpoint(p,p1)",
				"cy = midpoint(q,q1)",
				"cz = midpoint(cx,cy)",
				"r = s(cz,p)",
				"r1 = s(cz,p1)"
			 )
	),
 	new Theorem( "Satz10.12b",
		array( "-R(xa,xb,xc) | -R(xa1,xb,xc) | -E(xa,xb,xa1,xb) | E(xa,xc,xa1,xc)"),
		array(  "R(a,b,c)",
				"R(a1,b,c)",
				"E(a,b,a1,b)",
				"-E(a,c,a1,c)"
			 ),
	      // following is diagram 50, page 91 of SST
 		array(  "cz = midpoint(a,a1)",
				"cstar = s(b,c)", 
				"bstar = midpoint(c,cstar)"
 			 ),
		"",
		array(  "a1 != a | a1 = a",
				"b = cz |  b != cz",
				"cstar = c | cstar != c"
			 )
	),
	new Theorem( "Satz10.12c",  // like 10.12a,  but assumes also b = midpoint(c,c1) and c != c1 
		array( "-R(xa,xb,xc) | -R(xa1,xb,xc1) | -E(xa,xb,xa1,xb) | -E(xb,xc,xb,xc1) | E(xa,xc,xa1,xc1) | xb != midpoint(xc,xc1) | xc = xc1"),
 		array(  "R(a,b,c)",
				"R(a1,b,c1)",
				"E(a,b,a1,b)",
				"E(b,c,b,c1)",
				"-E(a,c,a1,c1)",
				"b = midpoint(c,c1)",
				"c != c1"
			 ),
		array(  "cy = midpoint(c,c1)",
				"a2 = reflect(b,cy,a1)"
			 )
	),
	new Theorem( "Satz10.12a",
		array( "-R(xa,xb,xc) | -R(xa1,xb,xc1) | -E(xa,xb,xa1,xb) | -E(xb,xc,xb,xc1) | E(xa,xc,xa1,xc1)"),
		array(  "R(a,b,c)",
				"R(a1,b,c1)",
				"E(a,b,a1,b)",
				"E(b,c,b,c1)",
				"-E(a,c,a1,c1)"
	  		 ),
		array( "cy = midpoint(c,c1)",
				"a2 = reflect(b,cy,a1)"
			 ),
		"",  // no Skolem symbols
		array(" c = c1 | c != c1")
	),
	new Theorem( "Satz10.12",
		array( "-R(xa,xb,xc) | -R(xa1,xb1,xc1) | -E(xa,xb,xa1,xb1) | -E(xb,xc,xb1,xc1) | E(xa,xc,xa1,xc1)"),
		array(  "R(a,b,c)",
				"R(a1,b1,c1)",
				"E(a,b,a1,b1)",
				"E(b,c,b1,c1)",
				"-E(a,c,a1,c1)"
			 ),
		array(  "cx = midpoint(b,b1)",
				"aone = s(cx,a1)",
				"cone = s(cx,c1)"
			 )
	),
	new Theorem( "Satz10.14",
		array(  "xa = xb | reflect(xa,xb,xp) != xp1 | Col(xa,xb,xp) | opposite(xp,xa,xb,xp1)"),
		array(  "a != b",
				"reflect(a,b,p) = p1",
				"-Col(a,b,p)",
				"-opposite(p,a,b,p1)"
			 ),
		array(  "m = midpoint(p,p1)")
	),
	new Theorem( "Satz10.15",
		array(  "xb = xc | -Col(xb,xc,xa) | Col(xb,xc,xq) | perp(xb,xc, erectsameside(xb,xc,xa,xq),xa)",
				"xb = xc | -Col(xb,xc,xa) | Col(xb,xc,xq)| samesideline(erectsameside(xb,xc,xa,xq),xq,xb,xc)"
			 ),
		array(  "b != c",
				"Col(b,c,a)",
				"-Col(b,c,q)",
				"-perp(b,c,x,a) | -samesideline(x,q,b,c)"
			 ),
		array(  "e = ext(b,c,b,a)",  // so e != a
				"p1 = reflect(e,a,q)",		
		        "p = erect(a,e,p1)" ,
				"t  = erectAux(a,e,p1)",
				"m = midpoint(q,p1)"
		     ),   
		array(  "erectsameside")
	),
	new Theorem( "Satz10.16a",
		array(  "xa=xb | Col(xa,xb,xc) | Col(xa1,xb1,xp) | -E(xa,xb,xa1,xb1) | E3(xa,xb,xc,xa1,xb1,triangle(xa,xb,xc,xa1,xb1,xp))",
				"xa=xb | Col(xa,xb,xc) | Col(xa1,xb1,xp) | -E(xa,xb,xa1,xb1) | samesideline(triangle(xa,xb,xc,xa1,xb1,xp),xp,xa1,xb1)" 
			 ),
		array(  "a!= b",   
				"-Col(a,b,c)",
				"-Col(a1,b1,p)",
				"E(a,b,a1,b1)",
				"-E3(a,b,c,a1,b1,x) | -samesideline(x,p,a1,b1)"
			 ),
 		array(  "cx = foot(a,b,c)",
				"cx1 = insert5(a,b,cx,a1,b1)",    
				"q = erectsameside(a1,b1,cx1,p)",
				"c1 = insert(cx,c,cx1,q)"
			 ),
		array( "triangle")
	),
	new Theorem( "Satz10.16b",
		array( "xa = xb | Col(xa,xb,xc) | Col(xa1,xb1,xp) | -E(xa,xb,xa1,xb1) | -E3(xa,xb,xc,xa1,xb1,xc1)".
		 		"| -samesideline(xc1,xp,xa1,xb1) | -E3(xa,xb,xc,xa1,xb1,xc2) | -samesideline(xc2,xp,xa1,xb1) | xc1=xc2"
	         ),
		array(  "a!= b",   
				"-Col(a,b,c)",
				"-Col(a1,b1,p)",
				"E(a,b,a1,b1)",
				"E3(a,b,c,a1,b1,c1)",
				"samesideline(c1,p,a1,b1)", 
				"E3(a,b,c,a1,b1,c2)",
				"samesideline(c2,p,a1,b1)", 
				"c1 != c2"
			 ),
 		array(  "cstar = reflect(a1,b1,c2)",
				"t = il(c1,cstar,a1,b1)"  
			 ),
		"",
		array("t=a1 | t != a1")
	),
	new Theorem( "Satz11.3a",  // left-to-right of Satz 11.3 
		array(  "-congruent(xa,xb,xc,xd,xe,xf) | sameside(ext(xb,xa,xe,xd),xb,xa)",
				"-congruent(xa,xb,xc,xd,xe,xf) | sameside(ext(xb,xc,xe,xf),xb,xc)",
				"-congruent(xa,xb,xc,xd,xe,xf) | sameside(ext(xe,xd,xb,xa),xe,xd)",
				"-congruent(xa,xb,xc,xd,xe,xf) | sameside(ext(xe,xf,xb,xc),xe,xf)",
				"-congruent(xa,xb,xc,xd,xe,xf) | E3(ext(xb,xa,xe,xd),xb, ext(xb,xc,xe,xf),ext(xe,xd,xb,xa),xe,ext(xe,xf,xb,xc))",
			 ),
 		array(  "congruent(a,b,c,d,e,f)", 
				"-sameside(ext(b,a,e,d),b,a) | -sameside(ext(b,c,e,f),b,c) | -sameside(ext(e,d,b,a),e,d)".
				" | -sameside(ext(e,f,b,c),e,f) | -E3(ext(b,a,e,d),b,ext(b,c,e,f),ext(e,d,b,a),e,ext(e,f,b,c))"
			 ),   
 		array(  "a1 =ext(b,a,e,d)",
				"c1 = ext(b,c,e,f)",
				"d1 = ext(e,d,b,a)",
				"f1 = ext(e,f,b,c)"
			)
	),
	new Theorem( "Satz11.3d",  // right-to-left of Satz 11.3 
		array( "-sameside(xa1,xb,xa) | -sameside(xc1,xb,xc) | -sameside(xd1,xe,xd) | -sameside(xf1,xe,xf)".
		 		"| -E3(xa1,xb,xc1,xd1,xe,xf1) | congruent(xa,xb,xc,xd,xe,xf)"
 			 ),
		array(  "sameside(a1,b,a)",
				"sameside(c1,b,c)",
				"sameside(d1,e,d)",
				"sameside(f1,e,f)",
				"E3(a1,b,c1,d1,e,f1)", 
				"-congruent(a,b,c,d,e,f)"
			 ),
 		array(  "a1 = ext(b,a,e,d)",
				"c1 = ext(b,c,e,f)",
				"d1 = ext(e,d,b,a)",
				"f1 = ext(e,f,b,c)"
			 )
	),
	new Theorem( "Satz11.4b",  // right-to-left of Satz 11.4
		array(  "xa = xb | xc = xb | xd = xe | xf = xe | sameside(f113a(xa,xb,xc,xd,xe,xf),xb,xa) | congruent(xa,xb,xc,xd,xe,xf)",
				"xa = xb | xc = xb | xd = xe | xf = xe | sameside(f113c(xa,xb,xc,xd,xe,xf),xb,xc) | congruent(xa,xb,xc,xd,xe,xf)",
				"xa = xb | xc = xb | xd = xe | xf = xe | sameside(f113d(xa,xb,xc,xd,xe,xf),xe,xd) | congruent(xa,xb,xc,xd,xe,xf)",
				"xa = xb | xc = xb | xd = xe | xf = xe | sameside(f113f(xa,xb,xc,xd,xe,xf),xe,xf) | congruent(xa,xb,xc,xd,xe,xf)",
				"xa = xb | xc = xb | xd = xe | xf = xe | E(xb,f113a(xa,xb,xc,xd,xe,xf),xe,f113d(xa,xb,xc,xd,xe,xf)) | congruent(xa,xb,xc,xd,xe,xf)",
				"xa = xb | xc = xb | xd = xe | xf = xe | E(xb,f113c(xa,xb,xc,xd,xe,xf),xe,f113f(xa,xb,xc,xd,xe,xf)) | congruent(xa,xb,xc,xd,xe,xf)",
				"xa = xb | xc = xb | xd = xe | xf = xe | -E(f113a(xa,xb,xc,xd,xe,xf),f113c(xa,xb,xc,xd,xe,xf),f113d(xa,xb,xc,xd,xe,xf),f113f(xa,xb,xc,xd,xe,xf))".
				"| congruent(xa,xb,xc,xd,xe,xf)"
			 ),
 		array( "a != b",
				"c != b",
				"d != e",
				"f != e",
				"-sameside(xa1,b,a) | -sameside(xc1,b,c) | -sameside(xd1,e,d) | -sameside(xf1,e,f) | -E(b,xa1,e,xd1) | -E(b,xc1,e,xf1) | E(xa1,xc1,xd1,xf1)",
				"-congruent(a,b,c,d,e,f)"
			 ),
 		array(  "a1 =ext(b,a,e,d)",
				"c1 = ext(b,c,e,f)",
				"d1 = ext(e,d,b,a)",
				"f1 = ext(e,f,b,c)"
			 ),
		array("f113a","f113c","f113d","f113f")
	),
	new Theorem( "Satz11.4",   // left-to-rightof Satz 11.4,  
		array(  "-congruent(xa,xb,xc,xd,xe,xf) | -sameside(xa2,xb,xa) | -sameside(xc2,xb,xc) | -sameside(xd2,xe,xd) | -sameside(xf2,xe,xf) | -E(xb,xa2,xe,xd2) | -E(xb,xc2,xe,xf2) | E(xa2,xc2,xd2,xf2)"
			),
		array(  "congruent(a,b,c,d,e,f)",
				"sameside(a2,b,a)",
				"sameside(c2,b,c)",
				"sameside(d2,e,d)",
				"sameside(f2,e,f)",
				"E(b,a2,e,d2)",
				"E(b,c2,e,f2)",
				"-E(a2,c2,d2,f2)"
			 ),
		array(  "a1 = ext(b,a,e,d)",
			 	"c1 = ext(b,c,e,f)",
			 	"d1 = ext(e,d,b,a)",
			 	"f1 = ext(e,f,b,c)"
			 )
	),
	new Theorem( "Satz11.4d", // (3) implies (4) on page 95
		array(  "-sameside(xa1,xb,xa2) | -sameside(xc1,xb,xc2) | -sameside(xd1,xe,xd2) | -sameside(xf1,xe,xf2)".
		 		"| -E3(xa1,xb,xc1,xd1,xe,xf1) | xa=xb | xc=xb | xd=xe | xf=xe | -sameside(xa2,xb,xa)".
		 		"| -sameside(xc2,xb,xc) | -sameside(xd2,xe,xd) | -sameside(xf2,xe,xf) |  -E(xb,xa2,xe,xd2)".
		 		"| -E(xb,xc2,xe,xf2) | E(xa2,xc2,xd2,xf2)"
		 	 ),
		array(  "sameside(a1,b,a2)",
				"sameside(c1,b,c2)",
				"sameside(d1,e,d2)",
				"sameside(f1,e,f2)",
				"E3(a1,b,c1,d1,e,f1)",
				"a!=b",
				"c!=b",
				"d!=e",
				"f!=e",
				"sameside(a2,b,a)",
				"sameside(c2,b,c)",
				"sameside(d2,e,d)",
				"sameside(f2,e,f)",
				"E(b,a2,e,d2)",
				"E(b,c2,e,f2)",
				"-E(a2,c2,d2,f2)"
			 )
	),
	new Theorem( "Satz11.6",  // reflexivity of angle congruence
		array( "xa = xb | xc = xb | congruent(xa,xb,xc,xa,xb,xc)"),
		array(  "a != b", 
				"c != b",
				"-congruent(a,b,c,a,b,c)"
			 ),
		array(  "p = ext(b,a,b,a)",
				"q = ext(b,c,b,c)"
			 )
	),
	new Theorem( "Satz11.7",  // symmmetry of angle congruence
		array( "-congruent(xa,xb,xc,xd,xe,xf) | congruent(xd,xe,xf,xa,xb,xc)"),
		array(  "congruent(a,b,c,d,e,f)",
				"-congruent(d,e,f,a,b,c)"
			 ),
		array(  "a1 = ext(b,a,e,d)",
				"c1 = ext(b,c,e,f)",
				"d1 = ext(e,d,b,a)",
				"f1 = ext(e,f,b,c)"
			 )
	),
	new Theorem( "Satz11.8",  // transitivity of angle congruence
		array( "-congruent(xa1,xb1,xc1,xa2,xb2,xc2) | -congruent(xa2,xb2,xc2,xa3,xb3,xc3) | congruent(xa1,xb1,xc1,xa3,xb3,xc3)"),
		array(  "congruent(a1,b1,c1,a2,b2,c2)",
				"congruent(a2,b2,c2,a3,b3,c3)",
				"-congruent(a1,b1,c1,a3,b3,c3)"
			 ),
		array(  "p2 = insert(b1,a1,b2,a2)",
				"q2 = insert(b1,c1,b2,c2)",
				"p3 = insert(b1,a1,b3,a3)",
				"q3 = insert(b1,c1,b3,c3)"
			 )
	),
	new Theorem( "Satz11.9",  // abc is congruent to cba
		array(  "xa = xb | xc = xb | congruent(xa,xb,xc,xc,xb,xa)"),
		array(  "a != b", "c != b", "-congruent(a,b,c,c,b,a)"),
		array(  "p = ext(b,a,b,c)",
				"q = ext(b,c,b,a)"
			 )
	),
	new Theorem( "Satz11.15a",
		array(  "Col(xa,xb,xc) | Col(xd,xe,xp) | congruent(xa,xb,xc,xd,xe,constructAngle(xa,xb,xc,xd,xe,xp))",
				"Col(xa,xb,xc) | Col(xd,xe,xp) | samesideline(constructAngle(xa,xb,xc,xd,xe,xp),xp,xd,xe)"
			 ),
 		array(  "-Col(a,b,c)",
				"-Col(d,e,p)",
				"-congruent(a,b,c,d,e,x) | -samesideline(x,p,d,e)"
			 ),
 		array(  "a1 = ext(b,a,e,d)",
				"c1 = ext(b,c,e,f)",
				"d1 = ext(e,d,b,a)",
				"f1 = triangle(b,a1,c1,e,d1,p)"
			 ),
		array( "constructAngle" )
	),
	new Theorem( "Satz11.15b",
 		array( "Col(xa,xb,xc) | Col(xd,xe,xp) | -congruent(xa,xb,xc,xd,xe,xf1) | -samesideline(xf1,xp,xe,xd)".
 				" | -congruent(xa,xb,xc,xd,xe,xf2) | -samesideline(xf2,xp,xe,xd) | sameside(xf1,xe,xf2)"
			 ),
		array(  "-Col(a,b,c)",
			"-Col(d,e,p)",  
			"congruent(a,b,c,d,e,f1)",
			"samesideline(f1,p,e,d)",
			"congruent(a,b,c,d,e,f2)",
			"samesideline(f2,p,e,d)",   
			"-sameside(f1,e,f2)"
			 ),
		array(  "d2 = ext(e,d,e,d)",
				"f3 = ext(e,f1,e,f2)",
				"f4 = ext(e,f2,e,f1)"
			 )
	),  
	new Theorem( "Satz11.49a",
		array( "-congruent(xa,xb,xc,xa1,xb1,xc1) | -E(xb,xa,xb1,xa1) | -E(xb,xc,xb1,xc1) | E(xa,xc,xa1,xc1)"
 			 ),
		array(  "congruent(a,b,c,a1,b1,c1)",
			"E(b,a,b1,a1)",
			"E(b,c,b1,c1)",
			"-E(a,c,a1,c1)"
			 )
	),
	new Theorem( "Satz11.49b",
		array( "-congruent(xa,xb,xc,xa1,xb1,xc1) | -E(xb,xa,xb1,xa1) | -E(xb,xc,xb1,xc1) | xa=xc | congruent(xb,xa,xc,xb1,xa1,xc1)"
			 ),
 		array(  "congruent(a,b,c,a1,b1,c1)",
				"E(b,a,b1,a1)",
				"E(b,c,b1,c1)",
				"a != c",
				"-congruent(b,a,c,b1,a1,c1)"
 			 )
	),
	new Theorem( "ExtParallel",
 		array( "-parallel(xa1,xa2,xb1,xb2) | parallel(xa1,xa2,xb2,xb1)"
			 ),
 		array(  "parallel(a1,a2,b1,b2)",
				"-parallel(a1,a2,b2,b1)"
			 ),
		array( "c = e5(a1,a2,b2,b1)")
	),
	new Theorem( "Satz12.6",
		array( "-parallel(xa1,xa2,xb1,xb2) | -Col(xb1,xb2,xb3) | -Col(xb1,xb2,xb4) | samesideline(xb3,xb4,xa1,xa2)"
			 ),
		array(  "parallel(a1,a2,b1,b2)",
				"Col(b1,b2,b3)",
				"Col(b1,b2,b4)",
				"-samesideline(b3,b4,a1,a2)"
			 ),
		array(  "d=il(b3,b4,a1,a2)" 
			 )
	),
	new Theorem( "Lemma12.11-case1",  
		array(  "xc2 != ext(xp1,xp2,xp1,xa) | -opposite(xt,xr,xcs,xc2) | Col(xt,xq,xa) | -Col(xr,xcs,xa)".
		 		"| -Col(xp1,xp2,xa) | -parallel(xt,xq,xr,xcs) | -parallel(xt,xq,xp1,xp2)".
		 		"| T(c12111(xt,xq,xr,xcs,xp1,xp2,xa),b12111(xt,xq,xr,xcs,xp1,xp2,xa),xt)",
				"xc2 != ext(xp1,xp2,xp1,xa) | -opposite(xt,xr,xcs,xc2) | Col(xt,xq,xa) | -Col(xr,xcs,xa)".
				"| -Col(xp1,xp2,xa) | -parallel(xt,xq,xr,xcs) | -parallel(xt,xq,xp1,xp2)".
				"| Col(xp1,xp2,c12111(xt,xq,xr,xcs,xp1,xp2,xa))",
				"xc2 != ext(xp1,xp2,xp1,xa) | -opposite(xt,xr,xcs,xc2) | Col(xt,xq,xa) | -Col(xr,xcs,xa)".
				" | -Col(xp1,xp2,xa) | -parallel(xt,xq,xr,xcs) | -parallel(xt,xq,xp1,xp2)".
				" | Col(xr,xcs,b12111(xt,xq,xr,xcs,xp1,xp2,xa))",
				"xc2 != ext(xp1,xp2,xp1,xa) | -opposite(xt,xr,xcs,xc2) | Col(xt,xq,xa) | -Col(xr,xcs,xa)".
				" | -Col(xp1,xp2,xa) | -parallel(xt,xq,xr,xcs) | -parallel(xt,xq,xp1,xp2) | xa != c12111(xt,xq,xr,xcs,xp1,xp2,xa)"
			),
		array(  "c2 = ext(p1,p2,p1,a)",
				"opposite(t,r,cs,c2)",  // this makes it Case 1
				"-Col(t,q,a)",
				"Col(r,cs,a)",
				"Col(p1,p2,a)",
				"parallel(t,q,r,cs)",
				"parallel(t,q,p1,p2)", 
				"-T(xc,xb,t) | -Col(p1,p2,xc) | -Col(r,cs,xb) | a=xc"
			),
		array(  "c = s(a,c2)", 
				"b = il(t,c2,r,cs)",
				"b2 = il(t,c,r,cs)"
			 ),
		array( "c12111", "b12111")
	),   
	new Theorem( "Lemma12.11-case2",  
		array(  "xc2 != ext(xp1,xp2,xp1,xa) | opposite(xt,xr,xcs,xc2) | Col(xt,xq,xa) | -Col(xr,xcs,xa)".
		 		"| -Col(xp1,xp2,xa) | -parallel(xt,xq,xr,xcs) | -parallel(xt,xq,xp1,xp2)".
		 		"| T(c12112(xt,xq,xr,xcs,xp1,xp2,xa),b12112(xt,xq,xr,xcs,xp1,xp2,xa),xt)",
				"xc2 != ext(xp1,xp2,xp1,xa) | opposite(xt,xr,xcs,xc2) | Col(xt,xq,xa) | -Col(xr,xcs,xa)".
				" | -Col(xp1,xp2,xa) | -parallel(xt,xq,xr,xcs) | -parallel(xt,xq,xp1,xp2)".
				" | Col(xp1,xp2,c12112(xt,xq,xr,xcs,xp1,xp2,xa))",
				"xc2 != ext(xp1,xp2,xp1,xa) | opposite(xt,xr,xcs,xc2) | Col(xt,xq,xa) | -Col(xr,xcs,xa)".
				" | -Col(xp1,xp2,xa) | -parallel(xt,xq,xr,xcs) | -parallel(xt,xq,xp1,xp2)".
				" | Col(xr,xcs,b12112(xt,xq,xr,xcs,xp1,xp2,xa))",
				"xc2 != ext(xp1,xp2,xp1,xa) | opposite(xt,xr,xcs,xc2) | Col(xt,xq,xa) | -Col(xr,xcs,xa)".
				" | -Col(xp1,xp2,xa) | -parallel(xt,xq,xr,xcs) | -parallel(xt,xq,xp1,xp2) | xa != c12112(xt,xq,xr,xcs,xp1,xp2,xa)"
			),
		array(  "c2 = ext(p1,p2,p1,a)",
				"-opposite(t,r,cs,c2)",  // This makes it Case 2 
				"-Col(t,q,a)",
				"Col(r,cs,a)",
				"Col(p1,p2,a)",
				"parallel(t,q,r,cs)",
				"parallel(t,q,p1,p2)", 
				"-T(xc,xb,t) | -Col(p1,p2,xc) | -Col(r,cs,xb) | a=xc"
			),
		array(  "c = s(a,c2)", 
				"b = il(t,c2,r,cs)",
				"b2 = il(t,c,r,cs)"
			 ),
		array( "c12112", "b12112")
	),   
	new Theorem( "Lemma12.11",    
		array(  "Col(xt,xq,xa) | -Col(xr,xcs,xa) | -Col(xp1,xp2,xa) | -parallel(xt,xq,xr,xcs)".
		 		"| -parallel(xt,xq,xp1,xp2) | T(c1211(xt,xq,xr,xcs,xp1,xp2,xa),b1211(xt,xq,xr,xcs,xp1,xp2,xa),xt)",
				"Col(xt,xq,xa) | -Col(xr,xcs,xa) | -Col(xp1,xp2,xa) | -parallel(xt,xq,xr,xcs)".
				" | -parallel(xt,xq,xp1,xp2) | Col(xp1,xp2,c1211(xt,xq,xr,xcs,xp1,xp2,xa))",
				"Col(xt,xq,xa) | -Col(xr,xcs,xa) | -Col(xp1,xp2,xa) | -parallel(xt,xq,xr,xcs)".
				" | -parallel(xt,xq,xp1,xp2) | Col(xr,xcs,b1211(xt,xq,xr,xcs,xp1,xp2,xa))",
				"Col(xt,xq,xa) | -Col(xr,xcs,xa) | -Col(xp1,xp2,xa) | -parallel(xt,xq,xr,xcs)".
				" | -parallel(xt,xq,xp1,xp2) | xa != c1211(xt,xq,xr,xcs,xp1,xp2,xa)"
			),
		array(  "-Col(t,q,a)",
				"Col(r,cs,a)",
				"Col(p1,p2,a)",
				"parallel(t,q,r,cs)",
				"parallel(t,q,p1,p2)", 
				"-T(xc,xb,t) | -Col(p1,p2,xc) | -Col(r,cs,xb) | a=xc"
			),
		array( 
				"c2 = ext(p1,p2,p1,a)",
				"c = s(a,c2)", 
				"b = il(t,c2,r,cs)",
				"b2 = il(t,c,r,cs)",
				"ca1 = c12111(t,q,r,cs,p1,p2,a)",
				"cb1 = b12111(t,q,r,cs,p1,p2,a)",
				"ca2 = c12112(t,q,r,cs,p1,p2,a)",
				"cb2= b12112(t,q,r,cs,p1,p2,a)"
			 ),
		array( "c1211", "b1211"),
		array( "opposite(t,r,cs,c2) | -opposite(t,r,cs,c2)")
	),   
	new Theorem( "Satz12.11-case1",   // case a=d of Satz12.11
		array(  "xt = xq | Col(xt,xq,xa) | xr = xcs | xp1 = xp2 | -Col(xr,xcs,xa)".
		 		"| -Col(xp1,xp2,xa) | Col(xr,xcs,xp1) | -parallel(xt,xq,xr,xcs)".
		 		"| -parallel(xt,xq,xp1,xp2) |xb!=b1211(xt,xq,xr,xcs,xp1,xp2,xa)".
		 		"| xc1!=c1211(xt,xq,xr,xcs,xp1,xp2,xa)|xc!=s(xa,xc1)|xd!=ip(xt,xb,xc1,xc,xa)|xa=xd",
				"xt = xq | Col(xt,xq,xa) | xr = xcs | xp1 = xp2 | -Col(xr,xcs,xa) | -Col(xp1,xp2,xa)".
				" | Col(xr,xcs,xp2) | -parallel(xt,xq,xr,xcs) | -parallel(xt,xq,xp1,xp2)".
				"| xb!=b1211(xt,xq,xr,xcs,xp1,xp2,xa) | xc1!=c1211(xt,xq,xr,xcs,xp1,xp2,xa)".
				"|xc!=s(xa,xc1)|xd!=ip(xt,xb,xc1,xc,xa)|xa=xd"
			 ),
		array(  "t != q",
				"-Col(t,q,a)",
				"r != cs",
				"p1 != p2",
				"Col(r,cs,a)",
				"Col(p1,p2,a)",
				"-Col(r,cs,p1) | -Col(r,cs,p2)",
				"parallel(t,q,r,cs)",
				"parallel(t,q,p1,p2)",
				"b = b1211(t,q,r,cs,p1,p2,a)",
				"c1 =c1211(t,q,r,cs,p1,p2,a)", 
				"c = s(a,c1)",
				"d = ip(t,b,c1,c,a)",
				"a!=d"
			 ),   
		array( 
				"cx = e1(a,b,c,d,t)",
				"cy = e2(a,b,c,d,t)"
			 )
	),
	new Theorem( "Satz12.11-case2",   // case array=d of Satz12.11
		array(  "xt = xq | Col(xt,xq,xa) | xr = xcs | xp1 = xp2 | -Col(xr,xcs,xa) | -Col(xp1,xp2,xa)".
		 		"| Col(xr,xcs,xp1) | -parallel(xt,xq,xr,xcs) | -parallel(xt,xq,xp1,xp2)".
				"| xb!=b1211(xt,xq,xr,xcs,xp1,xp2,xa) | xc1!=c1211(xt,xq,xr,xcs,xp1,xp2,xa)".
				" | xc!=s(xa,xc1) | xd!=ip(xt,xb,xc1,xc,xa)|xa!=xd",
				"xt = xq | Col(xt,xq,xa) | xr = xcs | xp1 = xp2 | -Col(xr,xcs,xa) | -Col(xp1,xp2,xa)".
				" | Col(xr,xcs,xp2) | -parallel(xt,xq,xr,xcs) | -parallel(xt,xq,xp1,xp2)".
				"| xb!=b1211(xt,xq,xr,xcs,xp1,xp2,xa) | xc1!=c1211(xt,xq,xr,xcs,xp1,xp2,xa)".
				" | xc!=s(xa,xc1) | xd!=ip(xt,xb,xc1,xc,xa)|xa!=xd"
			 ),
		array(  "t != q",
				"-Col(t,q,a)",
				"r != cs",
				"p1 != p2",
				"Col(r,cs,a)",
				"Col(p1,p2,a)",
				"-Col(r,cs,p1) | -Col(r,cs,p2)",
				"parallel(t,q,r,cs)",
				"parallel(t,q,p1,p2)",
				"b = b1211(t,q,r,cs,p1,p2,a)",
				"c1 =c1211(t,q,r,cs,p1,p2,a)", 
				"c = s(a,c1)",
				"d = ip(t,b,c1,c,a)",
				"a=d"
			 ),   
		array( 
				"cx = e1(a,b,c,d,t)",
				"cy = e2(a,b,c,d,t)"
			 )
	),
	new Theorem( "Satz12.11",   // so far we proved this only by dividing into two cases a=d or a!=d.
		array(  "xt = xq | Col(xt,xq,xa) | xr = xcs | xp1 = xp2 | -Col(xr,xcs,xa) | -Col(xp1,xp2,xa)".
		 		"| Col(xr,xcs,xp1) | -parallel(xt,xq,xr,xcs) | -parallel(xt,xq,xp1,xp2)",
				"xt = xq | Col(xt,xq,xa) | xr = xcs | xp1 = xp2 | -Col(xr,xcs,xa) | -Col(xp1,xp2,xa)".
				" | Col(xr,xcs,xp2) | -parallel(xt,xq,xr,xcs) | -parallel(xt,xq,xp1,xp2)"
			 ),
		array(  "t != q",
				"-Col(t,q,a)",
				"r != cs",
				"p1 != p2",
				"Col(r,cs,a)",
				"Col(p1,p2,a)",
				"-Col(r,cs,p1) | -Col(r,cs,p2)",
				"parallel(t,q,r,cs)",
				"parallel(t,q,p1,p2)"
			 ),   
		array(  "b = b1211(t,q,r,cs,p1,p2,a)",
				"c1 =c1211(t,q,r,cs,p1,p2,a)", 
				"c = s(a,c1)",
				"d = ip(t,b,c1,c,a)",
				"cx = e1(a,b,c,d,t)",
				"cy = e2(a,b,c,d,t)"
			 ),
		"",  // no Skolem symbols
		"a=d | a!=d"
	)
);  // end of theorems
 
 
$NamedTheorems = array();
foreach($TarskiTheorems as $t)
  { $NamedTheorems[$t->name] = $t;
  }  
$NamedAxioms = array();
foreach($TarskiAxioms as $t)
  { $NamedAxioms[$t->name] = $t;
  }
$NamedDefinitions = array();
foreach($TarskiDefinitions as $t)
  { $NamedDefinitions[$t->name] = $t;
  }

function axioms_needed($chapter, $theorem_name)
// given a chapter number,  return an array of axiom names 
// to be used in that chapter.  Sometimes $theorem_name is needed as well. 
{ $ans =  array("A1", "A2", "A3", "A4", "A5");
  if($chapter == 2 && $theorem_name == "Satz2.15")
      { $ans[] = "A6";
	    $ans[] = "A7";
	  } 
  if($chapter > 2)
      { $ans[] = "A6";
	    $ans[] = "A7";   // first used in Satz 3.2
		$ans[] = "A8";   // needed in Satz 3.13.a and Satz 3.13.b
	  }
  if($chapter == "9A")
      $ans[] = "A9";  // upper dimension needed only for Lemma9.13f and Lemma 9.13g.
  if($chapter >= 12)
      $ans[] = "A10";  // parallel axiom first used in Chapter 12
  return $ans;
}
//_______________________________________________________________

function definitions_needed($chapter )
// return an array of definition names to be used for the specified chapter.
// assumes chapter is not  2  or 3, where no definitions are used.
{ $ans = array("Defn2.10", "Defn4.1", "Defn4.4", "Defn4.10", "Defn4.15");
  if($chapter == "2" || $chapter == "3")
      echo "$error, called definitions_needed incorrectly.\n";
  if($chapter == 4)
     return $ans;
  $ans[] = "Defn5.4";
  if($chapter == "5" || $chapter == "5A")
     return $ans;
  $ans[] = "Defn6.1";
  if($chapter == "6")
     return $ans;
  $ans[] = "Defn7.1";
  $ans[] = "Defn7.23";  // actually only needed for Satz7.25
  if($chapter == "7")
     return $ans;
  $ans[] = "Defn8.1";
  $ans[] = "Defn8.11a";
  $ans[] = "Defn8.11b";
  if($chapter == "8" || $chapter == "8A")
     return $ans;
  $ans[] = "Defn9.1";
  $ans[] = "Defn9.7";
  if($chapter == "9" || $chapter =="9A" || $chapter = "10")
     return $ans;
  $ans[] = "Defn11.2";
  if($chapter == "11")
     return $ans;
  $ans[] = "Defn12.7";
  return $ans;
}
//_______________________________________________________________
  

function get_chapter($theorem_name)
// What chapter does this theorem belong to?  Return a string
{ if (strstr($theorem_name,"Satz"))
	  { $rest = substr($theorem_name,4);
		$x = explode(".", $rest);
		return $x[0];
	  }
  if($theorem_name == "perp1")
	  return "8";
  if($theorem_name == "SideReflect")
      return "9";
  if($theorem_name == "NarbouxLemma1")
      return "5";
  if($theorem_name == "ext1" ||  $theorem_name == "ExtCol2")
      return "8A";
  if(strstr($theorem_name, "ExtPerp"))
      return "8A";
  if (strstr($theorem_name,"Lemma9") || strstr($theorem_name,"ExtSameSide"))
	  { return "9A";
	  }
  if (strstr($theorem_name,"Lemma12") || $theorem_name == "ExtParallel")
	  { return "12";
	  }
  echo "error in get_chapter($theorem_name)\n";
}

//_______________________________________________________________

function TheoremsByChapter( $chapter)
// return an array of all theorems from the specified chapter
{ $ans = array();
  global $TarskiTheorems;
  foreach($TarskiTheorems as $t)
	{ $c = get_chapter($t->name);
	  if(!strcmp($c, $chapter))
		 $ans[] = $t;
	}
  return $ans;
}


   
?> 

Sindbad File Manager Version 1.0, Coded By Sindbad EG ~ The Terrorists