## TPTP Axioms File: GEO012+0.ax

```%------------------------------------------------------------------------------
% File     : GEO012+0 : TPTP v7.5.0. Released v7.5.0.
% Domain   : Geometry
% Axioms   : Deductive Databases Method in Geometry
% Version  : [CGZ00] axioms.
% English  :

% Refs     : [CGZ00] Chou et al. (2000), A Deductive Database Approach to A
%          : [YCG08] Ye et al. (2008), An Introduction to Java Geometry Exp
%          : [Qua20] Quaresma (2020), Email to Geoff Sutcliffe
% Source   : [Qua20]
% Names    : geometryDeductiveDatabaseMethod.ax [Qua20]

% Status   : Satisfiable
% Syntax   : Number of formulae    :   94 (   0 unit)
%            Number of atoms       :  283 (   1 equality)
%            Maximal formula depth :   15 (   8 average)
%            Number of connectives :  196 (   7   ~;   0   |;  95   &)
%                                         (   0 <=>;  94  =>;   0  <=;   0 <~>)
%                                         (   0  ~|;   0  ~&)
%            Number of predicates  :   12 (   0 propositional; 2-8 arity)
%            Number of functors    :    0 (   0 constant; --- arity)
%            Number of variables   :  522 (   1 sgn; 502   !;  20   ?)
%            Maximal term depth    :    1 (   1 average)
% SPC      : FOF_SAT_RFO_SEQ

% Comments : Taken from JGEX [YCG08], converted by Pedro Quaresma.
%------------------------------------------------------------------------------
fof(ruleD1,axiom,(
! [A,B,C] :
( coll(A,B,C)
=> coll(A,C,B) ) )).

fof(ruleD2,axiom,(
! [A,B,C] :
( coll(A,B,C)
=> coll(B,A,C) ) )).

fof(ruleD3,axiom,(
! [A,B,C,D] :
( ( coll(A,B,C)
& coll(A,B,D) )
=> coll(C,D,A) ) )).

fof(ruleD4,axiom,(
! [A,B,C,D] :
( para(A,B,C,D)
=> para(A,B,D,C) ) )).

fof(ruleD5,axiom,(
! [A,B,C,D] :
( para(A,B,C,D)
=> para(C,D,A,B) ) )).

fof(ruleD6,axiom,(
! [A,B,C,D,E,F] :
( ( para(A,B,C,D)
& para(C,D,E,F) )
=> para(A,B,E,F) ) )).

fof(ruleD7,axiom,(
! [A,B,C,D] :
( perp(A,B,C,D)
=> perp(A,B,D,C) ) )).

fof(ruleD8,axiom,(
! [A,B,C,D] :
( perp(A,B,C,D)
=> perp(C,D,A,B) ) )).

fof(ruleD9,axiom,(
! [A,B,C,D,E,F] :
( ( perp(A,B,C,D)
& perp(C,D,E,F) )
=> para(A,B,E,F) ) )).

fof(ruleD10,axiom,(
! [A,B,C,D,E,F] :
( ( para(A,B,C,D)
& perp(C,D,E,F) )
=> perp(A,B,E,F) ) )).

fof(ruleD11,axiom,(
! [A,B,M] :
( midp(M,B,A)
=> midp(M,A,B) ) )).

fof(ruleD12,axiom,(
! [A,B,C,O] :
( ( cong(O,A,O,B)
& cong(O,A,O,C) )
=> circle(O,A,B,C) ) )).

fof(ruleD13,axiom,(
! [A,B,C,D,O] :
( ( cong(O,A,O,B)
& cong(O,A,O,C)
& cong(O,A,O,D) )
=> cyclic(A,B,C,D) ) )).

fof(ruleD14,axiom,(
! [A,B,C,D] :
( cyclic(A,B,C,D)
=> cyclic(A,B,D,C) ) )).

fof(ruleD15,axiom,(
! [A,B,C,D] :
( cyclic(A,B,C,D)
=> cyclic(A,C,B,D) ) )).

fof(ruleD16,axiom,(
! [A,B,C,D] :
( cyclic(A,B,C,D)
=> cyclic(B,A,C,D) ) )).

fof(ruleD17,axiom,(
! [A,B,C,D,E] :
( ( cyclic(A,B,C,D)
& cyclic(A,B,C,E) )
=> cyclic(B,C,D,E) ) )).

fof(ruleD18,axiom,(
! [A,B,C,D,P,Q,U,V] :
( eqangle(A,B,C,D,P,Q,U,V)
=> eqangle(B,A,C,D,P,Q,U,V) ) )).

fof(ruleD19,axiom,(
! [A,B,C,D,P,Q,U,V] :
( eqangle(A,B,C,D,P,Q,U,V)
=> eqangle(C,D,A,B,U,V,P,Q) ) )).

fof(ruleD20,axiom,(
! [A,B,C,D,P,Q,U,V] :
( eqangle(A,B,C,D,P,Q,U,V)
=> eqangle(P,Q,U,V,A,B,C,D) ) )).

fof(ruleD21,axiom,(
! [A,B,C,D,P,Q,U,V] :
( eqangle(A,B,C,D,P,Q,U,V)
=> eqangle(A,B,P,Q,C,D,U,V) ) )).

fof(ruleD22,axiom,(
! [A,B,C,D,P,Q,U,V,E,F,G,H] :
( ( eqangle(A,B,C,D,P,Q,U,V)
& eqangle(P,Q,U,V,E,F,G,H) )
=> eqangle(A,B,C,D,E,F,G,H) ) )).

fof(ruleD23,axiom,(
! [A,B,C,D] :
( cong(A,B,C,D)
=> cong(A,B,D,C) ) )).

fof(ruleD24,axiom,(
! [A,B,C,D] :
( cong(A,B,C,D)
=> cong(C,D,A,B) ) )).

fof(ruleD25,axiom,(
! [A,B,C,D,E,F] :
( ( cong(A,B,C,D)
& cong(C,D,E,F) )
=> cong(A,B,E,F) ) )).

fof(ruleD26,axiom,(
! [A,B,C,D,P,Q,U,V] :
( eqratio(A,B,C,D,P,Q,U,V)
=> eqratio(B,A,C,D,P,Q,U,V) ) )).

fof(ruleD27,axiom,(
! [A,B,C,D,P,Q,U,V] :
( eqratio(A,B,C,D,P,Q,U,V)
=> eqratio(C,D,A,B,U,V,P,Q) ) )).

fof(ruleD28,axiom,(
! [A,B,C,D,P,Q,U,V] :
( eqratio(A,B,C,D,P,Q,U,V)
=> eqratio(P,Q,U,V,A,B,C,D) ) )).

fof(ruleD29,axiom,(
! [A,B,C,D,P,Q,U,V] :
( eqratio(A,B,C,D,P,Q,U,V)
=> eqratio(A,B,P,Q,C,D,U,V) ) )).

fof(ruleD30,axiom,(
! [A,B,C,D,E,F,G,H,P,Q,U,V] :
( ( eqratio(A,B,C,D,P,Q,U,V)
& eqratio(P,Q,U,V,E,F,G,H) )
=> eqratio(A,B,C,D,E,F,G,H) ) )).

fof(ruleD31,axiom,(
! [A,B,C,P,Q,R] :
( simtri(A,C,B,P,R,Q)
=> simtri(A,B,C,P,Q,R) ) )).

fof(ruleD32,axiom,(
! [A,B,C,P,Q,R] :
( simtri(B,A,C,Q,P,R)
=> simtri(A,B,C,P,Q,R) ) )).

fof(ruleD33,axiom,(
! [A,B,C,P,Q,R] :
( simtri(P,Q,R,A,B,C)
=> simtri(A,B,C,P,Q,R) ) )).

fof(ruleD34,axiom,(
! [A,B,C,E,F,G,P,Q,R] :
( ( simtri(A,B,C,E,F,G)
& simtri(E,F,G,P,Q,R) )
=> simtri(A,B,C,P,Q,R) ) )).

fof(ruleD35,axiom,(
! [A,B,C,P,Q,R] :
( contri(A,C,B,P,R,Q)
=> contri(A,B,C,P,Q,R) ) )).

fof(ruleD36,axiom,(
! [A,B,C,P,Q,R] :
( contri(B,A,C,Q,P,R)
=> contri(A,B,C,P,Q,R) ) )).

fof(ruleD37,axiom,(
! [A,B,C,P,Q,R] :
( contri(P,Q,R,A,B,C)
=> contri(A,B,C,P,Q,R) ) )).

fof(ruleD38,axiom,(
! [A,B,C,E,F,G,P,Q,R] :
( ( contri(A,B,C,E,F,G)
& contri(E,F,G,P,Q,R) )
=> contri(A,B,C,P,Q,R) ) )).

% Note: D42 collinear 4 points, instead of three
%       coll(P,Q,A,B) <==> coll(P,Q,A) & coll(P,Q,B)
%       ~coll(P,Q,A,B) <==> (~col(P,Q,A) | ~coll(P,Q,B))
%      Split in two rules D42a, D42b
% XXX cyclic with 6 arguments                   XXX
% XXX three points define a unique circle       XXX
% XXX cyclic(A,B,C,P,Q,R) <=> cyclic(A,B,C,P) & XXX
% XXX                         cyclic(A,B,C,Q) & XXX
% XXX                         cyclic(A,B,C,R)   XXX
fof(ruleD39,axiom,(
! [A,B,C,D,P,Q] :
( eqangle(A,B,P,Q,C,D,P,Q)
=> para(A,B,C,D) ) )).

fof(ruleD40,axiom,(
! [A,B,C,D,P,Q] :
( para(A,B,C,D)
=> eqangle(A,B,P,Q,C,D,P,Q) ) )).

fof(ruleD41,axiom,(
! [A,B,P,Q] :
( cyclic(A,B,P,Q)
=> eqangle(P,A,P,B,Q,A,Q,B) ) )).

fof(ruleD42a,axiom,(
! [A,B,P,Q] :
( ( eqangle(P,A,P,B,Q,A,Q,B)
& ~ coll(P,Q,A) )
=> cyclic(A,B,P,Q) ) )).

fof(ruleD42b,axiom,(
! [A,B,P,Q] :
( ( eqangle(P,A,P,B,Q,A,Q,B)
& coll(P,Q,B) )
=> cyclic(A,B,P,Q) ) )).

fof(ruleD43,axiom,(
! [A,B,C,P,Q,R] :
( ( cyclic(A,B,C,P)
& cyclic(A,B,C,Q)
& cyclic(A,B,C,R)
& eqangle(C,A,C,B,R,P,R,Q) )
=> cong(A,B,P,Q) ) )).

fof(ruleD44,axiom,(
! [A,B,C,E,F] :
( ( midp(E,A,B)
& midp(F,A,C) )
=> para(E,F,B,C) ) )).

fof(ruleD45,axiom,(
! [A,B,C,E,F] :
( ( midp(E,A,B)
& para(E,F,B,C)
& coll(F,A,C) )
=> midp(F,A,C) ) )).

fof(ruleD46,axiom,(
! [A,B,O] :
( cong(O,A,O,B)
=> eqangle(O,A,A,B,A,B,O,B) ) )).

fof(ruleD47,axiom,(
! [A,B,O] :
( ( eqangle(O,A,A,B,A,B,O,B)
& ~ coll(O,A,B) )
=> cong(O,A,O,B) ) )).

fof(ruleD48,axiom,(
! [A,B,C,O,X] :
( ( circle(O,A,B,C)
& perp(O,A,A,X) )
=> eqangle(A,X,A,B,C,A,C,B) ) )).

fof(ruleD49,axiom,(
! [A,B,C,O,X] :
( ( circle(O,A,B,C)
& eqangle(A,X,A,B,C,A,C,B) )
=> perp(O,A,A,X) ) )).

fof(ruleD50,axiom,(
! [A,B,C,O,M] :
( ( circle(O,A,B,C)
& midp(M,B,C) )
=> eqangle(A,B,A,C,O,B,O,M) ) )).

fof(ruleD51,axiom,(
! [A,B,C,O,M] :
( ( circle(O,A,B,C)
& coll(M,B,C)
& eqangle(A,B,A,C,O,B,O,M) )
=> midp(M,B,C) ) )).

fof(ruleD52,axiom,(
! [A,B,C,M] :
( ( perp(A,B,B,C)
& midp(M,A,C) )
=> cong(A,M,B,M) ) )).

fof(ruleD53,axiom,(
! [A,B,C,O] :
( ( circle(O,A,B,C)
& coll(O,A,C) )
=> perp(A,B,B,C) ) )).

fof(ruleD54,axiom,(
! [A,B,C,D] :
( ( cyclic(A,B,C,D)
& para(A,B,C,D) )
=> eqangle(A,D,C,D,C,D,C,B) ) )).

fof(ruleD55,axiom,(
! [A,B,M,O] :
( ( midp(M,A,B)
& perp(O,M,A,B) )
=> cong(O,A,O,B) ) )).

fof(ruleD56,axiom,(
! [A,B,P,Q] :
( ( cong(A,P,B,P)
& cong(A,Q,B,Q) )
=> perp(A,B,P,Q) ) )).

fof(ruleD57,axiom,(
! [A,B,P,Q] :
( ( cong(A,P,B,P)
& cong(A,Q,B,Q)
& cyclic(A,B,P,Q) )
=> perp(P,A,A,Q) ) )).

fof(ruleD58,axiom,(
! [A,B,C,P,Q,R] :
( ( eqangle(A,B,B,C,P,Q,Q,R)
& eqangle(A,C,B,C,P,R,Q,R)
& ~ coll(A,B,C) )
=> simtri(A,B,C,P,Q,R) ) )).

fof(ruleD59,axiom,(
! [A,B,C,P,Q,R] :
( simtri(A,B,C,P,Q,R)
=> eqratio(A,B,A,C,P,Q,P,R) ) )).

fof(ruleD60,axiom,(
! [A,B,C,P,Q,R] :
( simtri(A,B,C,P,Q,R)
=> eqangle(A,B,B,C,P,Q,Q,R) ) )).

fof(ruleD61,axiom,(
! [A,B,C,P,Q,R] :
( ( simtri(A,B,C,P,Q,R)
& cong(A,B,P,Q) )
=> contri(A,B,C,P,Q,R) ) )).

fof(ruleD62,axiom,(
! [A,B,C,P,Q,R] :
( contri(A,B,C,P,Q,R)
=> cong(A,B,P,Q) ) )).

fof(ruleD63,axiom,(
! [A,B,C,D,M] :
( ( midp(M,A,B)
& midp(M,C,D) )
=> para(A,C,B,D) ) )).

fof(ruleD64,axiom,(
! [A,B,C,D,M] :
( ( midp(M,A,B)
& para(A,C,B,D)
& para(A,D,B,C) )
=> midp(M,C,D) ) )).

fof(ruleD65,axiom,(
! [A,B,C,D,O] :
( ( para(A,B,C,D)
& coll(O,A,C)
& coll(O,B,D) )
=> eqratio(O,A,A,C,O,B,B,D) ) )).

fof(ruleD66,axiom,(
! [A,B,C] :
( para(A,B,A,C)
=> coll(A,B,C) ) )).

fof(ruleD67,axiom,(
! [A,B,C] :
( ( cong(A,B,A,C)
& coll(A,B,C) )
=> midp(A,B,C) ) )).

fof(ruleD68,axiom,(
! [A,B,C] :
( midp(A,B,C)
=> cong(A,B,A,C) ) )).

fof(ruleD69,axiom,(
! [A,B,C] :
( midp(A,B,C)
=> coll(A,B,C) ) )).

fof(ruleD70,axiom,(
! [A,B,C,D,M,N] :
( ( midp(M,A,B)
& midp(N,C,D) )
=> eqratio(M,A,A,B,N,C,C,D) ) )).

fof(ruleD71,axiom,(
! [A,B,C,D] :
( ( eqangle(A,B,C,D,C,D,A,B)
& ~ para(A,B,C,D) )
=> perp(A,B,C,D) ) )).

fof(ruleD72,axiom,(
! [A,B,C,D] :
( ( eqangle(A,B,C,D,C,D,A,B)
& ~ perp(A,B,C,D) )
=> para(A,B,C,D) ) )).

fof(ruleD73,axiom,(
! [A,B,C,D,P,Q,U,V] :
( ( eqangle(A,B,C,D,P,Q,U,V)
& para(P,Q,U,V) )
=> para(A,B,C,D) ) )).

fof(ruleD74,axiom,(
! [A,B,C,D,P,Q,U,V] :
( ( eqangle(A,B,C,D,P,Q,U,V)
& perp(P,Q,U,V) )
=> perp(A,B,C,D) ) )).

fof(ruleD75,axiom,(
! [A,B,C,D,P,Q,U,V] :
( ( eqratio(A,B,C,D,P,Q,U,V)
& cong(P,Q,U,V) )
=> cong(A,B,C,D) ) )).

fof(ruleX1,axiom,(
! [A,M,O,X] :
? [B] :
( ( perp(O,M,M,A)
& eqangle(X,O,M,O,M,O,A,O) )
=> ( coll(B,A,M)
& coll(B,O,X) ) ) )).

fof(ruleX2,axiom,(
! [A,B,O,X] :
? [M] :
( ( cong(O,A,O,B)
& eqangle(A,O,O,X,O,X,O,B) )
=> ( coll(B,A,M)
& coll(M,O,X) ) ) )).

fof(ruleX3,axiom,(
! [A,B,O,X] :
? [M] :
( ( perp(O,X,A,B)
& eqangle(A,O,O,X,O,X,O,B) )
=> ( coll(B,A,M)
& coll(M,O,X) ) ) )).

fof(ruleX4,axiom,(
! [A,B,O,X] :
? [M] :
( ( perp(O,X,A,B)
& cong(O,A,O,B) )
=> ( coll(B,A,M)
& coll(M,O,X) ) ) )).

fof(ruleX5,axiom,(
! [A,B,P,X,Y] :
? [Q] :
( ( eqangle(A,P,B,P,A,X,B,Y)
& ~ coll(A,B,P) )
=> ( eqangle(A,P,B,P,A,Q,B,Q)
& cyclic(X,B,P,Q) ) ) )).

fof(ruleX6,axiom,(
! [A,B,C,D,M,N] :
? [P] :
( ( midp(M,A,B)
& midp(N,C,D) )
=> ( midp(P,A,D)
& para(P,M,B,D)
& para(P,N,A,C) ) ) )).

fof(ruleX7,axiom,(
! [A,B,C,D,M,N,Q] :
? [P] :
( ( midp(M,A,B)
& midp(N,C,D)
& coll(C,A,B)
& coll(D,A,B) )
=> midp(P,A,Q) ) )).

fof(ruleX8,axiom,(
! [A,B,M,P,Q,R,M] :
? [X] :
( ( midp(M,A,B)
& para(A,P,R,M)
& para(A,P,B,Q)
& coll(P,Q,R) )
=> ( coll(X,A,Q)
& coll(X,M,R) ) ) )).

fof(ruleX9,axiom,(
! [A,B,C,D,O] :
? [P] :
( ( cong(O,C,O,D)
& perp(A,B,B,O) )
=> ( cong(O,C,O,P)
& para(P,C,A,B)
& cong(B,C,B,P) ) ) )).

fof(ruleX10,axiom,(
! [A,B,C,H] :
? [P,Q] :
( ( perp(A,H,B,C)
& perp(B,H,A,C) )
=> ( coll(P,C,B)
& perp(A,P,C,B)
& coll(Q,C,A)
& perp(B,Q,C,A) ) ) )).

fof(ruleX11,axiom,(
! [A,B,C,O] :
? [P] :
( circle(O,A,B,C)
=> perp(P,A,A,O) ) )).

fof(ruleX12,axiom,(
! [A,B,C,D,M,N] :
? [P,Q] :
( ( circle(M,A,B,C)
& cong(M,A,M,D)
& cong(N,A,N,B)
& M != N )
=> ( coll(P,A,C)
& cong(P,N,N,A)
& coll(Q,B,D)
& cong(Q,N,N,A) ) ) )).

fof(ruleX13,axiom,(
! [A,B,C,D,M] :
? [O] :
( ( cyclic(A,B,C,D)
& para(A,B,C,D)
& midp(M,A,B) )
=> circle(O,A,B,C) ) )).

fof(ruleX14,axiom,(
! [A,B,C,D] :
? [O] :
( ( perp(A,C,C,B)
& cyclic(A,B,C,D) )
=> circle(O,A,B,C) ) )).

fof(ruleX15,axiom,(
! [A,B,C,E,F] :
? [P] :
( ( perp(A,C,C,B)
& coll(B,E,F) )
=> ( coll(P,E,F)
& perp(P,A,E,F) ) ) )).

fof(ruleX16,axiom,(
! [A,B,C,D,M] :
? [P] :
( ( perp(A,B,A,C)
& perp(C,A,C,D)
& midp(M,B,D) )
=> midp(P,A,C) ) )).

fof(ruleX17,axiom,(
! [A,B,O] :
? [C] :
( ( cong(O,A,O,B)
& perp(A,O,O,B) )
=> ( coll(A,O,C)
& cong(O,A,O,C) ) ) )).

fof(ruleX18,axiom,(
! [A,B,C,D,P,Q] :
? [R] :
( ( para(A,B,C,D)
& coll(P,A,C)
& coll(P,B,D)
& coll(Q,A,B) )
=> ( coll(P,Q,R)
& coll(R,C,D) ) ) )).

%------------------------------------------------------------------------------
```