TPTP Axioms File: SWV007+3.ax


%------------------------------------------------------------------------------
% File     : SWV007+3 : TPTP v9.0.0. Released v3.3.0.
% Domain   : Software Verification
% Axioms   : Priority queue checker: checked priority queues
% Version  : [dNP05] axioms.
% English  : This axiom set fully describes checked priority queues. Checked
%            priority queues are defined as triples of a "priority queue
%            pretender", a system of lower bounds and Boolean value that keep
%            track of errors.

% Refs     : [Pis06] Piskac (2006), Email to Geoff Sutcliffe
%          : [dNP05] de Nivelle & Piskac (2005), Verification of an Off-Lin
% Source   : [Pis06]
% Names    :

% Status   : Satisfiable
% Rating   : <Don't worry about this one - we'll do it automatically>
% Syntax   : Number of formulae    :   23 (   7 unt;   0 def)
%            Number of atoms       :   48 (  17 equ)
%            Maximal formula atoms :    4 (   2 avg)
%            Number of connectives :   32 (   7   ~;   0   |;   7   &)
%                                         (   4 <=>;  14  =>;   0  <=;   0 <~>)
%            Maximal formula depth :    8 (   5 avg)
%            Maximal term depth    :    4 (   1 avg)
%            Number of predicates  :    9 (   7 usr;   1 prp; 0-2 aty)
%            Number of functors    :   18 (  18 usr;   3 con; 0-3 aty)
%            Number of variables   :   70 (  70   !;   0   ?)
% SPC      : 

% Comments : Requires SWV007+0 SWV007+2
%------------------------------------------------------------------------------
fof(ax31,axiom,
    ! [U] : succ_cpq(U,U) ).

fof(ax32,axiom,
    ! [U,V,W] :
      ( succ_cpq(U,V)
     => succ_cpq(U,insert_cpq(V,W)) ) ).

fof(ax33,axiom,
    ! [U,V,W] :
      ( succ_cpq(U,V)
     => succ_cpq(U,remove_cpq(V,W)) ) ).

fof(ax34,axiom,
    ! [U,V] :
      ( succ_cpq(U,V)
     => succ_cpq(U,findmin_cpq_eff(V)) ) ).

fof(ax35,axiom,
    ! [U,V] :
      ( succ_cpq(U,V)
     => succ_cpq(U,removemin_cpq_eff(V)) ) ).

fof(ax36,axiom,
    ! [U,V] : check_cpq(triple(U,create_slb,V)) ).

fof(ax37,axiom,
    ! [U,V,W,X,Y] :
      ( less_than(Y,X)
     => ( check_cpq(triple(U,insert_slb(V,pair(X,Y)),W))
      <=> check_cpq(triple(U,V,W)) ) ) ).

fof(ax38,axiom,
    ! [U,V,W,X,Y] :
      ( strictly_less_than(X,Y)
     => ( check_cpq(triple(U,insert_slb(V,pair(X,Y)),W))
      <=> $false ) ) ).

fof(ax39,axiom,
    ! [U,V,W,X] :
      ( contains_cpq(triple(U,V,W),X)
    <=> contains_slb(V,X) ) ).

fof(ax40,axiom,
    ! [U,V] :
      ( ok(triple(U,V,bad))
    <=> $false ) ).

fof(ax41,axiom,
    ! [U,V,W] :
      ( ~ ok(triple(U,V,W))
     => W = bad ) ).

fof(ax42,axiom,
    ! [U,V,W,X] : insert_cpq(triple(U,V,W),X) = triple(insert_pqp(U,X),insert_slb(V,pair(X,bottom)),W) ).

fof(ax43,axiom,
    ! [U,V,W,X] :
      ( ~ contains_slb(V,X)
     => remove_cpq(triple(U,V,W),X) = triple(U,V,bad) ) ).

fof(ax44,axiom,
    ! [U,V,W,X] :
      ( ( contains_slb(V,X)
        & less_than(lookup_slb(V,X),X) )
     => remove_cpq(triple(U,V,W),X) = triple(remove_pqp(U,X),remove_slb(V,X),W) ) ).

fof(ax45,axiom,
    ! [U,V,W,X] :
      ( ( contains_slb(V,X)
        & strictly_less_than(X,lookup_slb(V,X)) )
     => remove_cpq(triple(U,V,W),X) = triple(remove_pqp(U,X),remove_slb(V,X),bad) ) ).

fof(ax46,axiom,
    ! [U,V] : findmin_cpq_eff(triple(U,create_slb,V)) = triple(U,create_slb,bad) ).

fof(ax47,axiom,
    ! [U,V,W,X] :
      ( ( V != create_slb
        & ~ contains_slb(V,findmin_pqp_res(U)) )
     => findmin_cpq_eff(triple(U,V,W)) = triple(U,update_slb(V,findmin_pqp_res(U)),bad) ) ).

fof(ax48,axiom,
    ! [U,V,W,X] :
      ( ( V != create_slb
        & contains_slb(V,findmin_pqp_res(U))
        & strictly_less_than(findmin_pqp_res(U),lookup_slb(V,findmin_pqp_res(U))) )
     => findmin_cpq_eff(triple(U,V,W)) = triple(U,update_slb(V,findmin_pqp_res(U)),bad) ) ).

fof(ax49,axiom,
    ! [U,V,W,X] :
      ( ( V != create_slb
        & contains_slb(V,findmin_pqp_res(U))
        & less_than(lookup_slb(V,findmin_pqp_res(U)),findmin_pqp_res(U)) )
     => findmin_cpq_eff(triple(U,V,W)) = triple(U,update_slb(V,findmin_pqp_res(U)),W) ) ).

fof(ax50,axiom,
    ! [U,V] : findmin_cpq_res(triple(U,create_slb,V)) = bottom ).

fof(ax51,axiom,
    ! [U,V,W,X] :
      ( V != create_slb
     => findmin_cpq_res(triple(U,V,W)) = findmin_pqp_res(U) ) ).

fof(ax52,axiom,
    ! [U] : removemin_cpq_eff(U) = remove_cpq(findmin_cpq_eff(U),findmin_cpq_res(U)) ).

fof(ax53,axiom,
    ! [U] : removemin_cpq_res(U) = findmin_cpq_res(U) ).

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