TPTP Axioms File: MGT002+2.ax


%--------------------------------------------------------------------------
% File     : MGT002+2 : TPTP v9.3.1. Released v9.3.0.
% Domain   : Management
% Axioms   : Axis decomposition, interval denotation, and verdict algebra
% Version  : [Han98] axioms.
% English  : Layer 1 axioms for the ODRL Axis Decomposition benchmark.
%            Section A: interval membership (in_closed, in_lopen, 
%            in_ropen, in_open). Section B: per-axis verdicts 
%            (axis_conflict, axis_compatible, axis_subsumes). Section C: 
%            strong Kleene verdict algebra (conflict/compatible/unknown).
%            Section D: box-level verdict aggregation (box_verdict/2).
%            Requires ORD000-0.ax (loaded by problem file). For continuous
%            domains also include ORD001-0.ax (density) before this file.

% Refs     : [MC+26] Mustafa et al. (2026), Axis Decomposition for ODRL
% Source   : [MC+26]
% Names    : AXIS000-0.ax [MC+26]

% Status   : Satisfiable
% Syntax   : Number of formulae    :   18 (   6 unt;   0 def)
%            Number of atoms       :   53 (  20 equ)
%            Maximal formula atoms :    7 (   2 avg)
%            Number of connectives :   41 (   6   ~;   6   |;  16   &)
%                                         (   7 <=>;   6  =>;   0  <=;   0 <~>)
%            Maximal formula depth :    9 (   5 avg)
%            Maximal term depth    :    2 (   1 avg)
%            Number of predicates  :   11 (  10 usr;   0 prp; 1-4 aty)
%            Number of functors    :    4 (   4 usr;   3 con; 0-2 aty)
%            Number of variables   :   36 (  34   !;   2   ?)
% SPC      : FOF_SAT_RFO_SEQ

% Comments : Requires ORD000-0.ax. Continuous domains also requires 
%            ORD001-0.ax.
%          : Section B uses CLOSED intervals only -- for open/half-open
%            boundary precision use Section A predicates + PREC000-0.ax.
%          : GAP NOTE (lem:normalisation): the claim that the intersection
%            of finitely many intervals on a totally ordered set is empty
%            or a single interval is a meta-theorem not expressible as a 
%            FOL conjecture. It is supported by the transitivity and
%            trichotomy axioms in ORD000-0.ax. No formula here.
%--------------------------------------------------------------------------
%----Section A: Interval membership
fof(in_closed,axiom,
    ! [X,A,B] :
      ( in_closed(X,A,B)
    <=> ( leq(A,X)
        & leq(X,B) ) ) ).

fof(in_lopen,axiom,
    ! [X,A,B] :
      ( in_lopen(X,A,B)
    <=> ( less(A,X)
        & leq(X,B) ) ) ).

fof(in_ropen,axiom,
    ! [X,A,B] :
      ( in_ropen(X,A,B)
    <=> ( leq(A,X)
        & less(X,B) ) ) ).

fof(in_open,axiom,
    ! [X,A,B] :
      ( in_open(X,A,B)
    <=> ( less(A,X)
        & less(X,B) ) ) ).

%----Section B: Per-axis verdicts
fof(axis_conflict_def,axiom,
    ! [I1lo,I1hi,I2lo,I2hi] :
      ( axis_conflict(I1lo,I1hi,I2lo,I2hi)
    <=> ~ ? [X] :
            ( in_closed(X,I1lo,I1hi)
            & in_closed(X,I2lo,I2hi) ) ) ).

fof(axis_compatible_def,axiom,
    ! [I1lo,I1hi,I2lo,I2hi] :
      ( axis_compatible(I1lo,I1hi,I2lo,I2hi)
    <=> ? [X] :
          ( in_closed(X,I1lo,I1hi)
          & in_closed(X,I2lo,I2hi) ) ) ).

fof(axis_subsumes_def,axiom,
    ! [I1lo,I1hi,I2lo,I2hi] :
      ( axis_subsumes(I1lo,I1hi,I2lo,I2hi)
    <=> ! [X] :
          ( in_closed(X,I1lo,I1hi)
         => in_closed(X,I2lo,I2hi) ) ) ).

%----Section C: Verdict algebra
fof(conflict_is_verdict,axiom,
    is_verdict(conflict) ).

fof(compatible_is_verdict,axiom,
    is_verdict(compatible) ).

fof(unknown_is_verdict,axiom,
    is_verdict(unknown) ).

fof(verdicts_distinct_cf_cp,axiom,
    conflict != compatible ).

fof(verdicts_distinct_cf_un,axiom,
    conflict != unknown ).

fof(verdicts_distinct_cp_un,axiom,
    compatible != unknown ).

fof(verdict_enum,axiom,
    ! [V] :
      ( is_verdict(V)
     => ( V = conflict
        | V = compatible
        | V = unknown ) ) ).

%----Section D: Box-level verdict aggregation
fof(box_conflict,axiom,
    ! [V1,V2] :
      ( ( is_verdict(V1)
        & is_verdict(V2)
        & ( V1 = conflict
          | V2 = conflict ) )
     => box_verdict(V1,V2) = conflict ) ).

fof(box_compatible,axiom,
    ! [V1,V2] :
      ( ( is_verdict(V1)
        & is_verdict(V2)
        & V1 = compatible
        & V2 = compatible )
     => box_verdict(V1,V2) = compatible ) ).

fof(box_unknown,axiom,
    ! [V1,V2] :
      ( ( is_verdict(V1)
        & is_verdict(V2)
        & ( V1 = unknown
          | V2 = unknown )
        & V1 != conflict
        & V2 != conflict )
     => box_verdict(V1,V2) = unknown ) ).

fof(box_verdict_total,axiom,
    ! [V1,V2] :
      ( ( is_verdict(V1)
        & is_verdict(V2) )
     => ( box_verdict(V1,V2) = conflict
        | box_verdict(V1,V2) = compatible
        | box_verdict(V1,V2) = unknown ) ) ).

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