/*  This is a proof plan for theorem:
    meminsert1: []==>a:int=>b:int=>l:int list=>a=b in int=>member(a,insert(b,l))={true}in u(1)
    planner = dplan, clam_version(2.7.0), oyster_version(1.20)

    Time taken to find plan: 690ms
    Environment:
    []
 */

/* This is the pretty-printed form
normalize(...) then 
  base_case(...) then 
    ind_strat([(l:int list)-v1::v0]) then 
      [base_case(...),
       base_case(...)
      ]

*/

proof_plan([]==>a:int=>b:int=>l:int list=>a=b in int=>member(a,insert(b,l))={true}in u(1),meminsert1,690,normalize([normal(univ_intro),normal(univ_intro),normal(univ_intro),normal(imply_intro)])then[base_case(sym_eval(equal(v0,left)))then[ind_strat(induction(lemma(list_primitive)-[(l:int list)-v1::v0])then[base_case(sym_eval(normalize_term([reduction([2,1,1],[insert1,equ(int list,left)]),reduction([],[member2,imp(right)])]))then[elementary(identity)]),step_case(ripple(direction_out,casesplit(disjunction([a<v1=>void,a<v1]))then[wave(direction_out,[2,1,1],[insert3,equ(int list,left)],[])then[casesplit(disjunction([a=v1 in int=>void,a=v1 in int]))then[wave(direction_out,[1,1],[member3,equ(u(1),left)],[]),wave(direction_out,[1,1],[member2,complementary,equ(u(1),left)],[])]],wave(direction_out,[2,1,1],[insert2,complementary,equ(int list,left)],[])])then[unblock_then_fertilize(strong,unblock_fertilize_lazy([idtac])then fertilize(strong,v2)),idtac,idtac])])then[base_case(elementary(identity)),base_case(sym_eval(normalize_term([reduction([],[member2,imp(right)])]))then[elementary(identity)])]]],dplan).
