TPTP Axioms File: MGT002+6.ax
%--------------------------------------------------------------------------
% File : MGT002+6 : TPTP v9.3.1. Released v9.3.0.
% Domain : Management
% Axioms : Projection, box membership, and AABB completeness
% Version : [Han98] axioms.
% English : Encodes thm:projection (box membership iff per-axis
% membership) for 2- and 3-axis boxes, box intersection and
% conflict predicates, and 5 canonical interval shape witnesses
% establishing thm:aabb (AABB completeness). The original 10
% shapes reduce to 5 distinct predicate definitions under
% variable renaming; duplicates shape_rray_closed/shape_closed/
% shape_full (all in_closed), shape_lopen (== shape_rray_open,
% both in_lopen), and shape_ropen (== shape_lray_open, both
% in_ropen) are removed.
% Refs : [MC+26] Mustafa et al. (2026), Axis Decomposition for ODRL
% Source : [MC+26]
% Names : PROJ000-0.ax [MC+26]
% Status : Satisfiable
% Syntax : Number of formulae : 9 ( 0 unt; 0 def)
% Number of atoms : 27 ( 1 equ)
% Maximal formula atoms : 4 ( 3 avg)
% Number of connectives : 18 ( 0 ~; 1 |; 8 &)
% ( 9 <=>; 0 =>; 0 <=; 0 <~>)
% Maximal formula depth : 13 ( 8 avg)
% Maximal term depth : 1 ( 1 avg)
% Number of predicates : 13 ( 12 usr; 0 prp; 2-9 aty)
% Number of functors : 0 ( 0 usr; 0 con; --- aty)
% Number of variables : 45 ( 45 !; 0 ?)
% SPC : FOF_SAT_RFO_SEQ
% Comments : Requires AXIS001+1.ax and ORD000-0.ax. Continuous domains
% also requires ORD001-0.ax.
% : All intervals treated as closed unless PREC000-0.ax is also
% included for boundary precision.
%--------------------------------------------------------------------------
%----Box membership via projection
%----2-axis box: (X1,X2) in I1 x I2
fof(in_box2,axiom,
! [X1,X2,A1,B1,A2,B2] :
( in_box2(X1,X2,A1,B1,A2,B2)
<=> ( in_closed(X1,A1,B1)
& in_closed(X2,A2,B2) ) ) ).
%----3-axis box: (X1,X2,X3) in I1 x I2 x I3
fof(in_box3,axiom,
! [X1,X2,X3,A1,B1,A2,B2,A3,B3] :
( in_box3(X1,X2,X3,A1,B1,A2,B2,A3,B3)
<=> ( in_closed(X1,A1,B1)
& in_closed(X2,A2,B2)
& in_closed(X3,A3,B3) ) ) ).
%----Box intersection
fof(box2_overlap,axiom,
! [A1,B1,A2,B2,C1,D1,C2,D2] :
( box2_compatible(A1,B1,A2,B2,C1,D1,C2,D2)
<=> ( axis_compatible(A1,B1,C1,D1)
& axis_compatible(A2,B2,C2,D2) ) ) ).
fof(box2_conflict,axiom,
! [A1,B1,A2,B2,C1,D1,C2,D2] :
( box2_conflict(A1,B1,A2,B2,C1,D1,C2,D2)
<=> ( axis_conflict(A1,B1,C1,D1)
| axis_conflict(A2,B2,C2,D2) ) ) ).
%----AABB Completeness: 5 canonical interval shapes
%
%----The 10 shapes of thm:aabb reduce to 5 distinct predicate definitions:
%---- Shapes 2/3/6/10 all define in_closed => one canonical axiom (shape_closed)
%---- Shapes 4/8 both define in_ropen => one canonical axiom (shape_ropen)
%---- Shapes 5/7 both define in_lopen => one canonical axiom (shape_lopen)
%---- Shape 9 defines in_open => shape_open (unique)
%---- Shape 1 specialises in_closed => shape_point (useful explicit lemma)
%
%----Shapes 2-5 are also implied by AXIS000-0.ax Section A when co-included.
%----They are retained as named proof-search hints for Vampire/E.
%----Shape 1: point [V,V] -- eq
%----Not directly in AXIS000; derivable from in_closed + leq_antisym but
%----retained as an explicit lemma to speed up proof search.
fof(shape_point,axiom,
! [X,V] :
( in_closed(X,V,V)
<=> X = V ) ).
%----Shape 2 (canonical): closed interval [A,B]
%----Subsumes paper shapes 2 (lteq left ray), 3 (gteq right ray),
%----6 (closed bounded), and 10 (full domain) -- all identical under renaming.
fof(shape_closed,axiom,
! [X,A,B] :
( in_closed(X,A,B)
<=> ( leq(A,X)
& leq(X,B) ) ) ).
%----Shape 4 (canonical): right-open interval [A,B) -- lt operator
%----Subsumes paper shapes 4 (left ray open) and 8 (bounded right-open).
fof(shape_ropen,axiom,
! [X,A,B] :
( in_ropen(X,A,B)
<=> ( leq(A,X)
& less(X,B) ) ) ).
%----Shape 5 (canonical): left-open interval (A,B] -- gt operator
%----Subsumes paper shapes 5 (right ray open) and 7 (bounded left-open).
fof(shape_lopen,axiom,
! [X,A,B] :
( in_lopen(X,A,B)
<=> ( less(A,X)
& leq(X,B) ) ) ).
%----Shape 9: open interval (A,B) -- gt A and lt B (unique, no duplicates)
fof(shape_open,axiom,
! [X,A,B] :
( in_open(X,A,B)
<=> ( less(A,X)
& less(X,B) ) ) ).
%--------------------------------------------------------------------------