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

% Could-be-implicit typings (6)
thf(ty_n_t__Option__Ooption_It__Com__Ocom_J, type,
    option_com : $tType).
thf(ty_n_t__Typerep__Otyperep, type,
    typerep : $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).

% Explicit typings (16)
thf(sy_c_Com_Obody, type,
    body : pname > option_com).
thf(sy_c_Com_Ocom_OBODY, type,
    body2 : 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_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_Nat_Osize__class_Osize_001t__Com__Ocom, type,
    size_size_com : com > nat).
thf(sy_c_Nat_Osize__class_Osize_001t__Typerep__Otyperep, type,
    size_size_typerep : typerep > 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_OSome_001t__Com__Ocom, type,
    some_com : com > option_com).
thf(sy_c_Option_Ooption_Othe_001t__Com__Ocom, type,
    the_com : option_com > com).
thf(sy_v_pn, type,
    pn : pname).

% Relevant facts (82)
thf(fact_0_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_1_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_2_com_Oinject_I6_J, axiom,
    ((![X7 : pname, Y7 : pname]: (((body2 @ X7) = (body2 @ Y7)) = (X7 = Y7))))). % com.inject(6)
thf(fact_3_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_4_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_5_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_6_evalc__elim__cases_I1_J, axiom,
    ((![S : state, T : state]: ((evalc @ skip @ S @ T) => (T = S))))). % evalc_elim_cases(1)
thf(fact_7_evalc_OSkip, axiom,
    ((![S : state]: (evalc @ skip @ S @ S)))). % evalc.Skip
thf(fact_8_com_Odistinct_I11_J, axiom,
    ((![X7 : pname]: (~ ((skip = (body2 @ X7))))))). % com.distinct(11)
thf(fact_9_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_10_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_11_evaln_OSkip, axiom,
    ((![S : state, N : nat]: (evaln @ skip @ S @ N @ S)))). % evaln.Skip
thf(fact_12_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_13_evaln__evalc, axiom,
    ((![C : com, S : state, N : nat, T : state]: ((evaln @ C @ S @ N @ T) => (evalc @ C @ S @ T))))). % evaln_evalc
thf(fact_14_evalc__evaln, axiom,
    ((![C : com, S : state, T : state]: ((evalc @ C @ S @ T) => (?[N2 : nat]: (evaln @ C @ S @ N2 @ T)))))). % evalc_evaln
thf(fact_15_eval__eq, axiom,
    ((evalc = (^[C3 : com]: (^[S3 : state]: (^[T3 : state]: (?[N3 : nat]: (evaln @ C3 @ S3 @ N3 @ T3)))))))). % eval_eq
thf(fact_16_nat_Oinject, axiom,
    ((![X2 : nat, Y2 : nat]: (((suc @ X2) = (suc @ Y2)) = (X2 = Y2))))). % nat.inject
thf(fact_17_old_Onat_Oinject, axiom,
    ((![Nat : nat, Nat2 : nat]: (((suc @ Nat) = (suc @ Nat2)) = (Nat = Nat2))))). % old.nat.inject
thf(fact_18_Suc__inject, axiom,
    ((![X : nat, Y : nat]: (((suc @ X) = (suc @ Y)) => (X = Y))))). % Suc_inject
thf(fact_19_n__not__Suc__n, axiom,
    ((![N : nat]: (~ ((N = (suc @ N))))))). % n_not_Suc_n
thf(fact_20_not0__implies__Suc, axiom,
    ((![N : nat]: ((~ ((N = zero_zero_nat))) => (?[M : nat]: (N = (suc @ M))))))). % not0_implies_Suc
thf(fact_21_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_22_old_Onat_Oexhaust, axiom,
    ((![Y : nat]: ((~ ((Y = zero_zero_nat))) => (~ ((![Nat3 : nat]: (~ ((Y = (suc @ Nat3))))))))))). % old.nat.exhaust
thf(fact_23_Zero__not__Suc, axiom,
    ((![M2 : nat]: (~ ((zero_zero_nat = (suc @ M2))))))). % Zero_not_Suc
thf(fact_24_Zero__neq__Suc, axiom,
    ((![M2 : nat]: (~ ((zero_zero_nat = (suc @ M2))))))). % Zero_neq_Suc
thf(fact_25_Suc__neq__Zero, axiom,
    ((![M2 : nat]: (~ (((suc @ M2) = zero_zero_nat)))))). % Suc_neq_Zero
thf(fact_26_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_27_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_28_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_29_nat_OdiscI, axiom,
    ((![Nat : nat, X2 : nat]: ((Nat = (suc @ X2)) => (~ ((Nat = zero_zero_nat))))))). % nat.discI
thf(fact_30_old_Onat_Odistinct_I1_J, axiom,
    ((![Nat2 : nat]: (~ ((zero_zero_nat = (suc @ Nat2))))))). % old.nat.distinct(1)
thf(fact_31_old_Onat_Odistinct_I2_J, axiom,
    ((![Nat2 : nat]: (~ (((suc @ Nat2) = zero_zero_nat)))))). % old.nat.distinct(2)
thf(fact_32_nat_Odistinct_I1_J, axiom,
    ((![X2 : nat]: (~ ((zero_zero_nat = (suc @ X2))))))). % nat.distinct(1)
thf(fact_33_com_Osize__gen_I1_J, axiom,
    (((size_com @ skip) = zero_zero_nat))). % com.size_gen(1)
thf(fact_34_com_Osize__gen_I7_J, axiom,
    ((![X7 : pname]: ((size_com @ (body2 @ X7)) = zero_zero_nat)))). % com.size_gen(7)
thf(fact_35_com_Osize_I9_J, axiom,
    (((size_size_com @ skip) = zero_zero_nat))). % com.size(9)
thf(fact_36_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_37_size__neq__size__imp__neq, axiom,
    ((![X : typerep, Y : typerep]: ((~ (((size_size_typerep @ X) = (size_size_typerep @ Y)))) => (~ ((X = Y))))))). % size_neq_size_imp_neq
thf(fact_38_zero__reorient, axiom,
    ((![X : nat]: ((zero_zero_nat = X) = (X = zero_zero_nat))))). % zero_reorient
thf(fact_39_com_Osize_I15_J, axiom,
    ((![X7 : pname]: ((size_size_com @ (body2 @ X7)) = zero_zero_nat)))). % com.size(15)
thf(fact_40_zero__natural_Orsp, axiom,
    ((zero_zero_nat = zero_zero_nat))). % zero_natural.rsp
thf(fact_41_typerep_Osize__neq, axiom,
    ((![X : typerep]: (~ (((size_size_typerep @ X) = zero_zero_nat)))))). % typerep.size_neq
thf(fact_42_option_Ocollapse, axiom,
    ((![Option : option_com]: ((~ ((Option = none_com))) => ((some_com @ (the_com @ Option)) = Option))))). % option.collapse
thf(fact_43_option_Osel, axiom,
    ((![X2 : com]: ((the_com @ (some_com @ X2)) = X2)))). % option.sel
thf(fact_44_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_45_option_Oexhaust__sel, axiom,
    ((![Option : option_com]: ((~ ((Option = none_com))) => (Option = (some_com @ (the_com @ Option))))))). % option.exhaust_sel
thf(fact_46_add__left__cancel, axiom,
    ((![A : nat, B : nat, C : nat]: (((plus_plus_nat @ A @ B) = (plus_plus_nat @ A @ C)) = (B = C))))). % add_left_cancel
thf(fact_47_add__right__cancel, axiom,
    ((![B : nat, A : nat, C : nat]: (((plus_plus_nat @ B @ A) = (plus_plus_nat @ C @ A)) = (B = C))))). % add_right_cancel
thf(fact_48_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_49_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_50_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_51_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_52_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_53_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_54_add_Oright__neutral, axiom,
    ((![A : nat]: ((plus_plus_nat @ A @ zero_zero_nat) = A)))). % add.right_neutral
thf(fact_55_add_Oleft__neutral, axiom,
    ((![A : nat]: ((plus_plus_nat @ zero_zero_nat @ A) = A)))). % add.left_neutral
thf(fact_56_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_57_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_58_Nat_Oadd__0__right, axiom,
    ((![M2 : nat]: ((plus_plus_nat @ M2 @ zero_zero_nat) = M2)))). % Nat.add_0_right
thf(fact_59_add_Ocomm__neutral, axiom,
    ((![A : nat]: ((plus_plus_nat @ A @ zero_zero_nat) = A)))). % add.comm_neutral
thf(fact_60_comm__monoid__add__class_Oadd__0, axiom,
    ((![A : nat]: ((plus_plus_nat @ zero_zero_nat @ A) = A)))). % comm_monoid_add_class.add_0
thf(fact_61_ab__semigroup__add__class_Oadd__ac_I1_J, axiom,
    ((![A : nat, B : nat, C : nat]: ((plus_plus_nat @ (plus_plus_nat @ A @ B) @ C) = (plus_plus_nat @ A @ (plus_plus_nat @ B @ C)))))). % ab_semigroup_add_class.add_ac(1)
thf(fact_62_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_63_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_64_group__cancel_Oadd2, axiom,
    ((![B2 : nat, K : nat, B : nat, A : nat]: ((B2 = (plus_plus_nat @ K @ B)) => ((plus_plus_nat @ A @ B2) = (plus_plus_nat @ K @ (plus_plus_nat @ A @ B))))))). % group_cancel.add2
thf(fact_65_add_Oassoc, axiom,
    ((![A : nat, B : nat, C : nat]: ((plus_plus_nat @ (plus_plus_nat @ A @ B) @ C) = (plus_plus_nat @ A @ (plus_plus_nat @ B @ C)))))). % add.assoc
thf(fact_66_add_Ocommute, axiom,
    ((plus_plus_nat = (^[A3 : nat]: (^[B3 : nat]: (plus_plus_nat @ B3 @ A3)))))). % add.commute
thf(fact_67_add_Oleft__commute, axiom,
    ((![B : nat, A : nat, C : nat]: ((plus_plus_nat @ B @ (plus_plus_nat @ A @ C)) = (plus_plus_nat @ A @ (plus_plus_nat @ B @ C)))))). % add.left_commute
thf(fact_68_add__left__imp__eq, axiom,
    ((![A : nat, B : nat, C : nat]: (((plus_plus_nat @ A @ B) = (plus_plus_nat @ A @ C)) => (B = C))))). % add_left_imp_eq
thf(fact_69_add__right__imp__eq, axiom,
    ((![B : nat, A : nat, C : nat]: (((plus_plus_nat @ B @ A) = (plus_plus_nat @ C @ A)) => (B = C))))). % add_right_imp_eq
thf(fact_70_plus__nat_Oadd__0, axiom,
    ((![N : nat]: ((plus_plus_nat @ zero_zero_nat @ N) = N)))). % plus_nat.add_0
thf(fact_71_add__eq__self__zero, axiom,
    ((![M2 : nat, N : nat]: (((plus_plus_nat @ M2 @ N) = M2) => (N = zero_zero_nat))))). % add_eq_self_zero
thf(fact_72_add__Suc__shift, axiom,
    ((![M2 : nat, N : nat]: ((plus_plus_nat @ (suc @ M2) @ N) = (plus_plus_nat @ M2 @ (suc @ N)))))). % add_Suc_shift
thf(fact_73_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_74_add__Suc, axiom,
    ((![M2 : nat, N : nat]: ((plus_plus_nat @ (suc @ M2) @ N) = (suc @ (plus_plus_nat @ M2 @ N)))))). % add_Suc
thf(fact_75_add__is__1, axiom,
    ((![M2 : nat, N : nat]: (((plus_plus_nat @ M2 @ N) = (suc @ zero_zero_nat)) = (((((M2 = (suc @ zero_zero_nat))) & ((N = zero_zero_nat)))) | ((((M2 = zero_zero_nat)) & ((N = (suc @ zero_zero_nat)))))))))). % add_is_1
thf(fact_76_one__is__add, axiom,
    ((![M2 : nat, N : nat]: (((suc @ zero_zero_nat) = (plus_plus_nat @ M2 @ N)) = (((((M2 = (suc @ zero_zero_nat))) & ((N = zero_zero_nat)))) | ((((M2 = zero_zero_nat)) & ((N = (suc @ zero_zero_nat)))))))))). % one_is_add
thf(fact_77_Euclid__induct, axiom,
    ((![P : nat > nat > $o, A : nat, B : nat]: ((![A4 : nat, B4 : nat]: ((P @ A4 @ B4) = (P @ B4 @ A4))) => ((![A4 : nat]: (P @ A4 @ zero_zero_nat)) => ((![A4 : nat, B4 : nat]: ((P @ A4 @ B4) => (P @ A4 @ (plus_plus_nat @ A4 @ B4)))) => (P @ A @ B))))))). % Euclid_induct
thf(fact_78_verit__sum__simplify, axiom,
    ((![A : nat]: ((plus_plus_nat @ A @ zero_zero_nat) = A)))). % verit_sum_simplify
thf(fact_79_add__0__iff, axiom,
    ((![B : nat, A : nat]: ((B = (plus_plus_nat @ B @ A)) = (A = zero_zero_nat))))). % add_0_iff
thf(fact_80_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_81_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)

% Conjectures (1)
thf(conj_0, conjecture,
    ((![Z : state, S4 : state]: ((~ ((evalc @ (the_com @ (body @ pn)) @ Z @ S4))) | (evalc @ (body2 @ pn) @ Z @ S4))))).
