TPTP Axioms File: GEO005-0.ax


%--------------------------------------------------------------------------
% File     : GEO005-0 : TPTP v7.5.0. Released v2.7.0.
% Domain   : Geometry (Hilbert)
% Axioms   : Hilbert geometry axioms, adapted to respect multi-sortedness
% Version  : [Cla03] axioms.
% English  :

% Refs     : [Ben92] Benanav (1992), Recognising Unnecessary Clauses in Res
%          : [Cla03] Claessen (2003), Email to G. Sutcliffe
% Source   : [Cla03]
% Names    :

% Status   : Satisfiable
% Syntax   : Number of clauses    :   31 (  18 non-Horn;   1 unit;  31 RR)
%            Number of atoms      :  174 (  43 equality)
%            Maximal clause size  :   16 (   6 average)
%            Number of predicates :    8 (   0 propositional; 1-3 arity)
%            Number of functors   :   10 (   1 constant; 0-3 arity)
%            Number of variables  :   70 (   0 singleton)
%            Maximal term depth   :    2 (   1 average)
% SPC      : 

% Comments :
%--------------------------------------------------------------------------
%----Axiom 1 : For any two distinct points, there is a unique line through
%----them.
cnf(axiom_G1A,axiom,
    ( point_on_line(Z1,line_from_to(Z1,Z2))
    | Z1 = Z2
    | ~ point(Z1)
    | ~ point(Z2) )).

cnf(axiom_G1B,axiom,
    ( point_on_line(Z2,line_from_to(Z1,Z2))
    | Z1 = Z2
    | ~ point(Z1)
    | ~ point(Z2) )).

cnf(axiom_G1C,axiom,
    ( line(line_from_to(Z1,Z2))
    | Z1 = Z2
    | ~ point(Z1)
    | ~ point(Z2) )).

cnf(axiom_G1D,axiom,
    ( ~ point_on_line(Z1,Y3)
    | Z1 = Z2
    | ~ point_on_line(Z2,Y3)
    | Y3 = Y4
    | ~ point_on_line(Z1,Y4)
    | ~ point_on_line(Z2,Y4)
    | ~ point(Z1)
    | ~ point(Z2)
    | ~ line(Y3)
    | ~ line(Y4) )).

%----For any line, there are at least two points on the line.
cnf(axiom_G2A,axiom,
    ( point_on_line(point_1_on_line(Y1),Y1)
    | ~ line(Y1) )).

cnf(axiom_G2B,axiom,
    ( point_on_line(point_2_on_line(Y1),Y1)
    | ~ line(Y1) )).

cnf(axiom_G2C,axiom,
    ( point(point_1_on_line(Y1))
    | ~ line(Y1) )).

cnf(axiom_G2D,axiom,
    ( point(point_2_on_line(Y1))
    | ~ line(Y1) )).

cnf(axiom_G2E,axiom,
    ( point_1_on_line(Y1) != point_2_on_line(Y1)
    | ~ line(Y1) )).

%----For any line, there is a point not on the line.
cnf(axiom_G3A,axiom,
    ( ~ point_on_line(a_point_not_on_line(Y1),Y1)
    | ~ line(Y1) )).

cnf(axiom_G3B,axiom,
    ( point(a_point_not_on_line(Y1))
    | ~ line(Y1) )).

%----There exists at least one line
cnf(axiom_G4A,axiom,
    ( line(at_least_one_line) )).

%----For any plane there is a point on the plane.
cnf(axiom_G5A,axiom,
    ( ~ plane(Z1)
    | point_on_plane(a_point_on_plane(Z1),Z1) )).

cnf(axiom_G5B,axiom,
    ( ~ plane(Z1)
    | point(a_point_on_plane(Z1)) )).

%----For any plane there is a point not on the plane.
cnf(axiom_G6A,axiom,
    ( ~ plane(Z1)
    | ~ point_on_plane(a_point_not_on_plane(Z1),Z1) )).

cnf(axiom_G6B,axiom,
    ( ~ plane(Z1)
    | point(a_point_not_on_plane(Z1)) )).

%----For any three non-collinear points there is a unique plane through
%----them.
cnf(axiom_G7A,axiom,
    ( point_on_plane(X1,plane_for_points(X1,X2,X3))
    | ~ point(X1)
    | ~ point(X2)
    | ~ point(X3)
    | collinear(X1,X2,X3)
    | X1 = X2
    | X1 = X3
    | X2 = X3 )).

cnf(axiom_G7B,axiom,
    ( point_on_plane(X2,plane_for_points(X1,X2,X3))
    | ~ point(X1)
    | ~ point(X2)
    | ~ point(X3)
    | collinear(X1,X2,X3)
    | X1 = X2
    | X1 = X3
    | X2 = X3 )).

cnf(axiom_G7C,axiom,
    ( point_on_plane(X3,plane_for_points(X1,X2,X3))
    | ~ point(X1)
    | ~ point(X2)
    | ~ point(X3)
    | collinear(X1,X2,X3)
    | X1 = X2
    | X1 = X3
    | X2 = X3 )).

cnf(axiom_G7D,axiom,
    ( plane(plane_for_points(X1,X2,X3))
    | ~ point(X1)
    | ~ point(X2)
    | ~ point(X3)
    | collinear(X1,X2,X3)
    | X1 = X2
    | X1 = X3
    | X2 = X3 )).

cnf(axiom_G7E,axiom,
    ( ~ point(X1)
    | ~ point(X2)
    | ~ point(X3)
    | collinear(X1,X2,X3)
    | X1 = X2
    | X1 = X3
    | X2 = X3
    | ~ point_on_plane(X1,Z1)
    | ~ point_on_plane(X2,Z1)
    | ~ point_on_plane(X3,Z1)
    | ~ plane(Z1)
    | ~ point_on_plane(X1,Z2)
    | ~ point_on_plane(X2,Z2)
    | ~ point_on_plane(X3,Z2)
    | ~ plane(Z2)
    | Z1 = Z2 )).

%----If two points of a line are in the same plane then every point
%----of that line is in the plane.
cnf(axiom_G8A,axiom,
    ( ~ point_on_line(X1,Y1)
    | ~ point_on_line(X2,Y1)
    | ~ point_on_plane(X1,Z1)
    | ~ point_on_plane(X2,Z1)
    | ~ plane(Z1)
    | ~ point(X1)
    | ~ point(X2)
    | ~ line(Y1)
    | X1 = X2
    | line_on_plane(Y1,Z1) )).

%----If two planes have a point in common they have at least one more
%----point in common.
cnf(axiom_G9A,axiom,
    ( ~ plane(Z1)
    | ~ plane(Z2)
    | Z1 = Z2
    | ~ point_on_plane(X1,Z1)
    | ~ point_on_plane(X1,Z2)
    | ~ point(X1)
    | point_on_plane(common_point_on_planes(Z1,Z2,X1),Z1) )).

cnf(axiom_G9B,axiom,
    ( ~ plane(Z1)
    | ~ plane(Z2)
    | Z1 = Z2
    | ~ point_on_plane(X1,Z1)
    | ~ point_on_plane(X1,Z2)
    | ~ point(X1)
    | point_on_plane(common_point_on_planes(Z1,Z2,X1),Z2) )).

cnf(axiom_G9C,axiom,
    ( ~ plane(Z1)
    | ~ plane(Z2)
    | Z1 = Z2
    | ~ point_on_plane(X1,Z1)
    | ~ point_on_plane(X1,Z2)
    | ~ point(X1)
    | point(common_point_on_planes(Z1,Z2,X1)) )).

cnf(axiom_G9D,axiom,
    ( ~ plane(Z1)
    | ~ plane(Z2)
    | Z1 = Z2
    | ~ point_on_plane(X1,Z1)
    | ~ point_on_plane(X1,Z2)
    | ~ point(X1)
    | X1 != common_point_on_planes(Z1,Z2,X1) )).

%----Three distinct points are collinear if and only if there is a line
%----through them.
cnf(axiom_G10A,axiom,
    ( ~ point(X1)
    | ~ point(X2)
    | ~ point(X3)
    | X1 = X2
    | X1 = X3
    | X2 = X3
    | point_on_line(X1,line_through_3_points(X1,X2,X3))
    | ~ collinear(X1,X2,X3) )).

cnf(axiom_G10B,axiom,
    ( ~ point(X1)
    | ~ point(X2)
    | ~ point(X3)
    | X1 = X2
    | X1 = X3
    | X2 = X3
    | point_on_line(X2,line_through_3_points(X1,X2,X3))
    | ~ collinear(X1,X2,X3) )).

cnf(axiom_G10C,axiom,
    ( ~ point(X1)
    | ~ point(X2)
    | ~ point(X3)
    | X1 = X2
    | X1 = X3
    | X2 = X3
    | point_on_line(X3,line_through_3_points(X1,X2,X3))
    | ~ collinear(X1,X2,X3) )).

cnf(axiom_G10D,axiom,
    ( ~ point(X1)
    | ~ point(X2)
    | ~ point(X3)
    | X1 = X2
    | X1 = X3
    | X2 = X3
    | line(line_through_3_points(X1,X2,X3))
    | ~ collinear(X1,X2,X3) )).

cnf(axiom_G10E,axiom,
    ( collinear(X1,X2,X3)
    | ~ point_on_line(X1,Y)
    | ~ point_on_line(X2,Y)
    | ~ point_on_line(X3,Y)
    | ~ point(X1)
    | ~ point(X2)
    | ~ point(X3)
    | X1 = X2
    | X1 = X3
    | X2 = X3
    | ~ line(Y) )).

%--------------------------------------------------------------------------