TPTP Axioms File: MGT002+4.ax


%--------------------------------------------------------------------------
% File     : MGT002+4 : TPTP v9.3.1. Released v9.3.0.
% Domain   : Management
% Axioms   : Completion witnesses and Unknown Soundness axioms
% Version  : [Han98] axioms.
% English  : Encodes completion (adding constraints to unconstrained axes)
%            and unknown-sound (Unknown is sharp in both directions). 
%            completion_compatible/3: both policies set to eq V on axis.
%            completion_conflict/4: policies set to lteq U and gteq V with 
%            U<V. Sharpness axioms confirm both completions exist for any
%            axis domain with two distinct elements. monotone_conflict 
%            encodes prop:monotone via axis_subsumes. redundancy encodes
%            the redundancy half of conflict-propagation.

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

% Status   : Satisfiable
% Syntax   : Number of formulae    :    6 (   0 unt;   0 def)
%            Number of atoms       :   25 (   0 equ)
%            Maximal formula atoms :    6 (   4 avg)
%            Number of connectives :   19 (   0   ~;   0   |;  12   &)
%                                         (   0 <=>;   7  =>;   0  <=;   0 <~>)
%            Maximal formula depth :   10 (   9 avg)
%            Maximal term depth    :    1 (   1 avg)
%            Number of predicates  :    7 (   7 usr;   0 prp; 2-4 aty)
%            Number of functors    :    0 (   0 usr;   0 con; --- aty)
%            Number of variables   :   26 (  26   !;   0   ?)
% SPC      : FOF_SAT_RFO_NEQ

% Comments : Requires AXIS001+1.ax and ORD000-0.ax. Continuous domains
%            also requires ORD001-0.ax.
%--------------------------------------------------------------------------
%----Completion predicate                       [Paper: def:completion]
%----Compatible completion: both policies constrained to eq V on unconstrained axis.
fof(completion_compat,axiom,
    ! [V,InfD,SupD] :
      ( ( leq(InfD,V)
        & leq(V,SupD) )
     => completion_compatible(V,InfD,SupD) ) ).

%----Conflict completion: policy 1 gets lteq U, policy 2 gets gteq V, U < V.
fof(completion_conflict,axiom,
    ! [U,V,InfD,SupD] :
      ( ( leq(InfD,U)
        & leq(U,SupD)
        & leq(InfD,V)
        & leq(V,SupD)
        & less(U,V) )
     => completion_conflict(U,V,InfD,SupD) ) ).

%----Sharpness: both directions reachable       [Paper: thm:unknown-sound]
%----NOTE: sharpness_compat and sharpness_conflict are logically redundant
%----given completion_compat/completion_conflict + ORD000-0.ax.
%----(Their premises are derivable via leq_less_trans + less_implies_leq.)
%----Retained as explicit proof-search hints for Vampire/E and as readable
%----witnesses for the paper claim.
fof(sharpness_compat,axiom,
    ! [U,V,InfD,SupD] :
      ( ( leq(InfD,U)
        & leq(U,SupD)
        & less(U,V)
        & leq(V,SupD) )
     => completion_compatible(U,InfD,SupD) ) ).

fof(sharpness_conflict,axiom,
    ! [U,V,InfD,SupD] :
      ( ( leq(InfD,U)
        & leq(U,SupD)
        & less(U,V)
        & leq(V,SupD) )
     => completion_conflict(U,V,InfD,SupD) ) ).

%----Monotonicity helper                        [Paper: prop:monotone]
fof(monotone_conflict,axiom,
    ! [A1lo,A1hi,A1plo,A1phi,A2lo,A2hi] :
      ( ( axis_subsumes(A1lo,A1hi,A1plo,A1phi)
        & axis_conflict(A1plo,A1phi,A2lo,A2hi) )
     => axis_conflict(A1lo,A1hi,A2lo,A2hi) ) ).

%----Redundancy                                 [Paper: lem:conflict-propagation]
%----GAP 3 fix: the paper's lem:conflict-propagation has two parts:
%----  (a) propagation: sem(c1)<=sem(c2) & c2 conflicts c3 => c1 conflicts c3
%----      -> encoded above as monotone_conflict via axis_subsumes
%----  (b) redundancy: sem(c1)<=sem(c2) => c2 is redundant given c1,
%----      i.e. every request satisfying c1 also satisfies c2.
%----      -> encoded here; immediate from axis_subsumes_def but made explicit
%----         to give a dedicated Entailment benchmark problem.
fof(redundancy,axiom,
    ! [A1lo,A1hi,A2lo,A2hi] :
      ( axis_subsumes(A1lo,A1hi,A2lo,A2hi)
     => ! [X] :
          ( in_closed(X,A1lo,A1hi)
         => in_closed(X,A2lo,A2hi) ) ) ).

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