%   ORIGINAL: 'h4/thm/list/MAP2_ind_'
% 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
% Goal: !P. (!f h1 t1 h2 t2. P f t1 t2 ==> P f ('h4/const/list/CONS' h1 t1) ('h4/const/list/CONS' h2 t2)) /\ (!f y. P f 'h4/const/list/NIL' y) /\ (!f v4 v5. P f ('h4/const/list/CONS' v4 v5) 'h4/const/list/NIL') ==> (!v v1 v2. P v v1 v2)
%   PROCESSED
% Assm ['HL_TRUTH']: T
% Assm ['HL_FALSITY']: ~F
% Assm ['HL_BOOL_CASES']: !t. (t <=> T) \/ (t <=> F)
% Assm ['HL_EXT']: !f g. (!x. happ f x = happ g x) ==> f = g
% Goal: !P. (!f h1 t1 h2 t2. happ (happ (happ P f) t1) t2 ==> happ (happ (happ P f) ('h4/const/list/CONS' h1 t1)) ('h4/const/list/CONS' h2 t2)) /\ (!f y. happ (happ (happ P f) 'h4/const/list/NIL') y) /\ (!f v4 v5. happ (happ (happ P f) ('h4/const/list/CONS' v4 v5)) 'h4/const/list/NIL') ==> (!v v1 v2. happ (happ (happ P v) v1) v2)
fof('HL_TRUTH', axiom, p(s(bool,'T'))).
fof('HL_FALSITY', axiom, ~ (p(s(bool,'F')))).
fof('HL_BOOL_CASES', axiom, ![T]: (s(bool,T) = s(bool,'T') | s(bool,T) = s(bool,'F'))).
fof('HL_EXT', axiom, ![V_3f2613,V_3f2609]: ![F, G]: (![X]: s(V_3f2609,happ(s(fun(V_3f2613,V_3f2609),F),s(V_3f2613,X))) = s(V_3f2609,happ(s(fun(V_3f2613,V_3f2609),G),s(V_3f2613,X))) => s(fun(V_3f2613,V_3f2609),F) = s(fun(V_3f2613,V_3f2609),G))).
fof('h4/thm/list/MAP2_ind_', conjecture, ![A,B,C]: ![P]: ((![F, H1, T1, H2, T2]: (p(s(bool,happ(s(fun('h4/type/list/list'(C),bool),happ(s(fun('h4/type/list/list'(B),fun('h4/type/list/list'(C),bool)),happ(s(fun(fun(B,fun(C,A)),fun('h4/type/list/list'(B),fun('h4/type/list/list'(C),bool))),P),s(fun(B,fun(C,A)),F))),s('h4/type/list/list'(B),T1))),s('h4/type/list/list'(C),T2)))) => p(s(bool,happ(s(fun('h4/type/list/list'(C),bool),happ(s(fun('h4/type/list/list'(B),fun('h4/type/list/list'(C),bool)),happ(s(fun(fun(B,fun(C,A)),fun('h4/type/list/list'(B),fun('h4/type/list/list'(C),bool))),P),s(fun(B,fun(C,A)),F))),s('h4/type/list/list'(B),'h4/const/list/CONS'(s(B,H1),s('h4/type/list/list'(B),T1))))),s('h4/type/list/list'(C),'h4/const/list/CONS'(s(C,H2),s('h4/type/list/list'(C),T2))))))) & (![F, Y]: p(s(bool,happ(s(fun('h4/type/list/list'(C),bool),happ(s(fun('h4/type/list/list'(B),fun('h4/type/list/list'(C),bool)),happ(s(fun(fun(B,fun(C,A)),fun('h4/type/list/list'(B),fun('h4/type/list/list'(C),bool))),P),s(fun(B,fun(C,A)),F))),s('h4/type/list/list'(B),'h4/const/list/NIL'))),s('h4/type/list/list'(C),Y)))) & ![F, V4, V5]: p(s(bool,happ(s(fun('h4/type/list/list'(C),bool),happ(s(fun('h4/type/list/list'(B),fun('h4/type/list/list'(C),bool)),happ(s(fun(fun(B,fun(C,A)),fun('h4/type/list/list'(B),fun('h4/type/list/list'(C),bool))),P),s(fun(B,fun(C,A)),F))),s('h4/type/list/list'(B),'h4/const/list/CONS'(s(B,V4),s('h4/type/list/list'(B),V5))))),s('h4/type/list/list'(C),'h4/const/list/NIL')))))) => ![V, V1, V2]: p(s(bool,happ(s(fun('h4/type/list/list'(C),bool),happ(s(fun('h4/type/list/list'(B),fun('h4/type/list/list'(C),bool)),happ(s(fun(fun(B,fun(C,A)),fun('h4/type/list/list'(B),fun('h4/type/list/list'(C),bool))),P),s(fun(B,fun(C,A)),V))),s('h4/type/list/list'(B),V1))),s('h4/type/list/list'(C),V2)))))).
