%   ORIGINAL: h4/quotient__option/OPTION__QUOTIENT
% Assm: HL_TRUTH: T
% Assm: HL_FALSITY: ~F
% Assm: HL_BOOL_CASES: !t. (t <=> T) \/ (t <=> F)
% Assm: HL_EXT: !f g. (!x. f x = g x) ==> f = g
% Assm: h4/bool/TRUTH: T
% Assm: h4/bool/IMP__ANTISYM__AX: !t2 t1. (t1 ==> t2) ==> (t2 ==> t1) ==> (t1 <=> t2)
% Assm: h4/bool/FALSITY: !t. F ==> t
% Assm: h4/bool/AND__CLAUSES_c0: !t. T /\ t <=> t
% Assm: h4/bool/AND__CLAUSES_c3: !t. t /\ F <=> F
% Assm: h4/bool/NOT__CLAUSES_c2: ~F <=> T
% Assm: h4/bool/REFL__CLAUSE: !x. x = x <=> T
% Assm: h4/bool/EQ__CLAUSES_c0: !t. (T <=> t) <=> t
% Assm: h4/bool/EQ__CLAUSES_c1: !t. (t <=> T) <=> t
% Assm: h4/bool/EQ__CLAUSES_c2: !t. (F <=> t) <=> ~t
% Assm: h4/option/option__nchotomy: !opt. opt = h4/option/NONE \/ (?x. opt = h4/option/SOME x)
% Assm: h4/option/OPTION__MAP__DEF_c0: !x f. h4/option/OPTION__MAP f (h4/option/SOME x) = h4/option/SOME (f x)
% Assm: h4/option/OPTION__MAP__DEF_c1: !f. h4/option/OPTION__MAP f h4/option/NONE = h4/option/NONE
% Assm: h4/option/option__CLAUSES_c0: !y x. h4/option/SOME x = h4/option/SOME y <=> x = y
% Assm: h4/option/option__CLAUSES_c2: !x. ~(h4/option/NONE = h4/option/SOME x)
% Assm: h4/option/option__CLAUSES_c3: !x. ~(h4/option/SOME x = h4/option/NONE)
% Assm: h4/quotient/QUOTIENT__def: !rep abs R. h4/quotient/QUOTIENT R abs rep <=> (!a. abs (rep a) = a) /\ (!a. R (rep a) (rep a)) /\ (!r s. R r s <=> R r r /\ R s s /\ abs r = abs s)
% Assm: h4/quotient/QUOTIENT__ABS__REP: !rep abs R. h4/quotient/QUOTIENT R abs rep ==> (!a. abs (rep a) = a)
% Assm: h4/quotient/QUOTIENT__REP__REFL: !rep abs R. h4/quotient/QUOTIENT R abs rep ==> (!a. R (rep a) (rep a))
% Assm: h4/quotient/QUOTIENT__REL: !rep abs R. h4/quotient/QUOTIENT R abs rep ==> (!r s. R r s <=> R r r /\ R s s /\ abs r = abs s)
% Assm: h4/quotient__option/OPTION__REL__def_c0: !R. h4/option/OPTREL R h4/option/NONE h4/option/NONE <=> T
% Assm: h4/quotient__option/OPTION__REL__def_c1: !x R. h4/option/OPTREL R (h4/option/SOME x) h4/option/NONE <=> F
% Assm: h4/quotient__option/OPTION__REL__def_c2: !y R. h4/option/OPTREL R h4/option/NONE (h4/option/SOME y) <=> F
% Assm: h4/quotient__option/OPTION__REL__def_c3: !y x R. h4/option/OPTREL R (h4/option/SOME x) (h4/option/SOME y) <=> R x y
% Goal: !rep abs R. h4/quotient/QUOTIENT R abs rep ==> h4/quotient/QUOTIENT (h4/option/OPTREL R) (h4/option/OPTION__MAP abs) (h4/option/OPTION__MAP rep)
%   PROCESSED
% Assm [HLu_TRUTH]: T
% Assm [HLu_FALSITY]: ~F
% Assm [HLu_BOOLu_CASES]: !t. (t <=> T) \/ (t <=> F)
% Assm [HLu_EXT]: !f g. (!x. happ f x = happ g x) ==> f = g
% Assm [h4s_bools_TRUTH]: T
% Assm [h4s_bools_IMPu_u_ANTISYMu_u_AX]: !t2 t1. (t1 ==> t2) ==> (t2 ==> t1) ==> (t1 <=> t2)
% Assm [h4s_bools_FALSITY]: !t. F ==> t
% Assm [h4s_bools_ANDu_u_CLAUSESu_c0]: !t. T /\ t <=> t
% Assm [h4s_bools_ANDu_u_CLAUSESu_c3]: !t. t /\ F <=> F
% Assm [h4s_bools_NOTu_u_CLAUSESu_c2]: ~F <=> T
% Assm [h4s_bools_REFLu_u_CLAUSE]: !x. x = x <=> T
% Assm [h4s_bools_EQu_u_CLAUSESu_c0]: !t. (T <=> t) <=> t
% Assm [h4s_bools_EQu_u_CLAUSESu_c1]: !t. (t <=> T) <=> t
% Assm [h4s_bools_EQu_u_CLAUSESu_c2]: !t. (F <=> t) <=> ~t
% Assm [h4s_options_optionu_u_nchotomy]: !opt. opt = h4/option/NONE \/ (?x. opt = h4/option/SOME x)
% Assm [h4s_options_OPTIONu_u_MAPu_u_DEFu_c0]: !x f. happ (h4/option/OPTION__MAP f) (h4/option/SOME x) = h4/option/SOME (happ f x)
% Assm [h4s_options_OPTIONu_u_MAPu_u_DEFu_c1]: !f. happ (h4/option/OPTION__MAP f) h4/option/NONE = h4/option/NONE
% Assm [h4s_options_optionu_u_CLAUSESu_c0]: !y x. h4/option/SOME x = h4/option/SOME y <=> x = y
% Assm [h4s_options_optionu_u_CLAUSESu_c2]: !x. ~(h4/option/NONE = h4/option/SOME x)
% Assm [h4s_options_optionu_u_CLAUSESu_c3]: !x. ~(h4/option/SOME x = h4/option/NONE)
% Assm [h4s_quotients_QUOTIENTu_u_def]: !rep abs R. h4/quotient/QUOTIENT R abs rep <=> (!a. happ abs (happ rep a) = a) /\ (!a. happ (happ R (happ rep a)) (happ rep a)) /\ (!r s. happ (happ R r) s <=> happ (happ R r) r /\ happ (happ R s) s /\ happ abs r = happ abs s)
% Assm [h4s_quotients_QUOTIENTu_u_ABSu_u_REP]: !rep abs R. h4/quotient/QUOTIENT R abs rep ==> (!a. happ abs (happ rep a) = a)
% Assm [h4s_quotients_QUOTIENTu_u_REPu_u_REFL]: !rep abs R. h4/quotient/QUOTIENT R abs rep ==> (!a. happ (happ R (happ rep a)) (happ rep a))
% Assm [h4s_quotients_QUOTIENTu_u_REL]: !rep abs R. h4/quotient/QUOTIENT R abs rep ==> (!r s. happ (happ R r) s <=> happ (happ R r) r /\ happ (happ R s) s /\ happ abs r = happ abs s)
% Assm [h4s_quotientu_u_options_OPTIONu_u_RELu_u_defu_c0]: !R. happ (happ (h4/option/OPTREL R) h4/option/NONE) h4/option/NONE <=> T
% Assm [h4s_quotientu_u_options_OPTIONu_u_RELu_u_defu_c1]: !x R. happ (happ (h4/option/OPTREL R) (h4/option/SOME x)) h4/option/NONE <=> F
% Assm [h4s_quotientu_u_options_OPTIONu_u_RELu_u_defu_c2]: !y R. happ (happ (h4/option/OPTREL R) h4/option/NONE) (h4/option/SOME y) <=> F
% Assm [h4s_quotientu_u_options_OPTIONu_u_RELu_u_defu_c3]: !y x R. happ (happ (h4/option/OPTREL R) (h4/option/SOME x)) (h4/option/SOME y) <=> happ (happ R x) y
% Goal: !rep abs R. h4/quotient/QUOTIENT R abs rep ==> h4/quotient/QUOTIENT (h4/option/OPTREL R) (h4/option/OPTION__MAP abs) (h4/option/OPTION__MAP rep)
fof(aHLu_TRUTH, axiom, p(s(t_bool,t))).
fof(aHLu_FALSITY, axiom, ~ (p(s(t_bool,f)))).
fof(aHLu_BOOLu_CASES, axiom, ![V_t]: (s(t_bool,V_t) = s(t_bool,t) | s(t_bool,V_t) = s(t_bool,f))).
fof(aHLu_EXT, axiom, ![TV_Q205347,TV_Q205343]: ![V_f, V_g]: (![V_x]: s(TV_Q205343,happ(s(t_fun(TV_Q205347,TV_Q205343),V_f),s(TV_Q205347,V_x))) = s(TV_Q205343,happ(s(t_fun(TV_Q205347,TV_Q205343),V_g),s(TV_Q205347,V_x))) => s(t_fun(TV_Q205347,TV_Q205343),V_f) = s(t_fun(TV_Q205347,TV_Q205343),V_g))).
fof(ah4s_bools_TRUTH, axiom, p(s(t_bool,t))).
fof(ah4s_bools_IMPu_u_ANTISYMu_u_AX, axiom, ![V_t2, V_t1]: ((p(s(t_bool,V_t1)) => p(s(t_bool,V_t2))) => ((p(s(t_bool,V_t2)) => p(s(t_bool,V_t1))) => s(t_bool,V_t1) = s(t_bool,V_t2)))).
fof(ah4s_bools_FALSITY, axiom, ![V_t]: (p(s(t_bool,f)) => p(s(t_bool,V_t)))).
fof(ah4s_bools_ANDu_u_CLAUSESu_c0, axiom, ![V_t]: ((p(s(t_bool,t)) & p(s(t_bool,V_t))) <=> p(s(t_bool,V_t)))).
fof(ah4s_bools_ANDu_u_CLAUSESu_c3, axiom, ![V_t]: ((p(s(t_bool,V_t)) & p(s(t_bool,f))) <=> p(s(t_bool,f)))).
fof(ah4s_bools_NOTu_u_CLAUSESu_c2, axiom, (~ (p(s(t_bool,f))) <=> p(s(t_bool,t)))).
fof(ah4s_bools_REFLu_u_CLAUSE, axiom, ![TV_u_27a]: ![V_x]: (s(TV_u_27a,V_x) = s(TV_u_27a,V_x) <=> p(s(t_bool,t)))).
fof(ah4s_bools_EQu_u_CLAUSESu_c0, axiom, ![V_t]: (s(t_bool,t) = s(t_bool,V_t) <=> p(s(t_bool,V_t)))).
fof(ah4s_bools_EQu_u_CLAUSESu_c1, axiom, ![V_t]: (s(t_bool,V_t) = s(t_bool,t) <=> p(s(t_bool,V_t)))).
fof(ah4s_bools_EQu_u_CLAUSESu_c2, axiom, ![V_t]: (s(t_bool,f) = s(t_bool,V_t) <=> ~ (p(s(t_bool,V_t))))).
fof(ah4s_options_optionu_u_nchotomy, axiom, ![TV_u_27a]: ![V_opt]: (s(t_h4s_options_option(TV_u_27a),V_opt) = s(t_h4s_options_option(TV_u_27a),h4s_options_none) | ?[V_x]: s(t_h4s_options_option(TV_u_27a),V_opt) = s(t_h4s_options_option(TV_u_27a),h4s_options_some(s(TV_u_27a,V_x))))).
fof(ah4s_options_OPTIONu_u_MAPu_u_DEFu_c0, axiom, ![TV_u_27b,TV_u_27a]: ![V_x, V_f]: s(t_h4s_options_option(TV_u_27b),happ(s(t_fun(t_h4s_options_option(TV_u_27a),t_h4s_options_option(TV_u_27b)),h4s_options_optionu_u_map(s(t_fun(TV_u_27a,TV_u_27b),V_f))),s(t_h4s_options_option(TV_u_27a),h4s_options_some(s(TV_u_27a,V_x))))) = s(t_h4s_options_option(TV_u_27b),h4s_options_some(s(TV_u_27b,happ(s(t_fun(TV_u_27a,TV_u_27b),V_f),s(TV_u_27a,V_x)))))).
fof(ah4s_options_OPTIONu_u_MAPu_u_DEFu_c1, axiom, ![TV_u_27a,TV_u_27b]: ![V_f]: s(t_h4s_options_option(TV_u_27b),happ(s(t_fun(t_h4s_options_option(TV_u_27a),t_h4s_options_option(TV_u_27b)),h4s_options_optionu_u_map(s(t_fun(TV_u_27a,TV_u_27b),V_f))),s(t_h4s_options_option(TV_u_27a),h4s_options_none))) = s(t_h4s_options_option(TV_u_27b),h4s_options_none)).
fof(ah4s_options_optionu_u_CLAUSESu_c0, axiom, ![TV_u_27a]: ![V_y, V_x]: (s(t_h4s_options_option(TV_u_27a),h4s_options_some(s(TV_u_27a,V_x))) = s(t_h4s_options_option(TV_u_27a),h4s_options_some(s(TV_u_27a,V_y))) <=> s(TV_u_27a,V_x) = s(TV_u_27a,V_y))).
fof(ah4s_options_optionu_u_CLAUSESu_c2, axiom, ![TV_u_27a]: ![V_x]: ~ (s(t_h4s_options_option(TV_u_27a),h4s_options_none) = s(t_h4s_options_option(TV_u_27a),h4s_options_some(s(TV_u_27a,V_x))))).
fof(ah4s_options_optionu_u_CLAUSESu_c3, axiom, ![TV_u_27a]: ![V_x]: ~ (s(t_h4s_options_option(TV_u_27a),h4s_options_some(s(TV_u_27a,V_x))) = s(t_h4s_options_option(TV_u_27a),h4s_options_none))).
fof(ah4s_quotients_QUOTIENTu_u_def, axiom, ![TV_u_27b,TV_u_27a]: ![V_rep, V_abs, V_R]: (p(s(t_bool,h4s_quotients_quotient(s(t_fun(TV_u_27a,t_fun(TV_u_27a,t_bool)),V_R),s(t_fun(TV_u_27a,TV_u_27b),V_abs),s(t_fun(TV_u_27b,TV_u_27a),V_rep)))) <=> (![V_a]: s(TV_u_27b,happ(s(t_fun(TV_u_27a,TV_u_27b),V_abs),s(TV_u_27a,happ(s(t_fun(TV_u_27b,TV_u_27a),V_rep),s(TV_u_27b,V_a))))) = s(TV_u_27b,V_a) & (![V_a]: p(s(t_bool,happ(s(t_fun(TV_u_27a,t_bool),happ(s(t_fun(TV_u_27a,t_fun(TV_u_27a,t_bool)),V_R),s(TV_u_27a,happ(s(t_fun(TV_u_27b,TV_u_27a),V_rep),s(TV_u_27b,V_a))))),s(TV_u_27a,happ(s(t_fun(TV_u_27b,TV_u_27a),V_rep),s(TV_u_27b,V_a)))))) & ![V_r, V_s]: (p(s(t_bool,happ(s(t_fun(TV_u_27a,t_bool),happ(s(t_fun(TV_u_27a,t_fun(TV_u_27a,t_bool)),V_R),s(TV_u_27a,V_r))),s(TV_u_27a,V_s)))) <=> (p(s(t_bool,happ(s(t_fun(TV_u_27a,t_bool),happ(s(t_fun(TV_u_27a,t_fun(TV_u_27a,t_bool)),V_R),s(TV_u_27a,V_r))),s(TV_u_27a,V_r)))) & (p(s(t_bool,happ(s(t_fun(TV_u_27a,t_bool),happ(s(t_fun(TV_u_27a,t_fun(TV_u_27a,t_bool)),V_R),s(TV_u_27a,V_s))),s(TV_u_27a,V_s)))) & s(TV_u_27b,happ(s(t_fun(TV_u_27a,TV_u_27b),V_abs),s(TV_u_27a,V_r))) = s(TV_u_27b,happ(s(t_fun(TV_u_27a,TV_u_27b),V_abs),s(TV_u_27a,V_s)))))))))).
fof(ah4s_quotients_QUOTIENTu_u_ABSu_u_REP, axiom, ![TV_u_27a,TV_u_27b]: ![V_rep, V_abs, V_R]: (p(s(t_bool,h4s_quotients_quotient(s(t_fun(TV_u_27a,t_fun(TV_u_27a,t_bool)),V_R),s(t_fun(TV_u_27a,TV_u_27b),V_abs),s(t_fun(TV_u_27b,TV_u_27a),V_rep)))) => ![V_a]: s(TV_u_27b,happ(s(t_fun(TV_u_27a,TV_u_27b),V_abs),s(TV_u_27a,happ(s(t_fun(TV_u_27b,TV_u_27a),V_rep),s(TV_u_27b,V_a))))) = s(TV_u_27b,V_a))).
fof(ah4s_quotients_QUOTIENTu_u_REPu_u_REFL, axiom, ![TV_u_27a,TV_u_27b]: ![V_rep, V_abs, V_R]: (p(s(t_bool,h4s_quotients_quotient(s(t_fun(TV_u_27a,t_fun(TV_u_27a,t_bool)),V_R),s(t_fun(TV_u_27a,TV_u_27b),V_abs),s(t_fun(TV_u_27b,TV_u_27a),V_rep)))) => ![V_a]: p(s(t_bool,happ(s(t_fun(TV_u_27a,t_bool),happ(s(t_fun(TV_u_27a,t_fun(TV_u_27a,t_bool)),V_R),s(TV_u_27a,happ(s(t_fun(TV_u_27b,TV_u_27a),V_rep),s(TV_u_27b,V_a))))),s(TV_u_27a,happ(s(t_fun(TV_u_27b,TV_u_27a),V_rep),s(TV_u_27b,V_a)))))))).
fof(ah4s_quotients_QUOTIENTu_u_REL, axiom, ![TV_u_27b,TV_u_27a]: ![V_rep, V_abs, V_R]: (p(s(t_bool,h4s_quotients_quotient(s(t_fun(TV_u_27a,t_fun(TV_u_27a,t_bool)),V_R),s(t_fun(TV_u_27a,TV_u_27b),V_abs),s(t_fun(TV_u_27b,TV_u_27a),V_rep)))) => ![V_r, V_s]: (p(s(t_bool,happ(s(t_fun(TV_u_27a,t_bool),happ(s(t_fun(TV_u_27a,t_fun(TV_u_27a,t_bool)),V_R),s(TV_u_27a,V_r))),s(TV_u_27a,V_s)))) <=> (p(s(t_bool,happ(s(t_fun(TV_u_27a,t_bool),happ(s(t_fun(TV_u_27a,t_fun(TV_u_27a,t_bool)),V_R),s(TV_u_27a,V_r))),s(TV_u_27a,V_r)))) & (p(s(t_bool,happ(s(t_fun(TV_u_27a,t_bool),happ(s(t_fun(TV_u_27a,t_fun(TV_u_27a,t_bool)),V_R),s(TV_u_27a,V_s))),s(TV_u_27a,V_s)))) & s(TV_u_27b,happ(s(t_fun(TV_u_27a,TV_u_27b),V_abs),s(TV_u_27a,V_r))) = s(TV_u_27b,happ(s(t_fun(TV_u_27a,TV_u_27b),V_abs),s(TV_u_27a,V_s)))))))).
fof(ah4s_quotientu_u_options_OPTIONu_u_RELu_u_defu_c0, axiom, ![TV_u_27a]: ![V_R]: s(t_bool,happ(s(t_fun(t_h4s_options_option(TV_u_27a),t_bool),happ(s(t_fun(t_h4s_options_option(TV_u_27a),t_fun(t_h4s_options_option(TV_u_27a),t_bool)),h4s_options_optrel(s(t_fun(TV_u_27a,t_fun(TV_u_27a,t_bool)),V_R))),s(t_h4s_options_option(TV_u_27a),h4s_options_none))),s(t_h4s_options_option(TV_u_27a),h4s_options_none))) = s(t_bool,t)).
fof(ah4s_quotientu_u_options_OPTIONu_u_RELu_u_defu_c1, axiom, ![TV_u_27a]: ![V_x, V_R]: s(t_bool,happ(s(t_fun(t_h4s_options_option(TV_u_27a),t_bool),happ(s(t_fun(t_h4s_options_option(TV_u_27a),t_fun(t_h4s_options_option(TV_u_27a),t_bool)),h4s_options_optrel(s(t_fun(TV_u_27a,t_fun(TV_u_27a,t_bool)),V_R))),s(t_h4s_options_option(TV_u_27a),h4s_options_some(s(TV_u_27a,V_x))))),s(t_h4s_options_option(TV_u_27a),h4s_options_none))) = s(t_bool,f)).
fof(ah4s_quotientu_u_options_OPTIONu_u_RELu_u_defu_c2, axiom, ![TV_u_27a]: ![V_y, V_R]: s(t_bool,happ(s(t_fun(t_h4s_options_option(TV_u_27a),t_bool),happ(s(t_fun(t_h4s_options_option(TV_u_27a),t_fun(t_h4s_options_option(TV_u_27a),t_bool)),h4s_options_optrel(s(t_fun(TV_u_27a,t_fun(TV_u_27a,t_bool)),V_R))),s(t_h4s_options_option(TV_u_27a),h4s_options_none))),s(t_h4s_options_option(TV_u_27a),h4s_options_some(s(TV_u_27a,V_y))))) = s(t_bool,f)).
fof(ah4s_quotientu_u_options_OPTIONu_u_RELu_u_defu_c3, axiom, ![TV_u_27a]: ![V_y, V_x, V_R]: s(t_bool,happ(s(t_fun(t_h4s_options_option(TV_u_27a),t_bool),happ(s(t_fun(t_h4s_options_option(TV_u_27a),t_fun(t_h4s_options_option(TV_u_27a),t_bool)),h4s_options_optrel(s(t_fun(TV_u_27a,t_fun(TV_u_27a,t_bool)),V_R))),s(t_h4s_options_option(TV_u_27a),h4s_options_some(s(TV_u_27a,V_x))))),s(t_h4s_options_option(TV_u_27a),h4s_options_some(s(TV_u_27a,V_y))))) = s(t_bool,happ(s(t_fun(TV_u_27a,t_bool),happ(s(t_fun(TV_u_27a,t_fun(TV_u_27a,t_bool)),V_R),s(TV_u_27a,V_x))),s(TV_u_27a,V_y)))).
fof(ch4s_quotientu_u_options_OPTIONu_u_QUOTIENT, conjecture, ![TV_u_27b,TV_u_27a]: ![V_rep, V_abs, V_R]: (p(s(t_bool,h4s_quotients_quotient(s(t_fun(TV_u_27a,t_fun(TV_u_27a,t_bool)),V_R),s(t_fun(TV_u_27a,TV_u_27b),V_abs),s(t_fun(TV_u_27b,TV_u_27a),V_rep)))) => p(s(t_bool,h4s_quotients_quotient(s(t_fun(t_h4s_options_option(TV_u_27a),t_fun(t_h4s_options_option(TV_u_27a),t_bool)),h4s_options_optrel(s(t_fun(TV_u_27a,t_fun(TV_u_27a,t_bool)),V_R))),s(t_fun(t_h4s_options_option(TV_u_27a),t_h4s_options_option(TV_u_27b)),h4s_options_optionu_u_map(s(t_fun(TV_u_27a,TV_u_27b),V_abs))),s(t_fun(t_h4s_options_option(TV_u_27b),t_h4s_options_option(TV_u_27a)),h4s_options_optionu_u_map(s(t_fun(TV_u_27b,TV_u_27a),V_rep)))))))).
