TPTP Problem File: SWW505_5.p
View Solutions
- Solve Problem
%------------------------------------------------------------------------------
% File : SWW505_5 : TPTP v9.0.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)) ) ) ) ).
%------------------------------------------------------------------------------