% TIMEFORMAT='%3R'; { time (exec 2>&1; /home/martin/bin/satallax -E /home/martin/.isabelle/contrib/e-2.5-1/x86_64-linux/eprover -p tstp -t 5 /home/martin/judgement-day/tptp-thf/tptp/Hoare/prob_126__3250530_1 ) ; }
% This file was generated by Isabelle (most likely Sledgehammer)
% 2020-12-16 14:12:11.829

% Could-be-implicit typings (11)
thf(ty_n_t__Set__Oset_It__Hoare____Mirabelle____raqjowkjvm__Otriple_Itf__a_J_J, type,
    set_Ho137910533iple_a : $tType).
thf(ty_n_t__Hoare____Mirabelle____raqjowkjvm__Otriple_Itf__a_J, type,
    hoare_1678595023iple_a : $tType).
thf(ty_n_t__Option__Ooption_It__Com__Ocom_J, type,
    option_com : $tType).
thf(ty_n_t__Set__Oset_It__Com__Ocom_J, type,
    set_com : $tType).
thf(ty_n_t__Com__Ovname, type,
    vname : $tType).
thf(ty_n_t__Com__Ostate, type,
    state : $tType).
thf(ty_n_t__Com__Opname, type,
    pname : $tType).
thf(ty_n_t__Nat__Onat, type,
    nat : $tType).
thf(ty_n_t__Com__Oloc, type,
    loc : $tType).
thf(ty_n_t__Com__Ocom, type,
    com : $tType).
thf(ty_n_tf__a, type,
    a : $tType).

% Explicit typings (30)
thf(sy_c_Com_OWT, type,
    wt : com > $o).
thf(sy_c_Com_OWT__bodies, type,
    wT_bodies : $o).
thf(sy_c_Com_Obody, type,
    body : pname > option_com).
thf(sy_c_Com_Ocom_OAss, type,
    ass : vname > (state > nat) > com).
thf(sy_c_Com_Ocom_OBODY, type,
    body2 : pname > com).
thf(sy_c_Com_Ocom_OCall, type,
    call : vname > pname > (state > nat) > com).
thf(sy_c_Com_Ocom_OCond, type,
    cond : (state > $o) > com > com > com).
thf(sy_c_Com_Ocom_OLocal, type,
    local : loc > (state > nat) > com > com).
thf(sy_c_Com_Ocom_OSKIP, type,
    skip : com).
thf(sy_c_Com_Ocom_OSemi, type,
    semi : com > com > com).
thf(sy_c_Com_Ocom_OWhile, type,
    while : (state > $o) > com > com).
thf(sy_c_Hoare__Mirabelle__raqjowkjvm_Ohoare__valids_001tf__a, type,
    hoare_1775499016lids_a : set_Ho137910533iple_a > set_Ho137910533iple_a > $o).
thf(sy_c_Hoare__Mirabelle__raqjowkjvm_Ostate__not__singleton, type,
    hoare_405891322gleton : $o).
thf(sy_c_Hoare__Mirabelle__raqjowkjvm_Otriple_Otriple_001tf__a, type,
    hoare_719046530iple_a : (a > state > $o) > com > (a > state > $o) > hoare_1678595023iple_a).
thf(sy_c_Hoare__Mirabelle__raqjowkjvm_Otriple__valid_001tf__a, type,
    hoare_1926814542alid_a : nat > hoare_1678595023iple_a > $o).
thf(sy_c_Nat_OSuc, type,
    suc : nat > nat).
thf(sy_c_Natural_Oevalc, type,
    evalc : com > state > state > $o).
thf(sy_c_Natural_Oevaln, type,
    evaln : com > state > nat > state > $o).
thf(sy_c_Natural_Oupdate, type,
    update : state > vname > nat > state).
thf(sy_c_Option_Ooption_ONone_001t__Com__Ocom, type,
    none_com : option_com).
thf(sy_c_Option_Ooption_OSome_001t__Com__Ocom, type,
    some_com : com > option_com).
thf(sy_c_Option_Ooption_Oset__option_001t__Com__Ocom, type,
    set_option_com : option_com > set_com).
thf(sy_c_Option_Ooption_Othe_001t__Com__Ocom, type,
    the_com : option_com > com).
thf(sy_c_Orderings_Obot__class_Obot_001t__Set__Oset_It__Com__Ocom_J, type,
    bot_bot_set_com : set_com).
thf(sy_c_member_001t__Com__Ocom, type,
    member_com : com > set_com > $o).
thf(sy_c_member_001t__Hoare____Mirabelle____raqjowkjvm__Otriple_Itf__a_J, type,
    member1332298086iple_a : hoare_1678595023iple_a > set_Ho137910533iple_a > $o).
thf(sy_v_P, type,
    p : a > state > $o).
thf(sy_v_Q, type,
    q : a > state > $o).
thf(sy_v_c, type,
    c : com).
thf(sy_v_n, type,
    n : nat).

% Relevant facts (110)
thf(fact_0_triple_Oinject, axiom,
    ((![X1 : a > state > $o, X2 : com, X3 : a > state > $o, Y1 : a > state > $o, Y2 : com, Y3 : a > state > $o]: (((hoare_719046530iple_a @ X1 @ X2 @ X3) = (hoare_719046530iple_a @ Y1 @ Y2 @ Y3)) = (((X1 = Y1)) & ((((X2 = Y2)) & ((X3 = Y3))))))))). % triple.inject
thf(fact_1_triple_Oinduct, axiom,
    ((![P : hoare_1678595023iple_a > $o, Triple : hoare_1678595023iple_a]: ((![X1a : a > state > $o, X2a : com, X3a : a > state > $o]: (P @ (hoare_719046530iple_a @ X1a @ X2a @ X3a))) => (P @ Triple))))). % triple.induct
thf(fact_2_triple_Oexhaust, axiom,
    ((![Y : hoare_1678595023iple_a]: (~ ((![X12 : a > state > $o, X22 : com, X32 : a > state > $o]: (~ ((Y = (hoare_719046530iple_a @ X12 @ X22 @ X32)))))))))). % triple.exhaust
thf(fact_3_evaln__max2, axiom,
    ((![C1 : com, S1 : state, N1 : nat, T1 : state, C2 : com, S2 : state, N2 : nat, T2 : state]: ((evaln @ C1 @ S1 @ N1 @ T1) => ((evaln @ C2 @ S2 @ N2 @ T2) => (?[N : nat]: ((evaln @ C1 @ S1 @ N @ T1) & (evaln @ C2 @ S2 @ N @ T2)))))))). % evaln_max2
thf(fact_4_hoare__valids__def, axiom,
    ((hoare_1775499016lids_a = (^[G : set_Ho137910533iple_a]: (^[Ts : set_Ho137910533iple_a]: (![N3 : nat]: (((![X : hoare_1678595023iple_a]: (((member1332298086iple_a @ X @ G)) => ((hoare_1926814542alid_a @ N3 @ X))))) => ((![X : hoare_1678595023iple_a]: (((member1332298086iple_a @ X @ Ts)) => ((hoare_1926814542alid_a @ N3 @ X)))))))))))). % hoare_valids_def
thf(fact_5_single__stateE, axiom,
    ((hoare_405891322gleton => (![T : state]: (~ ((![S : state]: (S = T)))))))). % single_stateE
thf(fact_6_state__not__singleton__def, axiom,
    ((hoare_405891322gleton = (?[S3 : state]: (?[T3 : state]: (~ ((S3 = T3)))))))). % state_not_singleton_def
thf(fact_7_evaln__elim__cases_I1_J, axiom,
    ((![S4 : state, N4 : nat, T4 : state]: ((evaln @ skip @ S4 @ N4 @ T4) => (T4 = S4))))). % evaln_elim_cases(1)
thf(fact_8_evaln_OSkip, axiom,
    ((![S4 : state, N4 : nat]: (evaln @ skip @ S4 @ N4 @ S4)))). % evaln.Skip
thf(fact_9_evaln__elim__cases_I4_J, axiom,
    ((![C1 : com, C2 : com, S4 : state, N4 : nat, T4 : state]: ((evaln @ (semi @ C1 @ C2) @ S4 @ N4 @ T4) => (~ ((![S12 : state]: ((evaln @ C1 @ S4 @ N4 @ S12) => (~ ((evaln @ C2 @ S12 @ N4 @ T4))))))))))). % evaln_elim_cases(4)
thf(fact_10_evaln_OSemi, axiom,
    ((![C0 : com, S0 : state, N4 : nat, S1 : state, C1 : com, S2 : state]: ((evaln @ C0 @ S0 @ N4 @ S1) => ((evaln @ C1 @ S1 @ N4 @ S2) => (evaln @ (semi @ C0 @ C1) @ S0 @ N4 @ S2)))))). % evaln.Semi
thf(fact_11_evaln__elim__cases_I5_J, axiom,
    ((![B : state > $o, C1 : com, C2 : com, S4 : state, N4 : nat, T4 : state]: ((evaln @ (cond @ B @ C1 @ C2) @ S4 @ N4 @ T4) => (((B @ S4) => (~ ((evaln @ C1 @ S4 @ N4 @ T4)))) => (~ (((~ ((B @ S4))) => (~ ((evaln @ C2 @ S4 @ N4 @ T4))))))))))). % evaln_elim_cases(5)
thf(fact_12_evaln_OIfTrue, axiom,
    ((![B : state > $o, S4 : state, C0 : com, N4 : nat, S1 : state, C1 : com]: ((B @ S4) => ((evaln @ C0 @ S4 @ N4 @ S1) => (evaln @ (cond @ B @ C0 @ C1) @ S4 @ N4 @ S1)))))). % evaln.IfTrue
thf(fact_13_evaln_OIfFalse, axiom,
    ((![B : state > $o, S4 : state, C1 : com, N4 : nat, S1 : state, C0 : com]: ((~ ((B @ S4))) => ((evaln @ C1 @ S4 @ N4 @ S1) => (evaln @ (cond @ B @ C0 @ C1) @ S4 @ N4 @ S1)))))). % evaln.IfFalse
thf(fact_14_com_Oinject_I3_J, axiom,
    ((![X41 : com, X42 : com, Y41 : com, Y42 : com]: (((semi @ X41 @ X42) = (semi @ Y41 @ Y42)) = (((X41 = Y41)) & ((X42 = Y42))))))). % com.inject(3)
thf(fact_15_com_Oinject_I4_J, axiom,
    ((![X51 : state > $o, X52 : com, X53 : com, Y51 : state > $o, Y52 : com, Y53 : com]: (((cond @ X51 @ X52 @ X53) = (cond @ Y51 @ Y52 @ Y53)) = (((X51 = Y51)) & ((((X52 = Y52)) & ((X53 = Y53))))))))). % com.inject(4)
thf(fact_16_com_Odistinct_I5_J, axiom,
    ((![X41 : com, X42 : com]: (~ ((skip = (semi @ X41 @ X42))))))). % com.distinct(5)
thf(fact_17_com_Odistinct_I7_J, axiom,
    ((![X51 : state > $o, X52 : com, X53 : com]: (~ ((skip = (cond @ X51 @ X52 @ X53))))))). % com.distinct(7)
thf(fact_18_com_Odistinct_I37_J, axiom,
    ((![X41 : com, X42 : com, X51 : state > $o, X52 : com, X53 : com]: (~ (((semi @ X41 @ X42) = (cond @ X51 @ X52 @ X53))))))). % com.distinct(37)
thf(fact_19_evalc__elim__cases_I1_J, axiom,
    ((![S4 : state, T4 : state]: ((evalc @ skip @ S4 @ T4) => (T4 = S4))))). % evalc_elim_cases(1)
thf(fact_20_evalc_OSkip, axiom,
    ((![S4 : state]: (evalc @ skip @ S4 @ S4)))). % evalc.Skip
thf(fact_21_evalc__elim__cases_I4_J, axiom,
    ((![C1 : com, C2 : com, S4 : state, T4 : state]: ((evalc @ (semi @ C1 @ C2) @ S4 @ T4) => (~ ((![S12 : state]: ((evalc @ C1 @ S4 @ S12) => (~ ((evalc @ C2 @ S12 @ T4))))))))))). % evalc_elim_cases(4)
thf(fact_22_com__det, axiom,
    ((![C : com, S4 : state, T4 : state, U : state]: ((evalc @ C @ S4 @ T4) => ((evalc @ C @ S4 @ U) => (U = T4)))))). % com_det
thf(fact_23_eval__eq, axiom,
    ((evalc = (^[C3 : com]: (^[S3 : state]: (^[T3 : state]: (?[N3 : nat]: (evaln @ C3 @ S3 @ N3 @ T3)))))))). % eval_eq
thf(fact_24_evalc__evaln, axiom,
    ((![C : com, S4 : state, T4 : state]: ((evalc @ C @ S4 @ T4) => (?[N : nat]: (evaln @ C @ S4 @ N @ T4)))))). % evalc_evaln
thf(fact_25_evaln__evalc, axiom,
    ((![C : com, S4 : state, N4 : nat, T4 : state]: ((evaln @ C @ S4 @ N4 @ T4) => (evalc @ C @ S4 @ T4))))). % evaln_evalc
thf(fact_26_evalc_OIfFalse, axiom,
    ((![B : state > $o, S4 : state, C1 : com, S1 : state, C0 : com]: ((~ ((B @ S4))) => ((evalc @ C1 @ S4 @ S1) => (evalc @ (cond @ B @ C0 @ C1) @ S4 @ S1)))))). % evalc.IfFalse
thf(fact_27_evalc_OIfTrue, axiom,
    ((![B : state > $o, S4 : state, C0 : com, S1 : state, C1 : com]: ((B @ S4) => ((evalc @ C0 @ S4 @ S1) => (evalc @ (cond @ B @ C0 @ C1) @ S4 @ S1)))))). % evalc.IfTrue
thf(fact_28_evalc__elim__cases_I5_J, axiom,
    ((![B : state > $o, C1 : com, C2 : com, S4 : state, T4 : state]: ((evalc @ (cond @ B @ C1 @ C2) @ S4 @ T4) => (((B @ S4) => (~ ((evalc @ C1 @ S4 @ T4)))) => (~ (((~ ((B @ S4))) => (~ ((evalc @ C2 @ S4 @ T4))))))))))). % evalc_elim_cases(5)
thf(fact_29_evalc_OSemi, axiom,
    ((![C0 : com, S0 : state, S1 : state, C1 : com, S2 : state]: ((evalc @ C0 @ S0 @ S1) => ((evalc @ C1 @ S1 @ S2) => (evalc @ (semi @ C0 @ C1) @ S0 @ S2)))))). % evalc.Semi
thf(fact_30_com_Odistinct_I1_J, axiom,
    ((![X21 : vname, X222 : state > nat]: (~ ((skip = (ass @ X21 @ X222))))))). % com.distinct(1)
thf(fact_31_com_Odistinct_I3_J, axiom,
    ((![X31 : loc, X322 : state > nat, X33 : com]: (~ ((skip = (local @ X31 @ X322 @ X33))))))). % com.distinct(3)
thf(fact_32_com_Oinject_I1_J, axiom,
    ((![X21 : vname, X222 : state > nat, Y21 : vname, Y22 : state > nat]: (((ass @ X21 @ X222) = (ass @ Y21 @ Y22)) = (((X21 = Y21)) & ((X222 = Y22))))))). % com.inject(1)
thf(fact_33_com_Oinject_I2_J, axiom,
    ((![X31 : loc, X322 : state > nat, X33 : com, Y31 : loc, Y32 : state > nat, Y33 : com]: (((local @ X31 @ X322 @ X33) = (local @ Y31 @ Y32 @ Y33)) = (((X31 = Y31)) & ((((X322 = Y32)) & ((X33 = Y33))))))))). % com.inject(2)
thf(fact_34_com_Odistinct_I15_J, axiom,
    ((![X21 : vname, X222 : state > nat, X31 : loc, X322 : state > nat, X33 : com]: (~ (((ass @ X21 @ X222) = (local @ X31 @ X322 @ X33))))))). % com.distinct(15)
thf(fact_35_com_Odistinct_I29_J, axiom,
    ((![X31 : loc, X322 : state > nat, X33 : com, X51 : state > $o, X52 : com, X53 : com]: (~ (((local @ X31 @ X322 @ X33) = (cond @ X51 @ X52 @ X53))))))). % com.distinct(29)
thf(fact_36_com_Odistinct_I19_J, axiom,
    ((![X21 : vname, X222 : state > nat, X51 : state > $o, X52 : com, X53 : com]: (~ (((ass @ X21 @ X222) = (cond @ X51 @ X52 @ X53))))))). % com.distinct(19)
thf(fact_37_com_Odistinct_I27_J, axiom,
    ((![X31 : loc, X322 : state > nat, X33 : com, X41 : com, X42 : com]: (~ (((local @ X31 @ X322 @ X33) = (semi @ X41 @ X42))))))). % com.distinct(27)
thf(fact_38_com_Odistinct_I17_J, axiom,
    ((![X21 : vname, X222 : state > nat, X41 : com, X42 : com]: (~ (((ass @ X21 @ X222) = (semi @ X41 @ X42))))))). % com.distinct(17)
thf(fact_39_evalc_OAssign, axiom,
    ((![X4 : vname, A : state > nat, S4 : state]: (evalc @ (ass @ X4 @ A) @ S4 @ (update @ S4 @ X4 @ (A @ S4)))))). % evalc.Assign
thf(fact_40_evalc__elim__cases_I2_J, axiom,
    ((![X4 : vname, A : state > nat, S4 : state, T4 : state]: ((evalc @ (ass @ X4 @ A) @ S4 @ T4) => (T4 = (update @ S4 @ X4 @ (A @ S4))))))). % evalc_elim_cases(2)
thf(fact_41_evaln_OAssign, axiom,
    ((![X4 : vname, A : state > nat, S4 : state, N4 : nat]: (evaln @ (ass @ X4 @ A) @ S4 @ N4 @ (update @ S4 @ X4 @ (A @ S4)))))). % evaln.Assign
thf(fact_42_evaln__elim__cases_I2_J, axiom,
    ((![X4 : vname, A : state > nat, S4 : state, N4 : nat, T4 : state]: ((evaln @ (ass @ X4 @ A) @ S4 @ N4 @ T4) => (T4 = (update @ S4 @ X4 @ (A @ S4))))))). % evaln_elim_cases(2)
thf(fact_43_com_Oinduct, axiom,
    ((![P : com > $o, Com : com]: ((P @ skip) => ((![X12 : vname, X22 : state > nat]: (P @ (ass @ X12 @ X22))) => ((![X12 : loc, X22 : state > nat, X32 : com]: ((P @ X32) => (P @ (local @ X12 @ X22 @ X32)))) => ((![X12 : com, X22 : com]: ((P @ X12) => ((P @ X22) => (P @ (semi @ X12 @ X22))))) => ((![X12 : state > $o, X22 : com, X32 : com]: ((P @ X22) => ((P @ X32) => (P @ (cond @ X12 @ X22 @ X32))))) => ((![X12 : state > $o, X22 : com]: ((P @ X22) => (P @ (while @ X12 @ X22)))) => ((![X5 : pname]: (P @ (body2 @ X5))) => ((![X12 : vname, X22 : pname, X32 : state > nat]: (P @ (call @ X12 @ X22 @ X32))) => (P @ Com)))))))))))). % com.induct
thf(fact_44_com_Oexhaust, axiom,
    ((![Y : com]: ((~ ((Y = skip))) => ((![X212 : vname, X223 : state > nat]: (~ ((Y = (ass @ X212 @ X223))))) => ((![X312 : loc, X323 : state > nat, X332 : com]: (~ ((Y = (local @ X312 @ X323 @ X332))))) => ((![X412 : com, X422 : com]: (~ ((Y = (semi @ X412 @ X422))))) => ((![X512 : state > $o, X522 : com, X532 : com]: (~ ((Y = (cond @ X512 @ X522 @ X532))))) => ((![X61 : state > $o, X62 : com]: (~ ((Y = (while @ X61 @ X62))))) => ((![X7 : pname]: (~ ((Y = (body2 @ X7))))) => (~ ((![X81 : vname, X82 : pname, X83 : state > nat]: (~ ((Y = (call @ X81 @ X82 @ X83))))))))))))))))). % com.exhaust
thf(fact_45_com_Oinject_I6_J, axiom,
    ((![X72 : pname, Y7 : pname]: (((body2 @ X72) = (body2 @ Y7)) = (X72 = Y7))))). % com.inject(6)
thf(fact_46_com_Oinject_I5_J, axiom,
    ((![X612 : state > $o, X622 : com, Y61 : state > $o, Y62 : com]: (((while @ X612 @ X622) = (while @ Y61 @ Y62)) = (((X612 = Y61)) & ((X622 = Y62))))))). % com.inject(5)
thf(fact_47_com_Oinject_I7_J, axiom,
    ((![X812 : vname, X822 : pname, X832 : state > nat, Y81 : vname, Y82 : pname, Y83 : state > nat]: (((call @ X812 @ X822 @ X832) = (call @ Y81 @ Y82 @ Y83)) = (((X812 = Y81)) & ((((X822 = Y82)) & ((X832 = Y83))))))))). % com.inject(7)
thf(fact_48_com_Odistinct_I55_J, axiom,
    ((![X72 : pname, X812 : vname, X822 : pname, X832 : state > nat]: (~ (((body2 @ X72) = (call @ X812 @ X822 @ X832))))))). % com.distinct(55)
thf(fact_49_com_Odistinct_I53_J, axiom,
    ((![X612 : state > $o, X622 : com, X812 : vname, X822 : pname, X832 : state > nat]: (~ (((while @ X612 @ X622) = (call @ X812 @ X822 @ X832))))))). % com.distinct(53)
thf(fact_50_com_Odistinct_I51_J, axiom,
    ((![X612 : state > $o, X622 : com, X72 : pname]: (~ (((while @ X612 @ X622) = (body2 @ X72))))))). % com.distinct(51)
thf(fact_51_evaln_OWhileTrue, axiom,
    ((![B : state > $o, S0 : state, C : com, N4 : nat, S1 : state, S2 : state]: ((B @ S0) => ((evaln @ C @ S0 @ N4 @ S1) => ((evaln @ (while @ B @ C) @ S1 @ N4 @ S2) => (evaln @ (while @ B @ C) @ S0 @ N4 @ S2))))))). % evaln.WhileTrue
thf(fact_52_evaln_OWhileFalse, axiom,
    ((![B : state > $o, S4 : state, C : com, N4 : nat]: ((~ ((B @ S4))) => (evaln @ (while @ B @ C) @ S4 @ N4 @ S4))))). % evaln.WhileFalse
thf(fact_53_evaln__WHILE__case, axiom,
    ((![B : state > $o, C : com, S4 : state, N4 : nat, T4 : state]: ((evaln @ (while @ B @ C) @ S4 @ N4 @ T4) => (((T4 = S4) => (B @ S4)) => (~ (((B @ S4) => (![S12 : state]: ((evaln @ C @ S4 @ N4 @ S12) => (~ ((evaln @ (while @ B @ C) @ S12 @ N4 @ T4))))))))))))). % evaln_WHILE_case
thf(fact_54_evalc_OWhileTrue, axiom,
    ((![B : state > $o, S0 : state, C : com, S1 : state, S2 : state]: ((B @ S0) => ((evalc @ C @ S0 @ S1) => ((evalc @ (while @ B @ C) @ S1 @ S2) => (evalc @ (while @ B @ C) @ S0 @ S2))))))). % evalc.WhileTrue
thf(fact_55_evalc_OWhileFalse, axiom,
    ((![B : state > $o, S4 : state, C : com]: ((~ ((B @ S4))) => (evalc @ (while @ B @ C) @ S4 @ S4))))). % evalc.WhileFalse
thf(fact_56_evalc__WHILE__case, axiom,
    ((![B : state > $o, C : com, S4 : state, T4 : state]: ((evalc @ (while @ B @ C) @ S4 @ T4) => (((T4 = S4) => (B @ S4)) => (~ (((B @ S4) => (![S12 : state]: ((evalc @ C @ S4 @ S12) => (~ ((evalc @ (while @ B @ C) @ S12 @ T4))))))))))))). % evalc_WHILE_case
thf(fact_57_com_Odistinct_I45_J, axiom,
    ((![X51 : state > $o, X52 : com, X53 : com, X612 : state > $o, X622 : com]: (~ (((cond @ X51 @ X52 @ X53) = (while @ X612 @ X622))))))). % com.distinct(45)
thf(fact_58_com_Odistinct_I47_J, axiom,
    ((![X51 : state > $o, X52 : com, X53 : com, X72 : pname]: (~ (((cond @ X51 @ X52 @ X53) = (body2 @ X72))))))). % com.distinct(47)
thf(fact_59_com_Odistinct_I39_J, axiom,
    ((![X41 : com, X42 : com, X612 : state > $o, X622 : com]: (~ (((semi @ X41 @ X42) = (while @ X612 @ X622))))))). % com.distinct(39)
thf(fact_60_com_Odistinct_I31_J, axiom,
    ((![X31 : loc, X322 : state > nat, X33 : com, X612 : state > $o, X622 : com]: (~ (((local @ X31 @ X322 @ X33) = (while @ X612 @ X622))))))). % com.distinct(31)
thf(fact_61_com_Odistinct_I21_J, axiom,
    ((![X21 : vname, X222 : state > nat, X612 : state > $o, X622 : com]: (~ (((ass @ X21 @ X222) = (while @ X612 @ X622))))))). % com.distinct(21)
thf(fact_62_com_Odistinct_I41_J, axiom,
    ((![X41 : com, X42 : com, X72 : pname]: (~ (((semi @ X41 @ X42) = (body2 @ X72))))))). % com.distinct(41)
thf(fact_63_com_Odistinct_I33_J, axiom,
    ((![X31 : loc, X322 : state > nat, X33 : com, X72 : pname]: (~ (((local @ X31 @ X322 @ X33) = (body2 @ X72))))))). % com.distinct(33)
thf(fact_64_com_Odistinct_I23_J, axiom,
    ((![X21 : vname, X222 : state > nat, X72 : pname]: (~ (((ass @ X21 @ X222) = (body2 @ X72))))))). % com.distinct(23)
thf(fact_65_com_Odistinct_I9_J, axiom,
    ((![X612 : state > $o, X622 : com]: (~ ((skip = (while @ X612 @ X622))))))). % com.distinct(9)
thf(fact_66_com_Odistinct_I11_J, axiom,
    ((![X72 : pname]: (~ ((skip = (body2 @ X72))))))). % com.distinct(11)
thf(fact_67_com_Odistinct_I49_J, axiom,
    ((![X51 : state > $o, X52 : com, X53 : com, X812 : vname, X822 : pname, X832 : state > nat]: (~ (((cond @ X51 @ X52 @ X53) = (call @ X812 @ X822 @ X832))))))). % com.distinct(49)
thf(fact_68_com_Odistinct_I43_J, axiom,
    ((![X41 : com, X42 : com, X812 : vname, X822 : pname, X832 : state > nat]: (~ (((semi @ X41 @ X42) = (call @ X812 @ X822 @ X832))))))). % com.distinct(43)
thf(fact_69_com_Odistinct_I35_J, axiom,
    ((![X31 : loc, X322 : state > nat, X33 : com, X812 : vname, X822 : pname, X832 : state > nat]: (~ (((local @ X31 @ X322 @ X33) = (call @ X812 @ X822 @ X832))))))). % com.distinct(35)
thf(fact_70_com_Odistinct_I25_J, axiom,
    ((![X21 : vname, X222 : state > nat, X812 : vname, X822 : pname, X832 : state > nat]: (~ (((ass @ X21 @ X222) = (call @ X812 @ X822 @ X832))))))). % com.distinct(25)
thf(fact_71_com_Odistinct_I13_J, axiom,
    ((![X812 : vname, X822 : pname, X832 : state > nat]: (~ ((skip = (call @ X812 @ X822 @ X832))))))). % com.distinct(13)
thf(fact_72_WT_Oinducts, axiom,
    ((![X6 : com, P : com > $o]: ((wt @ X6) => ((P @ skip) => ((![X8 : vname, A2 : state > nat]: (P @ (ass @ X8 @ A2))) => ((![C4 : com, Y4 : loc, A2 : state > nat]: ((wt @ C4) => ((P @ C4) => (P @ (local @ Y4 @ A2 @ C4))))) => ((![C02 : com, C12 : com]: ((wt @ C02) => ((P @ C02) => ((wt @ C12) => ((P @ C12) => (P @ (semi @ C02 @ C12))))))) => ((![C02 : com, C12 : com, B2 : state > $o]: ((wt @ C02) => ((P @ C02) => ((wt @ C12) => ((P @ C12) => (P @ (cond @ B2 @ C02 @ C12))))))) => ((![C4 : com, B2 : state > $o]: ((wt @ C4) => ((P @ C4) => (P @ (while @ B2 @ C4))))) => ((![Pn : pname]: ((~ (((body @ Pn) = none_com))) => (P @ (body2 @ Pn)))) => ((![Pn : pname, X8 : vname, A2 : state > nat]: ((wt @ (body2 @ Pn)) => ((P @ (body2 @ Pn)) => (P @ (call @ X8 @ Pn @ A2))))) => (P @ X6))))))))))))). % WT.inducts
thf(fact_73_WT_Osimps, axiom,
    ((wt = (^[A3 : com]: (((A3 = skip)) | ((((?[X9 : vname]: (?[B3 : state > nat]: (A3 = (ass @ X9 @ B3))))) | ((((?[C3 : com]: (?[Y5 : loc]: (?[B3 : state > nat]: (((A3 = (local @ Y5 @ B3 @ C3))) & ((wt @ C3))))))) | ((((?[C03 : com]: (?[C13 : com]: (((A3 = (semi @ C03 @ C13))) & ((((wt @ C03)) & ((wt @ C13)))))))) | ((((?[C03 : com]: (?[C13 : com]: (?[B3 : state > $o]: (((A3 = (cond @ B3 @ C03 @ C13))) & ((((wt @ C03)) & ((wt @ C13))))))))) | ((((?[C3 : com]: (?[B3 : state > $o]: (((A3 = (while @ B3 @ C3))) & ((wt @ C3)))))) | ((((?[Pn2 : pname]: (((A3 = (body2 @ Pn2))) & ((~ (((body @ Pn2) = none_com))))))) | ((?[Pn2 : pname]: (?[X9 : vname]: (?[B3 : state > nat]: (((A3 = (call @ X9 @ Pn2 @ B3))) & ((wt @ (body2 @ Pn2))))))))))))))))))))))))). % WT.simps
thf(fact_74_WT_Ocases, axiom,
    ((![A : com]: ((wt @ A) => ((~ ((A = skip))) => ((![X8 : vname, A2 : state > nat]: (~ ((A = (ass @ X8 @ A2))))) => ((![C4 : com]: ((?[Y4 : loc, A2 : state > nat]: (A = (local @ Y4 @ A2 @ C4))) => (~ ((wt @ C4))))) => ((![C02 : com, C12 : com]: ((A = (semi @ C02 @ C12)) => ((wt @ C02) => (~ ((wt @ C12)))))) => ((![C02 : com, C12 : com]: ((?[B2 : state > $o]: (A = (cond @ B2 @ C02 @ C12))) => ((wt @ C02) => (~ ((wt @ C12)))))) => ((![C4 : com]: ((?[B2 : state > $o]: (A = (while @ B2 @ C4))) => (~ ((wt @ C4))))) => ((![Pn : pname]: ((A = (body2 @ Pn)) => ((body @ Pn) = none_com))) => (~ ((![Pn : pname]: ((?[X8 : vname, A2 : state > nat]: (A = (call @ X8 @ Pn @ A2))) => (~ ((wt @ (body2 @ Pn))))))))))))))))))). % WT.cases
thf(fact_75_WTs__elim__cases_I8_J, axiom,
    ((![X4 : vname, P : pname, A : state > nat]: ((wt @ (call @ X4 @ P @ A)) => (wt @ (body2 @ P)))))). % WTs_elim_cases(8)
thf(fact_76_WT_OCall, axiom,
    ((![Pn3 : pname, X4 : vname, A : state > nat]: ((wt @ (body2 @ Pn3)) => (wt @ (call @ X4 @ Pn3 @ A)))))). % WT.Call
thf(fact_77_WT_OBody, axiom,
    ((![Pn3 : pname]: ((~ (((body @ Pn3) = none_com))) => (wt @ (body2 @ Pn3)))))). % WT.Body
thf(fact_78_While, axiom,
    ((![C : com, B : state > $o]: ((wt @ C) => (wt @ (while @ B @ C)))))). % While
thf(fact_79_WTs__elim__cases_I6_J, axiom,
    ((![B : state > $o, C : com]: ((wt @ (while @ B @ C)) => (wt @ C))))). % WTs_elim_cases(6)
thf(fact_80_WTs__elim__cases_I5_J, axiom,
    ((![B : state > $o, C1 : com, C2 : com]: ((wt @ (cond @ B @ C1 @ C2)) => (~ (((wt @ C1) => (~ ((wt @ C2)))))))))). % WTs_elim_cases(5)
thf(fact_81_WT_OIf, axiom,
    ((![C0 : com, C1 : com, B : state > $o]: ((wt @ C0) => ((wt @ C1) => (wt @ (cond @ B @ C0 @ C1))))))). % WT.If
thf(fact_82_WT_OAssign, axiom,
    ((![X4 : vname, A : state > nat]: (wt @ (ass @ X4 @ A))))). % WT.Assign
thf(fact_83_WT_OLocal, axiom,
    ((![C : com, Y6 : loc, A : state > nat]: ((wt @ C) => (wt @ (local @ Y6 @ A @ C)))))). % WT.Local
thf(fact_84_WTs__elim__cases_I3_J, axiom,
    ((![Y6 : loc, A : state > nat, C : com]: ((wt @ (local @ Y6 @ A @ C)) => (wt @ C))))). % WTs_elim_cases(3)
thf(fact_85_WTs__elim__cases_I4_J, axiom,
    ((![C1 : com, C2 : com]: ((wt @ (semi @ C1 @ C2)) => (~ (((wt @ C1) => (~ ((wt @ C2)))))))))). % WTs_elim_cases(4)
thf(fact_86_WT_OSemi, axiom,
    ((![C0 : com, C1 : com]: ((wt @ C0) => ((wt @ C1) => (wt @ (semi @ C0 @ C1))))))). % WT.Semi
thf(fact_87_WT_OSkip, axiom,
    ((wt @ skip))). % WT.Skip
thf(fact_88_evalc__elim__cases_I6_J, axiom,
    ((![P : pname, S4 : state, S1 : state]: ((evalc @ (body2 @ P) @ S4 @ S1) => (evalc @ (the_com @ (body @ P)) @ S4 @ S1))))). % evalc_elim_cases(6)
thf(fact_89_evalc_OBody, axiom,
    ((![Pn3 : pname, S0 : state, S1 : state]: ((evalc @ (the_com @ (body @ Pn3)) @ S0 @ S1) => (evalc @ (body2 @ Pn3) @ S0 @ S1))))). % evalc.Body
thf(fact_90_option_Oexpand, axiom,
    ((![Option : option_com, Option2 : option_com]: (((Option = none_com) = (Option2 = none_com)) => (((~ ((Option = none_com))) => ((~ ((Option2 = none_com))) => ((the_com @ Option) = (the_com @ Option2)))) => (Option = Option2)))))). % option.expand
thf(fact_91_evaln__elim__cases_I6_J, axiom,
    ((![P : pname, S4 : state, N4 : nat, S1 : state]: ((evaln @ (body2 @ P) @ S4 @ N4 @ S1) => (~ ((![N : nat]: ((N4 = (suc @ N)) => (~ ((evaln @ (the_com @ (body @ P)) @ S4 @ N @ S1))))))))))). % evaln_elim_cases(6)
thf(fact_92_evaln_OBody, axiom,
    ((![Pn3 : pname, S0 : state, N4 : nat, S1 : state]: ((evaln @ (the_com @ (body @ Pn3)) @ S0 @ N4 @ S1) => (evaln @ (body2 @ Pn3) @ S0 @ (suc @ N4) @ S1))))). % evaln.Body
thf(fact_93_evaln__Suc, axiom,
    ((![C : com, S4 : state, N4 : nat, S5 : state]: ((evaln @ C @ S4 @ N4 @ S5) => (evaln @ C @ S4 @ (suc @ N4) @ S5))))). % evaln_Suc
thf(fact_94_WTs__elim__cases_I7_J, axiom,
    ((![P : pname]: ((wt @ (body2 @ P)) => (~ ((![Y8 : com]: (~ (((body @ P) = (some_com @ Y8))))))))))). % WTs_elim_cases(7)
thf(fact_95_not__Some__eq, axiom,
    ((![X6 : option_com]: ((![Y9 : com]: (~ ((X6 = (some_com @ Y9))))) = (X6 = none_com))))). % not_Some_eq
thf(fact_96_not__None__eq, axiom,
    ((![X6 : option_com]: ((~ ((X6 = none_com))) = (?[Y9 : com]: (X6 = (some_com @ Y9))))))). % not_None_eq
thf(fact_97_option_Ocollapse, axiom,
    ((![Option : option_com]: ((~ ((Option = none_com))) => ((some_com @ (the_com @ Option)) = Option))))). % option.collapse
thf(fact_98_option_Oexhaust__sel, axiom,
    ((![Option : option_com]: ((~ ((Option = none_com))) => (Option = (some_com @ (the_com @ Option))))))). % option.exhaust_sel
thf(fact_99_combine__options__cases, axiom,
    ((![X6 : option_com, P : option_com > option_com > $o, Y : option_com]: (((X6 = none_com) => (P @ X6 @ Y)) => (((Y = none_com) => (P @ X6 @ Y)) => ((![A2 : com, B2 : com]: ((X6 = (some_com @ A2)) => ((Y = (some_com @ B2)) => (P @ X6 @ Y)))) => (P @ X6 @ Y))))))). % combine_options_cases
thf(fact_100_split__option__all, axiom,
    (((^[P2 : option_com > $o]: (![X10 : option_com]: (P2 @ X10))) = (^[P3 : option_com > $o]: (((P3 @ none_com)) & ((![X : com]: (P3 @ (some_com @ X))))))))). % split_option_all
thf(fact_101_split__option__ex, axiom,
    (((^[P2 : option_com > $o]: (?[X10 : option_com]: (P2 @ X10))) = (^[P3 : option_com > $o]: (((P3 @ none_com)) | ((?[X : com]: (P3 @ (some_com @ X))))))))). % split_option_ex
thf(fact_102_option_Oinducts, axiom,
    ((![P : option_com > $o, Option : option_com]: ((P @ none_com) => ((![X5 : com]: (P @ (some_com @ X5))) => (P @ Option)))))). % option.inducts
thf(fact_103_option_Oexhaust, axiom,
    ((![Y : option_com]: ((~ ((Y = none_com))) => (~ ((![X22 : com]: (~ ((Y = (some_com @ X22))))))))))). % option.exhaust
thf(fact_104_option_OdiscI, axiom,
    ((![Option : option_com, X2 : com]: ((Option = (some_com @ X2)) => (~ ((Option = none_com))))))). % option.discI
thf(fact_105_option_Odistinct_I1_J, axiom,
    ((![X2 : com]: (~ ((none_com = (some_com @ X2))))))). % option.distinct(1)
thf(fact_106_WT__bodiesD, axiom,
    ((![Pn3 : pname, B : com]: (wT_bodies => (((body @ Pn3) = (some_com @ B)) => (wt @ B)))))). % WT_bodiesD
thf(fact_107_option_Oset__sel, axiom,
    ((![A : option_com]: ((~ ((A = none_com))) => (member_com @ (the_com @ A) @ (set_option_com @ A)))))). % option.set_sel
thf(fact_108_set__empty__eq, axiom,
    ((![Xo : option_com]: (((set_option_com @ Xo) = bot_bot_set_com) = (Xo = none_com))))). % set_empty_eq
thf(fact_109_option_Osimps_I14_J, axiom,
    (((set_option_com @ none_com) = bot_bot_set_com))). % option.simps(14)

% Conjectures (1)
thf(conj_0, conjecture,
    (((hoare_1926814542alid_a @ n @ (hoare_719046530iple_a @ p @ c @ q)) = (![Z : a]: (![S3 : state]: (((p @ Z @ S3)) => ((![S6 : state]: (((evaln @ c @ S3 @ n @ S6)) => ((q @ Z @ S6))))))))))).
