<?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="Alt-Ergo" version="2.4.2" timelimit="1" steplimit="0" memlimit="1000"/>
<prover id="2" name="Z3" version="4.12.2" 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.000000" 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.000000" steps="26"/></proof>
  </goal>
  <goal name="pigeon_hole&#39;vc.2" expl="postcondition" proved="true">
  <proof prover="4"><result status="valid" time="0.000000" 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.000000" steps="44"/></proof>
  </goal>
  <goal name="pigeon_hole&#39;vc.4" expl="assertion" proved="true">
  <proof prover="4"><result status="valid" time="0.010000" steps="61"/></proof>
  </goal>
  <goal name="pigeon_hole&#39;vc.5" expl="variant decrease" proved="true">
  <proof prover="4"><result status="valid" time="0.000000" steps="12"/></proof>
  </goal>
  <goal name="pigeon_hole&#39;vc.6" expl="precondition" proved="true">
  <proof prover="4"><result status="valid" time="0.000000" steps="0"/></proof>
  </goal>
  <goal name="pigeon_hole&#39;vc.7" expl="precondition" proved="true">
  <proof prover="2"><result status="valid" time="0.010000" steps="3603"/></proof>
  </goal>
  <goal name="pigeon_hole&#39;vc.8" expl="postcondition" proved="true">
  <proof prover="4"><result status="valid" time="0.010000" 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.000000" 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.000000" steps="28"/></proof>
  </goal>
  <goal name="pigeon_hole&#39;vc.11" expl="assertion" proved="true">
  <proof prover="4"><result status="valid" time="0.000000" steps="26"/></proof>
  </goal>
  <goal name="pigeon_hole&#39;vc.12" expl="variant decrease" proved="true">
  <proof prover="4"><result status="valid" time="0.000000" steps="6"/></proof>
  </goal>
  <goal name="pigeon_hole&#39;vc.13" expl="precondition" proved="true">
  <proof prover="4"><result status="valid" time="0.000000" steps="0"/></proof>
  </goal>
  <goal name="pigeon_hole&#39;vc.14" expl="precondition" proved="true">
  <proof prover="4"><result status="valid" time="0.000000" steps="37"/></proof>
  </goal>
  <goal name="pigeon_hole&#39;vc.15" expl="postcondition" proved="true">
  <proof prover="4"><result status="valid" time="0.000000" 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.000000" 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.030000" 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.070000" 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.010000" 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.000000" 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.000000" 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.000000" 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.040000" 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.040000" 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.040000" 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.050000" steps="172"/></proof>
     </goal>
     <goal name="play_card&#39;vc.1.0.0.4" expl="VC for play_card" proved="true">
     <proof prover="2" timelimit="1"><result status="valid" time="0.020000" steps="60950"/></proof>
     </goal>
     <goal name="play_card&#39;vc.1.0.0.5" expl="VC for play_card" proved="true">
     <proof prover="2" timelimit="1"><result status="valid" time="0.020000" steps="62862"/></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.060000" 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.060000" 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.060000" 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.080000" 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.080000" 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.260000" steps="537"/></proof>
     </goal>
     <goal name="play_card&#39;vc.1.0.0.12" expl="VC for play_card" proved="true">
     <proof prover="2" timelimit="1"><result status="valid" time="0.020000" steps="84551"/></proof>
     </goal>
     <goal name="play_card&#39;vc.1.0.0.13" expl="VC for play_card" proved="true">
     <proof prover="2" timelimit="1"><result status="valid" time="0.030000" steps="151146"/></proof>
     </goal>
     <goal name="play_card&#39;vc.1.0.0.14" expl="VC for play_card" proved="true">
     <proof prover="2"><result status="valid" time="0.020000" steps="53274"/></proof>
     </goal>
     <goal name="play_card&#39;vc.1.0.0.15" expl="VC for play_card" proved="true">
     <proof prover="2"><result status="valid" time="0.020000" steps="48522"/></proof>
     </goal>
     <goal name="play_card&#39;vc.1.0.0.16" expl="VC for play_card" proved="true">
     <proof prover="2"><result status="valid" time="0.020000" steps="45449"/></proof>
     </goal>
     <goal name="play_card&#39;vc.1.0.0.17" expl="VC for play_card" proved="true">
     <proof prover="2"><result status="valid" time="0.020000" steps="39291"/></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.210000" steps="583"/></proof>
     </goal>
     <goal name="play_card&#39;vc.1.0.0.19" expl="VC for play_card" proved="true">
     <proof prover="2"><result status="valid" time="0.020000" steps="43945"/></proof>
     </goal>
     <goal name="play_card&#39;vc.1.0.0.20" expl="VC for play_card" proved="true">
     <proof prover="2"><result status="valid" time="0.020000" steps="86051"/></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.020000" steps="100"/></proof>
  </goal>
  <goal name="play_card&#39;vc.3" expl="postcondition" proved="true">
  <proof prover="4"><result status="valid" time="0.020000" steps="100"/></proof>
  </goal>
  <goal name="play_card&#39;vc.4" expl="assertion" proved="true">
  <proof prover="4"><result status="valid" time="0.010000" steps="73"/></proof>
  </goal>
  <goal name="play_card&#39;vc.5" expl="assertion" proved="true">
  <proof prover="4"><result status="valid" time="0.040000" 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.000000" 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.050000" 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.050000" 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.050000" 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.050000" steps="179"/></proof>
     </goal>
     <goal name="play_card&#39;vc.7.0.0.4" expl="VC for play_card" proved="true">
     <proof prover="2" timelimit="1"><result status="valid" time="0.020000" steps="43891"/></proof>
     </goal>
     <goal name="play_card&#39;vc.7.0.0.5" expl="VC for play_card" proved="true">
     <proof prover="2" timelimit="1"><result status="valid" time="0.020000" steps="43674"/></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.090000" 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.090000" 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.090000" 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.160000" 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.090000" 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.230000" steps="243"/></proof>
     </goal>
     <goal name="play_card&#39;vc.7.0.0.12" expl="VC for play_card" proved="true">
     <proof prover="2" timelimit="1"><result status="valid" time="0.020000" steps="55059"/></proof>
     </goal>
     <goal name="play_card&#39;vc.7.0.0.13" expl="VC for play_card" proved="true">
     <proof prover="2" timelimit="1"><result status="valid" time="0.020000" steps="51407"/></proof>
     </goal>
     <goal name="play_card&#39;vc.7.0.0.14" expl="VC for play_card" proved="true">
     <proof prover="2"><result status="valid" time="0.020000" steps="44977"/></proof>
     </goal>
     <goal name="play_card&#39;vc.7.0.0.15" expl="VC for play_card" proved="true">
     <proof prover="2"><result status="valid" time="0.020000" steps="43855"/></proof>
     </goal>
     <goal name="play_card&#39;vc.7.0.0.16" expl="VC for play_card" proved="true">
     <proof prover="2"><result status="valid" time="0.020000" steps="51695"/></proof>
     </goal>
     <goal name="play_card&#39;vc.7.0.0.17" expl="VC for play_card" proved="true">
     <proof prover="2"><result status="valid" time="0.020000" steps="41727"/></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.210000" steps="293"/></proof>
     </goal>
     <goal name="play_card&#39;vc.7.0.0.19" expl="VC for play_card" proved="true">
     <proof prover="2"><result status="valid" time="0.020000" steps="45872"/></proof>
     </goal>
     <goal name="play_card&#39;vc.7.0.0.20" expl="VC for play_card" proved="true">
     <proof prover="2"><result status="valid" time="0.020000" steps="61909"/></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.020000" steps="110"/></proof>
  </goal>
  <goal name="play_card&#39;vc.9" expl="postcondition" proved="true">
  <proof prover="4"><result status="valid" time="0.020000" 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.000000" 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.040000" 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.010000" steps="19"/></proof>
  </goal>
  <goal name="play_game&#39;vc.1" expl="assertion" proved="true">
  <proof prover="4"><result status="valid" time="0.010000" steps="8"/></proof>
  </goal>
  <goal name="play_game&#39;vc.2" expl="assertion" proved="true">
  <proof prover="4"><result status="valid" time="0.000000" steps="44"/></proof>
  </goal>
  <goal name="play_game&#39;vc.3" expl="postcondition" proved="true">
  <proof prover="4"><result status="valid" time="0.000000" steps="10"/></proof>
  </goal>
  <goal name="play_game&#39;vc.4" expl="postcondition" proved="true">
  <proof prover="4"><result status="valid" time="0.080000" 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.010000" steps="56"/></proof>
  </goal>
  <goal name="play_game&#39;vc.6" expl="loop invariant init" proved="true">
  <proof prover="4"><result status="valid" time="0.010000" steps="68"/></proof>
  </goal>
  <goal name="play_game&#39;vc.7" expl="loop invariant init" proved="true">
  <proof prover="4"><result status="valid" time="0.000000" 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.000000" 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.000000" 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.010000" 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.010000" 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.010000" steps="63"/></proof>
  </goal>
  <goal name="play_game&#39;vc.13" expl="loop invariant preservation" proved="true">
  <proof prover="0"><result status="valid" time="0.020000" steps="185"/></proof>
  </goal>
  <goal name="play_game&#39;vc.14" expl="loop invariant preservation" proved="true">
  <proof prover="4"><result status="valid" time="0.010000" steps="65"/></proof>
  </goal>
  <goal name="play_game&#39;vc.15" expl="loop invariant preservation" proved="true">
  <proof prover="2"><result status="valid" time="0.020000" steps="34752"/></proof>
  </goal>
  <goal name="play_game&#39;vc.16" expl="loop invariant preservation" proved="true">
  <proof prover="4"><result status="valid" time="0.020000" 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.020000" steps="179"/></proof>
  </goal>
  <goal name="play_game&#39;vc.18" expl="loop invariant preservation" proved="true">
  <proof prover="4"><result status="valid" time="0.410000" steps="786"/></proof>
  </goal>
  <goal name="play_game&#39;vc.19" expl="assertion" proved="true">
  <proof prover="4"><result status="valid" time="0.010000" steps="33"/></proof>
  </goal>
  <goal name="play_game&#39;vc.20" expl="assertion" proved="true">
  <proof prover="4"><result status="valid" time="0.080000" 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.010000" steps="70"/></proof>
   </goal>
   <goal name="play_game&#39;vc.21.1" expl="assertion" proved="true">
   <proof prover="4" timelimit="1"><result status="valid" time="0.010000" steps="70"/></proof>
   </goal>
   <goal name="play_game&#39;vc.21.2" expl="assertion" proved="true">
   <proof prover="4" timelimit="1"><result status="valid" time="0.010000" steps="85"/></proof>
   </goal>
   <goal name="play_game&#39;vc.21.3" expl="assertion" proved="true">
   <proof prover="4" timelimit="1"><result status="valid" time="0.010000" steps="85"/></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.010000" steps="25"/></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.090000"/></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.010000" steps="31"/></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.010000" steps="25"/></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.020000" steps="124"/></proof>
   </goal>
  </transf>
  </goal>
  <goal name="play_game&#39;vc.22" expl="assertion" proved="true">
  <proof prover="4"><result status="valid" time="0.130000" steps="434"/></proof>
  </goal>
  <goal name="play_game&#39;vc.23" expl="postcondition" proved="true">
  <proof prover="4"><result status="valid" time="0.010000" steps="35"/></proof>
  </goal>
  <goal name="play_game&#39;vc.24" expl="postcondition" proved="true">
  <proof prover="0"><result status="valid" time="0.110000" steps="920"/></proof>
  </goal>
  <goal name="play_game&#39;vc.25" expl="out of loop bounds" proved="true">
  <proof prover="4"><result status="valid" time="0.000000" 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.000000" steps="0"/></proof>
 </goal>
</theory>
</file>
</why3session>
