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

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

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

*/

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