<?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>4.4.out</source>

<heading><![CDATA[
Prover9 (64) version Aug-2007, Aug 2007.
Process 26254 was started by veroff on titan,
Sat Jan 19 14:18:50 2008
The command was "prover9 -f 4.4.in".
]]></heading>

<proof number="1" length="79" max_count="21">

<comments><![CDATA[
% Proof 1 at 0.13 (+ 0.01) seconds: "(Lemma 4.4, 2 parts)".
% Length of proof is 79.
% Level of proof is 18.
% Maximum clause weight is 21.
% Given clauses 97.
]]></comments>

  <clause id="3" type="assumption">
    <literal><![CDATA[
      x v y = y v x
    ]]></literal>
    <attribute><![CDATA[
      label("(D3)")
    ]]></attribute>
    <justification jstring="[assumption].">
      <j1 rule="assumption"/>
    </justification>
  </clause>

  <clause id="4" type="assumption">
    <literal><![CDATA[
      x ^ y = y ^ x
    ]]></literal>
    <attribute><![CDATA[
      label("(D4)")
    ]]></attribute>
    <justification jstring="[assumption].">
      <j1 rule="assumption"/>
    </justification>
  </clause>

  <clause id="5" type="assumption">
    <literal><![CDATA[
      x v (x ^ y) = x
    ]]></literal>
    <attribute><![CDATA[
      label("(D5)")
    ]]></attribute>
    <justification jstring="[assumption].">
      <j1 rule="assumption"/>
    </justification>
  </clause>

  <clause id="8" type="assumption">
    <literal><![CDATA[
      1 => x = x
    ]]></literal>
    <attribute><![CDATA[
      label("(BCK2)")
    ]]></attribute>
    <justification jstring="[assumption].">
      <j1 rule="assumption"/>
    </justification>
  </clause>

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

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

  <clause id="16" type="assumption">
    <literal><![CDATA[
      x ^ ((x => y) => y) = x
    ]]></literal>
    <attribute><![CDATA[
      label("(3.7)")
    ]]></attribute>
    <justification jstring="[assumption].">
      <j1 rule="assumption"/>
    </justification>
  </clause>

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

  <clause id="20">
    <literal><![CDATA[
      x => (x => y) = x -> y
    ]]></literal>
    <justification jstring="[copy(19),flip(a)].">
      <j1 rule="copy" parents="19"/>
      <j2 rule="flip"/>
    </justification>
  </clause>

  <clause id="21" type="assumption">
    <literal><![CDATA[
      ~ x = x => 0
    ]]></literal>
    <attribute><![CDATA[
      label("(~ def)")
    ]]></attribute>
    <justification jstring="[assumption].">
      <j1 rule="assumption"/>
    </justification>
  </clause>

  <clause id="22">
    <literal><![CDATA[
      x => 0 = ~ x
    ]]></literal>
    <justification jstring="[copy(21),flip(a)].">
      <j1 rule="copy" parents="21"/>
      <j2 rule="flip"/>
    </justification>
  </clause>

  <clause id="25" type="assumption">
    <literal><![CDATA[
      x => (x => (x => y)) = x => (x => y)
    ]]></literal>
    <attribute><![CDATA[
      label("(E_2)")
    ]]></attribute>
    <justification jstring="[assumption].">
      <j1 rule="assumption"/>
    </justification>
  </clause>

  <clause id="28" type="assumption">
    <literal><![CDATA[
      ~ ~ x = x
    ]]></literal>
    <attribute><![CDATA[
      label("(DN)")
    ]]></attribute>
    <justification jstring="[assumption].">
      <j1 rule="assumption"/>
    </justification>
  </clause>

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

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

  <clause id="36" type="assumption">
    <literal><![CDATA[
      (x => y) ^ (x => z) = x => (y ^ z)
    ]]></literal>
    <attribute><![CDATA[
      label("(4.2)")
    ]]></attribute>
    <justification jstring="[assumption].">
      <j1 rule="assumption"/>
    </justification>
  </clause>

  <clause id="38" type="assumption">
    <literal><![CDATA[
      (x => y) ^ (z => y) = (x v z) => y
    ]]></literal>
    <attribute><![CDATA[
      label("(4.4)")
    ]]></attribute>
    <justification jstring="[assumption].">
      <j1 rule="assumption"/>
    </justification>
  </clause>

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

  <clause id="40" type="assumption">
    <literal><![CDATA[
      (x => y) ^ y = y
    ]]></literal>
    <attribute><![CDATA[
      label("(3.13)")
    ]]></attribute>
    <justification jstring="[assumption].">
      <j1 rule="assumption"/>
    </justification>
  </clause>

  <clause id="41" type="assumption">
    <literal><![CDATA[
      (x v y) => y = x => y
    ]]></literal>
    <attribute><![CDATA[
      label("(4.6)")
    ]]></attribute>
    <justification jstring="[assumption].">
      <j1 rule="assumption"/>
    </justification>
  </clause>

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

  <clause id="44" type="assumption">
    <literal><![CDATA[
      A -> ((B v A) -> C) != A -> C
    ]]></literal>
    <literal><![CDATA[
      A -> (~ A v B) != A -> B
    ]]></literal>
    <attribute><![CDATA[
      answer("(Lemma 4.4, 2 parts)")
    ]]></attribute>
    <justification jstring="[assumption].">
      <j1 rule="assumption"/>
    </justification>
  </clause>

  <clause id="63">
    <literal><![CDATA[
      (x ^ y) v x = x
    ]]></literal>
    <justification jstring="[para(5(a,1),3(a,1)),flip(a)].">
      <j1 rule="para" parents="5 3"/>
      <j2 rule="flip"/>
    </justification>
  </clause>

  <clause id="146">
    <literal><![CDATA[
      x => (y => 0) = ~ (x * y)
    ]]></literal>
    <justification jstring="[para(22(a,1),14(a,1)),flip(a)].">
      <j1 rule="para" parents="22 14"/>
      <j2 rule="flip"/>
    </justification>
  </clause>

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

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

  <clause id="428">
    <literal><![CDATA[
      x => ((x => y) ^ z) = (x -> y) ^ (x => z)
    ]]></literal>
    <justification jstring="[para(20(a,1),36(a,1,1)),flip(a)].">
      <j1 rule="para" parents="20 36"/>
      <j2 rule="flip"/>
    </justification>
  </clause>

  <clause id="504">
    <literal><![CDATA[
      ~ x ^ (y => 0) = (x v y) => 0
    ]]></literal>
    <justification jstring="[para(22(a,1),38(a,1,1))].">
      <j1 rule="para" parents="22 38"/>
    </justification>
  </clause>

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

  <clause id="576">
    <literal><![CDATA[
      x ^ (y => x) = x
    ]]></literal>
    <justification jstring="[para(40(a,1),4(a,1)),flip(a)].">
      <j1 rule="para" parents="40 4"/>
      <j2 rule="flip"/>
    </justification>
  </clause>

  <clause id="643">
    <literal><![CDATA[
      x => (y -> (x => z)) = y -> (x -> z)
    ]]></literal>
    <justification jstring="[para(20(a,1),42(a,1,2)),flip(a)].">
      <j1 rule="para" parents="20 42"/>
      <j2 rule="flip"/>
    </justification>
  </clause>

  <clause id="689">
    <literal><![CDATA[
      x v (y => x) = y => x
    ]]></literal>
    <justification jstring="[para(40(a,1),63(a,1,1))].">
      <j1 rule="para" parents="40 63"/>
    </justification>
  </clause>

  <clause id="760">
    <literal><![CDATA[
      ~ (x * y) = x => ~ y
    ]]></literal>
    <justification jstring="[para(22(a,1),146(a,1,2)),flip(a)].">
      <j1 rule="para" parents="22 146"/>
      <j2 rule="flip"/>
    </justification>
  </clause>

  <clause id="801">
    <literal><![CDATA[
      ~ (x => ~ y) = x * y
    ]]></literal>
    <justification jstring="[para(760(a,1),28(a,1,1))].">
      <j1 rule="para" parents="760 28"/>
    </justification>
  </clause>

  <clause id="821">
    <literal><![CDATA[
      (x v ~ y) * y = ~ (x => ~ y)
    ]]></literal>
    <justification jstring="[para(41(a,1),801(a,1,1)),flip(a)].">
      <j1 rule="para" parents="41 801"/>
      <j2 rule="flip"/>
    </justification>
  </clause>

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

  <clause id="891">
    <literal><![CDATA[
      x => (y => (x -> z)) = y => (x -> z)
    ]]></literal>
    <justification jstring="[para(841(a,1),34(a,1,2)),flip(a)].">
      <j1 rule="para" parents="841 34"/>
      <j2 rule="flip"/>
    </justification>
  </clause>

  <clause id="895">
    <literal><![CDATA[
      (x -> y) ^ (z => (x -> y)) = (x v z) => (x -> y)
    ]]></literal>
    <justification jstring="[para(841(a,1),38(a,1,1))].">
      <j1 rule="para" parents="841 38"/>
    </justification>
  </clause>

  <clause id="918">
    <literal><![CDATA[
      (x v y) => 0 = ~ x ^ ~ y
    ]]></literal>
    <justification jstring="[para(22(a,1),504(a,1,2)),flip(a)].">
      <j1 rule="para" parents="22 504"/>
      <j2 rule="flip"/>
    </justification>
  </clause>

  <clause id="946">
    <literal><![CDATA[
      ~ x ^ ~ y = ~ (x v y)
    ]]></literal>
    <justification jstring="[para(918(a,1),22(a,1))].">
      <j1 rule="para" parents="918 22"/>
    </justification>
  </clause>

  <clause id="996">
    <literal><![CDATA[
      ~ (~ x v y) = x ^ ~ y
    ]]></literal>
    <justification jstring="[para(28(a,1),946(a,1,1)),flip(a)].">
      <j1 rule="para" parents="28 946"/>
      <j2 rule="flip"/>
    </justification>
  </clause>

  <clause id="1009">
    <literal><![CDATA[
      ~ (x v ~ y) = y ^ ~ x
    ]]></literal>
    <justification jstring="[para(3(a,1),996(a,1,1))].">
      <j1 rule="para" parents="3 996"/>
    </justification>
  </clause>

  <clause id="1044">
    <literal><![CDATA[
      ~ (x v (y => ~ z)) = (y * z) ^ ~ x
    ]]></literal>
    <justification jstring="[para(760(a,1),1009(a,1,1,2))].">
      <j1 rule="para" parents="760 1009"/>
    </justification>
  </clause>

  <clause id="1091">
    <literal><![CDATA[
      (x v ~ y) * y = x * y
    ]]></literal>
    <justification jstring="[para(801(a,1),821(a,2))].">
      <j1 rule="para" parents="801 821"/>
    </justification>
  </clause>

  <clause id="1100">
    <literal><![CDATA[
      x * (y v ~ x) = y * x
    ]]></literal>
    <justification jstring="[para(1091(a,1),12(a,1)),flip(a)].">
      <j1 rule="para" parents="1091 12"/>
      <j2 rule="flip"/>
    </justification>
  </clause>

  <clause id="1190">
    <literal><![CDATA[
      x => ((y => z) => ((x => y) => z)) = 1
    ]]></literal>
    <justification jstring="[para(376(a,1),34(a,1)),flip(a)].">
      <j1 rule="para" parents="376 34"/>
      <j2 rule="flip"/>
    </justification>
  </clause>

  <clause id="1255">
    <literal><![CDATA[
      x => ((y * (x => z)) => (z * y)) = 1
    ]]></literal>
    <justification jstring="[para(540(a,1),34(a,1)),flip(a)].">
      <j1 rule="para" parents="540 34"/>
      <j2 rule="flip"/>
    </justification>
  </clause>

  <clause id="1327">
    <literal><![CDATA[
      x => (x => (y -> z)) = y -> (x -> z)
    ]]></literal>
    <justification jstring="[para(42(a,1),643(a,1,2))].">
      <j1 rule="para" parents="42 643"/>
    </justification>
  </clause>

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

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

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

  <clause id="1625">
    <literal><![CDATA[
      x -> ((x => y) => (y * x)) = 1
    ]]></literal>
    <justification jstring="[para(1490(a,1),20(a,1)),flip(a)].">
      <j1 rule="para" parents="1490 20"/>
      <j2 rule="flip"/>
    </justification>
  </clause>

  <clause id="1687">
    <literal><![CDATA[
      x -> ((x => y) => (x * y)) = 1
    ]]></literal>
    <justification jstring="[para(12(a,1),1625(a,1,2,2))].">
      <j1 rule="para" parents="12 1625"/>
    </justification>
  </clause>

  <clause id="1745">
    <literal><![CDATA[
      (x => y) => (x -> (x * y)) = 1
    ]]></literal>
    <justification jstring="[para(1687(a,1),42(a,1)),flip(a)].">
      <j1 rule="para" parents="1687 42"/>
      <j2 rule="flip"/>
    </justification>
  </clause>

  <clause id="1857">
    <literal><![CDATA[
      (x * y) ^ ~ ~ y = ~ (x => ~ y)
    ]]></literal>
    <justification jstring="[para(689(a,1),1044(a,1,1)),flip(a)].">
      <j1 rule="para" parents="689 1044"/>
      <j2 rule="flip"/>
    </justification>
  </clause>

  <clause id="1913">
    <literal><![CDATA[
      (x * y) ^ ~ ~ y = x * y
    ]]></literal>
    <justification jstring="[para(801(a,1),1857(a,2))].">
      <j1 rule="para" parents="801 1857"/>
    </justification>
  </clause>

  <clause id="1940">
    <literal><![CDATA[
      (x * y) ^ y = x * y
    ]]></literal>
    <justification jstring="[para(28(a,1),1913(a,1,2))].">
      <j1 rule="para" parents="28 1913"/>
    </justification>
  </clause>

  <clause id="1980">
    <literal><![CDATA[
      x => (y ^ (x => z)) = (x -> z) ^ (x => y)
    ]]></literal>
    <justification jstring="[para(4(a,1),428(a,1,2))].">
      <j1 rule="para" parents="4 428"/>
    </justification>
  </clause>

  <clause id="2143">
    <literal><![CDATA[
      x => ((x -> y) => (((x => y) => z) => z)) = 1
    ]]></literal>
    <justification jstring="[para(34(a,1),1406(a,1,2))].">
      <j1 rule="para" parents="34 1406"/>
    </justification>
  </clause>

  <clause id="2230">
    <literal><![CDATA[
      x => ((x => y) ^ (x => z)) = (x -> z) ^ (x -> y)
    ]]></literal>
    <justification jstring="[para(20(a,1),1980(a,2,2))].">
      <j1 rule="para" parents="20 1980"/>
    </justification>
  </clause>

  <clause id="2432">
    <literal><![CDATA[
      x => ((x -> y) => (1 => (x -> (x * y)))) = 1
    ]]></literal>
    <justification jstring="[para(1745(a,1),2143(a,1,2,2,1))].">
      <j1 rule="para" parents="1745 2143"/>
    </justification>
  </clause>

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

  <clause id="2544">
    <literal><![CDATA[
      (x -> y) => (x -> (x * y)) = 1
    ]]></literal>
    <justification jstring="[para(2450(a,1),891(a,1)),flip(a)].">
      <j1 rule="para" parents="2450 891"/>
      <j2 rule="flip"/>
    </justification>
  </clause>

  <clause id="2569">
    <literal><![CDATA[
      (x -> y) ^ (1 => (x -> (x * y))) = x -> y
    ]]></literal>
    <justification jstring="[para(2544(a,1),16(a,1,2,1))].">
      <j1 rule="para" parents="2544 16"/>
    </justification>
  </clause>

  <clause id="2619">
    <literal><![CDATA[
      (x -> y) ^ (x -> (x * y)) = x -> y
    ]]></literal>
    <justification jstring="[para(8(a,1),2569(a,1,2))].">
      <j1 rule="para" parents="8 2569"/>
    </justification>
  </clause>

  <clause id="2691">
    <literal><![CDATA[
      (x v y) => (x -> z) = x -> z
    ]]></literal>
    <justification jstring="[para(895(a,1),576(a,1))].">
      <j1 rule="para" parents="895 576"/>
    </justification>
  </clause>

  <clause id="2718">
    <literal><![CDATA[
      (x v y) -> (x -> z) = (x v y) => (x -> z)
    ]]></literal>
    <justification jstring="[para(2691(a,1),20(a,1,2)),flip(a)].">
      <j1 rule="para" parents="2691 20"/>
      <j2 rule="flip"/>
    </justification>
  </clause>

  <clause id="2816">
    <literal><![CDATA[
      (x v y) -> (x -> z) = x -> z
    ]]></literal>
    <justification jstring="[para(2691(a,1),2718(a,2))].">
      <j1 rule="para" parents="2691 2718"/>
    </justification>
  </clause>

  <clause id="2820">
    <literal><![CDATA[
      (x v y) -> (y -> z) = y -> z
    ]]></literal>
    <justification jstring="[para(3(a,1),2816(a,1,1))].">
      <j1 rule="para" parents="3 2816"/>
    </justification>
  </clause>

  <clause id="2889">
    <literal><![CDATA[
      x -> ((y v x) -> z) = x -> z
    ]]></literal>
    <attribute><![CDATA[
      label("(4.9)")
    ]]></attribute>
    <justification jstring="[para(2820(a,1),1556(a,1)),flip(a)].">
      <j1 rule="para" parents="2820 1556"/>
      <j2 rule="flip"/>
    </justification>
  </clause>

  <clause id="3024">
    <literal><![CDATA[
      x => (x => (y ^ z)) = (x -> z) ^ (x -> y)
    ]]></literal>
    <justification jstring="[para(36(a,1),2230(a,1,2))].">
      <j1 rule="para" parents="36 2230"/>
    </justification>
  </clause>

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

  <clause id="3271">
    <literal><![CDATA[
      x -> ((x * y) ^ y) = x -> y
    ]]></literal>
    <justification jstring="[para(3145(a,1),2619(a,1))].">
      <j1 rule="para" parents="3145 2619"/>
    </justification>
  </clause>

  <clause id="3308">
    <literal><![CDATA[
      x -> (x * y) = x -> y
    ]]></literal>
    <justification jstring="[para(1940(a,1),3271(a,1,2))].">
      <j1 rule="para" parents="1940 3271"/>
    </justification>
  </clause>

  <clause id="3356">
    <literal><![CDATA[
      x -> (y v ~ x) = x -> (y * x)
    ]]></literal>
    <justification jstring="[para(1100(a,1),3308(a,1,2)),flip(a)].">
      <j1 rule="para" parents="1100 3308"/>
      <j2 rule="flip"/>
    </justification>
  </clause>

  <clause id="3407">
    <literal><![CDATA[
      x -> (y v ~ x) = x -> (x * y)
    ]]></literal>
    <justification jstring="[para(12(a,1),3356(a,2,2))].">
      <j1 rule="para" parents="12 3356"/>
    </justification>
  </clause>

  <clause id="3522">
    <literal><![CDATA[
      x -> (y v ~ x) = x -> y
    ]]></literal>
    <justification jstring="[para(3308(a,1),3407(a,2))].">
      <j1 rule="para" parents="3308 3407"/>
    </justification>
  </clause>

  <clause id="3524">
    <literal><![CDATA[
      x -> (~ x v y) = x -> y
    ]]></literal>
    <attribute><![CDATA[
      label("(4.10)")
    ]]></attribute>
    <justification jstring="[para(3(a,1),3522(a,1,2))].">
      <j1 rule="para" parents="3 3522"/>
    </justification>
  </clause>

  <clause id="3589">
    <literal><![CDATA[
      $F
    ]]></literal>
    <attribute><![CDATA[
      answer("(Lemma 4.4, 2 parts)")
    ]]></attribute>
    <justification jstring="[hyper(44,a,2889,a,b,3524,a)].">
      <j1 rule="hyper" parents="44 2889 3524"/>
    </justification>
  </clause>

</proof>

</proofs>
