/*  This is a proof plan for theorem:
    nthmem: []==>x:int=>n:pnat=>l:int list=>member(x,nth(n,l))=>member(x,l)
    planner = dplan, clam_version(2.7.0), oyster_version(1.20)

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

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

*/

proof_plan([]==>x:int=>n:pnat=>l:int list=>member(x,nth(n,l))=>member(x,l),nthmem,740,ind_strat(induction(lemma(nat_list_pair)-[(l:int list)-v2::v1,(n:pnat)-s(v0)])then[base_case(sym_eval(normalize_term([reduction([2,1],[nth2,equ(int list,left)]),reduction([1],[member1,equ(u(1),left)]),reduction([2],[member1,equ(u(1),left)])]))then[elementary(intro(new[x])then[intro(new[v1])then[hyp(v1),wfftacs],wfftacs])]),base_case(sym_eval(normalize_term([reduction([2,1],[nth1,equ(int list,left)])]))then[elementary(intro(new[x])then[intro(new[v1])then[hyp(v1),wfftacs],wfftacs])]),step_case(ripple(direction_out,wave(direction_out,[2,1],[nth3,equ(int list,left)],[])then[casesplit(disjunction([x=v2 in int=>void,x=v2 in int]))then[wave(direction_out,[2],[member3,equ(u(1),left)],[]),wave(direction_out,[2],[member2,complementary,equ(u(1),left)],[])]])then[unblock_then_fertilize(strong,unblock_fertilize_lazy([idtac])then fertilize(strong,v3)),idtac])])then[base_case(elementary(intro(new[v5])then[istrue,wfftacs]))],dplan).
