TPTP Problem File: SWW525_5.p
View Solutions
- Solve Problem
%------------------------------------------------------------------------------
% File : SWW525_5 : TPTP v9.0.0. Released v6.0.0.
% Domain : Software Verification
% Problem : Hoare's Logic with Procedures line 320
% Version : Especial.
% English :
% Refs : [BN10] Boehme & Nipkow (2010), Sledgehammer: Judgement Day
% : [Bla13] Blanchette (2011), Email to Geoff Sutcliffe
% Source : [Bla13]
% Names : hoare_320 [Bla13]
% Status : ContradictoryAxioms
% Rating : 0.67 v8.1.0, 1.00 v7.5.0, 0.67 v7.4.0, 0.75 v7.1.0, 0.67 v6.4.0
% Syntax : Number of formulae : 133 ( 66 unt; 29 typ; 0 def)
% Number of atoms : 178 ( 86 equ)
% Maximal formula atoms : 6 ( 1 avg)
% Number of connectives : 140 ( 66 ~; 0 |; 9 &)
% ( 8 <=>; 57 =>; 0 <=; 0 <~>)
% Maximal formula depth : 13 ( 7 avg)
% Maximal term depth : 10 ( 1 avg)
% Number of types : 8 ( 7 usr)
% Number of type conns : 49 ( 15 >; 34 *; 0 +; 0 <<)
% Number of predicates : 6 ( 5 usr; 1 prp; 0-4 aty)
% Number of functors : 17 ( 17 usr; 6 con; 0-10 aty)
% Number of variables : 495 ( 487 !; 4 ?; 495 :)
% ( 4 !>; 0 ?*; 0 @-; 0 @+)
% SPC : TF1_THM_EQU_NAR
% Comments : This file was generated by Isabelle (most likely Sledgehammer)
% 2011-12-13 16:26:45
%------------------------------------------------------------------------------
%----Should-be-implicit typings (8)
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_Nat_Onat,type,
nat: $tType ).
tff(ty_tc_fun,type,
fun: ( $tType * $tType ) > $tType ).
%----Explicit typings (21)
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_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_OLocal,type,
local: ( loc * fun(state,nat) * 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_OWhile,type,
while: ( fun(state,bool) * com ) > com ).
tff(sy_c_Com_Ocom_Ocom__case,type,
com_case:
!>[T4: $tType] : ( ( T4 * fun(vname,fun(fun(state,nat),T4)) * fun(loc,fun(fun(state,nat),fun(com,T4))) * fun(com,fun(com,T4)) * fun(fun(state,bool),fun(com,fun(com,T4))) * fun(fun(state,bool),fun(com,T4)) * fun(pname,T4) * fun(vname,fun(pname,fun(fun(state,nat),T4))) * com ) > T4 ) ).
tff(sy_c_Com_Ocom_Ocom__rec,type,
com_rec:
!>[T4: $tType] : ( ( T4 * fun(vname,fun(fun(state,nat),T4)) * fun(loc,fun(fun(state,nat),fun(com,fun(T4,T4)))) * fun(com,fun(com,fun(T4,fun(T4,T4)))) * fun(fun(state,bool),fun(com,fun(com,fun(T4,fun(T4,T4))))) * fun(fun(state,bool),fun(com,fun(T4,T4))) * fun(pname,T4) * fun(vname,fun(pname,fun(fun(state,nat),T4))) * com ) > T4 ) ).
tff(sy_c_Hoare__Mirabelle__vtrypsmcwp_Ostate__not__singleton,type,
hoare_531836380gleton: $o ).
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_aa,type,
aa:
!>[A1: $tType,B1: $tType] : ( ( fun(A1,B1) * A1 ) > B1 ) ).
tff(sy_c_fFalse,type,
fFalse: bool ).
tff(sy_c_fTrue,type,
fTrue: bool ).
tff(sy_c_pp,type,
pp: bool > $o ).
tff(sy_v_Z,type,
z: state ).
tff(sy_v_c,type,
c: com ).
tff(sy_v_s_H,type,
s: state ).
%----Relevant facts (98)
tff(fact_0_state__not__singleton__def,axiom,
( hoare_531836380gleton
<=> ? [S4: state,T3: state] : ( S4 != T3 ) ) ).
tff(fact_1_single__stateE,axiom,
( hoare_531836380gleton
=> ! [T2: state] :
~ ! [S3: state] : ( S3 = T2 ) ) ).
tff(fact_2_com__det,axiom,
! [U: state,T1: state,S2: state,C: com] :
( evalc(C,S2,T1)
=> ( evalc(C,S2,U)
=> ( U = T1 ) ) ) ).
tff(fact_3_evalc_OSkip,axiom,
! [S2: state] : evalc(skip,S2,S2) ).
tff(fact_4_evalc__elim__cases_I1_J,axiom,
! [T1: state,S2: state] :
( evalc(skip,S2,T1)
=> ( T1 = S2 ) ) ).
tff(fact_5_evalc_OSemi,axiom,
! [S21: state,C1: com,S11: state,S0: state,C0: com] :
( evalc(C0,S0,S11)
=> ( evalc(C1,S11,S21)
=> evalc(semi(C0,C1),S0,S21) ) ) ).
tff(fact_6_evalc_OIfFalse,axiom,
! [C01: com,S12: state,C11: com,S: state,B: fun(state,bool)] :
( ~ pp(aa(state,bool,B,S))
=> ( evalc(C11,S,S12)
=> evalc(cond(B,C01,C11),S,S12) ) ) ).
tff(fact_7_evalc_OIfTrue,axiom,
! [C11: com,S12: state,C01: com,S: state,B: fun(state,bool)] :
( pp(aa(state,bool,B,S))
=> ( evalc(C01,S,S12)
=> evalc(cond(B,C01,C11),S,S12) ) ) ).
tff(fact_8_evalc__elim__cases_I5_J,axiom,
! [T: state,S: state,C2: com,C11: com,B: fun(state,bool)] :
( evalc(cond(B,C11,C2),S,T)
=> ( ( pp(aa(state,bool,B,S))
=> ~ evalc(C11,S,T) )
=> ~ ( ~ pp(aa(state,bool,B,S))
=> ~ evalc(C2,S,T) ) ) ) ).
tff(fact_9_evalc_OWhileFalse,axiom,
! [Ca: com,S: state,B: fun(state,bool)] :
( ~ pp(aa(state,bool,B,S))
=> evalc(while(B,Ca),S,S) ) ).
tff(fact_10_evalc_OWhileTrue,axiom,
! [S22: state,S12: state,Ca: com,S01: state,B: fun(state,bool)] :
( pp(aa(state,bool,B,S01))
=> ( evalc(Ca,S01,S12)
=> ( evalc(while(B,Ca),S12,S22)
=> evalc(while(B,Ca),S01,S22) ) ) ) ).
tff(fact_11_evalc__elim__cases_I4_J,axiom,
! [T1: state,S2: state,C21: com,C1: com] :
( evalc(semi(C1,C21),S2,T1)
=> ~ ! [S1: state] :
( evalc(C1,S2,S1)
=> ~ evalc(C21,S1,T1) ) ) ).
tff(fact_12_com_Osimps_I3_J,axiom,
! [Com21: com,Com11: com,Com2: com,Com1: com] :
( ( semi(Com1,Com2) = semi(Com11,Com21) )
<=> ( ( Com1 = Com11 )
& ( Com2 = Com21 ) ) ) ).
tff(fact_13_com_Osimps_I4_J,axiom,
! [Com21: com,Com11: com,Fun: fun(state,bool),Com2: com,Com1: com,Fun1: fun(state,bool)] :
( ( cond(Fun1,Com1,Com2) = cond(Fun,Com11,Com21) )
<=> ( ( Fun1 = Fun )
& ( Com1 = Com11 )
& ( Com2 = Com21 ) ) ) ).
tff(fact_14_com_Osimps_I5_J,axiom,
! [Com3: com,Fun: fun(state,bool),Com: com,Fun1: fun(state,bool)] :
( ( while(Fun1,Com) = while(Fun,Com3) )
<=> ( ( Fun1 = Fun )
& ( Com = Com3 ) ) ) ).
tff(fact_15_evalc__WHILE__case,axiom,
! [T: state,S: state,Ca: com,B: fun(state,bool)] :
( evalc(while(B,Ca),S,T)
=> ( ( ( T = S )
=> pp(aa(state,bool,B,S)) )
=> ~ ( pp(aa(state,bool,B,S))
=> ! [S1: state] :
( evalc(Ca,S,S1)
=> ~ evalc(while(B,Ca),S1,T) ) ) ) ) ).
tff(fact_16_com_Osimps_I12_J,axiom,
! [Com22: com,Com12: com] : ( skip != semi(Com12,Com22) ) ).
tff(fact_17_com_Osimps_I13_J,axiom,
! [Com22: com,Com12: com] : ( semi(Com12,Com22) != skip ) ).
tff(fact_18_com_Osimps_I14_J,axiom,
! [Com21: com,Com11: com,Fun: fun(state,bool)] : ( skip != cond(Fun,Com11,Com21) ) ).
tff(fact_19_com_Osimps_I15_J,axiom,
! [Com21: com,Com11: com,Fun: fun(state,bool)] : ( cond(Fun,Com11,Com21) != skip ) ).
tff(fact_20_com_Osimps_I44_J,axiom,
! [Com21: com,Com11: com,Fun: fun(state,bool),Com2: com,Com1: com] : ( semi(Com1,Com2) != cond(Fun,Com11,Com21) ) ).
tff(fact_21_com_Osimps_I52_J,axiom,
! [Com3: com,Fun: fun(state,bool),Com2: com,Com1: com,Fun1: fun(state,bool)] : ( cond(Fun1,Com1,Com2) != while(Fun,Com3) ) ).
tff(fact_22_com_Osimps_I53_J,axiom,
! [Com2: com,Com1: com,Fun1: fun(state,bool),Com3: com,Fun: fun(state,bool)] : ( while(Fun,Com3) != cond(Fun1,Com1,Com2) ) ).
tff(fact_23_com_Osimps_I47_J,axiom,
! [Com2: com,Com1: com,Com3: com,Fun: fun(state,bool)] : ( while(Fun,Com3) != semi(Com1,Com2) ) ).
tff(fact_24_com_Osimps_I46_J,axiom,
! [Com3: com,Fun: fun(state,bool),Com2: com,Com1: com] : ( semi(Com1,Com2) != while(Fun,Com3) ) ).
tff(fact_25_com_Osimps_I17_J,axiom,
! [Com3: com,Fun: fun(state,bool)] : ( while(Fun,Com3) != skip ) ).
tff(fact_26_com_Osimps_I16_J,axiom,
! [Com3: com,Fun: fun(state,bool)] : ( skip != while(Fun,Com3) ) ).
tff(fact_27_com_Osimps_I45_J,axiom,
! [Com2: com,Com1: com,Com21: com,Com11: com,Fun: fun(state,bool)] : ( cond(Fun,Com11,Com21) != semi(Com1,Com2) ) ).
tff(fact_28_com_Osimps_I64_J,axiom,
! [A1: $tType,F8: fun(vname,fun(pname,fun(fun(state,nat),A1))),F7: fun(pname,A1),F6: fun(fun(state,bool),fun(com,A1)),F5: fun(fun(state,bool),fun(com,fun(com,A1))),F4: fun(com,fun(com,A1)),F3: fun(loc,fun(fun(state,nat),fun(com,A1))),F2: fun(vname,fun(fun(state,nat),A1)),F1: A1] : ( com_case(A1,F1,F2,F3,F4,F5,F6,F7,F8,skip) = F1 ) ).
tff(fact_29_com_Osimps_I67_J,axiom,
! [A1: $tType,Com2: com,Com1: com,F8: fun(vname,fun(pname,fun(fun(state,nat),A1))),F7: fun(pname,A1),F6: fun(fun(state,bool),fun(com,A1)),F5: fun(fun(state,bool),fun(com,fun(com,A1))),F4: fun(com,fun(com,A1)),F3: fun(loc,fun(fun(state,nat),fun(com,A1))),F2: fun(vname,fun(fun(state,nat),A1)),F1: A1] : ( com_case(A1,F1,F2,F3,F4,F5,F6,F7,F8,semi(Com1,Com2)) = aa(com,A1,aa(com,fun(com,A1),F4,Com1),Com2) ) ).
tff(fact_30_com_Osimps_I68_J,axiom,
! [A1: $tType,Com2: com,Com1: com,Fun1: fun(state,bool),F8: fun(vname,fun(pname,fun(fun(state,nat),A1))),F7: fun(pname,A1),F6: fun(fun(state,bool),fun(com,A1)),F5: fun(fun(state,bool),fun(com,fun(com,A1))),F4: fun(com,fun(com,A1)),F3: fun(loc,fun(fun(state,nat),fun(com,A1))),F2: fun(vname,fun(fun(state,nat),A1)),F1: A1] : ( com_case(A1,F1,F2,F3,F4,F5,F6,F7,F8,cond(Fun1,Com1,Com2)) = aa(com,A1,aa(com,fun(com,A1),aa(fun(state,bool),fun(com,fun(com,A1)),F5,Fun1),Com1),Com2) ) ).
tff(fact_31_com_Osimps_I69_J,axiom,
! [A1: $tType,Com: com,Fun1: fun(state,bool),F8: fun(vname,fun(pname,fun(fun(state,nat),A1))),F7: fun(pname,A1),F6: fun(fun(state,bool),fun(com,A1)),F5: fun(fun(state,bool),fun(com,fun(com,A1))),F4: fun(com,fun(com,A1)),F3: fun(loc,fun(fun(state,nat),fun(com,A1))),F2: fun(vname,fun(fun(state,nat),A1)),F1: A1] : ( com_case(A1,F1,F2,F3,F4,F5,F6,F7,F8,while(Fun1,Com)) = aa(com,A1,aa(fun(state,bool),fun(com,A1),F6,Fun1),Com) ) ).
tff(fact_32_WTs__elim__cases_I4_J,axiom,
! [C21: com,C1: com] :
( wt(semi(C1,C21))
=> ~ ( wt(C1)
=> ~ wt(C21) ) ) ).
tff(fact_33_WTs__elim__cases_I5_J,axiom,
! [C2: com,C11: com,B: fun(state,bool)] :
( wt(cond(B,C11,C2))
=> ~ ( wt(C11)
=> ~ wt(C2) ) ) ).
tff(fact_34_WTs__elim__cases_I6_J,axiom,
! [Ca: com,B: fun(state,bool)] :
( wt(while(B,Ca))
=> wt(Ca) ) ).
tff(fact_35_While,axiom,
! [B: fun(state,bool),Ca: com] :
( wt(Ca)
=> wt(while(B,Ca)) ) ).
tff(fact_36_WT_OIf,axiom,
! [B: fun(state,bool),C11: com,C01: com] :
( wt(C01)
=> ( wt(C11)
=> wt(cond(B,C01,C11)) ) ) ).
tff(fact_37_WT_OSemi,axiom,
! [C1: com,C0: com] :
( wt(C0)
=> ( wt(C1)
=> wt(semi(C0,C1)) ) ) ).
tff(fact_38_WT_OSkip,axiom,
wt(skip) ).
tff(fact_39_WTs__elim__cases_I3_J,axiom,
! [Ca: com,A: fun(state,nat),Y: loc] :
( wt(local(Y,A,Ca))
=> wt(Ca) ) ).
tff(fact_40_com_Orecs_I1_J,axiom,
! [A1: $tType,F8: fun(vname,fun(pname,fun(fun(state,nat),A1))),F7: fun(pname,A1),F6: fun(fun(state,bool),fun(com,fun(A1,A1))),F5: fun(fun(state,bool),fun(com,fun(com,fun(A1,fun(A1,A1))))),F4: fun(com,fun(com,fun(A1,fun(A1,A1)))),F3: fun(loc,fun(fun(state,nat),fun(com,fun(A1,A1)))),F2: fun(vname,fun(fun(state,nat),A1)),F1: A1] : ( com_rec(A1,F1,F2,F3,F4,F5,F6,F7,F8,skip) = F1 ) ).
tff(fact_41_com_Orecs_I4_J,axiom,
! [A1: $tType,Com2: com,Com1: com,F8: fun(vname,fun(pname,fun(fun(state,nat),A1))),F7: fun(pname,A1),F6: fun(fun(state,bool),fun(com,fun(A1,A1))),F5: fun(fun(state,bool),fun(com,fun(com,fun(A1,fun(A1,A1))))),F4: fun(com,fun(com,fun(A1,fun(A1,A1)))),F3: fun(loc,fun(fun(state,nat),fun(com,fun(A1,A1)))),F2: fun(vname,fun(fun(state,nat),A1)),F1: A1] : ( com_rec(A1,F1,F2,F3,F4,F5,F6,F7,F8,semi(Com1,Com2)) = aa(A1,A1,aa(A1,fun(A1,A1),aa(com,fun(A1,fun(A1,A1)),aa(com,fun(com,fun(A1,fun(A1,A1))),F4,Com1),Com2),com_rec(A1,F1,F2,F3,F4,F5,F6,F7,F8,Com1)),com_rec(A1,F1,F2,F3,F4,F5,F6,F7,F8,Com2)) ) ).
tff(fact_42_com_Orecs_I5_J,axiom,
! [A1: $tType,Com2: com,Com1: com,Fun1: fun(state,bool),F8: fun(vname,fun(pname,fun(fun(state,nat),A1))),F7: fun(pname,A1),F6: fun(fun(state,bool),fun(com,fun(A1,A1))),F5: fun(fun(state,bool),fun(com,fun(com,fun(A1,fun(A1,A1))))),F4: fun(com,fun(com,fun(A1,fun(A1,A1)))),F3: fun(loc,fun(fun(state,nat),fun(com,fun(A1,A1)))),F2: fun(vname,fun(fun(state,nat),A1)),F1: A1] : ( com_rec(A1,F1,F2,F3,F4,F5,F6,F7,F8,cond(Fun1,Com1,Com2)) = aa(A1,A1,aa(A1,fun(A1,A1),aa(com,fun(A1,fun(A1,A1)),aa(com,fun(com,fun(A1,fun(A1,A1))),aa(fun(state,bool),fun(com,fun(com,fun(A1,fun(A1,A1)))),F5,Fun1),Com1),Com2),com_rec(A1,F1,F2,F3,F4,F5,F6,F7,F8,Com1)),com_rec(A1,F1,F2,F3,F4,F5,F6,F7,F8,Com2)) ) ).
tff(fact_43_com_Osimps_I1_J,axiom,
! [Fun: fun(state,nat),Vname: vname,Fun1: fun(state,nat),Vname1: vname] :
( ( ass(Vname1,Fun1) = ass(Vname,Fun) )
<=> ( ( Vname1 = Vname )
& ( Fun1 = Fun ) ) ) ).
tff(fact_44_com_Osimps_I2_J,axiom,
! [Com3: com,Fun: fun(state,nat),Loc1: loc,Com: com,Fun1: fun(state,nat),Loc: loc] :
( ( local(Loc,Fun1,Com) = local(Loc1,Fun,Com3) )
<=> ( ( Loc = Loc1 )
& ( Fun1 = Fun )
& ( Com = Com3 ) ) ) ).
tff(fact_45_com_Osimps_I22_J,axiom,
! [Com3: com,Fun: fun(state,nat),Loc1: loc,Fun1: fun(state,nat),Vname1: vname] : ( ass(Vname1,Fun1) != local(Loc1,Fun,Com3) ) ).
tff(fact_46_com_Osimps_I23_J,axiom,
! [Fun1: fun(state,nat),Vname1: vname,Com3: com,Fun: fun(state,nat),Loc1: loc] : ( local(Loc1,Fun,Com3) != ass(Vname1,Fun1) ) ).
tff(fact_47_com_Orecs_I2_J,axiom,
! [A1: $tType,Fun1: fun(state,nat),Vname1: vname,F8: fun(vname,fun(pname,fun(fun(state,nat),A1))),F7: fun(pname,A1),F6: fun(fun(state,bool),fun(com,fun(A1,A1))),F5: fun(fun(state,bool),fun(com,fun(com,fun(A1,fun(A1,A1))))),F4: fun(com,fun(com,fun(A1,fun(A1,A1)))),F3: fun(loc,fun(fun(state,nat),fun(com,fun(A1,A1)))),F2: fun(vname,fun(fun(state,nat),A1)),F1: A1] : ( com_rec(A1,F1,F2,F3,F4,F5,F6,F7,F8,ass(Vname1,Fun1)) = aa(fun(state,nat),A1,aa(vname,fun(fun(state,nat),A1),F2,Vname1),Fun1) ) ).
tff(fact_48_com_Orecs_I3_J,axiom,
! [A1: $tType,Com: com,Fun1: fun(state,nat),Loc: loc,F8: fun(vname,fun(pname,fun(fun(state,nat),A1))),F7: fun(pname,A1),F6: fun(fun(state,bool),fun(com,fun(A1,A1))),F5: fun(fun(state,bool),fun(com,fun(com,fun(A1,fun(A1,A1))))),F4: fun(com,fun(com,fun(A1,fun(A1,A1)))),F3: fun(loc,fun(fun(state,nat),fun(com,fun(A1,A1)))),F2: fun(vname,fun(fun(state,nat),A1)),F1: A1] : ( com_rec(A1,F1,F2,F3,F4,F5,F6,F7,F8,local(Loc,Fun1,Com)) = aa(A1,A1,aa(com,fun(A1,A1),aa(fun(state,nat),fun(com,fun(A1,A1)),aa(loc,fun(fun(state,nat),fun(com,fun(A1,A1))),F3,Loc),Fun1),Com),com_rec(A1,F1,F2,F3,F4,F5,F6,F7,F8,Com)) ) ).
tff(fact_49_WT_OAssign,axiom,
! [A: fun(state,nat),X: vname] : wt(ass(X,A)) ).
tff(fact_50_WT_OLocal,axiom,
! [A: fun(state,nat),Y: loc,Ca: com] :
( wt(Ca)
=> wt(local(Y,A,Ca)) ) ).
tff(fact_51_com_Osimps_I38_J,axiom,
! [Com3: com,Fun: fun(state,bool),Com: com,Fun1: fun(state,nat),Loc: loc] : ( local(Loc,Fun1,Com) != while(Fun,Com3) ) ).
tff(fact_52_com_Osimps_I39_J,axiom,
! [Com: com,Fun1: fun(state,nat),Loc: loc,Com3: com,Fun: fun(state,bool)] : ( while(Fun,Com3) != local(Loc,Fun1,Com) ) ).
tff(fact_53_com_Osimps_I29_J,axiom,
! [Fun1: fun(state,nat),Vname1: vname,Com3: com,Fun: fun(state,bool)] : ( while(Fun,Com3) != ass(Vname1,Fun1) ) ).
tff(fact_54_com_Osimps_I28_J,axiom,
! [Com3: com,Fun: fun(state,bool),Fun1: fun(state,nat),Vname1: vname] : ( ass(Vname1,Fun1) != while(Fun,Com3) ) ).
tff(fact_55_com_Osimps_I36_J,axiom,
! [Com21: com,Com11: com,Fun: fun(state,bool),Com: com,Fun1: fun(state,nat),Loc: loc] : ( local(Loc,Fun1,Com) != cond(Fun,Com11,Com21) ) ).
tff(fact_56_com_Osimps_I37_J,axiom,
! [Com: com,Fun1: fun(state,nat),Loc: loc,Com21: com,Com11: com,Fun: fun(state,bool)] : ( cond(Fun,Com11,Com21) != local(Loc,Fun1,Com) ) ).
tff(fact_57_com_Osimps_I27_J,axiom,
! [Fun1: fun(state,nat),Vname1: vname,Com21: com,Com11: com,Fun: fun(state,bool)] : ( cond(Fun,Com11,Com21) != ass(Vname1,Fun1) ) ).
tff(fact_58_com_Osimps_I26_J,axiom,
! [Com21: com,Com11: com,Fun: fun(state,bool),Fun1: fun(state,nat),Vname1: vname] : ( ass(Vname1,Fun1) != cond(Fun,Com11,Com21) ) ).
tff(fact_59_com_Osimps_I34_J,axiom,
! [Com21: com,Com11: com,Com: com,Fun1: fun(state,nat),Loc: loc] : ( local(Loc,Fun1,Com) != semi(Com11,Com21) ) ).
tff(fact_60_com_Osimps_I35_J,axiom,
! [Com: com,Fun1: fun(state,nat),Loc: loc,Com21: com,Com11: com] : ( semi(Com11,Com21) != local(Loc,Fun1,Com) ) ).
tff(fact_61_com_Osimps_I25_J,axiom,
! [Fun1: fun(state,nat),Vname1: vname,Com21: com,Com11: com] : ( semi(Com11,Com21) != ass(Vname1,Fun1) ) ).
tff(fact_62_com_Osimps_I24_J,axiom,
! [Com21: com,Com11: com,Fun1: fun(state,nat),Vname1: vname] : ( ass(Vname1,Fun1) != semi(Com11,Com21) ) ).
tff(fact_63_com_Osimps_I11_J,axiom,
! [Com3: com,Fun: fun(state,nat),Loc1: loc] : ( local(Loc1,Fun,Com3) != skip ) ).
tff(fact_64_com_Osimps_I9_J,axiom,
! [Fun: fun(state,nat),Vname: vname] : ( ass(Vname,Fun) != skip ) ).
tff(fact_65_com_Osimps_I10_J,axiom,
! [Com3: com,Fun: fun(state,nat),Loc1: loc] : ( skip != local(Loc1,Fun,Com3) ) ).
tff(fact_66_com_Osimps_I8_J,axiom,
! [Fun: fun(state,nat),Vname: vname] : ( skip != ass(Vname,Fun) ) ).
tff(fact_67_com_Osimps_I65_J,axiom,
! [A1: $tType,Fun1: fun(state,nat),Vname1: vname,F8: fun(vname,fun(pname,fun(fun(state,nat),A1))),F7: fun(pname,A1),F6: fun(fun(state,bool),fun(com,A1)),F5: fun(fun(state,bool),fun(com,fun(com,A1))),F4: fun(com,fun(com,A1)),F3: fun(loc,fun(fun(state,nat),fun(com,A1))),F2: fun(vname,fun(fun(state,nat),A1)),F1: A1] : ( com_case(A1,F1,F2,F3,F4,F5,F6,F7,F8,ass(Vname1,Fun1)) = aa(fun(state,nat),A1,aa(vname,fun(fun(state,nat),A1),F2,Vname1),Fun1) ) ).
tff(fact_68_com_Osimps_I66_J,axiom,
! [A1: $tType,Com: com,Fun1: fun(state,nat),Loc: loc,F8: fun(vname,fun(pname,fun(fun(state,nat),A1))),F7: fun(pname,A1),F6: fun(fun(state,bool),fun(com,A1)),F5: fun(fun(state,bool),fun(com,fun(com,A1))),F4: fun(com,fun(com,A1)),F3: fun(loc,fun(fun(state,nat),fun(com,A1))),F2: fun(vname,fun(fun(state,nat),A1)),F1: A1] : ( com_case(A1,F1,F2,F3,F4,F5,F6,F7,F8,local(Loc,Fun1,Com)) = aa(com,A1,aa(fun(state,nat),fun(com,A1),aa(loc,fun(fun(state,nat),fun(com,A1)),F3,Loc),Fun1),Com) ) ).
tff(fact_69_com_Orecs_I6_J,axiom,
! [A1: $tType,Com: com,Fun1: fun(state,bool),F8: fun(vname,fun(pname,fun(fun(state,nat),A1))),F7: fun(pname,A1),F6: fun(fun(state,bool),fun(com,fun(A1,A1))),F5: fun(fun(state,bool),fun(com,fun(com,fun(A1,fun(A1,A1))))),F4: fun(com,fun(com,fun(A1,fun(A1,A1)))),F3: fun(loc,fun(fun(state,nat),fun(com,fun(A1,A1)))),F2: fun(vname,fun(fun(state,nat),A1)),F1: A1] : ( com_rec(A1,F1,F2,F3,F4,F5,F6,F7,F8,while(Fun1,Com)) = aa(A1,A1,aa(com,fun(A1,A1),aa(fun(state,bool),fun(com,fun(A1,A1)),F6,Fun1),Com),com_rec(A1,F1,F2,F3,F4,F5,F6,F7,F8,Com)) ) ).
tff(fact_70_evalc__elim__cases_I2_J,axiom,
! [T: state,S: state,A: fun(state,nat),X: vname] :
( evalc(ass(X,A),S,T)
=> ( T = update(S,X,aa(state,nat,A,S)) ) ) ).
tff(fact_71_evalc_OAssign,axiom,
! [S: state,A: fun(state,nat),X: vname] : evalc(ass(X,A),S,update(S,X,aa(state,nat,A,S))) ).
tff(fact_72_com_Osimps_I71_J,axiom,
! [A1: $tType,Fun1: fun(state,nat),Pname1: pname,Vname1: vname,F8: fun(vname,fun(pname,fun(fun(state,nat),A1))),F7: fun(pname,A1),F6: fun(fun(state,bool),fun(com,A1)),F5: fun(fun(state,bool),fun(com,fun(com,A1))),F4: fun(com,fun(com,A1)),F3: fun(loc,fun(fun(state,nat),fun(com,A1))),F2: fun(vname,fun(fun(state,nat),A1)),F1: A1] : ( com_case(A1,F1,F2,F3,F4,F5,F6,F7,F8,call(Vname1,Pname1,Fun1)) = aa(fun(state,nat),A1,aa(pname,fun(fun(state,nat),A1),aa(vname,fun(pname,fun(fun(state,nat),A1)),F8,Vname1),Pname1),Fun1) ) ).
tff(fact_73_evaln__elim__cases_I1_J,axiom,
! [T1: state,N1: nat,S2: state] :
( evaln(skip,S2,N1,T1)
=> ( T1 = S2 ) ) ).
tff(fact_74_com_Osimps_I7_J,axiom,
! [Fun: fun(state,nat),Pname: pname,Vname: vname,Fun1: fun(state,nat),Pname1: pname,Vname1: vname] :
( ( call(Vname1,Pname1,Fun1) = call(Vname,Pname,Fun) )
<=> ( ( Vname1 = Vname )
& ( Pname1 = Pname )
& ( Fun1 = Fun ) ) ) ).
tff(fact_75_evaln_OWhileFalse,axiom,
! [N2: nat,Ca: com,S: state,B: fun(state,bool)] :
( ~ pp(aa(state,bool,B,S))
=> evaln(while(B,Ca),S,N2,S) ) ).
tff(fact_76_evaln_OWhileTrue,axiom,
! [S22: state,S12: state,N2: nat,Ca: com,S01: state,B: fun(state,bool)] :
( pp(aa(state,bool,B,S01))
=> ( evaln(Ca,S01,N2,S12)
=> ( evaln(while(B,Ca),S12,N2,S22)
=> evaln(while(B,Ca),S01,N2,S22) ) ) ) ).
tff(fact_77_evaln_OIfFalse,axiom,
! [C01: com,S12: state,N2: nat,C11: com,S: state,B: fun(state,bool)] :
( ~ pp(aa(state,bool,B,S))
=> ( evaln(C11,S,N2,S12)
=> evaln(cond(B,C01,C11),S,N2,S12) ) ) ).
tff(fact_78_evaln_OIfTrue,axiom,
! [C11: com,S12: state,N2: nat,C01: com,S: state,B: fun(state,bool)] :
( pp(aa(state,bool,B,S))
=> ( evaln(C01,S,N2,S12)
=> evaln(cond(B,C01,C11),S,N2,S12) ) ) ).
tff(fact_79_evaln__elim__cases_I5_J,axiom,
! [T: state,N2: nat,S: state,C2: com,C11: com,B: fun(state,bool)] :
( evaln(cond(B,C11,C2),S,N2,T)
=> ( ( pp(aa(state,bool,B,S))
=> ~ evaln(C11,S,N2,T) )
=> ~ ( ~ pp(aa(state,bool,B,S))
=> ~ evaln(C2,S,N2,T) ) ) ) ).
tff(fact_80_evaln_OSemi,axiom,
! [S21: state,C1: com,S11: state,N1: nat,S0: state,C0: com] :
( evaln(C0,S0,N1,S11)
=> ( evaln(C1,S11,N1,S21)
=> evaln(semi(C0,C1),S0,N1,S21) ) ) ).
tff(fact_81_evaln_OSkip,axiom,
! [N1: nat,S2: state] : evaln(skip,S2,N1,S2) ).
tff(fact_82_evaln_OAssign,axiom,
! [N2: nat,S: state,A: fun(state,nat),X: vname] : evaln(ass(X,A),S,N2,update(S,X,aa(state,nat,A,S))) ).
tff(fact_83_evaln__elim__cases_I2_J,axiom,
! [T: state,N2: nat,S: state,A: fun(state,nat),X: vname] :
( evaln(ass(X,A),S,N2,T)
=> ( T = update(S,X,aa(state,nat,A,S)) ) ) ).
tff(fact_84_evaln__evalc,axiom,
! [T1: state,N1: nat,S2: state,C: com] :
( evaln(C,S2,N1,T1)
=> evalc(C,S2,T1) ) ).
tff(fact_85_eval__eq,axiom,
! [T: state,S: state,Ca: com] :
( evalc(Ca,S,T)
<=> ? [N: nat] : evaln(Ca,S,N,T) ) ).
tff(fact_86_com_Osimps_I60_J,axiom,
! [Fun: fun(state,nat),Pname: pname,Vname: vname,Com: com,Fun1: fun(state,bool)] : ( while(Fun1,Com) != call(Vname,Pname,Fun) ) ).
tff(fact_87_com_Osimps_I61_J,axiom,
! [Com: com,Fun1: fun(state,bool),Fun: fun(state,nat),Pname: pname,Vname: vname] : ( call(Vname,Pname,Fun) != while(Fun1,Com) ) ).
tff(fact_88_com_Osimps_I57_J,axiom,
! [Com2: com,Com1: com,Fun1: fun(state,bool),Fun: fun(state,nat),Pname: pname,Vname: vname] : ( call(Vname,Pname,Fun) != cond(Fun1,Com1,Com2) ) ).
tff(fact_89_com_Osimps_I56_J,axiom,
! [Fun: fun(state,nat),Pname: pname,Vname: vname,Com2: com,Com1: com,Fun1: fun(state,bool)] : ( cond(Fun1,Com1,Com2) != call(Vname,Pname,Fun) ) ).
tff(fact_90_com_Osimps_I50_J,axiom,
! [Fun: fun(state,nat),Pname: pname,Vname: vname,Com2: com,Com1: com] : ( semi(Com1,Com2) != call(Vname,Pname,Fun) ) ).
tff(fact_91_com_Osimps_I51_J,axiom,
! [Com2: com,Com1: com,Fun: fun(state,nat),Pname: pname,Vname: vname] : ( call(Vname,Pname,Fun) != semi(Com1,Com2) ) ).
tff(fact_92_com_Osimps_I42_J,axiom,
! [Fun: fun(state,nat),Pname: pname,Vname: vname,Com: com,Fun1: fun(state,nat),Loc: loc] : ( local(Loc,Fun1,Com) != call(Vname,Pname,Fun) ) ).
tff(fact_93_com_Osimps_I43_J,axiom,
! [Com: com,Fun1: fun(state,nat),Loc: loc,Fun: fun(state,nat),Pname: pname,Vname: vname] : ( call(Vname,Pname,Fun) != local(Loc,Fun1,Com) ) ).
tff(fact_94_com_Osimps_I33_J,axiom,
! [Fun1: fun(state,nat),Vname1: vname,Fun: fun(state,nat),Pname: pname,Vname: vname] : ( call(Vname,Pname,Fun) != ass(Vname1,Fun1) ) ).
tff(fact_95_com_Osimps_I32_J,axiom,
! [Fun: fun(state,nat),Pname: pname,Vname: vname,Fun1: fun(state,nat),Vname1: vname] : ( ass(Vname1,Fun1) != call(Vname,Pname,Fun) ) ).
tff(fact_96_com_Osimps_I20_J,axiom,
! [Fun: fun(state,nat),Pname: pname,Vname: vname] : ( skip != call(Vname,Pname,Fun) ) ).
tff(fact_97_com_Osimps_I21_J,axiom,
! [Fun: fun(state,nat),Pname: pname,Vname: vname] : ( call(Vname,Pname,Fun) != skip ) ).
%----Helper facts (2)
tff(help_pp_1_1_U,axiom,
~ pp(fFalse) ).
tff(help_pp_2_1_U,axiom,
pp(fTrue) ).
%----Conjectures (4)
tff(conj_0,hypothesis,
hoare_531836380gleton ).
tff(conj_1,hypothesis,
! [Z: state] :
( ! [S1: state] :
( evalc(c,z,S1)
=> ( Z = S1 ) )
=> ( Z = s ) ) ).
tff(conj_2,hypothesis,
~ ? [X1: state] : evalc(c,z,X1) ).
tff(conj_3,conjecture,
evalc(c,z,s) ).
%------------------------------------------------------------------------------