<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE why3session PUBLIC "-//Why3//proof session v5//EN"
"http://why3.lri.fr/why3session.dtd">
<why3session shape_version="6">
<prover id="0" name="Z3" version="4.8.4" timelimit="5" steplimit="0" memlimit="1000"/>
<prover id="4" name="Alt-Ergo" version="2.3.0" timelimit="5" steplimit="0" memlimit="1000"/>
<prover id="5" name="Eprover" version="2.0" timelimit="1" steplimit="0" memlimit="1000"/>
<file format="whyml" proved="true">
<path name=".."/><path name="patience.mlw"/>
<theory name="PigeonHole" proved="true">
 <goal name="pigeon_hole&#39;vc" expl="VC for pigeon_hole" proved="true">
 <transf name="split_goal_right" proved="true" >
  <goal name="pigeon_hole&#39;vc.0" expl="loop invariant init" proved="true">
  <proof prover="4"><result status="valid" time="0.00" steps="7"/></proof>
  </goal>
  <goal name="pigeon_hole&#39;vc.1" expl="loop invariant init" proved="true">
  <proof prover="4"><result status="valid" time="0.00" steps="26"/></proof>
  </goal>
  <goal name="pigeon_hole&#39;vc.2" expl="postcondition" proved="true">
  <proof prover="4"><result status="valid" time="0.00" steps="45"/></proof>
  </goal>
  <goal name="pigeon_hole&#39;vc.3" expl="loop invariant preservation" proved="true">
  <proof prover="4"><result status="valid" time="0.00" steps="44"/></proof>
  </goal>
  <goal name="pigeon_hole&#39;vc.4" expl="assertion" proved="true">
  <proof prover="4"><result status="valid" time="0.01" steps="61"/></proof>
  </goal>
  <goal name="pigeon_hole&#39;vc.5" expl="variant decrease" proved="true">
  <proof prover="4"><result status="valid" time="0.00" steps="12"/></proof>
  </goal>
  <goal name="pigeon_hole&#39;vc.6" expl="precondition" proved="true">
  <proof prover="4"><result status="valid" time="0.00" steps="0"/></proof>
  </goal>
  <goal name="pigeon_hole&#39;vc.7" expl="precondition" proved="true">
  <proof prover="4"><result status="valid" time="0.00" steps="46"/></proof>
  </goal>
  <goal name="pigeon_hole&#39;vc.8" expl="postcondition" proved="true">
  <proof prover="4"><result status="valid" time="0.01" steps="105"/></proof>
  </goal>
  <goal name="pigeon_hole&#39;vc.9" expl="out of loop bounds" proved="true">
  <proof prover="4"><result status="valid" time="0.00" steps="12"/></proof>
  </goal>
  <goal name="pigeon_hole&#39;vc.10" expl="loop invariant preservation" proved="true">
  <proof prover="4"><result status="valid" time="0.00" steps="28"/></proof>
  </goal>
  <goal name="pigeon_hole&#39;vc.11" expl="assertion" proved="true">
  <proof prover="4"><result status="valid" time="0.00" steps="26"/></proof>
  </goal>
  <goal name="pigeon_hole&#39;vc.12" expl="variant decrease" proved="true">
  <proof prover="4"><result status="valid" time="0.00" steps="6"/></proof>
  </goal>
  <goal name="pigeon_hole&#39;vc.13" expl="precondition" proved="true">
  <proof prover="4"><result status="valid" time="0.00" steps="0"/></proof>
  </goal>
  <goal name="pigeon_hole&#39;vc.14" expl="precondition" proved="true">
  <proof prover="0"><result status="valid" time="0.02" steps="7735"/></proof>
  </goal>
  <goal name="pigeon_hole&#39;vc.15" expl="postcondition" proved="true">
  <proof prover="4"><result status="valid" time="0.00" steps="0"/></proof>
  </goal>
  <goal name="pigeon_hole&#39;vc.16" expl="out of loop bounds" proved="true">
  <proof prover="4"><result status="valid" time="0.00" steps="6"/></proof>
  </goal>
 </transf>
 </goal>
</theory>
<theory name="PatienceCode" proved="true">
 <goal name="wf_rev_append_stacks&#39;vc" expl="VC for wf_rev_append_stacks" proved="true">
 <proof prover="4"><result status="valid" time="0.03" steps="391"/></proof>
 </goal>
 <goal name="push_card&#39;vc" expl="VC for push_card" proved="true">
 <proof prover="4"><result status="valid" time="0.07" steps="426"/></proof>
 </goal>
 <goal name="play_cards&#39;vc" expl="VC for play_cards" proved="true">
 <proof prover="4"><result status="valid" time="0.01" steps="60"/></proof>
 </goal>
 <goal name="play_game&#39;vc" expl="VC for play_game" proved="true">
 <proof prover="4"><result status="valid" time="0.00" steps="2"/></proof>
 </goal>
 <goal name="test&#39;vc" expl="VC for test" proved="true">
 <proof prover="4" timelimit="1"><result status="valid" time="0.00" steps="2"/></proof>
 </goal>
</theory>
<theory name="PatienceAbstract" proved="true">
 <goal name="play_card&#39;vc" expl="VC for play_card" proved="true">
 <transf name="split_goal_right" proved="true" >
  <goal name="play_card&#39;vc.0" expl="loop invariant init" proved="true">
  <proof prover="4"><result status="valid" time="0.00" steps="0"/></proof>
  </goal>
  <goal name="play_card&#39;vc.1" expl="postcondition" proved="true">
  <transf name="introduce_premises" proved="true" >
   <goal name="play_card&#39;vc.1.0" expl="postcondition" proved="true">
   <transf name="inline_goal" proved="true" >
    <goal name="play_card&#39;vc.1.0.0" expl="postcondition" proved="true">
    <transf name="split_goal_right" proved="true" >
     <goal name="play_card&#39;vc.1.0.0.0" expl="VC for play_card" proved="true">
     <proof prover="4"><result status="valid" time="0.05" steps="94"/></proof>
     </goal>
     <goal name="play_card&#39;vc.1.0.0.1" expl="VC for play_card" proved="true">
     <proof prover="4"><result status="valid" time="0.05" steps="98"/></proof>
     </goal>
     <goal name="play_card&#39;vc.1.0.0.2" expl="VC for play_card" proved="true">
     <proof prover="4"><result status="valid" time="0.05" steps="96"/></proof>
     </goal>
     <goal name="play_card&#39;vc.1.0.0.3" expl="VC for play_card" proved="true">
     <proof prover="4"><result status="valid" time="0.05" steps="172"/></proof>
     </goal>
     <goal name="play_card&#39;vc.1.0.0.4" expl="VC for play_card" proved="true">
     <proof prover="0" timelimit="1"><result status="valid" time="0.06" steps="67218"/></proof>
     </goal>
     <goal name="play_card&#39;vc.1.0.0.5" expl="VC for play_card" proved="true">
     <proof prover="0" timelimit="1"><result status="valid" time="0.04" steps="67512"/></proof>
     </goal>
     <goal name="play_card&#39;vc.1.0.0.6" expl="VC for play_card" proved="true">
     <proof prover="4"><result status="valid" time="0.09" steps="264"/></proof>
     </goal>
     <goal name="play_card&#39;vc.1.0.0.7" expl="VC for play_card" proved="true">
     <proof prover="4"><result status="valid" time="0.09" steps="264"/></proof>
     </goal>
     <goal name="play_card&#39;vc.1.0.0.8" expl="VC for play_card" proved="true">
     <proof prover="4"><result status="valid" time="0.09" steps="299"/></proof>
     </goal>
     <goal name="play_card&#39;vc.1.0.0.9" expl="VC for play_card" proved="true">
     <proof prover="4"><result status="valid" time="0.16" steps="316"/></proof>
     </goal>
     <goal name="play_card&#39;vc.1.0.0.10" expl="VC for play_card" proved="true">
     <proof prover="4"><result status="valid" time="0.09" steps="317"/></proof>
     </goal>
     <goal name="play_card&#39;vc.1.0.0.11" expl="VC for play_card" proved="true">
     <proof prover="4"><result status="valid" time="0.23" steps="537"/></proof>
     </goal>
     <goal name="play_card&#39;vc.1.0.0.12" expl="VC for play_card" proved="true">
     <proof prover="0" timelimit="1"><result status="valid" time="0.04" steps="79874"/></proof>
     </goal>
     <goal name="play_card&#39;vc.1.0.0.13" expl="VC for play_card" proved="true">
     <proof prover="0" timelimit="1"><result status="valid" time="0.06" steps="129704"/></proof>
     </goal>
     <goal name="play_card&#39;vc.1.0.0.14" expl="VC for play_card" proved="true">
     <proof prover="0"><result status="valid" time="0.04" steps="70762"/></proof>
     </goal>
     <goal name="play_card&#39;vc.1.0.0.15" expl="VC for play_card" proved="true">
     <proof prover="0"><result status="valid" time="0.04" steps="71068"/></proof>
     </goal>
     <goal name="play_card&#39;vc.1.0.0.16" expl="VC for play_card" proved="true">
     <proof prover="0"><result status="valid" time="0.04" steps="68608"/></proof>
     </goal>
     <goal name="play_card&#39;vc.1.0.0.17" expl="VC for play_card" proved="true">
     <proof prover="0"><result status="valid" time="0.02" steps="60130"/></proof>
     </goal>
     <goal name="play_card&#39;vc.1.0.0.18" expl="VC for play_card" proved="true">
     <proof prover="4"><result status="valid" time="0.21" steps="583"/></proof>
     </goal>
     <goal name="play_card&#39;vc.1.0.0.19" expl="VC for play_card" proved="true">
     <proof prover="0"><result status="valid" time="0.03" steps="62285"/></proof>
     </goal>
     <goal name="play_card&#39;vc.1.0.0.20" expl="VC for play_card" proved="true">
     <proof prover="0"><result status="valid" time="0.04" steps="71421"/></proof>
     </goal>
    </transf>
    </goal>
   </transf>
   </goal>
  </transf>
  </goal>
  <goal name="play_card&#39;vc.2" expl="postcondition" proved="true">
  <proof prover="4"><result status="valid" time="0.02" steps="100"/></proof>
  </goal>
  <goal name="play_card&#39;vc.3" expl="postcondition" proved="true">
  <proof prover="4"><result status="valid" time="0.02" steps="100"/></proof>
  </goal>
  <goal name="play_card&#39;vc.4" expl="assertion" proved="true">
  <proof prover="4"><result status="valid" time="0.01" steps="73"/></proof>
  </goal>
  <goal name="play_card&#39;vc.5" expl="assertion" proved="true">
  <proof prover="4"><result status="valid" time="0.04" steps="205"/></proof>
  </goal>
  <goal name="play_card&#39;vc.6" expl="loop invariant preservation" proved="true">
  <proof prover="4"><result status="valid" time="0.00" steps="57"/></proof>
  </goal>
  <goal name="play_card&#39;vc.7" expl="postcondition" proved="true">
  <transf name="introduce_premises" proved="true" >
   <goal name="play_card&#39;vc.7.0" expl="postcondition" proved="true">
   <transf name="inline_goal" proved="true" >
    <goal name="play_card&#39;vc.7.0.0" expl="postcondition" proved="true">
    <transf name="split_goal_right" proved="true" >
     <goal name="play_card&#39;vc.7.0.0.0" expl="VC for play_card" proved="true">
     <proof prover="4"><result status="valid" time="0.04" steps="102"/></proof>
     </goal>
     <goal name="play_card&#39;vc.7.0.0.1" expl="VC for play_card" proved="true">
     <proof prover="4"><result status="valid" time="0.04" steps="106"/></proof>
     </goal>
     <goal name="play_card&#39;vc.7.0.0.2" expl="VC for play_card" proved="true">
     <proof prover="4"><result status="valid" time="0.04" steps="104"/></proof>
     </goal>
     <goal name="play_card&#39;vc.7.0.0.3" expl="VC for play_card" proved="true">
     <proof prover="4"><result status="valid" time="0.05" steps="179"/></proof>
     </goal>
     <goal name="play_card&#39;vc.7.0.0.4" expl="VC for play_card" proved="true">
     <proof prover="0" timelimit="1"><result status="valid" time="0.04" steps="64901"/></proof>
     </goal>
     <goal name="play_card&#39;vc.7.0.0.5" expl="VC for play_card" proved="true">
     <proof prover="0" timelimit="1"><result status="valid" time="0.03" steps="65879"/></proof>
     </goal>
     <goal name="play_card&#39;vc.7.0.0.6" expl="VC for play_card" proved="true">
     <proof prover="4"><result status="valid" time="0.06" steps="197"/></proof>
     </goal>
     <goal name="play_card&#39;vc.7.0.0.7" expl="VC for play_card" proved="true">
     <proof prover="4"><result status="valid" time="0.06" steps="194"/></proof>
     </goal>
     <goal name="play_card&#39;vc.7.0.0.8" expl="VC for play_card" proved="true">
     <proof prover="4"><result status="valid" time="0.06" steps="201"/></proof>
     </goal>
     <goal name="play_card&#39;vc.7.0.0.9" expl="VC for play_card" proved="true">
     <proof prover="4"><result status="valid" time="0.08" steps="227"/></proof>
     </goal>
     <goal name="play_card&#39;vc.7.0.0.10" expl="VC for play_card" proved="true">
     <proof prover="4"><result status="valid" time="0.08" steps="226"/></proof>
     </goal>
     <goal name="play_card&#39;vc.7.0.0.11" expl="VC for play_card" proved="true">
     <proof prover="4"><result status="valid" time="0.12" steps="243"/></proof>
     </goal>
     <goal name="play_card&#39;vc.7.0.0.12" expl="VC for play_card" proved="true">
     <proof prover="0" timelimit="1"><result status="valid" time="0.04" steps="62811"/></proof>
     </goal>
     <goal name="play_card&#39;vc.7.0.0.13" expl="VC for play_card" proved="true">
     <proof prover="0" timelimit="1"><result status="valid" time="0.07" steps="68554"/></proof>
     </goal>
     <goal name="play_card&#39;vc.7.0.0.14" expl="VC for play_card" proved="true">
     <proof prover="0"><result status="valid" time="0.03" steps="61991"/></proof>
     </goal>
     <goal name="play_card&#39;vc.7.0.0.15" expl="VC for play_card" proved="true">
     <proof prover="0"><result status="valid" time="0.02" steps="62928"/></proof>
     </goal>
     <goal name="play_card&#39;vc.7.0.0.16" expl="VC for play_card" proved="true">
     <proof prover="0"><result status="valid" time="0.03" steps="62576"/></proof>
     </goal>
     <goal name="play_card&#39;vc.7.0.0.17" expl="VC for play_card" proved="true">
     <proof prover="0"><result status="valid" time="0.02" steps="65248"/></proof>
     </goal>
     <goal name="play_card&#39;vc.7.0.0.18" expl="VC for play_card" proved="true">
     <proof prover="4"><result status="valid" time="0.08" steps="293"/></proof>
     </goal>
     <goal name="play_card&#39;vc.7.0.0.19" expl="VC for play_card" proved="true">
     <proof prover="0"><result status="valid" time="0.03" steps="70066"/></proof>
     </goal>
     <goal name="play_card&#39;vc.7.0.0.20" expl="VC for play_card" proved="true">
     <proof prover="0"><result status="valid" time="0.03" steps="88901"/></proof>
     </goal>
    </transf>
    </goal>
   </transf>
   </goal>
  </transf>
  </goal>
  <goal name="play_card&#39;vc.8" expl="postcondition" proved="true">
  <proof prover="4"><result status="valid" time="0.02" steps="110"/></proof>
  </goal>
  <goal name="play_card&#39;vc.9" expl="postcondition" proved="true">
  <proof prover="4"><result status="valid" time="0.02" steps="110"/></proof>
  </goal>
  <goal name="play_card&#39;vc.10" expl="out of loop bounds" proved="true">
  <proof prover="4"><result status="valid" time="0.00" steps="121"/></proof>
  </goal>
 </transf>
 </goal>
 <goal name="play_cards&#39;vc" expl="VC for play_cards" proved="true">
 <proof prover="4"><result status="valid" time="0.04" steps="555"/></proof>
 </goal>
 <goal name="play_game&#39;vc" expl="VC for play_game" proved="true">
 <transf name="split_goal_right" proved="true" >
  <goal name="play_game&#39;vc.0" expl="precondition" proved="true">
  <proof prover="4"><result status="valid" time="0.01" steps="19"/></proof>
  </goal>
  <goal name="play_game&#39;vc.1" expl="assertion" proved="true">
  <proof prover="4"><result status="valid" time="0.01" steps="8"/></proof>
  </goal>
  <goal name="play_game&#39;vc.2" expl="assertion" proved="true">
  <proof prover="4"><result status="valid" time="0.00" steps="44"/></proof>
  </goal>
  <goal name="play_game&#39;vc.3" expl="postcondition" proved="true">
  <proof prover="4"><result status="valid" time="0.01" steps="10"/></proof>
  </goal>
  <goal name="play_game&#39;vc.4" expl="postcondition" proved="true">
  <proof prover="4"><result status="valid" time="0.01" steps="20"/></proof>
  </goal>
  <goal name="play_game&#39;vc.5" expl="loop invariant init" proved="true">
  <proof prover="4"><result status="valid" time="0.01" steps="74"/></proof>
  </goal>
  <goal name="play_game&#39;vc.6" expl="loop invariant init" proved="true">
  <proof prover="4"><result status="valid" time="0.01" steps="87"/></proof>
  </goal>
  <goal name="play_game&#39;vc.7" expl="loop invariant init" proved="true">
  <proof prover="4"><result status="valid" time="0.00" steps="4"/></proof>
  </goal>
  <goal name="play_game&#39;vc.8" expl="loop invariant init" proved="true">
  <proof prover="4"><result status="valid" time="0.01" steps="4"/></proof>
  </goal>
  <goal name="play_game&#39;vc.9" expl="loop invariant init" proved="true">
  <proof prover="4"><result status="valid" time="0.00" steps="22"/></proof>
  </goal>
  <goal name="play_game&#39;vc.10" expl="loop invariant init" proved="true">
  <proof prover="4"><result status="valid" time="0.01" steps="24"/></proof>
  </goal>
  <goal name="play_game&#39;vc.11" expl="loop invariant init" proved="true">
  <proof prover="4"><result status="valid" time="0.00" steps="26"/></proof>
  </goal>
  <goal name="play_game&#39;vc.12" expl="loop invariant preservation" proved="true">
  <proof prover="4"><result status="valid" time="0.01" steps="63"/></proof>
  </goal>
  <goal name="play_game&#39;vc.13" expl="loop invariant preservation" proved="true">
  <proof prover="4"><result status="valid" time="0.02" steps="161"/></proof>
  </goal>
  <goal name="play_game&#39;vc.14" expl="loop invariant preservation" proved="true">
  <proof prover="4"><result status="valid" time="0.01" steps="65"/></proof>
  </goal>
  <goal name="play_game&#39;vc.15" expl="loop invariant preservation" proved="true">
  <proof prover="4"><result status="valid" time="0.04" steps="118"/></proof>
  </goal>
  <goal name="play_game&#39;vc.16" expl="loop invariant preservation" proved="true">
  <proof prover="4"><result status="valid" time="0.02" steps="136"/></proof>
  </goal>
  <goal name="play_game&#39;vc.17" expl="loop invariant preservation" proved="true">
  <proof prover="4"><result status="valid" time="0.02" steps="179"/></proof>
  </goal>
  <goal name="play_game&#39;vc.18" expl="loop invariant preservation" proved="true">
  <proof prover="0"><result status="valid" time="0.03" steps="63475"/></proof>
  </goal>
  <goal name="play_game&#39;vc.19" expl="assertion" proved="true">
  <proof prover="4"><result status="valid" time="0.01" steps="33"/></proof>
  </goal>
  <goal name="play_game&#39;vc.20" expl="assertion" proved="true">
  <proof prover="4"><result status="valid" time="0.08" steps="104"/></proof>
  </goal>
  <goal name="play_game&#39;vc.21" expl="assertion" proved="true">
  <transf name="split_vc" proved="true" >
   <goal name="play_game&#39;vc.21.0" expl="assertion" proved="true">
   <proof prover="4" timelimit="1"><result status="valid" time="0.01" steps="72"/></proof>
   </goal>
   <goal name="play_game&#39;vc.21.1" expl="assertion" proved="true">
   <proof prover="4" timelimit="1"><result status="valid" time="0.01" steps="72"/></proof>
   </goal>
   <goal name="play_game&#39;vc.21.2" expl="assertion" proved="true">
   <proof prover="4" timelimit="1"><result status="valid" time="0.01" steps="87"/></proof>
   </goal>
   <goal name="play_game&#39;vc.21.3" expl="assertion" proved="true">
   <proof prover="4" timelimit="1"><result status="valid" time="0.01" steps="87"/></proof>
   </goal>
   <goal name="play_game&#39;vc.21.4" expl="VC for play_game" proved="true">
   <transf name="unfold" proved="true" arg1="range">
    <goal name="play_game&#39;vc.21.4.0" expl="VC for play_game" proved="true">
    <transf name="introduce_premises" proved="true" >
     <goal name="play_game&#39;vc.21.4.0.0" expl="VC for play_game" proved="true">
     <transf name="instantiate" proved="true" arg1="H2" arg2="i">
      <goal name="play_game&#39;vc.21.4.0.0.0" expl="VC for play_game" proved="true">
      <transf name="destruct_rec" proved="true" arg1="Hinst">
       <goal name="play_game&#39;vc.21.4.0.0.0.0" expl="destruct premise" proved="true">
       <proof prover="4"><result status="valid" time="0.01" steps="27"/></proof>
       </goal>
       <goal name="play_game&#39;vc.21.4.0.0.0.1" expl="VC for play_game" proved="true">
       <transf name="replace" proved="true" arg1="(f i)" arg2="(match (positions s)[(seqval sigma)[i]] with x,_ -&gt; x end)">
        <goal name="play_game&#39;vc.21.4.0.0.0.1.0" expl="VC for play_game" proved="true">
        <proof prover="5"><result status="valid" time="0.09"/></proof>
        </goal>
        <goal name="play_game&#39;vc.21.4.0.0.0.1.1" expl="equality hypothesis" proved="true">
        <proof prover="4"><result status="valid" time="0.01" steps="33"/></proof>
        </goal>
       </transf>
       </goal>
      </transf>
      </goal>
     </transf>
     </goal>
    </transf>
    </goal>
   </transf>
   </goal>
   <goal name="play_game&#39;vc.21.5" expl="VC for play_game" proved="true">
   <proof prover="4" timelimit="1"><result status="valid" time="0.01" steps="27"/></proof>
   </goal>
   <goal name="play_game&#39;vc.21.6" expl="VC for play_game" proved="true">
   <proof prover="4" timelimit="1"><result status="valid" time="0.02" steps="126"/></proof>
   </goal>
  </transf>
  </goal>
  <goal name="play_game&#39;vc.22" expl="assertion" proved="true">
  <proof prover="4"><result status="valid" time="0.13" steps="326"/></proof>
  </goal>
  <goal name="play_game&#39;vc.23" expl="postcondition" proved="true">
  <proof prover="4"><result status="valid" time="0.00" steps="35"/></proof>
  </goal>
  <goal name="play_game&#39;vc.24" expl="postcondition" proved="true">
  <proof prover="4"><result status="valid" time="0.08" steps="292"/></proof>
  </goal>
  <goal name="play_game&#39;vc.25" expl="out of loop bounds" proved="true">
  <proof prover="4"><result status="valid" time="0.00" steps="11"/></proof>
  </goal>
 </transf>
 </goal>
 <goal name="test&#39;vc" expl="VC for test" proved="true">
 <proof prover="4" timelimit="1"><result status="valid" time="0.00" steps="0"/></proof>
 </goal>
</theory>
</file>
</why3session>
