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

% Could-be-implicit typings (6)
thf(ty_n_t__Hoare____Mirabelle____raqjowkjvm__Otriple_Itf__a_J, type,
    hoare_1678595023iple_a : $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__Ocom, type,
    com : $tType).
thf(ty_n_tf__a, type,
    a : $tType).

% Explicit typings (20)
thf(sy_c_Com_Ocom_OBODY, type,
    body : pname > 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_Osize__com, type,
    size_com : com > nat).
thf(sy_c_Groups_Ominus__class_Ominus_001t__Nat__Onat, type,
    minus_minus_nat : nat > nat > 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_Hoare__Mirabelle__raqjowkjvm_Ostate__not__singleton, type,
    hoare_405891322gleton : $o).
thf(sy_c_Hoare__Mirabelle__raqjowkjvm_Otriple_Ocase__triple_001tf__a_001_Eo, type,
    hoare_1012081509le_a_o : ((a > state > $o) > com > (a > state > $o) > $o) > hoare_1678595023iple_a > $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_Nat_Onat_Ocase__nat_001_Eo, type,
    case_nat_o : $o > (nat > $o) > nat > $o).
thf(sy_c_Nat_Onat_Ocase__nat_001t__Nat__Onat, type,
    case_nat_nat : nat > (nat > nat) > nat > nat).
thf(sy_c_Nat_Onat_Opred, type,
    pred : nat > nat).
thf(sy_c_Nat_Osize__class_Osize_001t__Com__Ocom, type,
    size_size_com : com > nat).
thf(sy_c_Natural_Oevaln, type,
    evaln : com > state > nat > state > $o).
thf(sy_c_Orderings_Oord__class_Omin_001t__Nat__Onat, type,
    ord_min_nat : nat > nat > nat).
thf(sy_v_n, type,
    n : nat).
thf(sy_v_t, type,
    t : hoare_1678595023iple_a).

% Relevant facts (118)
thf(fact_0_triple_Ocase__distrib, axiom,
    ((![H : $o > $o, F : (a > state > $o) > com > (a > state > $o) > $o, Triple : hoare_1678595023iple_a]: ((H @ (hoare_1012081509le_a_o @ F @ Triple)) = (hoare_1012081509le_a_o @ (^[X1 : a > state > $o]: (^[X2 : com]: (^[X3 : a > state > $o]: (H @ (F @ X1 @ X2 @ X3))))) @ Triple))))). % triple.case_distrib
thf(fact_1_triple__valid__def, axiom,
    ((hoare_1926814542alid_a = (^[N : nat]: (hoare_1012081509le_a_o @ (^[P : a > state > $o]: (^[C : com]: (^[Q : a > state > $o]: (![Z : a]: (![S : state]: (((P @ Z @ S)) => ((![S2 : state]: (((evaln @ C @ S @ N @ S2)) => ((Q @ Z @ S2)))))))))))))))). % triple_valid_def
thf(fact_2_nat_Oinject, axiom,
    ((![X22 : nat, Y2 : nat]: (((suc @ X22) = (suc @ Y2)) = (X22 = Y2))))). % nat.inject
thf(fact_3_old_Onat_Oinject, axiom,
    ((![Nat : nat, Nat2 : nat]: (((suc @ Nat) = (suc @ Nat2)) = (Nat = Nat2))))). % old.nat.inject
thf(fact_4_evaln__Suc, axiom,
    ((![C2 : com, S3 : state, N2 : nat, S4 : state]: ((evaln @ C2 @ S3 @ N2 @ S4) => (evaln @ C2 @ S3 @ (suc @ N2) @ S4))))). % evaln_Suc
thf(fact_5_evaln__max2, axiom,
    ((![C1 : com, S1 : state, N1 : nat, T1 : state, C22 : com, S22 : state, N22 : nat, T2 : state]: ((evaln @ C1 @ S1 @ N1 @ T1) => ((evaln @ C22 @ S22 @ N22 @ T2) => (?[N3 : nat]: ((evaln @ C1 @ S1 @ N3 @ T1) & (evaln @ C22 @ S22 @ N3 @ T2)))))))). % evaln_max2
thf(fact_6_Suc__inject, axiom,
    ((![X : nat, Y : nat]: (((suc @ X) = (suc @ Y)) => (X = Y))))). % Suc_inject
thf(fact_7_n__not__Suc__n, axiom,
    ((![N2 : nat]: (~ ((N2 = (suc @ N2))))))). % n_not_Suc_n
thf(fact_8_triple_Ocase, axiom,
    ((![F : (a > state > $o) > com > (a > state > $o) > $o, X12 : a > state > $o, X22 : com, X32 : a > state > $o]: ((hoare_1012081509le_a_o @ F @ (hoare_719046530iple_a @ X12 @ X22 @ X32)) = (F @ X12 @ X22 @ X32))))). % triple.case
thf(fact_9_single__stateE, axiom,
    ((hoare_405891322gleton => (![T : state]: (~ ((![S5 : state]: (S5 = T)))))))). % single_stateE
thf(fact_10_triple__valid__def2, axiom,
    ((![N2 : nat, P2 : a > state > $o, C2 : com, Q2 : a > state > $o]: ((hoare_1926814542alid_a @ N2 @ (hoare_719046530iple_a @ P2 @ C2 @ Q2)) = (![Z : a]: (![S : state]: (((P2 @ Z @ S)) => ((![S2 : state]: (((evaln @ C2 @ S @ N2 @ S2)) => ((Q2 @ Z @ S2)))))))))))). % triple_valid_def2
thf(fact_11_state__not__singleton__def, axiom,
    ((hoare_405891322gleton = (?[S : state]: (?[T3 : state]: (~ ((S = T3)))))))). % state_not_singleton_def
thf(fact_12_old_Onat_Osimps_I5_J, axiom,
    ((![F1 : $o, F2 : nat > $o, X22 : nat]: ((case_nat_o @ F1 @ F2 @ (suc @ X22)) = (F2 @ X22))))). % old.nat.simps(5)
thf(fact_13_old_Onat_Osimps_I5_J, axiom,
    ((![F1 : nat, F2 : nat > nat, X22 : nat]: ((case_nat_nat @ F1 @ F2 @ (suc @ X22)) = (F2 @ X22))))). % old.nat.simps(5)
thf(fact_14_evaln_OSkip, axiom,
    ((![S3 : state, N2 : nat]: (evaln @ skip @ S3 @ N2 @ S3)))). % evaln.Skip
thf(fact_15_evaln__elim__cases_I1_J, axiom,
    ((![S3 : state, N2 : nat, T4 : state]: ((evaln @ skip @ S3 @ N2 @ T4) => (T4 = S3))))). % evaln_elim_cases(1)
thf(fact_16_evaln_OSemi, axiom,
    ((![C0 : com, S0 : state, N2 : nat, S1 : state, C1 : com, S22 : state]: ((evaln @ C0 @ S0 @ N2 @ S1) => ((evaln @ C1 @ S1 @ N2 @ S22) => (evaln @ (semi @ C0 @ C1) @ S0 @ N2 @ S22)))))). % evaln.Semi
thf(fact_17_evaln__elim__cases_I4_J, axiom,
    ((![C1 : com, C22 : com, S3 : state, N2 : nat, T4 : state]: ((evaln @ (semi @ C1 @ C22) @ S3 @ N2 @ T4) => (~ ((![S12 : state]: ((evaln @ C1 @ S3 @ N2 @ S12) => (~ ((evaln @ C22 @ S12 @ N2 @ T4))))))))))). % evaln_elim_cases(4)
thf(fact_18_old_Onat_Osimps_I4_J, axiom,
    ((![F1 : $o, F2 : nat > $o]: ((case_nat_o @ F1 @ F2 @ zero_zero_nat) = F1)))). % old.nat.simps(4)
thf(fact_19_old_Onat_Osimps_I4_J, axiom,
    ((![F1 : nat, F2 : nat > nat]: ((case_nat_nat @ F1 @ F2 @ zero_zero_nat) = F1)))). % old.nat.simps(4)
thf(fact_20_nat_Odisc__eq__case_I2_J, axiom,
    ((![Nat : nat]: ((~ ((Nat = zero_zero_nat))) = (case_nat_o @ $false @ (^[Uu : nat]: $true) @ Nat))))). % nat.disc_eq_case(2)
thf(fact_21_nat_Odisc__eq__case_I1_J, axiom,
    ((![Nat : nat]: ((Nat = zero_zero_nat) = (case_nat_o @ $true @ (^[Uu : nat]: $false) @ Nat))))). % nat.disc_eq_case(1)
thf(fact_22_nat_Ocase__distrib, axiom,
    ((![H : $o > $o, F1 : $o, F2 : nat > $o, Nat : nat]: ((H @ (case_nat_o @ F1 @ F2 @ Nat)) = (case_nat_o @ (H @ F1) @ (^[X4 : nat]: (H @ (F2 @ X4))) @ Nat))))). % nat.case_distrib
thf(fact_23_nat_Ocase__distrib, axiom,
    ((![H : $o > nat, F1 : $o, F2 : nat > $o, Nat : nat]: ((H @ (case_nat_o @ F1 @ F2 @ Nat)) = (case_nat_nat @ (H @ F1) @ (^[X4 : nat]: (H @ (F2 @ X4))) @ Nat))))). % nat.case_distrib
thf(fact_24_nat_Ocase__distrib, axiom,
    ((![H : nat > $o, F1 : nat, F2 : nat > nat, Nat : nat]: ((H @ (case_nat_nat @ F1 @ F2 @ Nat)) = (case_nat_o @ (H @ F1) @ (^[X4 : nat]: (H @ (F2 @ X4))) @ Nat))))). % nat.case_distrib
thf(fact_25_nat_Ocase__distrib, axiom,
    ((![H : nat > nat, F1 : nat, F2 : nat > nat, Nat : nat]: ((H @ (case_nat_nat @ F1 @ F2 @ Nat)) = (case_nat_nat @ (H @ F1) @ (^[X4 : nat]: (H @ (F2 @ X4))) @ Nat))))). % nat.case_distrib
thf(fact_26_nat_Odistinct_I1_J, axiom,
    ((![X22 : nat]: (~ ((zero_zero_nat = (suc @ X22))))))). % nat.distinct(1)
thf(fact_27_old_Onat_Odistinct_I2_J, axiom,
    ((![Nat2 : nat]: (~ (((suc @ Nat2) = zero_zero_nat)))))). % old.nat.distinct(2)
thf(fact_28_old_Onat_Odistinct_I1_J, axiom,
    ((![Nat2 : nat]: (~ ((zero_zero_nat = (suc @ Nat2))))))). % old.nat.distinct(1)
thf(fact_29_nat_OdiscI, axiom,
    ((![Nat : nat, X22 : nat]: ((Nat = (suc @ X22)) => (~ ((Nat = zero_zero_nat))))))). % nat.discI
thf(fact_30_nat__induct, axiom,
    ((![P2 : nat > $o, N2 : nat]: ((P2 @ zero_zero_nat) => ((![N3 : nat]: ((P2 @ N3) => (P2 @ (suc @ N3)))) => (P2 @ N2)))))). % nat_induct
thf(fact_31_diff__induct, axiom,
    ((![P2 : nat > nat > $o, M : nat, N2 : nat]: ((![X5 : nat]: (P2 @ X5 @ zero_zero_nat)) => ((![Y3 : nat]: (P2 @ zero_zero_nat @ (suc @ Y3))) => ((![X5 : nat, Y3 : nat]: ((P2 @ X5 @ Y3) => (P2 @ (suc @ X5) @ (suc @ Y3)))) => (P2 @ M @ N2))))))). % diff_induct
thf(fact_32_zero__induct, axiom,
    ((![P2 : nat > $o, K : nat]: ((P2 @ K) => ((![N3 : nat]: ((P2 @ (suc @ N3)) => (P2 @ N3))) => (P2 @ zero_zero_nat)))))). % zero_induct
thf(fact_33_Suc__neq__Zero, axiom,
    ((![M : nat]: (~ (((suc @ M) = zero_zero_nat)))))). % Suc_neq_Zero
thf(fact_34_Zero__neq__Suc, axiom,
    ((![M : nat]: (~ ((zero_zero_nat = (suc @ M))))))). % Zero_neq_Suc
thf(fact_35_Zero__not__Suc, axiom,
    ((![M : nat]: (~ ((zero_zero_nat = (suc @ M))))))). % Zero_not_Suc
thf(fact_36_old_Onat_Oexhaust, axiom,
    ((![Y : nat]: ((~ ((Y = zero_zero_nat))) => (~ ((![Nat3 : nat]: (~ ((Y = (suc @ Nat3))))))))))). % old.nat.exhaust
thf(fact_37_old_Onat_Oinducts, axiom,
    ((![P2 : nat > $o, Nat : nat]: ((P2 @ zero_zero_nat) => ((![Nat3 : nat]: ((P2 @ Nat3) => (P2 @ (suc @ Nat3)))) => (P2 @ Nat)))))). % old.nat.inducts
thf(fact_38_not0__implies__Suc, axiom,
    ((![N2 : nat]: ((~ ((N2 = zero_zero_nat))) => (?[M2 : nat]: (N2 = (suc @ M2))))))). % not0_implies_Suc
thf(fact_39_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_40_com_Odistinct_I5_J, axiom,
    ((![X41 : com, X42 : com]: (~ ((skip = (semi @ X41 @ X42))))))). % com.distinct(5)
thf(fact_41_nat_Osplit__sels_I2_J, axiom,
    ((![P2 : $o > $o, F1 : $o, F2 : nat > $o, Nat : nat]: ((P2 @ (case_nat_o @ F1 @ F2 @ Nat)) = (~ ((((((Nat = zero_zero_nat)) & ((~ ((P2 @ F1)))))) | ((((Nat = (suc @ (pred @ Nat)))) & ((~ ((P2 @ (F2 @ (pred @ Nat))))))))))))))). % nat.split_sels(2)
thf(fact_42_nat_Osplit__sels_I2_J, axiom,
    ((![P2 : nat > $o, F1 : nat, F2 : nat > nat, Nat : nat]: ((P2 @ (case_nat_nat @ F1 @ F2 @ Nat)) = (~ ((((((Nat = zero_zero_nat)) & ((~ ((P2 @ F1)))))) | ((((Nat = (suc @ (pred @ Nat)))) & ((~ ((P2 @ (F2 @ (pred @ Nat))))))))))))))). % nat.split_sels(2)
thf(fact_43_nat_Osplit__sels_I1_J, axiom,
    ((![P2 : $o > $o, F1 : $o, F2 : nat > $o, Nat : nat]: ((P2 @ (case_nat_o @ F1 @ F2 @ Nat)) = (((((Nat = zero_zero_nat)) => ((P2 @ F1)))) & ((((Nat = (suc @ (pred @ Nat)))) => ((P2 @ (F2 @ (pred @ Nat))))))))))). % nat.split_sels(1)
thf(fact_44_nat_Osplit__sels_I1_J, axiom,
    ((![P2 : nat > $o, F1 : nat, F2 : nat > nat, Nat : nat]: ((P2 @ (case_nat_nat @ F1 @ F2 @ Nat)) = (((((Nat = zero_zero_nat)) => ((P2 @ F1)))) & ((((Nat = (suc @ (pred @ Nat)))) => ((P2 @ (F2 @ (pred @ Nat))))))))))). % nat.split_sels(1)
thf(fact_45_size__neq__size__imp__neq, axiom,
    ((![X : com, Y : com]: ((~ (((size_size_com @ X) = (size_size_com @ Y)))) => (~ ((X = Y))))))). % size_neq_size_imp_neq
thf(fact_46_zero__reorient, axiom,
    ((![X : nat]: ((zero_zero_nat = X) = (X = zero_zero_nat))))). % zero_reorient
thf(fact_47_pred__def, axiom,
    ((pred = (case_nat_nat @ zero_zero_nat @ (^[X2 : nat]: X2))))). % pred_def
thf(fact_48_Body__triple__valid__0, axiom,
    ((![P2 : a > state > $o, Pn : pname, Q2 : a > state > $o]: (hoare_1926814542alid_a @ zero_zero_nat @ (hoare_719046530iple_a @ P2 @ (body @ Pn) @ Q2))))). % Body_triple_valid_0
thf(fact_49_com_Osize__gen_I1_J, axiom,
    (((size_com @ skip) = zero_zero_nat))). % com.size_gen(1)
thf(fact_50_com_Osize_I9_J, axiom,
    (((size_size_com @ skip) = zero_zero_nat))). % com.size(9)
thf(fact_51_com_Oinject_I6_J, axiom,
    ((![X7 : pname, Y7 : pname]: (((body @ X7) = (body @ Y7)) = (X7 = Y7))))). % com.inject(6)
thf(fact_52_com_Osize__gen_I7_J, axiom,
    ((![X7 : pname]: ((size_com @ (body @ X7)) = zero_zero_nat)))). % com.size_gen(7)
thf(fact_53_com_Osize_I15_J, axiom,
    ((![X7 : pname]: ((size_size_com @ (body @ X7)) = zero_zero_nat)))). % com.size(15)
thf(fact_54_com_Odistinct_I41_J, axiom,
    ((![X41 : com, X42 : com, X7 : pname]: (~ (((semi @ X41 @ X42) = (body @ X7))))))). % com.distinct(41)
thf(fact_55_com_Odistinct_I11_J, axiom,
    ((![X7 : pname]: (~ ((skip = (body @ X7))))))). % com.distinct(11)
thf(fact_56_com_Osize_I12_J, axiom,
    ((![X41 : com, X42 : com]: ((size_size_com @ (semi @ X41 @ X42)) = (plus_plus_nat @ (plus_plus_nat @ (size_size_com @ X41) @ (size_size_com @ X42)) @ (suc @ zero_zero_nat)))))). % com.size(12)
thf(fact_57_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_58_diff__Suc, axiom,
    ((![M : nat, N2 : nat]: ((minus_minus_nat @ M @ (suc @ N2)) = (case_nat_nat @ zero_zero_nat @ (^[K2 : nat]: K2) @ (minus_minus_nat @ M @ N2)))))). % diff_Suc
thf(fact_59_min__Suc1, axiom,
    ((![N2 : nat, M : nat]: ((ord_min_nat @ (suc @ N2) @ M) = (case_nat_nat @ zero_zero_nat @ (^[M3 : nat]: (suc @ (ord_min_nat @ N2 @ M3))) @ M))))). % min_Suc1
thf(fact_60_add__right__cancel, axiom,
    ((![B : nat, A : nat, C2 : nat]: (((plus_plus_nat @ B @ A) = (plus_plus_nat @ C2 @ A)) = (B = C2))))). % add_right_cancel
thf(fact_61_add__left__cancel, axiom,
    ((![A : nat, B : nat, C2 : nat]: (((plus_plus_nat @ A @ B) = (plus_plus_nat @ A @ C2)) = (B = C2))))). % add_left_cancel
thf(fact_62_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_63_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_64_add__cancel__right__right, axiom,
    ((![A : nat, B : nat]: ((A = (plus_plus_nat @ A @ B)) = (B = zero_zero_nat))))). % add_cancel_right_right
thf(fact_65_add__cancel__right__left, axiom,
    ((![A : nat, B : nat]: ((A = (plus_plus_nat @ B @ A)) = (B = zero_zero_nat))))). % add_cancel_right_left
thf(fact_66_add__cancel__left__right, axiom,
    ((![A : nat, B : nat]: (((plus_plus_nat @ A @ B) = A) = (B = zero_zero_nat))))). % add_cancel_left_right
thf(fact_67_add__cancel__left__left, axiom,
    ((![B : nat, A : nat]: (((plus_plus_nat @ B @ A) = A) = (B = zero_zero_nat))))). % add_cancel_left_left
thf(fact_68_add_Oright__neutral, axiom,
    ((![A : nat]: ((plus_plus_nat @ A @ zero_zero_nat) = A)))). % add.right_neutral
thf(fact_69_add_Oleft__neutral, axiom,
    ((![A : nat]: ((plus_plus_nat @ zero_zero_nat @ A) = A)))). % add.left_neutral
thf(fact_70_cancel__comm__monoid__add__class_Odiff__cancel, axiom,
    ((![A : nat]: ((minus_minus_nat @ A @ A) = zero_zero_nat)))). % cancel_comm_monoid_add_class.diff_cancel
thf(fact_71_diff__zero, axiom,
    ((![A : nat]: ((minus_minus_nat @ A @ zero_zero_nat) = A)))). % diff_zero
thf(fact_72_zero__diff, axiom,
    ((![A : nat]: ((minus_minus_nat @ zero_zero_nat @ A) = zero_zero_nat)))). % zero_diff
thf(fact_73_add__diff__cancel__right_H, axiom,
    ((![A : nat, B : nat]: ((minus_minus_nat @ (plus_plus_nat @ A @ B) @ B) = A)))). % add_diff_cancel_right'
thf(fact_74_add__diff__cancel__right, axiom,
    ((![A : nat, C2 : nat, B : nat]: ((minus_minus_nat @ (plus_plus_nat @ A @ C2) @ (plus_plus_nat @ B @ C2)) = (minus_minus_nat @ A @ B))))). % add_diff_cancel_right
thf(fact_75_add__diff__cancel__left_H, axiom,
    ((![A : nat, B : nat]: ((minus_minus_nat @ (plus_plus_nat @ A @ B) @ A) = B)))). % add_diff_cancel_left'
thf(fact_76_add__diff__cancel__left, axiom,
    ((![C2 : nat, A : nat, B : nat]: ((minus_minus_nat @ (plus_plus_nat @ C2 @ A) @ (plus_plus_nat @ C2 @ B)) = (minus_minus_nat @ A @ B))))). % add_diff_cancel_left
thf(fact_77_add__Suc__right, axiom,
    ((![M : nat, N2 : nat]: ((plus_plus_nat @ M @ (suc @ N2)) = (suc @ (plus_plus_nat @ M @ N2)))))). % add_Suc_right
thf(fact_78_Nat_Oadd__0__right, axiom,
    ((![M : nat]: ((plus_plus_nat @ M @ zero_zero_nat) = M)))). % Nat.add_0_right
thf(fact_79_add__is__0, axiom,
    ((![M : nat, N2 : nat]: (((plus_plus_nat @ M @ N2) = zero_zero_nat) = (((M = zero_zero_nat)) & ((N2 = zero_zero_nat))))))). % add_is_0
thf(fact_80_Suc__diff__diff, axiom,
    ((![M : nat, N2 : nat, K : nat]: ((minus_minus_nat @ (minus_minus_nat @ (suc @ M) @ N2) @ (suc @ K)) = (minus_minus_nat @ (minus_minus_nat @ M @ N2) @ K))))). % Suc_diff_diff
thf(fact_81_diff__Suc__Suc, axiom,
    ((![M : nat, N2 : nat]: ((minus_minus_nat @ (suc @ M) @ (suc @ N2)) = (minus_minus_nat @ M @ N2))))). % diff_Suc_Suc
thf(fact_82_diff__self__eq__0, axiom,
    ((![M : nat]: ((minus_minus_nat @ M @ M) = zero_zero_nat)))). % diff_self_eq_0
thf(fact_83_diff__0__eq__0, axiom,
    ((![N2 : nat]: ((minus_minus_nat @ zero_zero_nat @ N2) = zero_zero_nat)))). % diff_0_eq_0
thf(fact_84_diff__diff__left, axiom,
    ((![I : nat, J : nat, K : nat]: ((minus_minus_nat @ (minus_minus_nat @ I @ J) @ K) = (minus_minus_nat @ I @ (plus_plus_nat @ J @ K)))))). % diff_diff_left
thf(fact_85_min__Suc__Suc, axiom,
    ((![M : nat, N2 : nat]: ((ord_min_nat @ (suc @ M) @ (suc @ N2)) = (suc @ (ord_min_nat @ M @ N2)))))). % min_Suc_Suc
thf(fact_86_min__0R, axiom,
    ((![N2 : nat]: ((ord_min_nat @ N2 @ zero_zero_nat) = zero_zero_nat)))). % min_0R
thf(fact_87_min__0L, axiom,
    ((![N2 : nat]: ((ord_min_nat @ zero_zero_nat @ N2) = zero_zero_nat)))). % min_0L
thf(fact_88_diff__add__zero, axiom,
    ((![A : nat, B : nat]: ((minus_minus_nat @ A @ (plus_plus_nat @ A @ B)) = zero_zero_nat)))). % diff_add_zero
thf(fact_89_zero__induct__lemma, axiom,
    ((![P2 : nat > $o, K : nat, I : nat]: ((P2 @ K) => ((![N3 : nat]: ((P2 @ (suc @ N3)) => (P2 @ N3))) => (P2 @ (minus_minus_nat @ K @ I))))))). % zero_induct_lemma
thf(fact_90_diffs0__imp__equal, axiom,
    ((![M : nat, N2 : nat]: (((minus_minus_nat @ M @ N2) = zero_zero_nat) => (((minus_minus_nat @ N2 @ M) = zero_zero_nat) => (M = N2)))))). % diffs0_imp_equal
thf(fact_91_minus__nat_Odiff__0, axiom,
    ((![M : nat]: ((minus_minus_nat @ M @ zero_zero_nat) = M)))). % minus_nat.diff_0
thf(fact_92_add__Suc__shift, axiom,
    ((![M : nat, N2 : nat]: ((plus_plus_nat @ (suc @ M) @ N2) = (plus_plus_nat @ M @ (suc @ N2)))))). % add_Suc_shift
thf(fact_93_nat__arith_Osuc1, axiom,
    ((![A2 : nat, K : nat, A : nat]: ((A2 = (plus_plus_nat @ K @ A)) => ((suc @ A2) = (plus_plus_nat @ K @ (suc @ A))))))). % nat_arith.suc1
thf(fact_94_add__Suc, axiom,
    ((![M : nat, N2 : nat]: ((plus_plus_nat @ (suc @ M) @ N2) = (suc @ (plus_plus_nat @ M @ N2)))))). % add_Suc
thf(fact_95_plus__nat_Oadd__0, axiom,
    ((![N2 : nat]: ((plus_plus_nat @ zero_zero_nat @ N2) = N2)))). % plus_nat.add_0
thf(fact_96_add__eq__self__zero, axiom,
    ((![M : nat, N2 : nat]: (((plus_plus_nat @ M @ N2) = M) => (N2 = zero_zero_nat))))). % add_eq_self_zero
thf(fact_97_diff__add__inverse2, axiom,
    ((![M : nat, N2 : nat]: ((minus_minus_nat @ (plus_plus_nat @ M @ N2) @ N2) = M)))). % diff_add_inverse2
thf(fact_98_diff__add__inverse, axiom,
    ((![N2 : nat, M : nat]: ((minus_minus_nat @ (plus_plus_nat @ N2 @ M) @ N2) = M)))). % diff_add_inverse
thf(fact_99_diff__commute, axiom,
    ((![I : nat, J : nat, K : nat]: ((minus_minus_nat @ (minus_minus_nat @ I @ J) @ K) = (minus_minus_nat @ (minus_minus_nat @ I @ K) @ J))))). % diff_commute
thf(fact_100_diff__cancel2, axiom,
    ((![M : nat, K : nat, N2 : nat]: ((minus_minus_nat @ (plus_plus_nat @ M @ K) @ (plus_plus_nat @ N2 @ K)) = (minus_minus_nat @ M @ N2))))). % diff_cancel2
thf(fact_101_Nat_Odiff__cancel, axiom,
    ((![K : nat, M : nat, N2 : nat]: ((minus_minus_nat @ (plus_plus_nat @ K @ M) @ (plus_plus_nat @ K @ N2)) = (minus_minus_nat @ M @ N2))))). % Nat.diff_cancel
thf(fact_102_min__diff, axiom,
    ((![M : nat, I : nat, N2 : nat]: ((ord_min_nat @ (minus_minus_nat @ M @ I) @ (minus_minus_nat @ N2 @ I)) = (minus_minus_nat @ (ord_min_nat @ M @ N2) @ I))))). % min_diff
thf(fact_103_min__add__distrib__right, axiom,
    ((![X : nat, Y : nat, Z2 : nat]: ((plus_plus_nat @ X @ (ord_min_nat @ Y @ Z2)) = (ord_min_nat @ (plus_plus_nat @ X @ Y) @ (plus_plus_nat @ X @ Z2)))))). % min_add_distrib_right
thf(fact_104_min__add__distrib__left, axiom,
    ((![X : nat, Y : nat, Z2 : nat]: ((plus_plus_nat @ (ord_min_nat @ X @ Y) @ Z2) = (ord_min_nat @ (plus_plus_nat @ X @ Z2) @ (plus_plus_nat @ Y @ Z2)))))). % min_add_distrib_left
thf(fact_105_diff__right__commute, axiom,
    ((![A : nat, C2 : nat, B : nat]: ((minus_minus_nat @ (minus_minus_nat @ A @ C2) @ B) = (minus_minus_nat @ (minus_minus_nat @ A @ B) @ C2))))). % diff_right_commute
thf(fact_106_add__implies__diff, axiom,
    ((![C2 : nat, B : nat, A : nat]: (((plus_plus_nat @ C2 @ B) = A) => (C2 = (minus_minus_nat @ A @ B)))))). % add_implies_diff
thf(fact_107_add__right__imp__eq, axiom,
    ((![B : nat, A : nat, C2 : nat]: (((plus_plus_nat @ B @ A) = (plus_plus_nat @ C2 @ A)) => (B = C2))))). % add_right_imp_eq
thf(fact_108_diff__diff__add, axiom,
    ((![A : nat, B : nat, C2 : nat]: ((minus_minus_nat @ (minus_minus_nat @ A @ B) @ C2) = (minus_minus_nat @ A @ (plus_plus_nat @ B @ C2)))))). % diff_diff_add
thf(fact_109_add__left__imp__eq, axiom,
    ((![A : nat, B : nat, C2 : nat]: (((plus_plus_nat @ A @ B) = (plus_plus_nat @ A @ C2)) => (B = C2))))). % add_left_imp_eq
thf(fact_110_add_Oleft__commute, axiom,
    ((![B : nat, A : nat, C2 : nat]: ((plus_plus_nat @ B @ (plus_plus_nat @ A @ C2)) = (plus_plus_nat @ A @ (plus_plus_nat @ B @ C2)))))). % add.left_commute
thf(fact_111_add_Ocommute, axiom,
    ((plus_plus_nat = (^[A3 : nat]: (^[B2 : nat]: (plus_plus_nat @ B2 @ A3)))))). % add.commute
thf(fact_112_add_Oassoc, axiom,
    ((![A : nat, B : nat, C2 : nat]: ((plus_plus_nat @ (plus_plus_nat @ A @ B) @ C2) = (plus_plus_nat @ A @ (plus_plus_nat @ B @ C2)))))). % add.assoc
thf(fact_113_group__cancel_Oadd2, axiom,
    ((![B3 : nat, K : nat, B : nat, A : nat]: ((B3 = (plus_plus_nat @ K @ B)) => ((plus_plus_nat @ A @ B3) = (plus_plus_nat @ K @ (plus_plus_nat @ A @ B))))))). % group_cancel.add2
thf(fact_114_group__cancel_Oadd1, axiom,
    ((![A2 : nat, K : nat, A : nat, B : nat]: ((A2 = (plus_plus_nat @ K @ A)) => ((plus_plus_nat @ A2 @ B) = (plus_plus_nat @ K @ (plus_plus_nat @ A @ B))))))). % group_cancel.add1
thf(fact_115_add__mono__thms__linordered__semiring_I4_J, axiom,
    ((![I : nat, J : nat, K : nat, L : nat]: (((I = J) & (K = L)) => ((plus_plus_nat @ I @ K) = (plus_plus_nat @ J @ L)))))). % add_mono_thms_linordered_semiring(4)
thf(fact_116_ab__semigroup__add__class_Oadd__ac_I1_J, axiom,
    ((![A : nat, B : nat, C2 : nat]: ((plus_plus_nat @ (plus_plus_nat @ A @ B) @ C2) = (plus_plus_nat @ A @ (plus_plus_nat @ B @ C2)))))). % ab_semigroup_add_class.add_ac(1)
thf(fact_117_comm__monoid__add__class_Oadd__0, axiom,
    ((![A : nat]: ((plus_plus_nat @ zero_zero_nat @ A) = A)))). % comm_monoid_add_class.add_0

% Conjectures (1)
thf(conj_0, conjecture,
    (((~ ((hoare_1012081509le_a_o @ (^[P : a > state > $o]: (^[C : com]: (^[Q : a > state > $o]: (![Z : a]: (![S : state]: (((P @ Z @ S)) => ((![S2 : state]: (((evaln @ C @ S @ (suc @ n) @ S2)) => ((Q @ Z @ S2))))))))))) @ t))) | (hoare_1012081509le_a_o @ (^[P : a > state > $o]: (^[C : com]: (^[Q : a > state > $o]: (![Z : a]: (![S : state]: (((P @ Z @ S)) => ((![S2 : state]: (((evaln @ C @ S @ n @ S2)) => ((Q @ Z @ S2))))))))))) @ t)))).
