<?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="1" steplimit="0" memlimit="1000"/>
<prover id="1" name="Eprover" version="2.0" timelimit="5" steplimit="0" memlimit="1000"/>
<prover id="2" name="CVC3" version="2.2" timelimit="5" steplimit="0" memlimit="1000"/>
<prover id="3" name="Spass" version="3.9" timelimit="5" steplimit="0" memlimit="1000"/>
<prover id="5" name="CVC4" version="1.5" timelimit="5" steplimit="0" memlimit="1000"/>
<prover id="6" name="CVC4" version="1.8" timelimit="1" steplimit="0" memlimit="1000"/>
<prover id="7" name="Alt-Ergo" version="2.4.2" timelimit="1" steplimit="0" memlimit="1000"/>
<file format="whyml" proved="true">
<path name=".."/><path name=".."/><path name=".."/><path name="stdlib"/>
<path name="list.mlw"/>
<theory name="List" proved="true">
 <goal name="is_nil&#39;vc" expl="VC for is_nil" proved="true">
 <proof prover="0"><result status="valid" time="0.000000" steps="5247"/></proof>
 </goal>
</theory>
<theory name="Length" proved="true">
 <goal name="Length_nonnegative" proved="true">
 <transf name="induction_ty_lex" proved="true" >
  <goal name="Length_nonnegative.0" proved="true">
  <proof prover="0"><result status="valid" time="0.000000" steps="7196"/></proof>
  </goal>
 </transf>
 </goal>
 <goal name="Length_nil" proved="true">
 <transf name="split_goal_right" proved="true" >
  <goal name="Length_nil.0" proved="true">
  <proof prover="1"><result status="valid" time="0.010000"/></proof>
  </goal>
  <goal name="Length_nil.1" proved="true">
  <proof prover="0"><result status="valid" time="0.000000" steps="5990"/></proof>
  </goal>
 </transf>
 </goal>
</theory>
<theory name="Quant" proved="true">
 <goal name="for_all&#39;vc" expl="VC for for_all" proved="true">
 <proof prover="5"><result status="valid" time="0.040000" steps="3393"/></proof>
 </goal>
 <goal name="for_some&#39;vc" expl="VC for for_some" proved="true">
 <proof prover="5"><result status="valid" time="0.020000" steps="4454"/></proof>
 </goal>
 <goal name="mem&#39;vc" expl="VC for mem" proved="true">
 <proof prover="5"><result status="valid" time="0.020000" steps="3745"/></proof>
 </goal>
</theory>
<theory name="Elements" proved="true">
 <goal name="elements_mem" proved="true">
 <transf name="induction_ty_lex" proved="true" >
  <goal name="elements_mem.0" proved="true">
  <proof prover="6"><result status="valid" time="0.090000" steps="13312"/></proof>
  </goal>
 </transf>
 </goal>
</theory>
<theory name="NthLength" proved="true">
 <goal name="nth_none_1" proved="true">
 <transf name="induction_ty_lex" proved="true" >
  <goal name="nth_none_1.0" proved="true">
  <proof prover="6"><result status="valid" time="0.040000" steps="5649"/></proof>
  </goal>
 </transf>
 </goal>
 <goal name="nth_none_2" proved="true">
 <transf name="induction_ty_lex" proved="true" >
  <goal name="nth_none_2.0" proved="true">
  <proof prover="6"><result status="valid" time="0.040000" steps="5945"/></proof>
  </goal>
 </transf>
 </goal>
 <goal name="nth_none_3" proved="true">
 <transf name="induction_ty_lex" proved="true" >
  <goal name="nth_none_3.0" proved="true">
  <proof prover="6"><result status="valid" time="0.040000" steps="6037"/></proof>
  </goal>
 </transf>
 </goal>
</theory>
<theory name="NthHdTl" proved="true">
 <goal name="Nth_tl" proved="true">
 <proof prover="7"><result status="valid" time="0.000000" steps="35"/></proof>
 </goal>
 <goal name="Nth0_head" proved="true">
 <proof prover="1"><result status="valid" time="0.010000"/></proof>
 </goal>
</theory>
<theory name="Append" proved="true">
 <goal name="Append_assoc" proved="true">
 <transf name="induction_ty_lex" proved="true" >
  <goal name="Append_assoc.0" proved="true">
  <transf name="split_goal_right" proved="true" >
   <goal name="Append_assoc.0.0" proved="true">
   <proof prover="0"><result status="valid" time="0.000000" steps="6494"/></proof>
   </goal>
   <goal name="Append_assoc.0.1" proved="true">
   <proof prover="6"><result status="valid" time="0.030000" steps="2855"/></proof>
   </goal>
  </transf>
  </goal>
 </transf>
 </goal>
 <goal name="Append_l_nil" proved="true">
 <transf name="induction_ty_lex" proved="true" >
  <goal name="Append_l_nil.0" proved="true">
  <proof prover="0"><result status="valid" time="0.000000" steps="8057"/></proof>
  </goal>
 </transf>
 </goal>
 <goal name="Append_length" proved="true">
 <transf name="induction_ty_lex" proved="true" >
  <goal name="Append_length.0" proved="true">
  <proof prover="0"><result status="valid" time="0.000000" steps="63357"/></proof>
  </goal>
 </transf>
 </goal>
 <goal name="mem_append" proved="true">
 <transf name="induction_ty_lex" proved="true" >
  <goal name="mem_append.0" proved="true">
  <proof prover="6"><result status="valid" time="0.050000" steps="5953"/></proof>
  </goal>
 </transf>
 </goal>
 <goal name="mem_decomp" proved="true">
 <transf name="induction_ty_lex" proved="true" >
  <goal name="mem_decomp.0" proved="true">
  <transf name="split_goal_right" proved="true" >
   <goal name="mem_decomp.0.0" proved="true">
   <proof prover="0"><result status="valid" time="0.000000" steps="11375"/></proof>
   </goal>
   <goal name="mem_decomp.0.1" proved="true">
   <proof prover="3"><result status="valid" time="0.610000"/></proof>
   </goal>
  </transf>
  </goal>
 </transf>
 </goal>
</theory>
<theory name="NthLengthAppend" proved="true">
 <goal name="nth_append_1" proved="true">
 <transf name="induction_ty_lex" proved="true" >
  <goal name="nth_append_1.0" proved="true">
  <proof prover="6"><result status="valid" time="0.070000" steps="9712"/></proof>
  </goal>
 </transf>
 </goal>
 <goal name="nth_append_2" proved="true">
 <transf name="induction_ty_lex" proved="true" >
  <goal name="nth_append_2.0" proved="true">
  <proof prover="6"><result status="valid" time="0.150000" steps="20405"/></proof>
  </goal>
 </transf>
 </goal>
</theory>
<theory name="Reverse" proved="true">
 <goal name="reverse_append" proved="true">
 <transf name="induction_ty_lex" proved="true" >
  <goal name="reverse_append.0" proved="true">
  <proof prover="0"><result status="valid" time="0.090000" steps="136942"/></proof>
  </goal>
 </transf>
 </goal>
 <goal name="reverse_cons" proved="true">
 <proof prover="0"><result status="valid" time="0.010000" steps="14174"/></proof>
 </goal>
 <goal name="cons_reverse" proved="true">
 <transf name="induction_ty_lex" proved="true" >
  <goal name="cons_reverse.0" proved="true">
  <proof prover="0"><result status="valid" time="0.010000" steps="29392"/></proof>
  </goal>
 </transf>
 </goal>
 <goal name="reverse_reverse" proved="true">
 <transf name="induction_ty_lex" proved="true" >
  <goal name="reverse_reverse.0" proved="true">
  <proof prover="0"><result status="valid" time="0.010000" steps="16277"/></proof>
  </goal>
 </transf>
 </goal>
 <goal name="reverse_mem" proved="true">
 <transf name="induction_ty_lex" proved="true" >
  <goal name="reverse_mem.0" proved="true">
  <proof prover="6"><result status="valid" time="0.090000" steps="12335"/></proof>
  </goal>
 </transf>
 </goal>
 <goal name="Reverse_length" proved="true">
 <transf name="induction_ty_lex" proved="true" >
  <goal name="Reverse_length.0" proved="true">
  <proof prover="6"><result status="valid" time="0.060000" steps="6636"/></proof>
  </goal>
 </transf>
 </goal>
</theory>
<theory name="RevAppend" proved="true">
 <goal name="rev_append_append_l" proved="true">
 <transf name="induction_ty_lex" proved="true" >
  <goal name="rev_append_append_l.0" proved="true">
  <proof prover="6"><result status="valid" time="0.060000" steps="6437"/></proof>
  </goal>
 </transf>
 </goal>
 <goal name="rev_append_length" proved="true">
 <transf name="induction_ty_lex" proved="true" >
  <goal name="rev_append_length.0" proved="true">
  <proof prover="0"><result status="valid" time="0.010000" steps="160720"/></proof>
  </goal>
 </transf>
 </goal>
 <goal name="rev_append_def" proved="true">
 <transf name="induction_ty_lex" proved="true" >
  <goal name="rev_append_def.0" proved="true">
  <proof prover="0"><result status="valid" time="0.560000" steps="726449"/></proof>
  </goal>
 </transf>
 </goal>
 <goal name="rev_append_append_r" proved="true">
 <proof prover="0"><result status="valid" time="0.010000" steps="27711"/></proof>
 </goal>
</theory>
<theory name="Sorted" proved="true">
 <goal name="sorted_mem" proved="true">
 <transf name="split_goal_right" proved="true" >
  <goal name="sorted_mem.0" proved="true">
  <proof prover="6"><result status="valid" time="0.060000" steps="7723"/></proof>
  </goal>
  <goal name="sorted_mem.1" proved="true">
  <transf name="induction_pr" proved="true" >
   <goal name="sorted_mem.1.0" proved="true">
   <proof prover="0"><result status="valid" time="0.000000" steps="7347"/></proof>
   </goal>
   <goal name="sorted_mem.1.1" proved="true">
   <proof prover="0"><result status="valid" time="0.000000" steps="7834"/></proof>
   </goal>
   <goal name="sorted_mem.1.2" proved="true">
   <proof prover="0"><result status="valid" time="1.570000" steps="6116977"/></proof>
   </goal>
  </transf>
  </goal>
  <goal name="sorted_mem.2" proved="true">
  <proof prover="0"><result status="valid" time="0.010000" steps="7799"/></proof>
  </goal>
 </transf>
 </goal>
 <goal name="sorted_append" proved="true">
 <transf name="induction_ty_lex" proved="true" >
  <goal name="sorted_append.0" proved="true">
  <transf name="split_goal_right" proved="true" >
   <goal name="sorted_append.0.0" proved="true">
   <proof prover="0"><result status="valid" time="0.010000" steps="14744"/></proof>
   </goal>
   <goal name="sorted_append.0.1" proved="true">
   <proof prover="0"><result status="valid" time="0.000000" steps="14307"/></proof>
   </goal>
   <goal name="sorted_append.0.2" proved="true">
   <proof prover="0"><result status="valid" time="0.000000" steps="14685"/></proof>
   </goal>
   <goal name="sorted_append.0.3" proved="true">
   <proof prover="0"><result status="valid" time="0.000000" steps="14773"/></proof>
   </goal>
   <goal name="sorted_append.0.4" proved="true">
   <proof prover="6"><result status="valid" time="0.070000" steps="10045"/></proof>
   </goal>
   <goal name="sorted_append.0.5" proved="true">
   <proof prover="6"><result status="valid" time="0.060000" steps="9023"/></proof>
   </goal>
   <goal name="sorted_append.0.6" proved="true">
   <proof prover="6"><result status="valid" time="0.050000" steps="6238"/></proof>
   </goal>
   <goal name="sorted_append.0.7" proved="true">
   <proof prover="6"><result status="valid" time="0.100000" steps="13018"/></proof>
   </goal>
  </transf>
  </goal>
 </transf>
 </goal>
</theory>
<theory name="SortedInt" proved="true">
 <goal name="Transitive.Trans" proved="true">
 <proof prover="0"><result status="valid" time="0.000000" steps="3169"/></proof>
 </goal>
</theory>
<theory name="RevSorted" proved="true">
 <goal name="Incr.Transitive.Trans" proved="true">
 <proof prover="0"><result status="valid" time="0.000000" steps="192"/></proof>
 </goal>
 <goal name="Decr.Transitive.Trans" proved="true">
 <proof prover="0"><result status="valid" time="0.000000" steps="11668"/></proof>
 </goal>
 <goal name="rev_append_sorted_incr" proved="true">
 <transf name="induction_ty_lex" proved="true" >
  <goal name="rev_append_sorted_incr.0" proved="true">
  <transf name="split_goal_right" proved="true" >
   <goal name="rev_append_sorted_incr.0.0" proved="true">
   <proof prover="0"><result status="valid" time="0.010000" steps="24623"/></proof>
   </goal>
   <goal name="rev_append_sorted_incr.0.1" proved="true">
   <proof prover="0"><result status="valid" time="0.010000" steps="25314"/></proof>
   </goal>
   <goal name="rev_append_sorted_incr.0.2" proved="true">
   <proof prover="7"><result status="valid" time="0.010000" steps="78"/></proof>
   </goal>
   <goal name="rev_append_sorted_incr.0.3" proved="true">
   <proof prover="0"><result status="valid" time="0.010000" steps="26283"/></proof>
   </goal>
   <goal name="rev_append_sorted_incr.0.4" proved="true">
   <proof prover="5"><result status="valid" time="0.070000" steps="21952"/></proof>
   </goal>
   <goal name="rev_append_sorted_incr.0.5" proved="true">
   <proof prover="0"><result status="valid" time="0.030000" steps="59619"/></proof>
   </goal>
   <goal name="rev_append_sorted_incr.0.6" proved="true">
   <proof prover="6"><result status="valid" time="0.300000" steps="50875"/></proof>
   </goal>
   <goal name="rev_append_sorted_incr.0.7" proved="true">
   <proof prover="1"><result status="valid" time="0.949457"/></proof>
   </goal>
  </transf>
  </goal>
 </transf>
 </goal>
 <goal name="rev_append_sorted_decr" proved="true">
 <transf name="induction_ty_lex" proved="true" >
  <goal name="rev_append_sorted_decr.0" proved="true">
  <transf name="split_goal_right" proved="true" >
   <goal name="rev_append_sorted_decr.0.0" proved="true">
   <proof prover="0"><result status="valid" time="0.010000" steps="25842"/></proof>
   </goal>
   <goal name="rev_append_sorted_decr.0.1" proved="true">
   <proof prover="0"><result status="valid" time="0.010000" steps="26579"/></proof>
   </goal>
   <goal name="rev_append_sorted_decr.0.2" proved="true">
   <proof prover="0"><result status="valid" time="0.010000" steps="26822"/></proof>
   </goal>
   <goal name="rev_append_sorted_decr.0.3" proved="true">
   <proof prover="0"><result status="valid" time="0.010000" steps="26932"/></proof>
   </goal>
   <goal name="rev_append_sorted_decr.0.4" proved="true">
   <proof prover="5"><result status="valid" time="0.050000" steps="25025"/></proof>
   </goal>
   <goal name="rev_append_sorted_decr.0.5" proved="true">
   <proof prover="0"><result status="valid" time="0.030000" steps="60339"/></proof>
   </goal>
   <goal name="rev_append_sorted_decr.0.6" proved="true">
   <proof prover="0"><result status="valid" time="0.090000" steps="136389"/></proof>
   </goal>
   <goal name="rev_append_sorted_decr.0.7" proved="true">
   <proof prover="5"><result status="valid" time="0.070000" steps="12905"/></proof>
   </goal>
  </transf>
  </goal>
 </transf>
 </goal>
</theory>
<theory name="NumOcc" proved="true">
 <goal name="Num_Occ_NonNeg" proved="true">
 <transf name="induction_ty_lex" proved="true" >
  <goal name="Num_Occ_NonNeg.0" proved="true">
  <proof prover="0"><result status="valid" time="0.000000" steps="245050"/></proof>
  </goal>
 </transf>
 </goal>
 <goal name="Mem_Num_Occ" proved="true">
 <transf name="induction_ty_lex" proved="true" >
  <goal name="Mem_Num_Occ.0" proved="true">
  <transf name="split_goal_right" proved="true" >
   <goal name="Mem_Num_Occ.0.0" proved="true">
   <proof prover="0"><result status="valid" time="0.000000" steps="8214"/></proof>
   </goal>
   <goal name="Mem_Num_Occ.0.1" proved="true">
   <proof prover="0"><result status="valid" time="0.000000" steps="8532"/></proof>
   </goal>
   <goal name="Mem_Num_Occ.0.2" proved="true">
   <proof prover="0"><result status="valid" time="1.160000" steps="4040141"/></proof>
   </goal>
   <goal name="Mem_Num_Occ.0.3" proved="true">
   <proof prover="0"><result status="valid" time="0.103497" steps="276838"/></proof>
   </goal>
  </transf>
  </goal>
 </transf>
 </goal>
 <goal name="Append_Num_Occ" proved="true">
 <transf name="induction_ty_lex" proved="true" >
  <goal name="Append_Num_Occ.0" proved="true">
  <proof prover="6"><result status="valid" time="0.050000" steps="7961"/></proof>
  </goal>
 </transf>
 </goal>
 <goal name="reverse_num_occ" proved="true">
 <transf name="induction_ty_lex" proved="true" >
  <goal name="reverse_num_occ.0" proved="true">
  <proof prover="6"><result status="valid" time="0.090000" steps="15545"/></proof>
  </goal>
 </transf>
 </goal>
</theory>
<theory name="Permut" proved="true">
 <goal name="Permut_refl" proved="true">
 <proof prover="0"><result status="valid" time="0.010000" steps="12657"/></proof>
 </goal>
 <goal name="Permut_sym" proved="true">
 <proof prover="0"><result status="valid" time="0.010000" steps="13163"/></proof>
 </goal>
 <goal name="Permut_trans" proved="true">
 <proof prover="0"><result status="valid" time="0.010000" steps="14029"/></proof>
 </goal>
 <goal name="Permut_cons" proved="true">
 <proof prover="6"><result status="valid" time="0.050000" steps="8573"/></proof>
 </goal>
 <goal name="Permut_swap" proved="true">
 <proof prover="6"><result status="valid" time="0.100000" steps="16104"/></proof>
 </goal>
 <goal name="Permut_cons_append" proved="true">
 <proof prover="0"><result status="valid" time="0.250000" steps="374412"/></proof>
 </goal>
 <goal name="Permut_assoc" proved="true">
 <proof prover="0"><result status="valid" time="0.010000" steps="20366"/></proof>
 </goal>
 <goal name="Permut_append" proved="true">
 <proof prover="0"><result status="valid" time="0.870000" steps="880560"/></proof>
 </goal>
 <goal name="Permut_append_swap" proved="true">
 <proof prover="0"><result status="valid" time="0.010000" steps="28933"/></proof>
 </goal>
 <goal name="Permut_mem" proved="true">
 <proof prover="0"><result status="valid" time="0.010000" steps="19933"/></proof>
 </goal>
 <goal name="Permut_length" proved="true">
 <transf name="induction_ty_lex" proved="true" >
  <goal name="Permut_length.0" proved="true">
  <transf name="split_vc" proved="true" >
   <goal name="Permut_length.0.0" proved="true">
   <transf name="destruct_term" proved="true" arg1="l2">
    <goal name="Permut_length.0.0.0" proved="true">
    <proof prover="0"><result status="valid" time="0.020000" steps="45827"/></proof>
    </goal>
    <goal name="Permut_length.0.0.1" proved="true">
    <proof prover="5" timelimit="1"><result status="valid" time="0.010000" steps="6565"/></proof>
    </goal>
   </transf>
   </goal>
   <goal name="Permut_length.0.1" proved="true">
   <transf name="unfold" proved="true" arg1="permut" arg2="in" arg3="H">
    <goal name="Permut_length.0.1.0" proved="true">
    <transf name="assert" proved="true" arg1="(num_occ x1 l1 &gt;= 1)">
     <goal name="Permut_length.0.1.0.0" expl="asserted formula" proved="true">
     <proof prover="5" timelimit="1"><result status="valid" time="0.020000" steps="8070"/></proof>
     </goal>
     <goal name="Permut_length.0.1.0.1" proved="true">
     <transf name="assert" proved="true" arg1="(mem x1 l2)">
      <goal name="Permut_length.0.1.0.1.0" expl="asserted formula" proved="true">
      <proof prover="5" timelimit="1"><result status="valid" time="0.020000" steps="8175"/></proof>
      </goal>
      <goal name="Permut_length.0.1.0.1.1" proved="true">
      <transf name="instantiate" proved="true" arg1="mem_decomp" arg2="x1,l2">
       <goal name="Permut_length.0.1.0.1.1.0" proved="true">
       <transf name="destruct" proved="true" arg1="Hinst">
        <goal name="Permut_length.0.1.0.1.1.0.0" expl="destruct premise" proved="true">
        <proof prover="5" timelimit="1"><result status="valid" time="0.010000" steps="7089"/></proof>
        </goal>
        <goal name="Permut_length.0.1.0.1.1.0.1" proved="true">
        <transf name="destruct" proved="true" arg1="Hinst">
         <goal name="Permut_length.0.1.0.1.1.0.1.0" proved="true">
         <transf name="destruct" proved="true" arg1="Hinst">
          <goal name="Permut_length.0.1.0.1.1.0.1.0.0" proved="true">
          <transf name="assert" proved="true" arg1="(permut x (l1 ++ l2))">
           <goal name="Permut_length.0.1.0.1.1.0.1.0.0.0" expl="asserted formula" proved="true">
           <proof prover="2"><result status="valid" time="4.056438"/></proof>
           </goal>
           <goal name="Permut_length.0.1.0.1.1.0.1.0.0.1" proved="true">
           <proof prover="5" timelimit="1"><result status="valid" time="0.040000" steps="9618"/></proof>
           </goal>
          </transf>
          </goal>
         </transf>
         </goal>
        </transf>
        </goal>
       </transf>
       </goal>
      </transf>
      </goal>
     </transf>
     </goal>
    </transf>
    </goal>
   </transf>
   </goal>
  </transf>
  </goal>
 </transf>
 </goal>
</theory>
<theory name="Distinct" proved="true">
 <goal name="distinct_append" proved="true">
 <transf name="induction_ty_lex" proved="true" >
  <goal name="distinct_append.0" proved="true">
  <transf name="split_goal_right" proved="true" >
   <goal name="distinct_append.0.0" proved="true">
   <proof prover="0"><result status="valid" time="0.000000" steps="14822"/></proof>
   </goal>
   <goal name="distinct_append.0.1" proved="true">
   <proof prover="6"><result status="valid" time="0.110000" steps="15949"/></proof>
   </goal>
  </transf>
  </goal>
 </transf>
 </goal>
</theory>
<theory name="FoldLeft" proved="true">
 <goal name="fold_left_append" proved="true">
 <transf name="induction_ty_lex" proved="true" >
  <goal name="fold_left_append.0" proved="true">
  <proof prover="6"><result status="valid" time="0.060000" steps="7843"/></proof>
  </goal>
 </transf>
 </goal>
</theory>
<theory name="FoldRight" proved="true">
 <goal name="fold_right_append" proved="true">
 <transf name="induction_ty_lex" proved="true" >
  <goal name="fold_right_append.0" proved="true">
  <proof prover="6"><result status="valid" time="0.060000" steps="7403"/></proof>
  </goal>
 </transf>
 </goal>
</theory>
</file>
</why3session>
