/*  This is a proof plan for theorem:
    commthree: []==>x:pnat=>y:pnat=>z:pnat=>times(times(z,x),y)=times(times(z,y),x)in pnat
    planner = dplan, clam_version(2.7.0), oyster_version(1.20)

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

/* This is the pretty-printed form
ind_strat([(x:pnat)-s(v0)]) then 
  ind_strat([(y:pnat)-s(v0)])

*/

proof_plan([]==>x:pnat=>y:pnat=>z:pnat=>times(times(z,x),y)=times(times(z,y),x)in pnat,commthree,2480,ind_strat(induction(lemma(pnat_primitive)-[(x:pnat)-s(v0)])then[idtac,step_case(ripple(direction_out,wave(direction_out,[2,1],[times2right,equ(pnat,left)],[])then[wave(direction_out,[1,1,1],[times2right,equ(pnat,left)],[])then[wave(direction_out,[1,1],[disttwo,equ(pnat,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],v1)]))then elementary(intro(new[y])then[intro(new[z])then[identity,wfftacs],wfftacs])))])])then[ind_strat(induction(lemma(pnat_primitive)-[(y:pnat)-s(v0)])then[base_case(elementary(intro(new[z])then[identity,wfftacs])),step_case(ripple(direction_out,wave(direction_out,[1,1],[times2right,equ(pnat,left)],[])then[wave(direction_out,[1,2,1],[times2right,equ(pnat,left)],[])then[wave(direction_out,[2,1],[disttwo,equ(pnat,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],v1)]))then elementary(intro(new[z])then[identity,wfftacs])))])])],dplan).
