TPTP Problem File: SWW469+5.p

View Solutions - Solve Problem

%------------------------------------------------------------------------------
% File     : SWW469+5 : TPTP v8.2.0. Released v5.3.0.
% Domain   : Software Verification
% Problem  : Hoare's Logic with Procedures line 112, 100 axioms selected
% Version  : Especial.
% English  :

% Refs     : [BN10]  Boehme & Nipkow (2010), Sledgehammer: Judgement Day
%          : [Bla11] Blanchette (2011), Email to Geoff Sutcliffe
% Source   : [Bla11]
% Names    : hoare_100_fofpt_l112 [Bla11]

% Status   : Theorem
% Rating   : 0.08 v7.5.0, 0.09 v7.4.0, 0.10 v7.1.0, 0.13 v7.0.0, 0.10 v6.4.0, 0.15 v6.3.0, 0.08 v6.2.0, 0.16 v6.1.0, 0.10 v6.0.0, 0.09 v5.5.0, 0.22 v5.4.0, 0.25 v5.3.0
% Syntax   : Number of formulae    :   63 (  31 unt;   0 def)
%            Number of atoms       :  114 (  45 equ)
%            Maximal formula atoms :    5 (   1 avg)
%            Number of connectives :   64 (  13   ~;   2   |;   3   &)
%                                         (  10 <=>;  36  =>;   0  <=;   0 <~>)
%            Maximal formula depth :   12 (   5 avg)
%            Maximal term depth    :   12 (   2 avg)
%            Number of predicates  :    4 (   3 usr;   0 prp; 1-2 aty)
%            Number of functors    :   22 (  22 usr;   6 con; 0-4 aty)
%            Number of variables   :  157 ( 155   !;   2   ?)
% SPC      : FOF_THM_RFO_SEQ

% Comments : This file was generated by Isabelle (most likely Sledgehammer)
%            2011-08-09 13:53:52
%          : Encoded with polymorphic tags.
%------------------------------------------------------------------------------
%----Explicit typings (17)
fof(tsy_c_HOL_Oequal__class_Oequal_res,axiom,
    ! [X_a] :
      ( cl_HOL_Oequal(X_a)
     => ti(fun(X_a,fun(X_a,bool)),equal_equal(X_a)) = equal_equal(X_a) ) ).

fof(tsy_c_HOL_Oinduct__equal_res,axiom,
    ! [X_a] : ti(fun(X_a,fun(X_a,bool)),induct_equal(X_a)) = induct_equal(X_a) ).

fof(tsy_c_HOL_Oinduct__false_res,axiom,
    ti(bool,induct_false) = induct_false ).

fof(tsy_c_HOL_Oinduct__true_res,axiom,
    ti(bool,induct_true) = induct_true ).

fof(tsy_c_HOL_Oundefined_res,axiom,
    ! [X_a] : ti(X_a,undefined(X_a)) = undefined(X_a) ).

fof(tsy_c_Hoare__Mirabelle__pjuwniqynr_OAbs__triple_res,axiom,
    ! [X_a] : ti(fun(fun(node(sum_sum(com,fun(X_a,fun(state,bool))),sum_sum(state,X_a)),bool),hoare_509422987triple(X_a)),hoare_244953527triple(X_a)) = hoare_244953527triple(X_a) ).

fof(tsy_c_Hoare__Mirabelle__pjuwniqynr_ORep__triple_res,axiom,
    ! [X_a] : ti(fun(hoare_509422987triple(X_a),fun(node(sum_sum(com,fun(X_a,fun(state,bool))),sum_sum(state,X_a)),bool)),hoare_2037801986triple(X_a)) = hoare_2037801986triple(X_a) ).

fof(tsy_c_Hoare__Mirabelle__pjuwniqynr_Ostate__not__singleton_res,hypothesis,
    ti(bool,hoare_1883395792gleton) = hoare_1883395792gleton ).

fof(tsy_c_Hoare__Mirabelle__pjuwniqynr_Otriple_Otriple__rep__set_res,axiom,
    ! [X_a] : ti(fun(fun(node(sum_sum(com,fun(X_a,fun(state,bool))),sum_sum(state,X_a)),bool),bool),hoare_1580379338ep_set(X_a)) = hoare_1580379338ep_set(X_a) ).

fof(tsy_c_Set_OCollect_res,axiom,
    ! [X_a] : ti(fun(fun(X_a,bool),fun(X_a,bool)),collect(X_a)) = collect(X_a) ).

fof(tsy_c_Typedef_Otype__definition_res,axiom,
    ! [X_a,X_b] : ti(fun(fun(X_a,X_b),fun(fun(X_b,X_a),fun(fun(X_b,bool),bool))),type_definition(X_a,X_b)) = type_definition(X_a,X_b) ).

fof(tsy_c_fequal_res,axiom,
    ! [X_a] : ti(fun(X_a,fun(X_a,bool)),fequal(X_a)) = fequal(X_a) ).

fof(tsy_c_hAPP_arg1,axiom,
    ! [X_b,X_a,B_1,B_2] : hAPP(X_b,X_a,ti(fun(X_b,X_a),B_1),B_2) = hAPP(X_b,X_a,B_1,B_2) ).

fof(tsy_c_hAPP_arg2,axiom,
    ! [X_b,X_a,B_1,B_2] : hAPP(X_b,X_a,B_1,ti(X_b,B_2)) = hAPP(X_b,X_a,B_1,B_2) ).

fof(tsy_c_hAPP_res,axiom,
    ! [X_a,X_b,B_1,B_2] : ti(X_a,hAPP(X_b,X_a,B_1,B_2)) = hAPP(X_b,X_a,B_1,B_2) ).

fof(tsy_c_hBOOL_arg1,hypothesis,
    ! [B_1] :
      ( hBOOL(ti(bool,B_1))
    <=> hBOOL(B_1) ) ).

fof(tsy_c_member_res,axiom,
    ! [X_b] : ti(fun(X_b,fun(fun(X_b,bool),bool)),member(X_b)) = member(X_b) ).

%----Relevant facts (32)
fof(fact_0_state__not__singleton__def,axiom,
    ( hBOOL(hoare_1883395792gleton)
  <=> ? [S,T] : ti(state,S) != ti(state,T) ) ).

fof(fact_1_equal__triple__def,axiom,
    ! [X_a,X_1,Y_1] :
      ( hBOOL(hAPP(hoare_509422987triple(X_a),bool,hAPP(hoare_509422987triple(X_a),fun(hoare_509422987triple(X_a),bool),equal_equal(hoare_509422987triple(X_a)),X_1),Y_1))
    <=> X_1 = Y_1 ) ).

fof(fact_2_Rep__triple__inject,axiom,
    ! [X_a,X_1,Y_1] :
      ( hAPP(hoare_509422987triple(X_a),fun(node(sum_sum(com,fun(X_a,fun(state,bool))),sum_sum(state,X_a)),bool),hoare_2037801986triple(X_a),X_1) = hAPP(hoare_509422987triple(X_a),fun(node(sum_sum(com,fun(X_a,fun(state,bool))),sum_sum(state,X_a)),bool),hoare_2037801986triple(X_a),Y_1)
    <=> X_1 = Y_1 ) ).

fof(fact_3_equal,axiom,
    ! [X_a] :
      ( cl_HOL_Oequal(X_a)
     => equal_equal(X_a) = fequal(X_a) ) ).

fof(fact_4_equal__refl,axiom,
    ! [X_a] :
      ( cl_HOL_Oequal(X_a)
     => ! [X] : hBOOL(hAPP(X_a,bool,hAPP(X_a,fun(X_a,bool),equal_equal(X_a),X),X)) ) ).

fof(fact_5_equal__eq,axiom,
    ! [X_a] :
      ( cl_HOL_Oequal(X_a)
     => ! [X_1,Y_1] :
          ( hBOOL(hAPP(X_a,bool,hAPP(X_a,fun(X_a,bool),equal_equal(X_a),X_1),Y_1))
        <=> ti(X_a,X_1) = ti(X_a,Y_1) ) ) ).

fof(fact_6_eq__equal,axiom,
    ! [X_a] :
      ( cl_HOL_Oequal(X_a)
     => fequal(X_a) = equal_equal(X_a) ) ).

fof(fact_7_Rep__triple__inverse,axiom,
    ! [X_a,X_1] : hAPP(fun(node(sum_sum(com,fun(X_a,fun(state,bool))),sum_sum(state,X_a)),bool),hoare_509422987triple(X_a),hoare_244953527triple(X_a),hAPP(hoare_509422987triple(X_a),fun(node(sum_sum(com,fun(X_a,fun(state,bool))),sum_sum(state,X_a)),bool),hoare_2037801986triple(X_a),X_1)) = X_1 ).

fof(fact_8_Rep__triple,axiom,
    ! [X_a,X_1] : hBOOL(hAPP(fun(fun(node(sum_sum(com,fun(X_a,fun(state,bool))),sum_sum(state,X_a)),bool),bool),bool,hAPP(fun(node(sum_sum(com,fun(X_a,fun(state,bool))),sum_sum(state,X_a)),bool),fun(fun(fun(node(sum_sum(com,fun(X_a,fun(state,bool))),sum_sum(state,X_a)),bool),bool),bool),member(fun(node(sum_sum(com,fun(X_a,fun(state,bool))),sum_sum(state,X_a)),bool)),hAPP(hoare_509422987triple(X_a),fun(node(sum_sum(com,fun(X_a,fun(state,bool))),sum_sum(state,X_a)),bool),hoare_2037801986triple(X_a),X_1)),hAPP(fun(fun(node(sum_sum(com,fun(X_a,fun(state,bool))),sum_sum(state,X_a)),bool),bool),fun(fun(node(sum_sum(com,fun(X_a,fun(state,bool))),sum_sum(state,X_a)),bool),bool),collect(fun(node(sum_sum(com,fun(X_a,fun(state,bool))),sum_sum(state,X_a)),bool)),hoare_1580379338ep_set(X_a)))) ).

fof(fact_9_Rep__triple__induct,axiom,
    ! [X_a,P,Y_1] :
      ( hBOOL(hAPP(fun(fun(node(sum_sum(com,fun(X_a,fun(state,bool))),sum_sum(state,X_a)),bool),bool),bool,hAPP(fun(node(sum_sum(com,fun(X_a,fun(state,bool))),sum_sum(state,X_a)),bool),fun(fun(fun(node(sum_sum(com,fun(X_a,fun(state,bool))),sum_sum(state,X_a)),bool),bool),bool),member(fun(node(sum_sum(com,fun(X_a,fun(state,bool))),sum_sum(state,X_a)),bool)),Y_1),hAPP(fun(fun(node(sum_sum(com,fun(X_a,fun(state,bool))),sum_sum(state,X_a)),bool),bool),fun(fun(node(sum_sum(com,fun(X_a,fun(state,bool))),sum_sum(state,X_a)),bool),bool),collect(fun(node(sum_sum(com,fun(X_a,fun(state,bool))),sum_sum(state,X_a)),bool)),hoare_1580379338ep_set(X_a))))
     => ( ! [X_2] : hBOOL(hAPP(fun(node(sum_sum(com,fun(X_a,fun(state,bool))),sum_sum(state,X_a)),bool),bool,P,hAPP(hoare_509422987triple(X_a),fun(node(sum_sum(com,fun(X_a,fun(state,bool))),sum_sum(state,X_a)),bool),hoare_2037801986triple(X_a),X_2)))
       => hBOOL(hAPP(fun(node(sum_sum(com,fun(X_a,fun(state,bool))),sum_sum(state,X_a)),bool),bool,P,Y_1)) ) ) ).

fof(fact_10_Rep__triple__cases,axiom,
    ! [X_a,Y_1] :
      ( hBOOL(hAPP(fun(fun(node(sum_sum(com,fun(X_a,fun(state,bool))),sum_sum(state,X_a)),bool),bool),bool,hAPP(fun(node(sum_sum(com,fun(X_a,fun(state,bool))),sum_sum(state,X_a)),bool),fun(fun(fun(node(sum_sum(com,fun(X_a,fun(state,bool))),sum_sum(state,X_a)),bool),bool),bool),member(fun(node(sum_sum(com,fun(X_a,fun(state,bool))),sum_sum(state,X_a)),bool)),Y_1),hAPP(fun(fun(node(sum_sum(com,fun(X_a,fun(state,bool))),sum_sum(state,X_a)),bool),bool),fun(fun(node(sum_sum(com,fun(X_a,fun(state,bool))),sum_sum(state,X_a)),bool),bool),collect(fun(node(sum_sum(com,fun(X_a,fun(state,bool))),sum_sum(state,X_a)),bool)),hoare_1580379338ep_set(X_a))))
     => ~ ! [X_2] : Y_1 != hAPP(hoare_509422987triple(X_a),fun(node(sum_sum(com,fun(X_a,fun(state,bool))),sum_sum(state,X_a)),bool),hoare_2037801986triple(X_a),X_2) ) ).

fof(fact_11_Abs__triple__inverse,axiom,
    ! [X_a,Y_1] :
      ( hBOOL(hAPP(fun(fun(node(sum_sum(com,fun(X_a,fun(state,bool))),sum_sum(state,X_a)),bool),bool),bool,hAPP(fun(node(sum_sum(com,fun(X_a,fun(state,bool))),sum_sum(state,X_a)),bool),fun(fun(fun(node(sum_sum(com,fun(X_a,fun(state,bool))),sum_sum(state,X_a)),bool),bool),bool),member(fun(node(sum_sum(com,fun(X_a,fun(state,bool))),sum_sum(state,X_a)),bool)),Y_1),hAPP(fun(fun(node(sum_sum(com,fun(X_a,fun(state,bool))),sum_sum(state,X_a)),bool),bool),fun(fun(node(sum_sum(com,fun(X_a,fun(state,bool))),sum_sum(state,X_a)),bool),bool),collect(fun(node(sum_sum(com,fun(X_a,fun(state,bool))),sum_sum(state,X_a)),bool)),hoare_1580379338ep_set(X_a))))
     => hAPP(hoare_509422987triple(X_a),fun(node(sum_sum(com,fun(X_a,fun(state,bool))),sum_sum(state,X_a)),bool),hoare_2037801986triple(X_a),hAPP(fun(node(sum_sum(com,fun(X_a,fun(state,bool))),sum_sum(state,X_a)),bool),hoare_509422987triple(X_a),hoare_244953527triple(X_a),Y_1)) = Y_1 ) ).

fof(fact_12_type__definition__triple,axiom,
    ! [X_a] : hBOOL(hAPP(fun(fun(node(sum_sum(com,fun(X_a,fun(state,bool))),sum_sum(state,X_a)),bool),bool),bool,hAPP(fun(fun(node(sum_sum(com,fun(X_a,fun(state,bool))),sum_sum(state,X_a)),bool),hoare_509422987triple(X_a)),fun(fun(fun(node(sum_sum(com,fun(X_a,fun(state,bool))),sum_sum(state,X_a)),bool),bool),bool),hAPP(fun(hoare_509422987triple(X_a),fun(node(sum_sum(com,fun(X_a,fun(state,bool))),sum_sum(state,X_a)),bool)),fun(fun(fun(node(sum_sum(com,fun(X_a,fun(state,bool))),sum_sum(state,X_a)),bool),hoare_509422987triple(X_a)),fun(fun(fun(node(sum_sum(com,fun(X_a,fun(state,bool))),sum_sum(state,X_a)),bool),bool),bool)),type_definition(hoare_509422987triple(X_a),fun(node(sum_sum(com,fun(X_a,fun(state,bool))),sum_sum(state,X_a)),bool)),hoare_2037801986triple(X_a)),hoare_244953527triple(X_a)),hAPP(fun(fun(node(sum_sum(com,fun(X_a,fun(state,bool))),sum_sum(state,X_a)),bool),bool),fun(fun(node(sum_sum(com,fun(X_a,fun(state,bool))),sum_sum(state,X_a)),bool),bool),collect(fun(node(sum_sum(com,fun(X_a,fun(state,bool))),sum_sum(state,X_a)),bool)),hoare_1580379338ep_set(X_a)))) ).

fof(fact_13_Abs__triple__inject,axiom,
    ! [X_a,Y_1,X_1] :
      ( hBOOL(hAPP(fun(fun(node(sum_sum(com,fun(X_a,fun(state,bool))),sum_sum(state,X_a)),bool),bool),bool,hAPP(fun(node(sum_sum(com,fun(X_a,fun(state,bool))),sum_sum(state,X_a)),bool),fun(fun(fun(node(sum_sum(com,fun(X_a,fun(state,bool))),sum_sum(state,X_a)),bool),bool),bool),member(fun(node(sum_sum(com,fun(X_a,fun(state,bool))),sum_sum(state,X_a)),bool)),X_1),hAPP(fun(fun(node(sum_sum(com,fun(X_a,fun(state,bool))),sum_sum(state,X_a)),bool),bool),fun(fun(node(sum_sum(com,fun(X_a,fun(state,bool))),sum_sum(state,X_a)),bool),bool),collect(fun(node(sum_sum(com,fun(X_a,fun(state,bool))),sum_sum(state,X_a)),bool)),hoare_1580379338ep_set(X_a))))
     => ( hBOOL(hAPP(fun(fun(node(sum_sum(com,fun(X_a,fun(state,bool))),sum_sum(state,X_a)),bool),bool),bool,hAPP(fun(node(sum_sum(com,fun(X_a,fun(state,bool))),sum_sum(state,X_a)),bool),fun(fun(fun(node(sum_sum(com,fun(X_a,fun(state,bool))),sum_sum(state,X_a)),bool),bool),bool),member(fun(node(sum_sum(com,fun(X_a,fun(state,bool))),sum_sum(state,X_a)),bool)),Y_1),hAPP(fun(fun(node(sum_sum(com,fun(X_a,fun(state,bool))),sum_sum(state,X_a)),bool),bool),fun(fun(node(sum_sum(com,fun(X_a,fun(state,bool))),sum_sum(state,X_a)),bool),bool),collect(fun(node(sum_sum(com,fun(X_a,fun(state,bool))),sum_sum(state,X_a)),bool)),hoare_1580379338ep_set(X_a))))
       => ( hAPP(fun(node(sum_sum(com,fun(X_a,fun(state,bool))),sum_sum(state,X_a)),bool),hoare_509422987triple(X_a),hoare_244953527triple(X_a),X_1) = hAPP(fun(node(sum_sum(com,fun(X_a,fun(state,bool))),sum_sum(state,X_a)),bool),hoare_509422987triple(X_a),hoare_244953527triple(X_a),Y_1)
        <=> X_1 = Y_1 ) ) ) ).

fof(fact_14_Abs__triple__induct,axiom,
    ! [X_a,X_1,P] :
      ( ! [Y_2] :
          ( hBOOL(hAPP(fun(fun(node(sum_sum(com,fun(X_a,fun(state,bool))),sum_sum(state,X_a)),bool),bool),bool,hAPP(fun(node(sum_sum(com,fun(X_a,fun(state,bool))),sum_sum(state,X_a)),bool),fun(fun(fun(node(sum_sum(com,fun(X_a,fun(state,bool))),sum_sum(state,X_a)),bool),bool),bool),member(fun(node(sum_sum(com,fun(X_a,fun(state,bool))),sum_sum(state,X_a)),bool)),Y_2),hAPP(fun(fun(node(sum_sum(com,fun(X_a,fun(state,bool))),sum_sum(state,X_a)),bool),bool),fun(fun(node(sum_sum(com,fun(X_a,fun(state,bool))),sum_sum(state,X_a)),bool),bool),collect(fun(node(sum_sum(com,fun(X_a,fun(state,bool))),sum_sum(state,X_a)),bool)),hoare_1580379338ep_set(X_a))))
         => hBOOL(hAPP(hoare_509422987triple(X_a),bool,P,hAPP(fun(node(sum_sum(com,fun(X_a,fun(state,bool))),sum_sum(state,X_a)),bool),hoare_509422987triple(X_a),hoare_244953527triple(X_a),Y_2))) )
     => hBOOL(hAPP(hoare_509422987triple(X_a),bool,P,X_1)) ) ).

fof(fact_15_Abs__triple__cases,axiom,
    ! [X_a,X_1] :
      ~ ! [Y_2] :
          ( X_1 = hAPP(fun(node(sum_sum(com,fun(X_a,fun(state,bool))),sum_sum(state,X_a)),bool),hoare_509422987triple(X_a),hoare_244953527triple(X_a),Y_2)
         => ~ hBOOL(hAPP(fun(fun(node(sum_sum(com,fun(X_a,fun(state,bool))),sum_sum(state,X_a)),bool),bool),bool,hAPP(fun(node(sum_sum(com,fun(X_a,fun(state,bool))),sum_sum(state,X_a)),bool),fun(fun(fun(node(sum_sum(com,fun(X_a,fun(state,bool))),sum_sum(state,X_a)),bool),bool),bool),member(fun(node(sum_sum(com,fun(X_a,fun(state,bool))),sum_sum(state,X_a)),bool)),Y_2),hAPP(fun(fun(node(sum_sum(com,fun(X_a,fun(state,bool))),sum_sum(state,X_a)),bool),bool),fun(fun(node(sum_sum(com,fun(X_a,fun(state,bool))),sum_sum(state,X_a)),bool),bool),collect(fun(node(sum_sum(com,fun(X_a,fun(state,bool))),sum_sum(state,X_a)),bool)),hoare_1580379338ep_set(X_a)))) ) ).

fof(fact_16_type__definition_OAbs__inject,axiom,
    ! [X_b,X_a,Y_1,X_1,Rep,Abs,A_1] :
      ( hBOOL(hAPP(fun(X_b,bool),bool,hAPP(fun(X_b,X_a),fun(fun(X_b,bool),bool),hAPP(fun(X_a,X_b),fun(fun(X_b,X_a),fun(fun(X_b,bool),bool)),type_definition(X_a,X_b),Rep),Abs),A_1))
     => ( hBOOL(hAPP(fun(X_b,bool),bool,hAPP(X_b,fun(fun(X_b,bool),bool),member(X_b),X_1),A_1))
       => ( hBOOL(hAPP(fun(X_b,bool),bool,hAPP(X_b,fun(fun(X_b,bool),bool),member(X_b),Y_1),A_1))
         => ( hAPP(X_b,X_a,Abs,X_1) = hAPP(X_b,X_a,Abs,Y_1)
          <=> ti(X_b,X_1) = ti(X_b,Y_1) ) ) ) ) ).

fof(fact_17_type__definition_OAbs__inverse,axiom,
    ! [X_b,X_a,Y_1,Rep,Abs,A_1] :
      ( hBOOL(hAPP(fun(X_b,bool),bool,hAPP(fun(X_b,X_a),fun(fun(X_b,bool),bool),hAPP(fun(X_a,X_b),fun(fun(X_b,X_a),fun(fun(X_b,bool),bool)),type_definition(X_a,X_b),Rep),Abs),A_1))
     => ( hBOOL(hAPP(fun(X_b,bool),bool,hAPP(X_b,fun(fun(X_b,bool),bool),member(X_b),Y_1),A_1))
       => hAPP(X_a,X_b,Rep,hAPP(X_b,X_a,Abs,Y_1)) = ti(X_b,Y_1) ) ) ).

fof(fact_18_type__definition_ORep__inject,axiom,
    ! [X_b,X_a,X_1,Y_1,Rep,Abs,A_1] :
      ( hBOOL(hAPP(fun(X_b,bool),bool,hAPP(fun(X_b,X_a),fun(fun(X_b,bool),bool),hAPP(fun(X_a,X_b),fun(fun(X_b,X_a),fun(fun(X_b,bool),bool)),type_definition(X_a,X_b),Rep),Abs),A_1))
     => ( hAPP(X_a,X_b,Rep,X_1) = hAPP(X_a,X_b,Rep,Y_1)
      <=> ti(X_a,X_1) = ti(X_a,Y_1) ) ) ).

fof(fact_19_type__definition_ORep__inverse,axiom,
    ! [X_b,X_a,X_1,Rep,Abs,A_1] :
      ( hBOOL(hAPP(fun(X_b,bool),bool,hAPP(fun(X_b,X_a),fun(fun(X_b,bool),bool),hAPP(fun(X_a,X_b),fun(fun(X_b,X_a),fun(fun(X_b,bool),bool)),type_definition(X_a,X_b),Rep),Abs),A_1))
     => hAPP(X_b,X_a,Abs,hAPP(X_a,X_b,Rep,X_1)) = ti(X_a,X_1) ) ).

fof(fact_20_type__definition_ORep,axiom,
    ! [X_b,X_a,X_1,Rep,Abs,A_1] :
      ( hBOOL(hAPP(fun(X_b,bool),bool,hAPP(fun(X_b,X_a),fun(fun(X_b,bool),bool),hAPP(fun(X_a,X_b),fun(fun(X_b,X_a),fun(fun(X_b,bool),bool)),type_definition(X_a,X_b),Rep),Abs),A_1))
     => hBOOL(hAPP(fun(X_b,bool),bool,hAPP(X_b,fun(fun(X_b,bool),bool),member(X_b),hAPP(X_a,X_b,Rep,X_1)),A_1)) ) ).

fof(fact_21_induct__false__def,axiom,
    ~ hBOOL(induct_false) ).

fof(fact_22_type__definition_ORep__cases,axiom,
    ! [X_b,X_a,Y_1,Rep,Abs,A_1] :
      ( hBOOL(hAPP(fun(X_b,bool),bool,hAPP(fun(X_b,X_a),fun(fun(X_b,bool),bool),hAPP(fun(X_a,X_b),fun(fun(X_b,X_a),fun(fun(X_b,bool),bool)),type_definition(X_a,X_b),Rep),Abs),A_1))
     => ( hBOOL(hAPP(fun(X_b,bool),bool,hAPP(X_b,fun(fun(X_b,bool),bool),member(X_b),Y_1),A_1))
       => ~ ! [X_2] : ti(X_b,Y_1) != hAPP(X_a,X_b,Rep,X_2) ) ) ).

fof(fact_23_type__definition_OAbs__cases,axiom,
    ! [X_b,X_a,X_1,Rep,Abs,A_1] :
      ( hBOOL(hAPP(fun(X_b,bool),bool,hAPP(fun(X_b,X_a),fun(fun(X_b,bool),bool),hAPP(fun(X_a,X_b),fun(fun(X_b,X_a),fun(fun(X_b,bool),bool)),type_definition(X_a,X_b),Rep),Abs),A_1))
     => ~ ! [Y_2] :
            ( ti(X_a,X_1) = hAPP(X_b,X_a,Abs,Y_2)
           => ~ hBOOL(hAPP(fun(X_b,bool),bool,hAPP(X_b,fun(fun(X_b,bool),bool),member(X_b),Y_2),A_1)) ) ) ).

fof(fact_24_type__definition_OAbs__induct,axiom,
    ! [X_b,X_a,X_1,P,Rep,Abs,A_1] :
      ( hBOOL(hAPP(fun(X_b,bool),bool,hAPP(fun(X_b,X_a),fun(fun(X_b,bool),bool),hAPP(fun(X_a,X_b),fun(fun(X_b,X_a),fun(fun(X_b,bool),bool)),type_definition(X_a,X_b),Rep),Abs),A_1))
     => ( ! [Y_2] :
            ( hBOOL(hAPP(fun(X_b,bool),bool,hAPP(X_b,fun(fun(X_b,bool),bool),member(X_b),Y_2),A_1))
           => hBOOL(hAPP(X_a,bool,P,hAPP(X_b,X_a,Abs,Y_2))) )
       => hBOOL(hAPP(X_a,bool,P,X_1)) ) ) ).

fof(fact_25_type__definition_ORep__induct,axiom,
    ! [X_b,X_a,P,Y_1,Rep,Abs,A_1] :
      ( hBOOL(hAPP(fun(X_b,bool),bool,hAPP(fun(X_b,X_a),fun(fun(X_b,bool),bool),hAPP(fun(X_a,X_b),fun(fun(X_b,X_a),fun(fun(X_b,bool),bool)),type_definition(X_a,X_b),Rep),Abs),A_1))
     => ( hBOOL(hAPP(fun(X_b,bool),bool,hAPP(X_b,fun(fun(X_b,bool),bool),member(X_b),Y_1),A_1))
       => ( ! [X_2] : hBOOL(hAPP(X_b,bool,P,hAPP(X_a,X_b,Rep,X_2)))
         => hBOOL(hAPP(X_b,bool,P,Y_1)) ) ) ) ).

fof(fact_26_induct__trueI,axiom,
    hBOOL(induct_true) ).

fof(fact_27_induct__true__def,axiom,
    hBOOL(induct_true) ).

fof(fact_28_induct__equal__def,axiom,
    ! [X_a,X_1,Y_1] :
      ( hBOOL(hAPP(X_a,bool,hAPP(X_a,fun(X_a,bool),induct_equal(X_a),X_1),Y_1))
    <=> ti(X_a,X_1) = ti(X_a,Y_1) ) ).

fof(fact_29_ext,axiom,
    ! [X_a,X_b,F,G] :
      ( ! [X_2] : hAPP(X_a,X_b,F,X_2) = hAPP(X_a,X_b,G,X_2)
     => ti(fun(X_a,X_b),F) = ti(fun(X_a,X_b),G) ) ).

fof(fact_30_mem__def,axiom,
    ! [X_a,X_1,A_1] :
      ( hBOOL(hAPP(fun(X_a,bool),bool,hAPP(X_a,fun(fun(X_a,bool),bool),member(X_a),X_1),A_1))
    <=> hBOOL(hAPP(X_a,bool,A_1,X_1)) ) ).

fof(fact_31_Collect__def,axiom,
    ! [X_a,P] : hAPP(fun(X_a,bool),fun(X_a,bool),collect(X_a),P) = ti(fun(X_a,bool),P) ).

%----Arities (9)
fof(arity_sum___Enum_Oenum,axiom,
    ! [T_2,T_1_1] :
      ( ( enum(T_1_1)
        & enum(T_2) )
     => enum(sum_sum(T_2,T_1_1)) ) ).

fof(arity_HOL_Obool___Enum_Oenum,axiom,
    enum(bool) ).

fof(arity_fun___Enum_Oenum,axiom,
    ! [T_2,T_1_1] :
      ( ( enum(T_1_1)
        & enum(T_2) )
     => enum(fun(T_2,T_1_1)) ) ).

fof(arity_fun___HOL_Oequal,axiom,
    ! [T_2,T_1_1] :
      ( ( cl_HOL_Oequal(T_1_1)
        & enum(T_2) )
     => cl_HOL_Oequal(fun(T_2,T_1_1)) ) ).

fof(arity_Com_Ocom___HOL_Oequal,axiom,
    cl_HOL_Oequal(com) ).

fof(arity_HOL_Obool___HOL_Oequal,axiom,
    cl_HOL_Oequal(bool) ).

fof(arity_Com_Ostate___HOL_Oequal,axiom,
    cl_HOL_Oequal(state) ).

fof(arity_sum___HOL_Oequal,axiom,
    ! [T_2,T_1_1] : cl_HOL_Oequal(sum_sum(T_2,T_1_1)) ).

fof(arity_Hoare__Mirabelle__pjuwniqynr_Otriple___HOL_Oequal,axiom,
    ! [T_1_1] : cl_HOL_Oequal(hoare_509422987triple(T_1_1)) ).

%----Helper facts (3)
fof(help_ti_idem,axiom,
    ! [T_1,A] : ti(T_1,ti(T_1,A)) = ti(T_1,A) ).

fof(help_fequal_1_1_T,axiom,
    ! [X_a,X,Y] :
      ( ~ hBOOL(hAPP(X_a,bool,hAPP(X_a,fun(X_a,bool),fequal(X_a),X),Y))
      | ti(X_a,X) = ti(X_a,Y) ) ).

fof(help_fequal_2_1_T,axiom,
    ! [X_a,X,Y] :
      ( ti(X_a,X) != ti(X_a,Y)
      | hBOOL(hAPP(X_a,bool,hAPP(X_a,fun(X_a,bool),fequal(X_a),X),Y)) ) ).

%----Conjectures (2)
fof(conj_0,hypothesis,
    hBOOL(hoare_1883395792gleton) ).

fof(conj_1,conjecture,
    ! [T] :
      ~ ! [S] : ti(state,S) = ti(state,T) ).

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