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

<heading><![CDATA[
Prover9 (32) version April-2007, April 2007.
Process 27052 was started by mccune on cleo,
Fri Apr 13 09:19:46 2007
The command was "/home/mccune/bin/prover9 -f head.in bcs.in".
]]></heading>

<proof number="1" length="39" max_count="33">

<comments><![CDATA[
% Proof 1 at 0.18 (+ 0.00) seconds.
% Length of proof is 39.
% Level of proof is 14.
% Maximum clause weight is 20.
% Given clauses 164.
]]></comments>

  <clause id="2" type="assumption">
    <literal><![CDATA[
      (all x all y all z (B(x,y,z) <-> (x ^ y) v (y ^ z) = y & (x v y) ^ (y v z) = y))
    ]]></literal>
    <attribute><![CDATA[
      label(non_clause)
    ]]></attribute>
    <justification jstring="[assumption].">
      <j1 rule="assumption"/>
    </justification>
  </clause>

  <clause id="4" type="assumption">
    <literal><![CDATA[
      (all x all y all z (CS(x,y,z) <-> (x v y) ^ (y v z) = y & (x v z) ^ y = y))
    ]]></literal>
    <attribute><![CDATA[
      label(non_clause)
    ]]></attribute>
    <justification jstring="[assumption].">
      <j1 rule="assumption"/>
    </justification>
  </clause>

  <clause id="7" type="goal">
    <literal><![CDATA[
      (all a all x all b (B(a,x,b) -> CS(a,x,b)))
    ]]></literal>
    <attribute><![CDATA[
      label(goal)
    ]]></attribute>
    <justification jstring="[goal].">
      <j1 rule="goal"/>
    </justification>
  </clause>

  <clause id="15" type="clausify">
    <literal><![CDATA[
      -B(x,y,z)
    ]]></literal>
    <literal><![CDATA[
      (x ^ y) v (y ^ z) = y
    ]]></literal>
    <justification jstring="[clausify(2)].">
      <j1 rule="clausify" parents="2"/>
    </justification>
  </clause>

  <clause id="16" type="clausify">
    <literal><![CDATA[
      -B(x,y,z)
    ]]></literal>
    <literal><![CDATA[
      (x v y) ^ (y v z) = y
    ]]></literal>
    <justification jstring="[clausify(2)].">
      <j1 rule="clausify" parents="2"/>
    </justification>
  </clause>

  <clause id="17" type="deny">
    <literal><![CDATA[
      B(c1,c2,c3)
    ]]></literal>
    <justification jstring="[deny(7)].">
      <j1 rule="deny" parents="7"/>
    </justification>
  </clause>

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

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

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

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

  <clause id="31">
    <literal><![CDATA[
      x ^ (x v y) = x
    ]]></literal>
    <justification jstring="[copy(30),rewrite(26(2))].">
      <j1 rule="copy" parents="30"/>
      <j2 rule="rewrite" parents="26"/>
    </justification>
  </clause>

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

  <clause id="33">
    <literal><![CDATA[
      x v (x ^ y) = x
    ]]></literal>
    <justification jstring="[copy(32),rewrite(27(2))].">
      <j1 rule="copy" parents="32"/>
      <j2 rule="rewrite" parents="27"/>
    </justification>
  </clause>

  <clause id="35" type="clausify">
    <literal><![CDATA[
      -CS(x,y,z)
    ]]></literal>
    <literal><![CDATA[
      (x v z) ^ y = y
    ]]></literal>
    <justification jstring="[clausify(4)].">
      <j1 rule="clausify" parents="4"/>
    </justification>
  </clause>

  <clause id="36" type="clausify">
    <literal><![CDATA[
      CS(x,y,z)
    ]]></literal>
    <literal><![CDATA[
      (x v y) ^ (y v z) != y
    ]]></literal>
    <literal><![CDATA[
      (x v z) ^ y != y
    ]]></literal>
    <justification jstring="[clausify(4)].">
      <j1 rule="clausify" parents="4"/>
    </justification>
  </clause>

  <clause id="37" type="deny">
    <literal><![CDATA[
      -CS(c1,c2,c3)
    ]]></literal>
    <justification jstring="[deny(7)].">
      <j1 rule="deny" parents="7"/>
    </justification>
  </clause>

  <clause id="38">
    <literal><![CDATA[
      (c1 ^ c2) v (c2 ^ c3) = c2
    ]]></literal>
    <justification jstring="[resolve(17,a,15,a)].">
      <j1 rule="resolve" parents="17 15"/>
    </justification>
  </clause>

  <clause id="39">
    <literal><![CDATA[
      (c1 v c2) ^ (c2 v c3) = c2
    ]]></literal>
    <justification jstring="[resolve(17,a,16,a)].">
      <j1 rule="resolve" parents="17 16"/>
    </justification>
  </clause>

  <clause id="43">
    <literal><![CDATA[
      x v (y v z) = y v (x v z)
    ]]></literal>
    <justification jstring="[para(27(a,1),29(a,1,1)),rewrite(29(2))].">
      <j1 rule="para" parents="27 29"/>
      <j2 rule="rewrite" parents="29"/>
    </justification>
  </clause>

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

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

  <clause id="53">
    <literal><![CDATA[
      x v x = x
    ]]></literal>
    <justification jstring="[para(31(a,1),33(a,1,2))].">
      <j1 rule="para" parents="31 33"/>
    </justification>
  </clause>

  <clause id="55">
    <literal><![CDATA[
      CS(x,y,z)
    ]]></literal>
    <literal><![CDATA[
      (x v y) ^ (y v z) != y
    ]]></literal>
    <literal><![CDATA[
      y ^ (x v z) != y
    ]]></literal>
    <justification jstring="[para(26(a,1),36(c,1))].">
      <j1 rule="para" parents="26 36"/>
    </justification>
  </clause>

  <clause id="71">
    <literal><![CDATA[
      CS(c1,c2,c3)
    ]]></literal>
    <literal><![CDATA[
      c2 ^ (c1 v c3) != c2
    ]]></literal>
    <justification jstring="[para(39(a,1),36(b,1)),rewrite(26(12)),xx(b)].">
      <j1 rule="para" parents="39 36"/>
      <j2 rule="rewrite" parents="26"/>
      <j2 rule="xx"/>
    </justification>
  </clause>

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

  <clause id="91">
    <literal><![CDATA[
      x ^ (y v (x v z)) = x
    ]]></literal>
    <justification jstring="[para(43(a,1),31(a,1,2))].">
      <j1 rule="para" parents="43 31"/>
    </justification>
  </clause>

  <clause id="92">
    <literal><![CDATA[
      x v (y v (x ^ z)) = y v x
    ]]></literal>
    <justification jstring="[para(33(a,1),43(a,1,2)),flip(a)].">
      <j1 rule="para" parents="33 43"/>
      <j2 rule="flip"/>
    </justification>
  </clause>

  <clause id="126">
    <literal><![CDATA[
      x v (y v (z ^ x)) = y v x
    ]]></literal>
    <justification jstring="[para(48(a,1),43(a,1,2)),flip(a)].">
      <j1 rule="para" parents="48 43"/>
      <j2 rule="flip"/>
    </justification>
  </clause>

  <clause id="152">
    <literal><![CDATA[
      x v (y v (x v z)) = y v (x v z)
    ]]></literal>
    <justification jstring="[para(82(a,1),29(a,2,2)),rewrite(43(3),29(2))].">
      <j1 rule="para" parents="82 29"/>
      <j2 rule="rewrite" parents="43 29"/>
    </justification>
  </clause>

  <clause id="444">
    <literal><![CDATA[
      CS(x,x v y,y v z)
    ]]></literal>
    <justification jstring="[para(47(a,1),55(c,1)),rewrite(82(5),43(7),29(6),152(7),47(7)),xx(b),xx(c)].">
      <j1 rule="para" parents="47 55"/>
      <j2 rule="rewrite" parents="82 43 29 152 47"/>
      <j2 rule="xx"/>
      <j2 rule="xx"/>
    </justification>
  </clause>

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

  <clause id="485">
    <literal><![CDATA[
      CS(x,x v (y ^ z),z)
    ]]></literal>
    <justification jstring="[para(48(a,1),455(a,3))].">
      <j1 rule="para" parents="48 455"/>
    </justification>
  </clause>

  <clause id="570">
    <literal><![CDATA[
      CS(c1 ^ c2,c2,c3)
    ]]></literal>
    <justification jstring="[para(38(a,1),485(a,2))].">
      <j1 rule="para" parents="38 485"/>
    </justification>
  </clause>

  <clause id="613">
    <literal><![CDATA[
      c2 ^ (c3 v (c1 ^ c2)) = c2
    ]]></literal>
    <justification jstring="[hyper(35,a,570,a),rewrite(27(5),26(7))].">
      <j1 rule="hyper" parents="35 570"/>
      <j2 rule="rewrite" parents="27 26"/>
    </justification>
  </clause>

  <clause id="707">
    <literal><![CDATA[
      c3 v (c1 ^ c2) = c2 v c3
    ]]></literal>
    <justification jstring="[para(613(a,1),48(a,1,2)),rewrite(27(7),126(7),27(3)),flip(a)].">
      <j1 rule="para" parents="613 48"/>
      <j2 rule="rewrite" parents="27 126 27"/>
      <j2 rule="flip"/>
    </justification>
  </clause>

  <clause id="1682">
    <literal><![CDATA[
      c1 v (c2 v c3) = c1 v c3
    ]]></literal>
    <justification jstring="[para(707(a,1),92(a,1,2)),rewrite(27(8))].">
      <j1 rule="para" parents="707 92"/>
      <j2 rule="rewrite" parents="27"/>
    </justification>
  </clause>

  <clause id="1719">
    <literal><![CDATA[
      c2 ^ (c1 v c3) = c2
    ]]></literal>
    <justification jstring="[para(1682(a,1),91(a,1,2))].">
      <j1 rule="para" parents="1682 91"/>
    </justification>
  </clause>

  <clause id="1775">
    <literal><![CDATA[
      CS(c1,c2,c3)
    ]]></literal>
    <justification jstring="[back_rewrite(71),rewrite(1719(9)),xx(b)].">
      <j1 rule="back_rewrite" parents="71"/>
      <j2 rule="rewrite" parents="1719"/>
      <j2 rule="xx"/>
    </justification>
  </clause>

  <clause id="1776">
    <literal><![CDATA[
      $F
    ]]></literal>
    <justification jstring="[resolve(1775,a,37,a)].">
      <j1 rule="resolve" parents="1775 37"/>
    </justification>
  </clause>

</proof>

</proofs>
