problem([]==>l:int list=>rev(rev(l))=l in int list,
ind_strat(induction(lemma(list_primitive)-[(l:int list)-v1::v0])then[base_case(sym_eval(normalize_term([reduction([1,1,1],[rev1,equ(int list,left)]),reduction([1,1],[rev1,equ(int list,left)])]))then[elementary(identity)]),step_case(ripple(direction_out,wave(direction_out,[1,1,1],[rev2,equ(int list,left)],[]))then[unblock_then_fertilize(weak,unblock_fertilize_lazy([idtac])then fertilize(weak,fertilize_then_ripple(fertilize_left_or_right(right,[weak_fertilize(right,in,[2],v2)]))))])]),lambda(l,list_ind(l,su(su(axiom,[term_of(rev1)],[rev1]),[term_of(rev1)],[rev1]),[v1,v0,v2,su(su(su(_66729,[v3 of v0],[v4]),[rev2 of v1],[v3]),[term_of(rev2)],[rev2])])),
[problem([l:int list,v1:int,v0:int list,v2:rev(rev(v0))=v0 in int list]==>rev(app(rev(v0),v1::nil))=v1::rev(rev(v0))in int list,
 generalise(rev(v0),v3:int list),lambda(v3,su(v4,[v3 of rev(v0)],[v4]))of _66623,
 [problem([l:int list,v1:int,v0:int list,v2:rev(rev(v0))=v0 in int list]==>v3:int list=>rev(app(v3,v1::nil))=v1::rev(v3)in int list,
  ind_strat(induction(lemma(list_primitive)-[(v3:int list)-v5::v4])then[base_case(sym_eval(normalize_term([reduction([1,1,1],[app1,equ(int list,left)]),reduction([1,1],[rev2,equ(int list,left)]),reduction([1,1,1],[rev1,equ(int list,left)]),reduction([1,1],[app1,equ(int list,left)]),reduction([2,2,1],[rev1,equ(int list,left)])]))then[elementary(identity)]),step_case(ripple(direction_out,wave(direction_out,[2,2,1],[rev2,equ(int list,left)],[])then[wave(direction_out,[2,1],[app2,equ(int list,right)],[])then[wave(direction_out,[1,1,1],[app2,equ(int list,left)],[])then[wave(direction_out,[1,1],[rev2,equ(int list,left)],[])]]])then[unblock_then_fertilize(weak,unblock_fertilize_lazy([idtac])then fertilize(weak,fertilize_then_ripple(fertilize_left_or_right(right,[weak_fertilize(right,in,[1],v6)]))then elementary(identity)))])]),lambda(v3,list_ind(v3,su(su(su(su(su(su(su(su(su(axiom,[term_of(rev1)],[rev1]),[app1 of(v1::nil)],[v4]),[term_of(app1)],[app1]),[term_of(rev1)],[rev1]),[v4 of nil],[v5]),[rev2 of v1],[v4]),[term_of(rev2)],[rev2]),[app1 of(v1::nil)],[v4]),[term_of(app1)],[app1]),[v5,v4,v6,su(su(su(su(su(su(su(su(su(su(su(su(su(su(axiom,[v7 of app(v4,v1::nil)],[v8]),[rev2 of v5],[v7]),[term_of(rev2)],[rev2]),[v8 of(v1::nil)],[v9]),[v7 of v4],[v8]),[app2 of v5],[v7]),[term_of(app2)],[app2]),[v8 of(v5::nil)],[v9]),[v7 of rev(v4)],[v8]),[app2 of v1],[v7]),[term_of(app2)],[app2]),[v7 of v4],[v8]),[rev2 of v5],[v7]),[term_of(rev2)],[rev2])])),
  [
  ]) ext _66623
 ]) ext _66729
]).
