<?xml version="1.0" encoding="ISO-8859-1"?>

<!DOCTYPE proofs SYSTEM "proof3.dtd">

<?xml-stylesheet type="text/xsl" href="proof3.xsl"?>

<proofs number_of_proofs="1">

<source>sqrt2.out</source>

<heading><![CDATA[
Prover9 (32) version Aug-2007, Aug 2007.
Process 3626 was started by dwheeler on localhost.localdomain,
Tue Sep 25 00:38:48 2007
The command was "prover9 -t 60 -f sqrt2.in".
]]></heading>

<proof number="1" length="35" max_count="13">

<comments><![CDATA[
% Proof 1 at 0.51 (+ 0.06) seconds.
% Length of proof is 31.
% Level of proof is 10.
% Maximum clause weight is 12.
% Given clauses 132.
]]></comments>

  <clause id="1" type="assumption">
    <literal><![CDATA[
      x * y = x * z -> y = z
    ]]></literal>
    <attribute><![CDATA[
      label(non_clause)
    ]]></attribute>
    <justification jstring="[assumption].">
      <j1 rule="assumption"/>
    </justification>
  </clause>

  <clause id="2" type="assumption">
    <literal><![CDATA[
      divides(x,y) <-> (exists z x * z = y)
    ]]></literal>
    <attribute><![CDATA[
      label(non_clause)
    ]]></attribute>
    <justification jstring="[assumption].">
      <j1 rule="assumption"/>
    </justification>
  </clause>

  <clause id="3" type="assumption">
    <literal><![CDATA[
      divides(2,x * y) -> divides(2,x) | divides(2,y)
    ]]></literal>
    <attribute><![CDATA[
      label(non_clause)
    ]]></attribute>
    <justification jstring="[assumption].">
      <j1 rule="assumption"/>
    </justification>
  </clause>

  <clause id="4" type="assumption">
    <literal><![CDATA[
      x != 1 -> -(divides(x,a) & divides(x,b))
    ]]></literal>
    <attribute><![CDATA[
      label(non_clause)
    ]]></attribute>
    <justification jstring="[assumption].">
      <j1 rule="assumption"/>
    </justification>
  </clause>

  <clause id="5" type="assumption">
    <literal><![CDATA[
      x * (y * z) = (x * y) * z
    ]]></literal>
    <justification jstring="[assumption].">
      <j1 rule="assumption"/>
    </justification>
  </clause>

  <clause id="6">
    <literal><![CDATA[
      (x * y) * z = x * (y * z)
    ]]></literal>
    <justification jstring="[copy(5),flip(a)].">
      <j1 rule="copy" parents="5"/>
      <j2 rule="flip"/>
    </justification>
  </clause>

  <clause id="7" type="assumption">
    <literal><![CDATA[
      x * y = y * x
    ]]></literal>
    <justification jstring="[assumption].">
      <j1 rule="assumption"/>
    </justification>
  </clause>

  <clause id="8" type="clausify">
    <literal><![CDATA[
      x * y != x * z
    ]]></literal>
    <literal><![CDATA[
      y = z
    ]]></literal>
    <justification jstring="[clausify(1)].">
      <j1 rule="clausify" parents="1"/>
    </justification>
  </clause>

  <clause id="9" type="clausify">
    <literal><![CDATA[
      -divides(x,y)
    ]]></literal>
    <literal><![CDATA[
      x * f1(x,y) = y
    ]]></literal>
    <justification jstring="[clausify(2)].">
      <j1 rule="clausify" parents="2"/>
    </justification>
  </clause>

  <clause id="10" type="clausify">
    <literal><![CDATA[
      divides(x,y)
    ]]></literal>
    <literal><![CDATA[
      x * z != y
    ]]></literal>
    <justification jstring="[clausify(2)].">
      <j1 rule="clausify" parents="2"/>
    </justification>
  </clause>

  <clause id="11" type="clausify">
    <literal><![CDATA[
      -divides(2,x * y)
    ]]></literal>
    <literal><![CDATA[
      divides(2,x)
    ]]></literal>
    <literal><![CDATA[
      divides(2,y)
    ]]></literal>
    <justification jstring="[clausify(3)].">
      <j1 rule="clausify" parents="3"/>
    </justification>
  </clause>

  <clause id="12" type="assumption">
    <literal><![CDATA[
      a * a = 2 * (b * b)
    ]]></literal>
    <justification jstring="[assumption].">
      <j1 rule="assumption"/>
    </justification>
  </clause>

  <clause id="13">
    <literal><![CDATA[
      2 * (b * b) = a * a
    ]]></literal>
    <justification jstring="[copy(12),flip(a)].">
      <j1 rule="copy" parents="12"/>
      <j2 rule="flip"/>
    </justification>
  </clause>

  <clause id="14" type="clausify">
    <literal><![CDATA[
      x = 1
    ]]></literal>
    <literal><![CDATA[
      -divides(x,a)
    ]]></literal>
    <literal><![CDATA[
      -divides(x,b)
    ]]></literal>
    <justification jstring="[clausify(4)].">
      <j1 rule="clausify" parents="4"/>
    </justification>
  </clause>

  <clause id="15">
    <literal><![CDATA[
      1 = x
    ]]></literal>
    <literal><![CDATA[
      -divides(x,a)
    ]]></literal>
    <literal><![CDATA[
      -divides(x,b)
    ]]></literal>
    <justification jstring="[copy(14),flip(a)].">
      <j1 rule="copy" parents="14"/>
      <j2 rule="flip"/>
    </justification>
  </clause>

  <clause id="16" type="assumption">
    <literal><![CDATA[
      2 != 1
    ]]></literal>
    <justification jstring="[assumption].">
      <j1 rule="assumption"/>
    </justification>
  </clause>

  <clause id="17">
    <literal><![CDATA[
      1 != 2
    ]]></literal>
    <justification jstring="[copy(16),flip(a)].">
      <j1 rule="copy" parents="16"/>
      <j2 rule="flip"/>
    </justification>
  </clause>

  <clause id="18">
    <literal><![CDATA[
      -divides(2,x * x)
    ]]></literal>
    <literal><![CDATA[
      divides(2,x)
    ]]></literal>
    <justification jstring="[factor(11,b,c)].">
      <j1 rule="factor" parents="11"/>
    </justification>
  </clause>

  <clause id="19">
    <literal><![CDATA[
      (x * y) * z = y * (x * z)
    ]]></literal>
    <justification jstring="[para(7(a,1),6(a,1,1))].">
      <j1 rule="para" parents="7 6"/>
    </justification>
  </clause>

  <clause id="20">
    <literal><![CDATA[
      x * (y * z) = y * (x * z)
    ]]></literal>
    <justification jstring="[para(6(a,1),19(a,1))].">
      <j1 rule="para" parents="6 19"/>
    </justification>
  </clause>

  <clause id="21">
    <literal><![CDATA[
      divides(2,a * a)
    ]]></literal>
    <justification jstring="[resolve(13,a,10,b)].">
      <j1 rule="resolve" parents="13 10"/>
    </justification>
  </clause>

  <clause id="22">
    <literal><![CDATA[
      a * a != 2 * x
    ]]></literal>
    <literal><![CDATA[
      b * b = x
    ]]></literal>
    <justification jstring="[para(13(a,1),8(a,1))].">
      <j1 rule="para" parents="13 8"/>
    </justification>
  </clause>

  <clause id="23">
    <literal><![CDATA[
      divides(2,a)
    ]]></literal>
    <justification jstring="[resolve(21,a,18,a)].">
      <j1 rule="resolve" parents="21 18"/>
    </justification>
  </clause>

  <clause id="24">
    <literal><![CDATA[
      2 * f1(2,a) = a
    ]]></literal>
    <justification jstring="[resolve(23,a,9,a)].">
      <j1 rule="resolve" parents="23 9"/>
    </justification>
  </clause>

  <clause id="25">
    <literal><![CDATA[
      -divides(2,a)
    ]]></literal>
    <literal><![CDATA[
      -divides(2,b)
    ]]></literal>
    <justification jstring="[resolve(15,a,17,a)].">
      <j1 rule="resolve" parents="15 17"/>
    </justification>
  </clause>

  <clause id="26">
    <literal><![CDATA[
      -divides(2,b)
    ]]></literal>
    <justification jstring="[resolve(25,a,23,a)].">
      <j1 rule="resolve" parents="25 23"/>
    </justification>
  </clause>

  <clause id="27">
    <literal><![CDATA[
      -divides(2,b * b)
    ]]></literal>
    <justification jstring="[resolve(18,b,26,a)].">
      <j1 rule="resolve" parents="18 26"/>
    </justification>
  </clause>

  <clause id="28">
    <literal><![CDATA[
      2 * x != b * b
    ]]></literal>
    <justification jstring="[resolve(10,a,27,a)].">
      <j1 rule="resolve" parents="10 27"/>
    </justification>
  </clause>

  <clause id="29">
    <literal><![CDATA[
      b * b != 2 * x
    ]]></literal>
    <justification jstring="[copy(28),flip(a)].">
      <j1 rule="copy" parents="28"/>
      <j2 rule="flip"/>
    </justification>
  </clause>

  <clause id="30">
    <literal><![CDATA[
      b * b != x * (2 * y)
    ]]></literal>
    <justification jstring="[para(20(a,1),29(a,2))].">
      <j1 rule="para" parents="20 29"/>
    </justification>
  </clause>

  <clause id="31">
    <literal><![CDATA[
      a * x = 2 * (f1(2,a) * x)
    ]]></literal>
    <justification jstring="[para(24(a,1),6(a,1,1))].">
      <j1 rule="para" parents="24 6"/>
    </justification>
  </clause>

  <clause id="32">
    <literal><![CDATA[
      2 * (f1(2,a) * x) = a * x
    ]]></literal>
    <justification jstring="[copy(31),flip(a)].">
      <j1 rule="copy" parents="31"/>
      <j2 rule="flip"/>
    </justification>
  </clause>

  <clause id="33">
    <literal><![CDATA[
      b * b != x * a
    ]]></literal>
    <justification jstring="[para(24(a,1),30(a,2,2))].">
      <j1 rule="para" parents="24 30"/>
    </justification>
  </clause>

  <clause id="34">
    <literal><![CDATA[
      a * a != 2 * (x * a)
    ]]></literal>
    <justification jstring="[resolve(22,b,33,a)].">
      <j1 rule="resolve" parents="22 33"/>
    </justification>
  </clause>

  <clause id="35">
    <literal><![CDATA[
      $F
    ]]></literal>
    <justification jstring="[resolve(34,a,32,a(flip))].">
      <j1 rule="resolve" parents="34 32"/>
    </justification>
  </clause>

</proof>

</proofs>
