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

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

<proof number="1" length="76" max_count="25">

<comments><![CDATA[
% Proof 1 at 0.17 (+ 0.00) seconds: "(N4)".
% Length of proof is 76.
% Level of proof is 22.
% Maximum clause weight is 25.
% Given clauses 97.
]]></comments>

  <clause id="1" type="goal">
    <literal><![CDATA[
      x ^ (~ x v y) = x ^ (x -> y)
    ]]></literal>
    <attribute><![CDATA[
      label("(N4)")
    ]]></attribute>
    <attribute><![CDATA[
      label(non_clause)
    ]]></attribute>
    <attribute><![CDATA[
      label(goal)
    ]]></attribute>
    <justification jstring="[goal].">
      <j1 rule="goal"/>
    </justification>
  </clause>

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

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

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

  <clause id="15" 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="17" 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="20" 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="21">
    <literal><![CDATA[
      x => (x => y) = x -> y
    ]]></literal>
    <justification jstring="[copy(20),flip(a)].">
      <j1 rule="copy" parents="20"/>
      <j2 rule="flip"/>
    </justification>
  </clause>

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

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

  <clause id="29" 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) ^ (~ y -> ~ x) = x => y
    ]]></literal>
    <attribute><![CDATA[
      label("(N)")
    ]]></attribute>
    <justification jstring="[assumption].">
      <j1 rule="assumption"/>
    </justification>
  </clause>

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

  <clause id="35" 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="38" type="assumption">
    <literal><![CDATA[
      (x * (x => y)) v y = y
    ]]></literal>
    <attribute><![CDATA[
      label("(4.3)")
    ]]></attribute>
    <justification jstring="[assumption].">
      <j1 rule="assumption"/>
    </justification>
  </clause>

  <clause id="39" 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="41" 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="43" 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="45" type="assumption">
    <literal><![CDATA[
      x -> ((y v x) -> z) = x -> z
    ]]></literal>
    <attribute><![CDATA[
      label("(4.9)")
    ]]></attribute>
    <justification jstring="[assumption].">
      <j1 rule="assumption"/>
    </justification>
  </clause>

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

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

  <clause id="51" type="deny">
    <literal><![CDATA[
      c1 ^ (~ c1 v c2) != c1 ^ (c1 -> c2)
    ]]></literal>
    <attribute><![CDATA[
      label("(N4)")
    ]]></attribute>
    <attribute><![CDATA[
      answer("(N4)")
    ]]></attribute>
    <justification jstring="[deny(1)].">
      <j1 rule="deny" parents="1"/>
    </justification>
  </clause>

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

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

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

  <clause id="250">
    <literal><![CDATA[
      ~ x => 0 = x
    ]]></literal>
    <justification jstring="[para(29(a,1),23(a,2))].">
      <j1 rule="para" parents="29 23"/>
    </justification>
  </clause>

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

  <clause id="372">
    <literal><![CDATA[
      x => (y => 0) = y => ~ x
    ]]></literal>
    <justification jstring="[para(23(a,1),35(a,1,2)),flip(a)].">
      <j1 rule="para" parents="23 35"/>
      <j2 rule="flip"/>
    </justification>
  </clause>

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  <clause id="1319">
    <literal><![CDATA[
      ~ x -> (~ y -> z) = ~ (x v y) -> z
    ]]></literal>
    <justification jstring="[para(1265(a,1),50(a,1,1)),flip(a)].">
      <j1 rule="para" parents="1265 50"/>
      <j2 rule="flip"/>
    </justification>
  </clause>

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

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

  <clause id="1420">
    <literal><![CDATA[
      x -> ~ (x ^ y) = x -> ~ y
    ]]></literal>
    <justification jstring="[para(1368(a,1),46(a,1,2))].">
      <j1 rule="para" parents="1368 46"/>
    </justification>
  </clause>

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

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

  <clause id="1744">
    <literal><![CDATA[
      ~ (~ x v y) -> z = x -> (~ y -> z)
    ]]></literal>
    <justification jstring="[para(29(a,1),1319(a,1,1)),flip(a)].">
      <j1 rule="para" parents="29 1319"/>
      <j2 rule="flip"/>
    </justification>
  </clause>

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

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

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

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

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

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

  <clause id="2498">
    <literal><![CDATA[
      x -> ((x * ~ y) -> z) = ~ (x -> y) -> z
    ]]></literal>
    <justification jstring="[para(1196(a,1),2399(a,1,1)),flip(a)].">
      <j1 rule="para" parents="1196 2399"/>
      <j2 rule="flip"/>
    </justification>
  </clause>

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

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

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

  <clause id="2865">
    <literal><![CDATA[
      (x -> (y -> z)) ^ (~ (z v ~ y) -> ~ (x ^ y)) = (x ^ y) => (z v ~ y)
    ]]></literal>
    <justification jstring="[para(692(a,1),768(a,1,1,2))].">
      <j1 rule="para" parents="692 768"/>
    </justification>
  </clause>

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

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

  <clause id="3348">
    <literal><![CDATA[
      (x -> (y -> z)) ^ (y -> (~ z -> ~ (x ^ y))) = (x ^ y) => (z v ~ y)
    ]]></literal>
    <justification jstring="[para(1796(a,1),2865(a,1,2))].">
      <j1 rule="para" parents="1796 2865"/>
    </justification>
  </clause>

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

  <clause id="3517">
    <literal><![CDATA[
      (x ^ y) ^ ((x => (y -> z)) => (z v ~ y)) = x ^ y
    ]]></literal>
    <justification jstring="[para(3496(a,1),17(a,1,2,1))].">
      <j1 rule="para" parents="3496 17"/>
    </justification>
  </clause>

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

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

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

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

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

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

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

  <clause id="4065">
    <literal><![CDATA[
      $F
    ]]></literal>
    <attribute><![CDATA[
      answer("(N4)")
    ]]></attribute>
    <justification jstring="[resolve(4064,a,51,a)].">
      <j1 rule="resolve" parents="4064 51"/>
    </justification>
  </clause>

</proof>

</proofs>
