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

% Could-be-implicit typings (8)
thf(ty_n_t__Set__Oset_It__Option__Ooption_It__Com__Ocom_J_J, type,
    set_option_com : $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__Ocom, type,
    com : $tType).

% Explicit typings (26)
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_OBODY, type,
    body2 : pname > com).
thf(sy_c_Com_Ocom_OCall, type,
    call : vname > pname > (state > nat) > com).
thf(sy_c_Com_Ocom_OSKIP, type,
    skip : com).
thf(sy_c_Hoare__Mirabelle__raqjowkjvm_Ostate__not__singleton, type,
    hoare_405891322gleton : $o).
thf(sy_c_Option_Ocombine__options_001t__Com__Ocom, type,
    combine_options_com : (com > com > com) > option_com > option_com > option_com).
thf(sy_c_Option_Ois__none_001t__Com__Ocom, type,
    is_none_com : option_com > $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_Opred__option_001t__Com__Ocom, type,
    pred_option_com : (com > $o) > option_com > $o).
thf(sy_c_Option_Ooption_Oset__option_001t__Com__Ocom, type,
    set_option_com2 : option_com > set_com).
thf(sy_c_Option_Othese_001t__Com__Ocom, type,
    these_com : set_option_com > set_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_Orderings_Obot__class_Obot_001t__Set__Oset_It__Option__Ooption_It__Com__Ocom_J_J, type,
    bot_bo697186986on_com : set_option_com).
thf(sy_c_Orderings_Otop__class_Otop_001t__Set__Oset_It__Com__Ocom_J, type,
    top_top_set_com : set_com).
thf(sy_c_Orderings_Otop__class_Otop_001t__Set__Oset_It__Option__Ooption_It__Com__Ocom_J_J, type,
    top_to182305990on_com : set_option_com).
thf(sy_c_Set_Oimage_001t__Com__Ocom_001t__Option__Ooption_It__Com__Ocom_J, type,
    image_com_option_com : (com > option_com) > set_com > set_option_com).
thf(sy_c_Set_Oinsert_001t__Com__Ocom, type,
    insert_com : com > set_com > set_com).
thf(sy_c_Set_Oinsert_001t__Option__Ooption_It__Com__Ocom_J, type,
    insert_option_com : option_com > set_option_com > set_option_com).
thf(sy_c_member_001t__Com__Ocom, type,
    member_com : com > set_com > $o).
thf(sy_c_member_001t__Option__Ooption_It__Com__Ocom_J, type,
    member_option_com : option_com > set_option_com > $o).
thf(sy_v_c, type,
    c : com).
thf(sy_v_pn, type,
    pn : pname).
thf(sy_v_y, type,
    y : com).

% Relevant facts (52)
thf(fact_0_single__stateE, axiom,
    ((hoare_405891322gleton => (![T : state]: (~ ((![S : state]: (S = T)))))))). % single_stateE
thf(fact_1_state__not__singleton__def, axiom,
    ((hoare_405891322gleton = (?[S2 : state]: (?[T2 : state]: (~ ((S2 = T2)))))))). % state_not_singleton_def
thf(fact_2_WT__bodiesD, axiom,
    ((![Pn : pname, B : com]: (wT_bodies => (((body @ Pn) = (some_com @ B)) => (wt @ B)))))). % WT_bodiesD
thf(fact_3_option_Oinject, axiom,
    ((![X2 : com, Y2 : com]: (((some_com @ X2) = (some_com @ Y2)) = (X2 = Y2))))). % option.inject
thf(fact_4_WTs__elim__cases_I7_J, axiom,
    ((![P : pname]: ((wt @ (body2 @ P)) => (~ ((![Y : com]: (~ (((body @ P) = (some_com @ Y))))))))))). % WTs_elim_cases(7)
thf(fact_5_combine__options__simps_I3_J, axiom,
    ((![F : com > com > com, A : com, B : com]: ((combine_options_com @ F @ (some_com @ A) @ (some_com @ B)) = (some_com @ (F @ A @ B)))))). % combine_options_simps(3)
thf(fact_6_is__none__code_I2_J, axiom,
    ((![X : com]: (~ ((is_none_com @ (some_com @ X))))))). % is_none_code(2)
thf(fact_7_in__these__eq, axiom,
    ((![X : com, A2 : set_option_com]: ((member_com @ X @ (these_com @ A2)) = (member_option_com @ (some_com @ X) @ A2))))). % in_these_eq
thf(fact_8_option_Opred__inject_I2_J, axiom,
    ((![P : com > $o, A : com]: ((pred_option_com @ P @ (some_com @ A)) = (P @ A))))). % option.pred_inject(2)
thf(fact_9_WT_OSkip, axiom,
    ((wt @ skip))). % WT.Skip
thf(fact_10_com_Oinject_I6_J, axiom,
    ((![X7 : pname, Y7 : pname]: (((body2 @ X7) = (body2 @ Y7)) = (X7 = Y7))))). % com.inject(6)
thf(fact_11_com_Odistinct_I11_J, axiom,
    ((![X7 : pname]: (~ ((skip = (body2 @ X7))))))). % com.distinct(11)
thf(fact_12_combine__options__assoc, axiom,
    ((![F : com > com > com, X : option_com, Y3 : option_com, Z : option_com]: ((![X3 : com, Y : com, Z2 : com]: ((F @ (F @ X3 @ Y) @ Z2) = (F @ X3 @ (F @ Y @ Z2)))) => ((combine_options_com @ F @ (combine_options_com @ F @ X @ Y3) @ Z) = (combine_options_com @ F @ X @ (combine_options_com @ F @ Y3 @ Z))))))). % combine_options_assoc
thf(fact_13_combine__options__commute, axiom,
    ((![F : com > com > com, X : option_com, Y3 : option_com]: ((![X3 : com, Y : com]: ((F @ X3 @ Y) = (F @ Y @ X3))) => ((combine_options_com @ F @ X @ Y3) = (combine_options_com @ F @ Y3 @ X)))))). % combine_options_commute
thf(fact_14_combine__options__left__commute, axiom,
    ((![F : com > com > com, Y3 : option_com, X : option_com, Z : option_com]: ((![X3 : com, Y : com]: ((F @ X3 @ Y) = (F @ Y @ X3))) => ((![X3 : com, Y : com, Z2 : com]: ((F @ (F @ X3 @ Y) @ Z2) = (F @ X3 @ (F @ Y @ Z2)))) => ((combine_options_com @ F @ Y3 @ (combine_options_com @ F @ X @ Z)) = (combine_options_com @ F @ X @ (combine_options_com @ F @ Y3 @ Z)))))))). % combine_options_left_commute
thf(fact_15_is__none__simps_I2_J, axiom,
    ((![X : com]: (~ ((is_none_com @ (some_com @ X))))))). % is_none_simps(2)
thf(fact_16_WT_OBody, axiom,
    ((![Pn : pname]: ((~ (((body @ Pn) = none_com))) => (wt @ (body2 @ Pn)))))). % WT.Body
thf(fact_17_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_18_WT_OCall, axiom,
    ((![Pn : pname, X4 : vname, A : state > nat]: ((wt @ (body2 @ Pn)) => (wt @ (call @ X4 @ Pn @ A)))))). % WT.Call
thf(fact_19_these__image__Some__eq, axiom,
    ((![A2 : set_com]: ((these_com @ (image_com_option_com @ some_com @ A2)) = A2)))). % these_image_Some_eq
thf(fact_20_elem__set, axiom,
    ((![X : com, Xo : option_com]: ((member_com @ X @ (set_option_com2 @ Xo)) = (Xo = (some_com @ X)))))). % elem_set
thf(fact_21_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_22_not__None__eq, axiom,
    ((![X : option_com]: ((~ ((X = none_com))) = (?[Y4 : com]: (X = (some_com @ Y4))))))). % not_None_eq
thf(fact_23_not__Some__eq, axiom,
    ((![X : option_com]: ((![Y4 : com]: (~ ((X = (some_com @ Y4))))) = (X = none_com))))). % not_Some_eq
thf(fact_24_is__none__code_I1_J, axiom,
    ((is_none_com @ none_com))). % is_none_code(1)
thf(fact_25_combine__options__simps_I1_J, axiom,
    ((![F : com > com > com, Y3 : option_com]: ((combine_options_com @ F @ none_com @ Y3) = Y3)))). % combine_options_simps(1)
thf(fact_26_combine__options__simps_I2_J, axiom,
    ((![F : com > com > com, X : option_com]: ((combine_options_com @ F @ X @ none_com) = X)))). % combine_options_simps(2)
thf(fact_27_None__notin__image__Some, axiom,
    ((![A2 : set_com]: (~ ((member_option_com @ none_com @ (image_com_option_com @ some_com @ A2))))))). % None_notin_image_Some
thf(fact_28_option_Odistinct_I1_J, axiom,
    ((![X2 : com]: (~ ((none_com = (some_com @ X2))))))). % option.distinct(1)
thf(fact_29_option_OdiscI, axiom,
    ((![Option : option_com, X2 : com]: ((Option = (some_com @ X2)) => (~ ((Option = none_com))))))). % option.discI
thf(fact_30_option_Oexhaust, axiom,
    ((![Y3 : option_com]: ((~ ((Y3 = none_com))) => (~ ((![X22 : com]: (~ ((Y3 = (some_com @ X22))))))))))). % option.exhaust
thf(fact_31_option_Oinducts, axiom,
    ((![P : option_com > $o, Option : option_com]: ((P @ none_com) => ((![X3 : com]: (P @ (some_com @ X3))) => (P @ Option)))))). % option.inducts
thf(fact_32_split__option__ex, axiom,
    (((^[P2 : option_com > $o]: (?[X5 : option_com]: (P2 @ X5))) = (^[P3 : option_com > $o]: (((P3 @ none_com)) | ((?[X6 : com]: (P3 @ (some_com @ X6))))))))). % split_option_ex
thf(fact_33_split__option__all, axiom,
    (((^[P2 : option_com > $o]: (![X5 : option_com]: (P2 @ X5))) = (^[P3 : option_com > $o]: (((P3 @ none_com)) & ((![X6 : com]: (P3 @ (some_com @ X6))))))))). % split_option_all
thf(fact_34_combine__options__cases, axiom,
    ((![X : option_com, P : option_com > option_com > $o, Y3 : option_com]: (((X = none_com) => (P @ X @ Y3)) => (((Y3 = none_com) => (P @ X @ Y3)) => ((![A3 : com, B2 : com]: ((X = (some_com @ A3)) => ((Y3 = (some_com @ B2)) => (P @ X @ Y3)))) => (P @ X @ Y3))))))). % combine_options_cases
thf(fact_35_option_Opred__inject_I1_J, axiom,
    ((![P : com > $o]: (pred_option_com @ P @ none_com)))). % option.pred_inject(1)
thf(fact_36_Option_Ois__none__def, axiom,
    ((is_none_com = (^[X6 : option_com]: (X6 = none_com))))). % Option.is_none_def
thf(fact_37_is__none__simps_I1_J, axiom,
    ((is_none_com @ none_com))). % is_none_simps(1)
thf(fact_38_ospec, axiom,
    ((![A2 : option_com, P : com > $o, X : com]: ((![X3 : com]: ((member_com @ X3 @ (set_option_com2 @ A2)) => (P @ X3))) => ((A2 = (some_com @ X)) => (P @ X)))))). % ospec
thf(fact_39_option_Oset__cases, axiom,
    ((![E : com, A : option_com]: ((member_com @ E @ (set_option_com2 @ A)) => (A = (some_com @ E)))))). % option.set_cases
thf(fact_40_option_Oset__intros, axiom,
    ((![X2 : com]: (member_com @ X2 @ (set_option_com2 @ (some_com @ X2)))))). % option.set_intros
thf(fact_41_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_42_com_Odistinct_I13_J, axiom,
    ((![X81 : vname, X82 : pname, X83 : state > nat]: (~ ((skip = (call @ X81 @ X82 @ X83))))))). % com.distinct(13)
thf(fact_43_notin__range__Some, axiom,
    ((![X : option_com]: ((~ ((member_option_com @ X @ (image_com_option_com @ some_com @ top_top_set_com)))) = (X = none_com))))). % notin_range_Some
thf(fact_44_UNIV__option__conv, axiom,
    ((top_to182305990on_com = (insert_option_com @ none_com @ (image_com_option_com @ some_com @ top_top_set_com))))). % UNIV_option_conv
thf(fact_45_these__insert__None, axiom,
    ((![A2 : set_option_com]: ((these_com @ (insert_option_com @ none_com @ A2)) = (these_com @ A2))))). % these_insert_None
thf(fact_46_these__insert__Some, axiom,
    ((![X : com, A2 : set_option_com]: ((these_com @ (insert_option_com @ (some_com @ X) @ A2)) = (insert_com @ X @ (these_com @ A2)))))). % these_insert_Some
thf(fact_47_option_Osimps_I15_J, axiom,
    ((![X2 : com]: ((set_option_com2 @ (some_com @ X2)) = (insert_com @ X2 @ bot_bot_set_com))))). % option.simps(15)
thf(fact_48_set__empty__eq, axiom,
    ((![Xo : option_com]: (((set_option_com2 @ Xo) = bot_bot_set_com) = (Xo = none_com))))). % set_empty_eq
thf(fact_49_these__not__empty__eq, axiom,
    ((![B3 : set_option_com]: ((~ (((these_com @ B3) = bot_bot_set_com))) = (((~ ((B3 = bot_bo697186986on_com)))) & ((~ ((B3 = (insert_option_com @ none_com @ bot_bo697186986on_com)))))))))). % these_not_empty_eq
thf(fact_50_these__empty__eq, axiom,
    ((![B3 : set_option_com]: (((these_com @ B3) = bot_bot_set_com) = (((B3 = bot_bo697186986on_com)) | ((B3 = (insert_option_com @ none_com @ bot_bo697186986on_com)))))))). % these_empty_eq
thf(fact_51_option_Osimps_I14_J, axiom,
    (((set_option_com2 @ none_com) = bot_bot_set_com))). % option.simps(14)

% Conjectures (5)
thf(conj_0, hypothesis,
    (hoare_405891322gleton)).
thf(conj_1, hypothesis,
    (wT_bodies)).
thf(conj_2, hypothesis,
    ((wt @ c))).
thf(conj_3, hypothesis,
    (((body @ pn) = (some_com @ y)))).
thf(conj_4, conjecture,
    ((wt @ y))).
