% 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_138__3250698_1 ) ; }
% This file was generated by Isabelle (most likely Sledgehammer)
% 2020-12-16 14:12:17.243

% Could-be-implicit typings (8)
thf(ty_n_t__Option__Ooption_It__Com__Ocom_J, type,
    option_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 (22)
thf(sy_c_Com_OWT, type,
    wt : com > $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_Com_Ocom_Osize__com, type,
    size_com : com > nat).
thf(sy_c_Groups_Oplus__class_Oplus_001t__Nat__Onat, type,
    plus_plus_nat : nat > nat > nat).
thf(sy_c_Groups_Ozero__class_Ozero_001t__Nat__Onat, type,
    zero_zero_nat : nat).
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_Option_Ooption_ONone_001t__Com__Ocom, type,
    none_com : option_com).
thf(sy_c_Option_Ooption_Othe_001t__Com__Ocom, type,
    the_com : option_com > com).
thf(sy_v_P, type,
    p : a > state > $o).
thf(sy_v_Q, type,
    q : a > state > $o).
thf(sy_v_n, type,
    n : nat).
thf(sy_v_pn, type,
    pn : pname).

% Relevant facts (117)
thf(fact_0_evaln__elim__cases_I6_J, axiom,
    ((![P : pname, S : state, N : nat, S1 : state]: ((evaln @ (body2 @ P) @ S @ N @ S1) => (~ ((![N2 : nat]: ((N = (suc @ N2)) => (~ ((evaln @ (the_com @ (body @ P)) @ S @ N2 @ S1))))))))))). % evaln_elim_cases(6)
thf(fact_1_evaln_OBody, axiom,
    ((![Pn : pname, S0 : state, N : nat, S1 : state]: ((evaln @ (the_com @ (body @ Pn)) @ S0 @ N @ S1) => (evaln @ (body2 @ Pn) @ S0 @ (suc @ N) @ S1))))). % evaln.Body
thf(fact_2_com_Oinject_I6_J, axiom,
    ((![X7 : pname, Y7 : pname]: (((body2 @ X7) = (body2 @ Y7)) = (X7 = Y7))))). % com.inject(6)
thf(fact_3_nat_Oinject, axiom,
    ((![X2 : nat, Y2 : nat]: (((suc @ X2) = (suc @ Y2)) = (X2 = Y2))))). % nat.inject
thf(fact_4_old_Onat_Oinject, axiom,
    ((![Nat : nat, Nat2 : nat]: (((suc @ Nat) = (suc @ Nat2)) = (Nat = Nat2))))). % old.nat.inject
thf(fact_5_evaln__Suc, axiom,
    ((![C : com, S : state, N : nat, S2 : state]: ((evaln @ C @ S @ N @ S2) => (evaln @ C @ S @ (suc @ N) @ S2))))). % evaln_Suc
thf(fact_6_evaln__max2, axiom,
    ((![C1 : com, S1 : state, N1 : nat, T1 : state, C2 : com, S22 : state, N22 : nat, T2 : state]: ((evaln @ C1 @ S1 @ N1 @ T1) => ((evaln @ C2 @ S22 @ N22 @ T2) => (?[N2 : nat]: ((evaln @ C1 @ S1 @ N2 @ T1) & (evaln @ C2 @ S22 @ N2 @ T2)))))))). % evaln_max2
thf(fact_7_Suc__inject, axiom,
    ((![X : nat, Y : nat]: (((suc @ X) = (suc @ Y)) => (X = Y))))). % Suc_inject
thf(fact_8_n__not__Suc__n, axiom,
    ((![N : nat]: (~ ((N = (suc @ N))))))). % n_not_Suc_n
thf(fact_9_evalc__elim__cases_I6_J, axiom,
    ((![P : pname, S : state, S1 : state]: ((evalc @ (body2 @ P) @ S @ S1) => (evalc @ (the_com @ (body @ P)) @ S @ S1))))). % evalc_elim_cases(6)
thf(fact_10_evalc_OBody, axiom,
    ((![Pn : pname, S0 : state, S1 : state]: ((evalc @ (the_com @ (body @ Pn)) @ S0 @ S1) => (evalc @ (body2 @ Pn) @ S0 @ S1))))). % evalc.Body
thf(fact_11_com__det, axiom,
    ((![C : com, S : state, T : state, U : state]: ((evalc @ C @ S @ T) => ((evalc @ C @ S @ U) => (U = T)))))). % com_det
thf(fact_12_evaln__evalc, axiom,
    ((![C : com, S : state, N : nat, T : state]: ((evaln @ C @ S @ N @ T) => (evalc @ C @ S @ T))))). % evaln_evalc
thf(fact_13_evalc__evaln, axiom,
    ((![C : com, S : state, T : state]: ((evalc @ C @ S @ T) => (?[N2 : nat]: (evaln @ C @ S @ N2 @ T)))))). % evalc_evaln
thf(fact_14_eval__eq, axiom,
    ((evalc = (^[C3 : com]: (^[S3 : state]: (^[T3 : state]: (?[N3 : nat]: (evaln @ C3 @ S3 @ N3 @ T3)))))))). % eval_eq
thf(fact_15_com_Odistinct_I11_J, axiom,
    ((![X7 : pname]: (~ ((skip = (body2 @ X7))))))). % com.distinct(11)
thf(fact_16_evalc__elim__cases_I1_J, axiom,
    ((![S : state, T : state]: ((evalc @ skip @ S @ T) => (T = S))))). % evalc_elim_cases(1)
thf(fact_17_evalc_OSkip, axiom,
    ((![S : state]: (evalc @ skip @ S @ S)))). % evalc.Skip
thf(fact_18_evaln_OSkip, axiom,
    ((![S : state, N : nat]: (evaln @ skip @ S @ N @ S)))). % evaln.Skip
thf(fact_19_evaln__elim__cases_I1_J, axiom,
    ((![S : state, N : nat, T : state]: ((evaln @ skip @ S @ N @ T) => (T = S))))). % evaln_elim_cases(1)
thf(fact_20_com_Odistinct_I5_J, axiom,
    ((![X41 : com, X42 : com]: (~ ((skip = (semi @ X41 @ X42))))))). % com.distinct(5)
thf(fact_21_com_Oinject_I1_J, axiom,
    ((![X21 : vname, X22 : state > nat, Y21 : vname, Y22 : state > nat]: (((ass @ X21 @ X22) = (ass @ Y21 @ Y22)) = (((X21 = Y21)) & ((X22 = Y22))))))). % com.inject(1)
thf(fact_22_com_Oinject_I2_J, axiom,
    ((![X31 : loc, X32 : state > nat, X33 : com, Y31 : loc, Y32 : state > nat, Y33 : com]: (((local @ X31 @ X32 @ X33) = (local @ Y31 @ Y32 @ Y33)) = (((X31 = Y31)) & ((((X32 = Y32)) & ((X33 = Y33))))))))). % com.inject(2)
thf(fact_23_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_24_com_Oinject_I7_J, axiom,
    ((![X81 : vname, X82 : pname, X83 : state > nat, Y81 : vname, Y82 : pname, Y83 : state > nat]: (((call @ X81 @ X82 @ X83) = (call @ Y81 @ Y82 @ Y83)) = (((X81 = Y81)) & ((((X82 = Y82)) & ((X83 = Y83))))))))). % com.inject(7)
thf(fact_25_com_Odistinct_I15_J, axiom,
    ((![X21 : vname, X22 : state > nat, X31 : loc, X32 : state > nat, X33 : com]: (~ (((ass @ X21 @ X22) = (local @ X31 @ X32 @ X33))))))). % com.distinct(15)
thf(fact_26_com_Odistinct_I17_J, axiom,
    ((![X21 : vname, X22 : state > nat, X41 : com, X42 : com]: (~ (((ass @ X21 @ X22) = (semi @ X41 @ X42))))))). % com.distinct(17)
thf(fact_27_com_Odistinct_I25_J, axiom,
    ((![X21 : vname, X22 : state > nat, X81 : vname, X82 : pname, X83 : state > nat]: (~ (((ass @ X21 @ X22) = (call @ X81 @ X82 @ X83))))))). % com.distinct(25)
thf(fact_28_com_Odistinct_I27_J, axiom,
    ((![X31 : loc, X32 : state > nat, X33 : com, X41 : com, X42 : com]: (~ (((local @ X31 @ X32 @ X33) = (semi @ X41 @ X42))))))). % com.distinct(27)
thf(fact_29_com_Odistinct_I35_J, axiom,
    ((![X31 : loc, X32 : state > nat, X33 : com, X81 : vname, X82 : pname, X83 : state > nat]: (~ (((local @ X31 @ X32 @ X33) = (call @ X81 @ X82 @ X83))))))). % com.distinct(35)
thf(fact_30_com_Odistinct_I43_J, axiom,
    ((![X41 : com, X42 : com, X81 : vname, X82 : pname, X83 : state > nat]: (~ (((semi @ X41 @ X42) = (call @ X81 @ X82 @ X83))))))). % com.distinct(43)
thf(fact_31_not0__implies__Suc, axiom,
    ((![N : nat]: ((~ ((N = zero_zero_nat))) => (?[M : nat]: (N = (suc @ M))))))). % not0_implies_Suc
thf(fact_32_old_Onat_Oinducts, axiom,
    ((![P : nat > $o, Nat : nat]: ((P @ zero_zero_nat) => ((![Nat3 : nat]: ((P @ Nat3) => (P @ (suc @ Nat3)))) => (P @ Nat)))))). % old.nat.inducts
thf(fact_33_old_Onat_Oexhaust, axiom,
    ((![Y : nat]: ((~ ((Y = zero_zero_nat))) => (~ ((![Nat3 : nat]: (~ ((Y = (suc @ Nat3))))))))))). % old.nat.exhaust
thf(fact_34_Zero__not__Suc, axiom,
    ((![M2 : nat]: (~ ((zero_zero_nat = (suc @ M2))))))). % Zero_not_Suc
thf(fact_35_Zero__neq__Suc, axiom,
    ((![M2 : nat]: (~ ((zero_zero_nat = (suc @ M2))))))). % Zero_neq_Suc
thf(fact_36_Suc__neq__Zero, axiom,
    ((![M2 : nat]: (~ (((suc @ M2) = zero_zero_nat)))))). % Suc_neq_Zero
thf(fact_37_zero__induct, axiom,
    ((![P : nat > $o, K : nat]: ((P @ K) => ((![N2 : nat]: ((P @ (suc @ N2)) => (P @ N2))) => (P @ zero_zero_nat)))))). % zero_induct
thf(fact_38_diff__induct, axiom,
    ((![P : nat > nat > $o, M2 : nat, N : nat]: ((![X3 : nat]: (P @ X3 @ zero_zero_nat)) => ((![Y3 : nat]: (P @ zero_zero_nat @ (suc @ Y3))) => ((![X3 : nat, Y3 : nat]: ((P @ X3 @ Y3) => (P @ (suc @ X3) @ (suc @ Y3)))) => (P @ M2 @ N))))))). % diff_induct
thf(fact_39_nat__induct, axiom,
    ((![P : nat > $o, N : nat]: ((P @ zero_zero_nat) => ((![N2 : nat]: ((P @ N2) => (P @ (suc @ N2)))) => (P @ N)))))). % nat_induct
thf(fact_40_nat_OdiscI, axiom,
    ((![Nat : nat, X2 : nat]: ((Nat = (suc @ X2)) => (~ ((Nat = zero_zero_nat))))))). % nat.discI
thf(fact_41_old_Onat_Odistinct_I1_J, axiom,
    ((![Nat2 : nat]: (~ ((zero_zero_nat = (suc @ Nat2))))))). % old.nat.distinct(1)
thf(fact_42_old_Onat_Odistinct_I2_J, axiom,
    ((![Nat2 : nat]: (~ (((suc @ Nat2) = zero_zero_nat)))))). % old.nat.distinct(2)
thf(fact_43_nat_Odistinct_I1_J, axiom,
    ((![X2 : nat]: (~ ((zero_zero_nat = (suc @ X2))))))). % nat.distinct(1)
thf(fact_44_com_Odistinct_I23_J, axiom,
    ((![X21 : vname, X22 : state > nat, X7 : pname]: (~ (((ass @ X21 @ X22) = (body2 @ X7))))))). % com.distinct(23)
thf(fact_45_com_Odistinct_I33_J, axiom,
    ((![X31 : loc, X32 : state > nat, X33 : com, X7 : pname]: (~ (((local @ X31 @ X32 @ X33) = (body2 @ X7))))))). % com.distinct(33)
thf(fact_46_com_Odistinct_I55_J, axiom,
    ((![X7 : pname, X81 : vname, X82 : pname, X83 : state > nat]: (~ (((body2 @ X7) = (call @ X81 @ X82 @ X83))))))). % com.distinct(55)
thf(fact_47_evaln_OSemi, axiom,
    ((![C0 : com, S0 : state, N : nat, S1 : state, C1 : com, S22 : state]: ((evaln @ C0 @ S0 @ N @ S1) => ((evaln @ C1 @ S1 @ N @ S22) => (evaln @ (semi @ C0 @ C1) @ S0 @ N @ S22)))))). % evaln.Semi
thf(fact_48_evaln__elim__cases_I4_J, axiom,
    ((![C1 : com, C2 : com, S : state, N : nat, T : state]: ((evaln @ (semi @ C1 @ C2) @ S @ N @ T) => (~ ((![S12 : state]: ((evaln @ C1 @ S @ N @ S12) => (~ ((evaln @ C2 @ S12 @ N @ T))))))))))). % evaln_elim_cases(4)
thf(fact_49_com_Odistinct_I1_J, axiom,
    ((![X21 : vname, X22 : state > nat]: (~ ((skip = (ass @ X21 @ X22))))))). % com.distinct(1)
thf(fact_50_com_Odistinct_I3_J, axiom,
    ((![X31 : loc, X32 : state > nat, X33 : com]: (~ ((skip = (local @ X31 @ X32 @ X33))))))). % com.distinct(3)
thf(fact_51_com_Odistinct_I13_J, axiom,
    ((![X81 : vname, X82 : pname, X83 : state > nat]: (~ ((skip = (call @ X81 @ X82 @ X83))))))). % com.distinct(13)
thf(fact_52_evalc__elim__cases_I4_J, axiom,
    ((![C1 : com, C2 : com, S : state, T : state]: ((evalc @ (semi @ C1 @ C2) @ S @ T) => (~ ((![S12 : state]: ((evalc @ C1 @ S @ S12) => (~ ((evalc @ C2 @ S12 @ T))))))))))). % evalc_elim_cases(4)
thf(fact_53_evalc_OSemi, axiom,
    ((![C0 : com, S0 : state, S1 : state, C1 : com, S22 : state]: ((evalc @ C0 @ S0 @ S1) => ((evalc @ C1 @ S1 @ S22) => (evalc @ (semi @ C0 @ C1) @ S0 @ S22)))))). % evalc.Semi
thf(fact_54_com_Odistinct_I41_J, axiom,
    ((![X41 : com, X42 : com, X7 : pname]: (~ (((semi @ X41 @ X42) = (body2 @ X7))))))). % com.distinct(41)
thf(fact_55_com_Oinduct, axiom,
    ((![P : com > $o, Com : com]: ((P @ skip) => ((![X1 : vname, X23 : state > nat]: (P @ (ass @ X1 @ X23))) => ((![X1 : loc, X23 : state > nat, X34 : com]: ((P @ X34) => (P @ (local @ X1 @ X23 @ X34)))) => ((![X1 : com, X23 : com]: ((P @ X1) => ((P @ X23) => (P @ (semi @ X1 @ X23))))) => ((![X1 : state > $o, X23 : com, X34 : com]: ((P @ X23) => ((P @ X34) => (P @ (cond @ X1 @ X23 @ X34))))) => ((![X1 : state > $o, X23 : com]: ((P @ X23) => (P @ (while @ X1 @ X23)))) => ((![X3 : pname]: (P @ (body2 @ X3))) => ((![X1 : vname, X23 : pname, X34 : state > nat]: (P @ (call @ X1 @ X23 @ X34))) => (P @ Com)))))))))))). % com.induct
thf(fact_56_com_Oexhaust, axiom,
    ((![Y : com]: ((~ ((Y = skip))) => ((![X212 : vname, X222 : state > nat]: (~ ((Y = (ass @ X212 @ X222))))) => ((![X312 : loc, X322 : state > nat, X332 : com]: (~ ((Y = (local @ X312 @ X322 @ X332))))) => ((![X412 : com, X422 : com]: (~ ((Y = (semi @ X412 @ X422))))) => ((![X51 : state > $o, X52 : com, X53 : com]: (~ ((Y = (cond @ X51 @ X52 @ X53))))) => ((![X61 : state > $o, X62 : com]: (~ ((Y = (while @ X61 @ X62))))) => ((![X72 : pname]: (~ ((Y = (body2 @ X72))))) => (~ ((![X812 : vname, X822 : pname, X832 : state > nat]: (~ ((Y = (call @ X812 @ X822 @ X832))))))))))))))))). % com.exhaust
thf(fact_57_com_Osize__gen_I1_J, axiom,
    (((size_com @ skip) = zero_zero_nat))). % com.size_gen(1)
thf(fact_58_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_59_com_Oinject_I4_J, axiom,
    ((![X512 : state > $o, X522 : com, X532 : com, Y51 : state > $o, Y52 : com, Y53 : com]: (((cond @ X512 @ X522 @ X532) = (cond @ Y51 @ Y52 @ Y53)) = (((X512 = Y51)) & ((((X522 = Y52)) & ((X532 = Y53))))))))). % com.inject(4)
thf(fact_60_com_Odistinct_I45_J, axiom,
    ((![X512 : state > $o, X522 : com, X532 : com, X612 : state > $o, X622 : com]: (~ (((cond @ X512 @ X522 @ X532) = (while @ X612 @ X622))))))). % com.distinct(45)
thf(fact_61_evaln_OWhileTrue, axiom,
    ((![B : state > $o, S0 : state, C : com, N : nat, S1 : state, S22 : state]: ((B @ S0) => ((evaln @ C @ S0 @ N @ S1) => ((evaln @ (while @ B @ C) @ S1 @ N @ S22) => (evaln @ (while @ B @ C) @ S0 @ N @ S22))))))). % evaln.WhileTrue
thf(fact_62_evaln_OWhileFalse, axiom,
    ((![B : state > $o, S : state, C : com, N : nat]: ((~ ((B @ S))) => (evaln @ (while @ B @ C) @ S @ N @ S))))). % evaln.WhileFalse
thf(fact_63_evaln__WHILE__case, axiom,
    ((![B : state > $o, C : com, S : state, N : nat, T : state]: ((evaln @ (while @ B @ C) @ S @ N @ T) => (((T = S) => (B @ S)) => (~ (((B @ S) => (![S12 : state]: ((evaln @ C @ S @ N @ S12) => (~ ((evaln @ (while @ B @ C) @ S12 @ N @ T))))))))))))). % evaln_WHILE_case
thf(fact_64_evalc__WHILE__case, axiom,
    ((![B : state > $o, C : com, S : state, T : state]: ((evalc @ (while @ B @ C) @ S @ T) => (((T = S) => (B @ S)) => (~ (((B @ S) => (![S12 : state]: ((evalc @ C @ S @ S12) => (~ ((evalc @ (while @ B @ C) @ S12 @ T))))))))))))). % evalc_WHILE_case
thf(fact_65_evalc_OWhileFalse, axiom,
    ((![B : state > $o, S : state, C : com]: ((~ ((B @ S))) => (evalc @ (while @ B @ C) @ S @ S))))). % evalc.WhileFalse
thf(fact_66_evalc_OWhileTrue, axiom,
    ((![B : state > $o, S0 : state, C : com, S1 : state, S22 : state]: ((B @ S0) => ((evalc @ C @ S0 @ S1) => ((evalc @ (while @ B @ C) @ S1 @ S22) => (evalc @ (while @ B @ C) @ S0 @ S22))))))). % evalc.WhileTrue
thf(fact_67_com_Odistinct_I51_J, axiom,
    ((![X612 : state > $o, X622 : com, X7 : pname]: (~ (((while @ X612 @ X622) = (body2 @ X7))))))). % com.distinct(51)
thf(fact_68_evaln__elim__cases_I5_J, axiom,
    ((![B : state > $o, C1 : com, C2 : com, S : state, N : nat, T : state]: ((evaln @ (cond @ B @ C1 @ C2) @ S @ N @ T) => (((B @ S) => (~ ((evaln @ C1 @ S @ N @ T)))) => (~ (((~ ((B @ S))) => (~ ((evaln @ C2 @ S @ N @ T))))))))))). % evaln_elim_cases(5)
thf(fact_69_evaln_OIfTrue, axiom,
    ((![B : state > $o, S : state, C0 : com, N : nat, S1 : state, C1 : com]: ((B @ S) => ((evaln @ C0 @ S @ N @ S1) => (evaln @ (cond @ B @ C0 @ C1) @ S @ N @ S1)))))). % evaln.IfTrue
thf(fact_70_evaln_OIfFalse, axiom,
    ((![B : state > $o, S : state, C1 : com, N : nat, S1 : state, C0 : com]: ((~ ((B @ S))) => ((evaln @ C1 @ S @ N @ S1) => (evaln @ (cond @ B @ C0 @ C1) @ S @ N @ S1)))))). % evaln.IfFalse
thf(fact_71_evalc_OIfFalse, axiom,
    ((![B : state > $o, S : state, C1 : com, S1 : state, C0 : com]: ((~ ((B @ S))) => ((evalc @ C1 @ S @ S1) => (evalc @ (cond @ B @ C0 @ C1) @ S @ S1)))))). % evalc.IfFalse
thf(fact_72_evalc_OIfTrue, axiom,
    ((![B : state > $o, S : state, C0 : com, S1 : state, C1 : com]: ((B @ S) => ((evalc @ C0 @ S @ S1) => (evalc @ (cond @ B @ C0 @ C1) @ S @ S1)))))). % evalc.IfTrue
thf(fact_73_evalc__elim__cases_I5_J, axiom,
    ((![B : state > $o, C1 : com, C2 : com, S : state, T : state]: ((evalc @ (cond @ B @ C1 @ C2) @ S @ T) => (((B @ S) => (~ ((evalc @ C1 @ S @ T)))) => (~ (((~ ((B @ S))) => (~ ((evalc @ C2 @ S @ T))))))))))). % evalc_elim_cases(5)
thf(fact_74_com_Odistinct_I53_J, axiom,
    ((![X612 : state > $o, X622 : com, X81 : vname, X82 : pname, X83 : state > nat]: (~ (((while @ X612 @ X622) = (call @ X81 @ X82 @ X83))))))). % com.distinct(53)
thf(fact_75_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_76_com_Odistinct_I31_J, axiom,
    ((![X31 : loc, X32 : state > nat, X33 : com, X612 : state > $o, X622 : com]: (~ (((local @ X31 @ X32 @ X33) = (while @ X612 @ X622))))))). % com.distinct(31)
thf(fact_77_com_Odistinct_I21_J, axiom,
    ((![X21 : vname, X22 : state > nat, X612 : state > $o, X622 : com]: (~ (((ass @ X21 @ X22) = (while @ X612 @ X622))))))). % com.distinct(21)
thf(fact_78_com_Odistinct_I47_J, axiom,
    ((![X512 : state > $o, X522 : com, X532 : com, X7 : pname]: (~ (((cond @ X512 @ X522 @ X532) = (body2 @ X7))))))). % com.distinct(47)
thf(fact_79_com_Odistinct_I9_J, axiom,
    ((![X612 : state > $o, X622 : com]: (~ ((skip = (while @ X612 @ X622))))))). % com.distinct(9)
thf(fact_80_com_Odistinct_I49_J, axiom,
    ((![X512 : state > $o, X522 : com, X532 : com, X81 : vname, X82 : pname, X83 : state > nat]: (~ (((cond @ X512 @ X522 @ X532) = (call @ X81 @ X82 @ X83))))))). % com.distinct(49)
thf(fact_81_com_Odistinct_I37_J, axiom,
    ((![X41 : com, X42 : com, X512 : state > $o, X522 : com, X532 : com]: (~ (((semi @ X41 @ X42) = (cond @ X512 @ X522 @ X532))))))). % com.distinct(37)
thf(fact_82_com_Odistinct_I29_J, axiom,
    ((![X31 : loc, X32 : state > nat, X33 : com, X512 : state > $o, X522 : com, X532 : com]: (~ (((local @ X31 @ X32 @ X33) = (cond @ X512 @ X522 @ X532))))))). % com.distinct(29)
thf(fact_83_com_Odistinct_I19_J, axiom,
    ((![X21 : vname, X22 : state > nat, X512 : state > $o, X522 : com, X532 : com]: (~ (((ass @ X21 @ X22) = (cond @ X512 @ X522 @ X532))))))). % com.distinct(19)
thf(fact_84_com_Odistinct_I7_J, axiom,
    ((![X512 : state > $o, X522 : com, X532 : com]: (~ ((skip = (cond @ X512 @ X522 @ X532))))))). % com.distinct(7)
thf(fact_85_zero__reorient, axiom,
    ((![X : nat]: ((zero_zero_nat = X) = (X = zero_zero_nat))))). % zero_reorient
thf(fact_86_com_Osize__gen_I7_J, axiom,
    ((![X7 : pname]: ((size_com @ (body2 @ X7)) = zero_zero_nat)))). % com.size_gen(7)
thf(fact_87_com_Osize__gen_I8_J, axiom,
    ((![X81 : vname, X82 : pname, X83 : state > nat]: ((size_com @ (call @ X81 @ X82 @ X83)) = zero_zero_nat)))). % com.size_gen(8)
thf(fact_88_com_Osize__gen_I2_J, axiom,
    ((![X21 : vname, X22 : state > nat]: ((size_com @ (ass @ X21 @ X22)) = zero_zero_nat)))). % com.size_gen(2)
thf(fact_89_WT_Oinducts, axiom,
    ((![X : com, P : com > $o]: ((wt @ X) => ((P @ skip) => ((![X4 : vname, A : state > nat]: (P @ (ass @ X4 @ A))) => ((![C4 : com, Y4 : loc, A : state > nat]: ((wt @ C4) => ((P @ C4) => (P @ (local @ Y4 @ A @ 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))))) => ((![Pn2 : pname]: ((~ (((body @ Pn2) = none_com))) => (P @ (body2 @ Pn2)))) => ((![Pn2 : pname, X4 : vname, A : state > nat]: ((wt @ (body2 @ Pn2)) => ((P @ (body2 @ Pn2)) => (P @ (call @ X4 @ Pn2 @ A))))) => (P @ X))))))))))))). % WT.inducts
thf(fact_90_WT_Osimps, axiom,
    ((wt = (^[A2 : com]: (((A2 = skip)) | ((((?[X5 : vname]: (?[B3 : state > nat]: (A2 = (ass @ X5 @ B3))))) | ((((?[C3 : com]: (?[Y5 : loc]: (?[B3 : state > nat]: (((A2 = (local @ Y5 @ B3 @ C3))) & ((wt @ C3))))))) | ((((?[C03 : com]: (?[C13 : com]: (((A2 = (semi @ C03 @ C13))) & ((((wt @ C03)) & ((wt @ C13)))))))) | ((((?[C03 : com]: (?[C13 : com]: (?[B3 : state > $o]: (((A2 = (cond @ B3 @ C03 @ C13))) & ((((wt @ C03)) & ((wt @ C13))))))))) | ((((?[C3 : com]: (?[B3 : state > $o]: (((A2 = (while @ B3 @ C3))) & ((wt @ C3)))))) | ((((?[Pn3 : pname]: (((A2 = (body2 @ Pn3))) & ((~ (((body @ Pn3) = none_com))))))) | ((?[Pn3 : pname]: (?[X5 : vname]: (?[B3 : state > nat]: (((A2 = (call @ X5 @ Pn3 @ B3))) & ((wt @ (body2 @ Pn3))))))))))))))))))))))))). % WT.simps
thf(fact_91_WT_Ocases, axiom,
    ((![A3 : com]: ((wt @ A3) => ((~ ((A3 = skip))) => ((![X4 : vname, A : state > nat]: (~ ((A3 = (ass @ X4 @ A))))) => ((![C4 : com]: ((?[Y4 : loc, A : state > nat]: (A3 = (local @ Y4 @ A @ C4))) => (~ ((wt @ C4))))) => ((![C02 : com, C12 : com]: ((A3 = (semi @ C02 @ C12)) => ((wt @ C02) => (~ ((wt @ C12)))))) => ((![C02 : com, C12 : com]: ((?[B2 : state > $o]: (A3 = (cond @ B2 @ C02 @ C12))) => ((wt @ C02) => (~ ((wt @ C12)))))) => ((![C4 : com]: ((?[B2 : state > $o]: (A3 = (while @ B2 @ C4))) => (~ ((wt @ C4))))) => ((![Pn2 : pname]: ((A3 = (body2 @ Pn2)) => ((body @ Pn2) = none_com))) => (~ ((![Pn2 : pname]: ((?[X4 : vname, A : state > nat]: (A3 = (call @ X4 @ Pn2 @ A))) => (~ ((wt @ (body2 @ Pn2))))))))))))))))))). % WT.cases
thf(fact_92_com_Osize__gen_I4_J, axiom,
    ((![X41 : com, X42 : com]: ((size_com @ (semi @ X41 @ X42)) = (plus_plus_nat @ (plus_plus_nat @ (size_com @ X41) @ (size_com @ X42)) @ (suc @ zero_zero_nat)))))). % com.size_gen(4)
thf(fact_93_add__right__cancel, axiom,
    ((![B : nat, A3 : nat, C : nat]: (((plus_plus_nat @ B @ A3) = (plus_plus_nat @ C @ A3)) = (B = C))))). % add_right_cancel
thf(fact_94_add__left__cancel, axiom,
    ((![A3 : nat, B : nat, C : nat]: (((plus_plus_nat @ A3 @ B) = (plus_plus_nat @ A3 @ C)) = (B = C))))). % add_left_cancel
thf(fact_95_add_Oleft__neutral, axiom,
    ((![A3 : nat]: ((plus_plus_nat @ zero_zero_nat @ A3) = A3)))). % add.left_neutral
thf(fact_96_add_Oright__neutral, axiom,
    ((![A3 : nat]: ((plus_plus_nat @ A3 @ zero_zero_nat) = A3)))). % add.right_neutral
thf(fact_97_add__cancel__left__left, axiom,
    ((![B : nat, A3 : nat]: (((plus_plus_nat @ B @ A3) = A3) = (B = zero_zero_nat))))). % add_cancel_left_left
thf(fact_98_add__cancel__left__right, axiom,
    ((![A3 : nat, B : nat]: (((plus_plus_nat @ A3 @ B) = A3) = (B = zero_zero_nat))))). % add_cancel_left_right
thf(fact_99_add__cancel__right__left, axiom,
    ((![A3 : nat, B : nat]: ((A3 = (plus_plus_nat @ B @ A3)) = (B = zero_zero_nat))))). % add_cancel_right_left
thf(fact_100_add__cancel__right__right, axiom,
    ((![A3 : nat, B : nat]: ((A3 = (plus_plus_nat @ A3 @ B)) = (B = zero_zero_nat))))). % add_cancel_right_right
thf(fact_101_add__eq__0__iff__both__eq__0, axiom,
    ((![X : nat, Y : nat]: (((plus_plus_nat @ X @ Y) = zero_zero_nat) = (((X = zero_zero_nat)) & ((Y = zero_zero_nat))))))). % add_eq_0_iff_both_eq_0
thf(fact_102_zero__eq__add__iff__both__eq__0, axiom,
    ((![X : nat, Y : nat]: ((zero_zero_nat = (plus_plus_nat @ X @ Y)) = (((X = zero_zero_nat)) & ((Y = zero_zero_nat))))))). % zero_eq_add_iff_both_eq_0
thf(fact_103_add__Suc__right, axiom,
    ((![M2 : nat, N : nat]: ((plus_plus_nat @ M2 @ (suc @ N)) = (suc @ (plus_plus_nat @ M2 @ N)))))). % add_Suc_right
thf(fact_104_add__is__0, axiom,
    ((![M2 : nat, N : nat]: (((plus_plus_nat @ M2 @ N) = zero_zero_nat) = (((M2 = zero_zero_nat)) & ((N = zero_zero_nat))))))). % add_is_0
thf(fact_105_Nat_Oadd__0__right, axiom,
    ((![M2 : nat]: ((plus_plus_nat @ M2 @ zero_zero_nat) = M2)))). % Nat.add_0_right
thf(fact_106_comm__monoid__add__class_Oadd__0, axiom,
    ((![A3 : nat]: ((plus_plus_nat @ zero_zero_nat @ A3) = A3)))). % comm_monoid_add_class.add_0
thf(fact_107_add_Ocomm__neutral, axiom,
    ((![A3 : nat]: ((plus_plus_nat @ A3 @ zero_zero_nat) = A3)))). % add.comm_neutral
thf(fact_108_WTs__elim__cases_I6_J, axiom,
    ((![B : state > $o, C : com]: ((wt @ (while @ B @ C)) => (wt @ C))))). % WTs_elim_cases(6)
thf(fact_109_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_110_WT_OIf, axiom,
    ((![C0 : com, C1 : com, B : state > $o]: ((wt @ C0) => ((wt @ C1) => (wt @ (cond @ B @ C0 @ C1))))))). % WT.If
thf(fact_111_While, axiom,
    ((![C : com, B : state > $o]: ((wt @ C) => (wt @ (while @ B @ C)))))). % While
thf(fact_112_add__right__imp__eq, axiom,
    ((![B : nat, A3 : nat, C : nat]: (((plus_plus_nat @ B @ A3) = (plus_plus_nat @ C @ A3)) => (B = C))))). % add_right_imp_eq
thf(fact_113_add__left__imp__eq, axiom,
    ((![A3 : nat, B : nat, C : nat]: (((plus_plus_nat @ A3 @ B) = (plus_plus_nat @ A3 @ C)) => (B = C))))). % add_left_imp_eq
thf(fact_114_add_Oleft__commute, axiom,
    ((![B : nat, A3 : nat, C : nat]: ((plus_plus_nat @ B @ (plus_plus_nat @ A3 @ C)) = (plus_plus_nat @ A3 @ (plus_plus_nat @ B @ C)))))). % add.left_commute
thf(fact_115_add_Ocommute, axiom,
    ((plus_plus_nat = (^[A2 : nat]: (^[B3 : nat]: (plus_plus_nat @ B3 @ A2)))))). % add.commute
thf(fact_116_add_Oassoc, axiom,
    ((![A3 : nat, B : nat, C : nat]: ((plus_plus_nat @ (plus_plus_nat @ A3 @ B) @ C) = (plus_plus_nat @ A3 @ (plus_plus_nat @ B @ C)))))). % add.assoc

% Conjectures (1)
thf(conj_0, conjecture,
    (((![Z : a]: (![S3 : state]: (((p @ Z @ S3)) => ((![S4 : state]: (((evaln @ (the_com @ (body @ pn)) @ S3 @ n @ S4)) => ((q @ Z @ S4)))))))) = (![Z : a]: (![S3 : state]: (((p @ Z @ S3)) => ((![S4 : state]: (((evaln @ (body2 @ pn) @ S3 @ (suc @ n) @ S4)) => ((q @ Z @ S4))))))))))).
