TPTP Problem File: SWW505_5.p

View Solutions - Solve Problem

%------------------------------------------------------------------------------
% File     : SWW505_5 : TPTP v8.2.0. Released v6.0.0.
% Domain   : Software Verification
% Problem  : Hoare's Logic with Procedures line 126
% Version  : Especial.
% English  : 

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

% Status   : Unknown
% Rating   : 1.00 v6.4.0
% Syntax   : Number of formulae    :  147 (  66 unt;  47 typ;   0 def)
%            Number of atoms       :  169 (  87 equ)
%            Maximal formula atoms :    5 (   1 avg)
%            Number of connectives :  122 (  53   ~;   0   |;  10   &)
%                                         (  12 <=>;  47  =>;   0  <=;   0 <~>)
%            Maximal formula depth :   13 (   6 avg)
%            Maximal term depth    :    8 (   1 avg)
%            Number of types       :   12 (  11 usr)
%            Number of type conns  :   61 (  27   >;  34   *;   0   +;   0  <<)
%            Number of predicates  :    9 (   8 usr;   0 prp; 1-4 aty)
%            Number of functors    :   28 (  28 usr;   7 con; 0-10 aty)
%            Number of variables   :  411 ( 391   !;   3   ?; 411   :)
%                                         (  17  !>;   0  ?*;   0  @-;   0  @+)
% SPC      : TF1_UNK_EQU_NAR

% Comments : This file was generated by Isabelle (most likely Sledgehammer)
%            2011-12-13 16:14:08
%------------------------------------------------------------------------------
%----Should-be-implicit typings (13)
tff(ty_t_a,type,
    a: $tType ).

tff(ty_tc_Com_Ocom,type,
    com: $tType ).

tff(ty_tc_Com_Oloc,type,
    loc: $tType ).

tff(ty_tc_Com_Opname,type,
    pname: $tType ).

tff(ty_tc_Com_Ostate,type,
    state: $tType ).

tff(ty_tc_Com_Ovname,type,
    vname: $tType ).

tff(ty_tc_HOL_Obool,type,
    bool: $tType ).

tff(ty_tc_Hoare__Mirabelle__vtrypsmcwp_Otriple,type,
    hoare_28830079triple: $tType > $tType ).

tff(ty_tc_Nat_Onat,type,
    nat: $tType ).

tff(ty_tc_String_Ochar,type,
    char1: $tType ).

tff(ty_tc_String_Oliteral,type,
    literal: $tType ).

tff(ty_tc_String_Onibble,type,
    nibble: $tType ).

tff(ty_tc_fun,type,
    fun: ( $tType * $tType ) > $tType ).

%----Explicit typings (34)
tff(sy_cl_Groups_Ozero,type,
    zero: 
      !>[A2: $tType] : $o ).

tff(sy_c_Com_OWT,type,
    wt: com > $o ).

tff(sy_c_Com_Ocom_OAss,type,
    ass: ( vname * fun(state,nat) ) > com ).

tff(sy_c_Com_Ocom_OBODY,type,
    body: pname > com ).

tff(sy_c_Com_Ocom_OCall,type,
    call: ( vname * pname * fun(state,nat) ) > com ).

tff(sy_c_Com_Ocom_OCond,type,
    cond: ( fun(state,bool) * com * com ) > com ).

tff(sy_c_Com_Ocom_OSKIP,type,
    skip: com ).

tff(sy_c_Com_Ocom_OSemi,type,
    semi: ( com * com ) > com ).

tff(sy_c_Com_Ocom_Ocom__case,type,
    com_case: 
      !>[T3: $tType] : ( ( T3 * fun(vname,fun(fun(state,nat),T3)) * fun(loc,fun(fun(state,nat),fun(com,T3))) * fun(com,fun(com,T3)) * fun(fun(state,bool),fun(com,fun(com,T3))) * fun(fun(state,bool),fun(com,T3)) * fun(pname,T3) * fun(vname,fun(pname,fun(fun(state,nat),T3))) * com ) > T3 ) ).

tff(sy_c_Com_Ocom_Ocom__size,type,
    com_size: com > nat ).

tff(sy_c_Groups_Ozero__class_Ozero,type,
    zero_zero: 
      !>[A2: $tType] : A2 ).

tff(sy_c_Hoare__Mirabelle__vtrypsmcwp_Ohoare__valids,type,
    hoare_592965047valids: 
      !>[A2: $tType] : ( ( fun(hoare_28830079triple(A2),bool) * fun(hoare_28830079triple(A2),bool) ) > $o ) ).

tff(sy_c_Hoare__Mirabelle__vtrypsmcwp_Otriple_Otriple,type,
    hoare_1841697145triple: 
      !>[A2: $tType] : ( ( fun(A2,fun(state,bool)) * com * fun(A2,fun(state,bool)) ) > hoare_28830079triple(A2) ) ).

tff(sy_c_Hoare__Mirabelle__vtrypsmcwp_Otriple_Otriple__case,type,
    hoare_376461865e_case: 
      !>[A2: $tType,T3: $tType] : ( ( fun(fun(A2,fun(state,bool)),fun(com,fun(fun(A2,fun(state,bool)),T3))) * hoare_28830079triple(A2) ) > T3 ) ).

tff(sy_c_Hoare__Mirabelle__vtrypsmcwp_Otriple_Otriple__rec,type,
    hoare_678420151le_rec: 
      !>[A2: $tType,T3: $tType] : ( ( fun(fun(A2,fun(state,bool)),fun(com,fun(fun(A2,fun(state,bool)),T3))) * hoare_28830079triple(A2) ) > T3 ) ).

tff(sy_c_Hoare__Mirabelle__vtrypsmcwp_Otriple_Otriple__size,type,
    hoare_47506394e_size: 
      !>[A2: $tType] : ( ( fun(A2,nat) * hoare_28830079triple(A2) ) > nat ) ).

tff(sy_c_Hoare__Mirabelle__vtrypsmcwp_Otriple__valid,type,
    hoare_1633586161_valid: 
      !>[A2: $tType] : ( ( nat * hoare_28830079triple(A2) ) > $o ) ).

tff(sy_c_Nat_Osize__class_Osize,type,
    size_size: 
      !>[A2: $tType] : ( A2 > nat ) ).

tff(sy_c_Natural_Oevalc,type,
    evalc: ( com * state * state ) > $o ).

tff(sy_c_Natural_Oevaln,type,
    evaln: ( com * state * nat * state ) > $o ).

tff(sy_c_Natural_Oupdate,type,
    update: ( state * vname * nat ) > state ).

tff(sy_c_String_Ochar_OChar,type,
    char: ( nibble * nibble ) > char1 ).

tff(sy_c_String_Ochar_Ochar__case,type,
    char_case: 
      !>[T3: $tType] : ( ( fun(nibble,fun(nibble,T3)) * char1 ) > T3 ) ).

tff(sy_c_String_Ochar_Ochar__rec,type,
    char_rec: 
      !>[T3: $tType] : ( ( fun(nibble,fun(nibble,T3)) * char1 ) > T3 ) ).

tff(sy_c_String_Ochar_Ochar__size,type,
    char_size: char1 > nat ).

tff(sy_c_aa,type,
    aa: 
      !>[A2: $tType,B1: $tType] : ( ( fun(A2,B1) * A2 ) > B1 ) ).

tff(sy_c_fFalse,type,
    fFalse: bool ).

tff(sy_c_fTrue,type,
    fTrue: bool ).

tff(sy_c_member,type,
    member: 
      !>[A2: $tType] : ( ( A2 * fun(A2,bool) ) > $o ) ).

tff(sy_c_pp,type,
    pp: bool > $o ).

tff(sy_v_P,type,
    p: fun(a,fun(state,bool)) ).

tff(sy_v_Q,type,
    q: fun(a,fun(state,bool)) ).

tff(sy_v_c,type,
    c: com ).

tff(sy_v_n,type,
    n: nat ).

%----Relevant facts (96)
tff(fact_0_triple_Oinject,axiom,
    ! [B1: $tType,Fun22: fun(B1,fun(state,bool)),Com4: com,Fun13: fun(B1,fun(state,bool)),Fun2: fun(B1,fun(state,bool)),Com: com,Fun11: fun(B1,fun(state,bool))] :
      ( ( hoare_1841697145triple(B1,Fun11,Com,Fun2) = hoare_1841697145triple(B1,Fun13,Com4,Fun22) )
    <=> ( ( Fun11 = Fun13 )
        & ( Com = Com4 )
        & ( Fun2 = Fun22 ) ) ) ).

tff(fact_1_triple_Orecs,axiom,
    ! [B1: $tType,C3: $tType,Fun2: fun(C3,fun(state,bool)),Com: com,Fun11: fun(C3,fun(state,bool)),F1: fun(fun(C3,fun(state,bool)),fun(com,fun(fun(C3,fun(state,bool)),B1)))] : hoare_678420151le_rec(C3,B1,F1,hoare_1841697145triple(C3,Fun11,Com,Fun2)) = aa(fun(C3,fun(state,bool)),B1,aa(com,fun(fun(C3,fun(state,bool)),B1),aa(fun(C3,fun(state,bool)),fun(com,fun(fun(C3,fun(state,bool)),B1)),F1,Fun11),Com),Fun2) ).

tff(fact_2_triple_Osimps_I2_J,axiom,
    ! [B1: $tType,C3: $tType,Fun2: fun(C3,fun(state,bool)),Com: com,Fun11: fun(C3,fun(state,bool)),F1: fun(fun(C3,fun(state,bool)),fun(com,fun(fun(C3,fun(state,bool)),B1)))] : hoare_376461865e_case(C3,B1,F1,hoare_1841697145triple(C3,Fun11,Com,Fun2)) = aa(fun(C3,fun(state,bool)),B1,aa(com,fun(fun(C3,fun(state,bool)),B1),aa(fun(C3,fun(state,bool)),fun(com,fun(fun(C3,fun(state,bool)),B1)),F1,Fun11),Com),Fun2) ).

tff(fact_3_triple_Oexhaust,axiom,
    ! [B1: $tType,Y1: hoare_28830079triple(B1)] :
      ~ ! [Fun12: fun(B1,fun(state,bool)),Com3: com,Fun21: fun(B1,fun(state,bool))] : Y1 != hoare_1841697145triple(B1,Fun12,Com3,Fun21) ).

tff(fact_4_evaln__max2,axiom,
    ! [T2: state,N21: nat,S21: state,C2: com,T11: state,N11: nat,S12: state,C1: com] :
      ( evaln(C1,S12,N11,T11)
     => ( evaln(C2,S21,N21,T2)
       => ? [N: nat] :
            ( evaln(C1,S12,N,T11)
            & evaln(C2,S21,N,T2) ) ) ) ).

tff(fact_5_hoare__valids__def,axiom,
    ! [B1: $tType,Ts: fun(hoare_28830079triple(B1),bool),G: fun(hoare_28830079triple(B1),bool)] :
      ( hoare_592965047valids(B1,G,Ts)
    <=> ! [N1: nat] :
          ( ! [X2: hoare_28830079triple(B1)] :
              ( member(hoare_28830079triple(B1),X2,G)
             => hoare_1633586161_valid(B1,N1,X2) )
         => ! [X2: hoare_28830079triple(B1)] :
              ( member(hoare_28830079triple(B1),X2,Ts)
             => hoare_1633586161_valid(B1,N1,X2) ) ) ) ).

tff(fact_6_triple_Osize_I1_J,axiom,
    ! [B1: $tType,Fun2: fun(B1,fun(state,bool)),Com: com,Fun11: fun(B1,fun(state,bool)),Fa: fun(B1,nat)] : hoare_47506394e_size(B1,Fa,hoare_1841697145triple(B1,Fun11,Com,Fun2)) = zero_zero(nat) ).

tff(fact_7_triple_Osize_I2_J,axiom,
    ! [B1: $tType,Fun2: fun(B1,fun(state,bool)),Com: com,Fun11: fun(B1,fun(state,bool))] : size_size(hoare_28830079triple(B1),hoare_1841697145triple(B1,Fun11,Com,Fun2)) = zero_zero(nat) ).

tff(fact_8_evaln_OSkip,axiom,
    ! [N2: nat,S2: state] : evaln(skip,S2,N2,S2) ).

tff(fact_9_evaln__elim__cases_I1_J,axiom,
    ! [T: state,N2: nat,S2: state] :
      ( evaln(skip,S2,N2,T)
     => ( T = S2 ) ) ).

tff(fact_10_evaln_OSemi,axiom,
    ! [S21: state,C1: com,S12: state,N2: nat,S0: state,C0: com] :
      ( evaln(C0,S0,N2,S12)
     => ( evaln(C1,S12,N2,S21)
       => evaln(semi(C0,C1),S0,N2,S21) ) ) ).

tff(fact_11_evaln_OIfFalse,axiom,
    ! [C01: com,S13: state,Na: nat,C11: com,S3: state,B: fun(state,bool)] :
      ( ~ pp(aa(state,bool,B,S3))
     => ( evaln(C11,S3,Na,S13)
       => evaln(cond(B,C01,C11),S3,Na,S13) ) ) ).

tff(fact_12_evaln_OIfTrue,axiom,
    ! [C11: com,S13: state,Na: nat,C01: com,S3: state,B: fun(state,bool)] :
      ( pp(aa(state,bool,B,S3))
     => ( evaln(C01,S3,Na,S13)
       => evaln(cond(B,C01,C11),S3,Na,S13) ) ) ).

tff(fact_13_evaln__elim__cases_I5_J,axiom,
    ! [T1: state,Na: nat,S3: state,C21: com,C11: com,B: fun(state,bool)] :
      ( evaln(cond(B,C11,C21),S3,Na,T1)
     => ( ( pp(aa(state,bool,B,S3))
         => ~ evaln(C11,S3,Na,T1) )
       => ~ ( ~ pp(aa(state,bool,B,S3))
           => ~ evaln(C21,S3,Na,T1) ) ) ) ).

tff(fact_14_evaln__elim__cases_I4_J,axiom,
    ! [T: state,N2: nat,S2: state,C2: com,C1: com] :
      ( evaln(semi(C1,C2),S2,N2,T)
     => ~ ! [S11: state] :
            ( evaln(C1,S2,N2,S11)
           => ~ evaln(C2,S11,N2,T) ) ) ).

tff(fact_15_com_Osimps_I3_J,axiom,
    ! [Com22: com,Com12: com,Com21: com,Com11: com] :
      ( ( semi(Com11,Com21) = semi(Com12,Com22) )
    <=> ( ( Com11 = Com12 )
        & ( Com21 = Com22 ) ) ) ).

tff(fact_16_com_Osimps_I4_J,axiom,
    ! [Com22: com,Com12: com,Fun1: fun(state,bool),Com21: com,Com11: com,Fun: fun(state,bool)] :
      ( ( cond(Fun,Com11,Com21) = cond(Fun1,Com12,Com22) )
    <=> ( ( Fun = Fun1 )
        & ( Com11 = Com12 )
        & ( Com21 = Com22 ) ) ) ).

tff(fact_17_com_Osimps_I12_J,axiom,
    ! [Com23: com,Com13: com] : skip != semi(Com13,Com23) ).

tff(fact_18_com_Osimps_I13_J,axiom,
    ! [Com23: com,Com13: com] : semi(Com13,Com23) != skip ).

tff(fact_19_com_Osimps_I14_J,axiom,
    ! [Com22: com,Com12: com,Fun1: fun(state,bool)] : skip != cond(Fun1,Com12,Com22) ).

tff(fact_20_com_Osimps_I15_J,axiom,
    ! [Com22: com,Com12: com,Fun1: fun(state,bool)] : cond(Fun1,Com12,Com22) != skip ).

tff(fact_21_com_Osimps_I44_J,axiom,
    ! [Com22: com,Com12: com,Fun1: fun(state,bool),Com21: com,Com11: com] : semi(Com11,Com21) != cond(Fun1,Com12,Com22) ).

tff(fact_22_zero__reorient,axiom,
    ! [B1: $tType] :
      ( zero(B1)
     => ! [X1: B1] :
          ( ( zero_zero(B1) = X1 )
        <=> ( X1 = zero_zero(B1) ) ) ) ).

tff(fact_23_com_Osimps_I45_J,axiom,
    ! [Com21: com,Com11: com,Com22: com,Com12: com,Fun1: fun(state,bool)] : cond(Fun1,Com12,Com22) != semi(Com11,Com21) ).

tff(fact_24_com_Osize_I1_J,axiom,
    com_size(skip) = zero_zero(nat) ).

tff(fact_25_com_Osize_I9_J,axiom,
    size_size(com,skip) = zero_zero(nat) ).

tff(fact_26_com_Osimps_I64_J,axiom,
    ! [B1: $tType,F8: fun(vname,fun(pname,fun(fun(state,nat),B1))),F7: fun(pname,B1),F6: fun(fun(state,bool),fun(com,B1)),F5: fun(fun(state,bool),fun(com,fun(com,B1))),F4: fun(com,fun(com,B1)),F3: fun(loc,fun(fun(state,nat),fun(com,B1))),F2: fun(vname,fun(fun(state,nat),B1)),F1: B1] : com_case(B1,F1,F2,F3,F4,F5,F6,F7,F8,skip) = F1 ).

tff(fact_27_com_Osimps_I67_J,axiom,
    ! [B1: $tType,Com21: com,Com11: com,F8: fun(vname,fun(pname,fun(fun(state,nat),B1))),F7: fun(pname,B1),F6: fun(fun(state,bool),fun(com,B1)),F5: fun(fun(state,bool),fun(com,fun(com,B1))),F4: fun(com,fun(com,B1)),F3: fun(loc,fun(fun(state,nat),fun(com,B1))),F2: fun(vname,fun(fun(state,nat),B1)),F1: B1] : com_case(B1,F1,F2,F3,F4,F5,F6,F7,F8,semi(Com11,Com21)) = aa(com,B1,aa(com,fun(com,B1),F4,Com11),Com21) ).

tff(fact_28_com_Osimps_I68_J,axiom,
    ! [B1: $tType,Com21: com,Com11: com,Fun: fun(state,bool),F8: fun(vname,fun(pname,fun(fun(state,nat),B1))),F7: fun(pname,B1),F6: fun(fun(state,bool),fun(com,B1)),F5: fun(fun(state,bool),fun(com,fun(com,B1))),F4: fun(com,fun(com,B1)),F3: fun(loc,fun(fun(state,nat),fun(com,B1))),F2: fun(vname,fun(fun(state,nat),B1)),F1: B1] : com_case(B1,F1,F2,F3,F4,F5,F6,F7,F8,cond(Fun,Com11,Com21)) = aa(com,B1,aa(com,fun(com,B1),aa(fun(state,bool),fun(com,fun(com,B1)),F5,Fun),Com11),Com21) ).

tff(fact_29_char__size,axiom,
    ! [C: char1] : char_size(C) = zero_zero(nat) ).

tff(fact_30_size__char,axiom,
    ! [C: char1] : size_size(char1,C) = zero_zero(nat) ).

tff(fact_31_size__literal__def,axiom,
    ! [S2: literal] : size_size(literal,S2) = zero_zero(nat) ).

tff(fact_32_char_Osize_I1_J,axiom,
    ! [Nibble22: nibble,Nibble12: nibble] : char_size(char(Nibble12,Nibble22)) = zero_zero(nat) ).

tff(fact_33_com_Osize_I16_J,axiom,
    ! [Fun: fun(state,nat),Pname: pname,Vname: vname] : size_size(com,call(Vname,Pname,Fun)) = zero_zero(nat) ).

tff(fact_34_com_Osize_I10_J,axiom,
    ! [Fun: fun(state,nat),Vname: vname] : size_size(com,ass(Vname,Fun)) = zero_zero(nat) ).

tff(fact_35_com_Osize_I8_J,axiom,
    ! [Fun: fun(state,nat),Pname: pname,Vname: vname] : com_size(call(Vname,Pname,Fun)) = zero_zero(nat) ).

tff(fact_36_char_Oinject,axiom,
    ! [Nibble23: nibble,Nibble13: nibble,Nibble2: nibble,Nibble1: nibble] :
      ( ( char(Nibble1,Nibble2) = char(Nibble13,Nibble23) )
    <=> ( ( Nibble1 = Nibble13 )
        & ( Nibble2 = Nibble23 ) ) ) ).

tff(fact_37_com_Osimps_I1_J,axiom,
    ! [Fun1: fun(state,nat),Vname1: vname,Fun: fun(state,nat),Vname: vname] :
      ( ( ass(Vname,Fun) = ass(Vname1,Fun1) )
    <=> ( ( Vname = Vname1 )
        & ( Fun = Fun1 ) ) ) ).

tff(fact_38_com_Osimps_I7_J,axiom,
    ! [Fun1: fun(state,nat),Pname2: pname,Vname1: vname,Fun: fun(state,nat),Pname: pname,Vname: vname] :
      ( ( call(Vname,Pname,Fun) = call(Vname1,Pname2,Fun1) )
    <=> ( ( Vname = Vname1 )
        & ( Pname = Pname2 )
        & ( Fun = Fun1 ) ) ) ).

tff(fact_39_com_Osize_I2_J,axiom,
    ! [Fun: fun(state,nat),Vname: vname] : com_size(ass(Vname,Fun)) = zero_zero(nat) ).

tff(fact_40_char_Osize_I2_J,axiom,
    ! [Nibble22: nibble,Nibble12: nibble] : size_size(char1,char(Nibble12,Nibble22)) = zero_zero(nat) ).

tff(fact_41_com_Osimps_I32_J,axiom,
    ! [Fun1: fun(state,nat),Pname2: pname,Vname1: vname,Fun: fun(state,nat),Vname: vname] : ass(Vname,Fun) != call(Vname1,Pname2,Fun1) ).

tff(fact_42_com_Osimps_I33_J,axiom,
    ! [Fun: fun(state,nat),Vname: vname,Fun1: fun(state,nat),Pname2: pname,Vname1: vname] : call(Vname1,Pname2,Fun1) != ass(Vname,Fun) ).

tff(fact_43_com_Osimps_I56_J,axiom,
    ! [Fun1: fun(state,nat),Pname2: pname,Vname1: vname,Com21: com,Com11: com,Fun: fun(state,bool)] : cond(Fun,Com11,Com21) != call(Vname1,Pname2,Fun1) ).

tff(fact_44_com_Osimps_I57_J,axiom,
    ! [Com21: com,Com11: com,Fun: fun(state,bool),Fun1: fun(state,nat),Pname2: pname,Vname1: vname] : call(Vname1,Pname2,Fun1) != cond(Fun,Com11,Com21) ).

tff(fact_45_com_Osimps_I27_J,axiom,
    ! [Fun: fun(state,nat),Vname: vname,Com22: com,Com12: com,Fun1: fun(state,bool)] : cond(Fun1,Com12,Com22) != ass(Vname,Fun) ).

tff(fact_46_com_Osimps_I26_J,axiom,
    ! [Com22: com,Com12: com,Fun1: fun(state,bool),Fun: fun(state,nat),Vname: vname] : ass(Vname,Fun) != cond(Fun1,Com12,Com22) ).

tff(fact_47_com_Osimps_I51_J,axiom,
    ! [Com21: com,Com11: com,Fun1: fun(state,nat),Pname2: pname,Vname1: vname] : call(Vname1,Pname2,Fun1) != semi(Com11,Com21) ).

tff(fact_48_com_Osimps_I50_J,axiom,
    ! [Fun1: fun(state,nat),Pname2: pname,Vname1: vname,Com21: com,Com11: com] : semi(Com11,Com21) != call(Vname1,Pname2,Fun1) ).

tff(fact_49_com_Osimps_I25_J,axiom,
    ! [Fun: fun(state,nat),Vname: vname,Com22: com,Com12: com] : semi(Com12,Com22) != ass(Vname,Fun) ).

tff(fact_50_com_Osimps_I24_J,axiom,
    ! [Com22: com,Com12: com,Fun: fun(state,nat),Vname: vname] : ass(Vname,Fun) != semi(Com12,Com22) ).

tff(fact_51_com_Osimps_I21_J,axiom,
    ! [Fun1: fun(state,nat),Pname2: pname,Vname1: vname] : call(Vname1,Pname2,Fun1) != skip ).

tff(fact_52_com_Osimps_I9_J,axiom,
    ! [Fun1: fun(state,nat),Vname1: vname] : ass(Vname1,Fun1) != skip ).

tff(fact_53_com_Osimps_I20_J,axiom,
    ! [Fun1: fun(state,nat),Pname2: pname,Vname1: vname] : skip != call(Vname1,Pname2,Fun1) ).

tff(fact_54_com_Osimps_I8_J,axiom,
    ! [Fun1: fun(state,nat),Vname1: vname] : skip != ass(Vname1,Fun1) ).

tff(fact_55_com_Osimps_I65_J,axiom,
    ! [B1: $tType,Fun: fun(state,nat),Vname: vname,F8: fun(vname,fun(pname,fun(fun(state,nat),B1))),F7: fun(pname,B1),F6: fun(fun(state,bool),fun(com,B1)),F5: fun(fun(state,bool),fun(com,fun(com,B1))),F4: fun(com,fun(com,B1)),F3: fun(loc,fun(fun(state,nat),fun(com,B1))),F2: fun(vname,fun(fun(state,nat),B1)),F1: B1] : com_case(B1,F1,F2,F3,F4,F5,F6,F7,F8,ass(Vname,Fun)) = aa(fun(state,nat),B1,aa(vname,fun(fun(state,nat),B1),F2,Vname),Fun) ).

tff(fact_56_com_Osimps_I71_J,axiom,
    ! [B1: $tType,Fun: fun(state,nat),Pname: pname,Vname: vname,F8: fun(vname,fun(pname,fun(fun(state,nat),B1))),F7: fun(pname,B1),F6: fun(fun(state,bool),fun(com,B1)),F5: fun(fun(state,bool),fun(com,fun(com,B1))),F4: fun(com,fun(com,B1)),F3: fun(loc,fun(fun(state,nat),fun(com,B1))),F2: fun(vname,fun(fun(state,nat),B1)),F1: B1] : com_case(B1,F1,F2,F3,F4,F5,F6,F7,F8,call(Vname,Pname,Fun)) = aa(fun(state,nat),B1,aa(pname,fun(fun(state,nat),B1),aa(vname,fun(pname,fun(fun(state,nat),B1)),F8,Vname),Pname),Fun) ).

tff(fact_57_char_Oexhaust,axiom,
    ! [Y: char1] :
      ~ ! [Nibble11: nibble,Nibble21: nibble] : Y != char(Nibble11,Nibble21) ).

tff(fact_58_char_Orecs,axiom,
    ! [B1: $tType,Nibble2: nibble,Nibble1: nibble,F1: fun(nibble,fun(nibble,B1))] : char_rec(B1,F1,char(Nibble1,Nibble2)) = aa(nibble,B1,aa(nibble,fun(nibble,B1),F1,Nibble1),Nibble2) ).

tff(fact_59_char_Osimps_I2_J,axiom,
    ! [B1: $tType,Nibble2: nibble,Nibble1: nibble,F1: fun(nibble,fun(nibble,B1))] : char_case(B1,F1,char(Nibble1,Nibble2)) = aa(nibble,B1,aa(nibble,fun(nibble,B1),F1,Nibble1),Nibble2) ).

tff(fact_60_evaln__elim__cases_I2_J,axiom,
    ! [T1: state,Na: nat,S3: state,A: fun(state,nat),X: vname] :
      ( evaln(ass(X,A),S3,Na,T1)
     => ( T1 = update(S3,X,aa(state,nat,A,S3)) ) ) ).

tff(fact_61_evaln_OAssign,axiom,
    ! [Na: nat,S3: state,A: fun(state,nat),X: vname] : evaln(ass(X,A),S3,Na,update(S3,X,aa(state,nat,A,S3))) ).

tff(fact_62_evalc_OAssign,axiom,
    ! [S3: state,A: fun(state,nat),X: vname] : evalc(ass(X,A),S3,update(S3,X,aa(state,nat,A,S3))) ).

tff(fact_63_evalc__elim__cases_I2_J,axiom,
    ! [T1: state,S3: state,A: fun(state,nat),X: vname] :
      ( evalc(ass(X,A),S3,T1)
     => ( T1 = update(S3,X,aa(state,nat,A,S3)) ) ) ).

tff(fact_64_com_Osize_I15_J,axiom,
    ! [Pname3: pname] : size_size(com,body(Pname3)) = zero_zero(nat) ).

tff(fact_65_com_Osimps_I6_J,axiom,
    ! [Pname2: pname,Pname: pname] :
      ( ( body(Pname) = body(Pname2) )
    <=> ( Pname = Pname2 ) ) ).

tff(fact_66_evalc_OIfFalse,axiom,
    ! [C01: com,S13: state,C11: com,S3: state,B: fun(state,bool)] :
      ( ~ pp(aa(state,bool,B,S3))
     => ( evalc(C11,S3,S13)
       => evalc(cond(B,C01,C11),S3,S13) ) ) ).

tff(fact_67_evalc_OIfTrue,axiom,
    ! [C11: com,S13: state,C01: com,S3: state,B: fun(state,bool)] :
      ( pp(aa(state,bool,B,S3))
     => ( evalc(C01,S3,S13)
       => evalc(cond(B,C01,C11),S3,S13) ) ) ).

tff(fact_68_evalc__elim__cases_I5_J,axiom,
    ! [T1: state,S3: state,C21: com,C11: com,B: fun(state,bool)] :
      ( evalc(cond(B,C11,C21),S3,T1)
     => ( ( pp(aa(state,bool,B,S3))
         => ~ evalc(C11,S3,T1) )
       => ~ ( ~ pp(aa(state,bool,B,S3))
           => ~ evalc(C21,S3,T1) ) ) ) ).

tff(fact_69_evalc_OSemi,axiom,
    ! [S21: state,C1: com,S12: state,S0: state,C0: com] :
      ( evalc(C0,S0,S12)
     => ( evalc(C1,S12,S21)
       => evalc(semi(C0,C1),S0,S21) ) ) ).

tff(fact_70_evalc__elim__cases_I1_J,axiom,
    ! [T: state,S2: state] :
      ( evalc(skip,S2,T)
     => ( T = S2 ) ) ).

tff(fact_71_evalc_OSkip,axiom,
    ! [S2: state] : evalc(skip,S2,S2) ).

tff(fact_72_com_Osize_I7_J,axiom,
    ! [Pname3: pname] : com_size(body(Pname3)) = zero_zero(nat) ).

tff(fact_73_mem__def,axiom,
    ! [B1: $tType,A1: fun(B1,bool),X1: B1] :
      ( member(B1,X1,A1)
    <=> pp(aa(B1,bool,A1,X1)) ) ).

tff(fact_74_evaln__evalc,axiom,
    ! [T: state,N2: nat,S2: state,C: com] :
      ( evaln(C,S2,N2,T)
     => evalc(C,S2,T) ) ).

tff(fact_75_eval__eq,axiom,
    ! [T1: state,S3: state,Ca: com] :
      ( evalc(Ca,S3,T1)
    <=> ? [N1: nat] : evaln(Ca,S3,N1,T1) ) ).

tff(fact_76_com_Osimps_I55_J,axiom,
    ! [Com21: com,Com11: com,Fun: fun(state,bool),Pname2: pname] : body(Pname2) != cond(Fun,Com11,Com21) ).

tff(fact_77_com_Osimps_I54_J,axiom,
    ! [Pname2: pname,Com21: com,Com11: com,Fun: fun(state,bool)] : cond(Fun,Com11,Com21) != body(Pname2) ).

tff(fact_78_com_Osimps_I49_J,axiom,
    ! [Com2: com,Com1: com,Pname1: pname] : body(Pname1) != semi(Com1,Com2) ).

tff(fact_79_com_Osimps_I48_J,axiom,
    ! [Pname1: pname,Com2: com,Com1: com] : semi(Com1,Com2) != body(Pname1) ).

tff(fact_80_com_Osimps_I63_J,axiom,
    ! [Pname: pname,Fun1: fun(state,nat),Pname2: pname,Vname1: vname] : call(Vname1,Pname2,Fun1) != body(Pname) ).

tff(fact_81_com_Osimps_I30_J,axiom,
    ! [Pname2: pname,Fun: fun(state,nat),Vname: vname] : ass(Vname,Fun) != body(Pname2) ).

tff(fact_82_com_Osimps_I62_J,axiom,
    ! [Fun1: fun(state,nat),Pname2: pname,Vname1: vname,Pname: pname] : body(Pname) != call(Vname1,Pname2,Fun1) ).

tff(fact_83_com_Osimps_I31_J,axiom,
    ! [Fun: fun(state,nat),Vname: vname,Pname2: pname] : body(Pname2) != ass(Vname,Fun) ).

tff(fact_84_com_Osimps_I18_J,axiom,
    ! [Pname1: pname] : skip != body(Pname1) ).

tff(fact_85_com_Osimps_I19_J,axiom,
    ! [Pname1: pname] : body(Pname1) != skip ).

tff(fact_86_com_Osimps_I70_J,axiom,
    ! [B1: $tType,Pname: pname,F8: fun(vname,fun(pname,fun(fun(state,nat),B1))),F7: fun(pname,B1),F6: fun(fun(state,bool),fun(com,B1)),F5: fun(fun(state,bool),fun(com,fun(com,B1))),F4: fun(com,fun(com,B1)),F3: fun(loc,fun(fun(state,nat),fun(com,B1))),F2: fun(vname,fun(fun(state,nat),B1)),F1: B1] : com_case(B1,F1,F2,F3,F4,F5,F6,F7,F8,body(Pname)) = aa(pname,B1,F7,Pname) ).

tff(fact_87_com__det,axiom,
    ! [U: state,T: state,S2: state,C: com] :
      ( evalc(C,S2,T)
     => ( evalc(C,S2,U)
       => ( U = T ) ) ) ).

tff(fact_88_evalc__elim__cases_I4_J,axiom,
    ! [T: state,S2: state,C2: com,C1: com] :
      ( evalc(semi(C1,C2),S2,T)
     => ~ ! [S11: state] :
            ( evalc(C1,S2,S11)
           => ~ evalc(C2,S11,T) ) ) ).

tff(fact_89_evalc__evaln,axiom,
    ! [T: state,S2: state,C: com] :
      ( evalc(C,S2,T)
     => ? [N: nat] : evaln(C,S2,N,T) ) ).

tff(fact_90_WTs__elim__cases_I8_J,axiom,
    ! [A: fun(state,nat),Pa: pname,X: vname] :
      ( wt(call(X,Pa,A))
     => wt(body(Pa)) ) ).

tff(fact_91_WTs__elim__cases_I5_J,axiom,
    ! [C21: com,C11: com,B: fun(state,bool)] :
      ( wt(cond(B,C11,C21))
     => ~ ( wt(C11)
         => ~ wt(C21) ) ) ).

tff(fact_92_WTs__elim__cases_I4_J,axiom,
    ! [C2: com,C1: com] :
      ( wt(semi(C1,C2))
     => ~ ( wt(C1)
         => ~ wt(C2) ) ) ).

tff(fact_93_WT_OSkip,axiom,
    wt(skip) ).

tff(fact_94_WT_OAssign,axiom,
    ! [A: fun(state,nat),X: vname] : wt(ass(X,A)) ).

tff(fact_95_WT_OSemi,axiom,
    ! [C1: com,C0: com] :
      ( wt(C0)
     => ( wt(C1)
       => wt(semi(C0,C1)) ) ) ).

%----Arities (1)
tff(arity_Nat_Onat___Groups_Ozero,axiom,
    zero(nat) ).

%----Helper facts (2)
tff(help_pp_1_1_U,axiom,
    ~ pp(fFalse) ).

tff(help_pp_2_1_U,axiom,
    pp(fTrue) ).

%----Conjectures (1)
tff(conj_0,conjecture,
    ( hoare_1633586161_valid(a,n,hoare_1841697145triple(a,p,c,q))
  <=> ! [Z: a,S: state] :
        ( pp(aa(state,bool,aa(a,fun(state,bool),p,Z),S))
       => ! [S1: state] :
            ( evaln(c,S,n,S1)
           => pp(aa(state,bool,aa(a,fun(state,bool),q,Z),S1)) ) ) ) ).

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