<?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="2">

<source>SYN551+2.out</source>

<heading><![CDATA[
FOF-Prover9 (32) version November-2006, November 2006.
Process 3807 was started by mccune on cleo.thornwood,
Wed Nov 22 11:23:53 2006
The command was "/home/mccune/bin/fof-prover9 -f SYN551+2.in".
]]></heading>

<proof number="1" length="16" max_count="14">

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

  <clause id="1" type="assumption">
    <literal><![CDATA[
      f(g(A)) = A
    ]]></literal>
    <literal><![CDATA[
      A != c1
    ]]></literal>
    <justification jstring="[assumption].">
      <j1 rule="assumption"/>
    </justification>
  </clause>

  <clause id="2">
    <literal><![CDATA[
      f(g(A)) = A
    ]]></literal>
    <literal><![CDATA[
      c1 != A
    ]]></literal>
    <justification jstring="[copy(1),flip(b)].">
      <j1 rule="copy" parents="1"/>
      <j2 rule="flip"/>
    </justification>
  </clause>

  <clause id="3" type="assumption">
    <literal><![CDATA[
      A = c1
    ]]></literal>
    <literal><![CDATA[
      f(g(A)) != A
    ]]></literal>
    <justification jstring="[assumption].">
      <j1 rule="assumption"/>
    </justification>
  </clause>

  <clause id="4">
    <literal><![CDATA[
      c1 = A
    ]]></literal>
    <literal><![CDATA[
      f(g(A)) != A
    ]]></literal>
    <justification jstring="[copy(3),flip(a)].">
      <j1 rule="copy" parents="3"/>
      <j2 rule="flip"/>
    </justification>
  </clause>

  <clause id="5" type="assumption">
    <literal><![CDATA[
      g(f(f1(A))) = f1(A)
    ]]></literal>
    <literal><![CDATA[
      g(f(f2(A))) != f2(A)
    ]]></literal>
    <justification jstring="[assumption].">
      <j1 rule="assumption"/>
    </justification>
  </clause>

  <clause id="6" type="assumption">
    <literal><![CDATA[
      g(f(f1(A))) = f1(A)
    ]]></literal>
    <literal><![CDATA[
      f2(A) = A
    ]]></literal>
    <justification jstring="[assumption].">
      <j1 rule="assumption"/>
    </justification>
  </clause>

  <clause id="7" type="assumption">
    <literal><![CDATA[
      f1(A) != A
    ]]></literal>
    <literal><![CDATA[
      g(f(f2(A))) != f2(A)
    ]]></literal>
    <justification jstring="[assumption].">
      <j1 rule="assumption"/>
    </justification>
  </clause>

  <clause id="8" type="assumption">
    <literal><![CDATA[
      f1(A) != A
    ]]></literal>
    <literal><![CDATA[
      f2(A) = A
    ]]></literal>
    <justification jstring="[assumption].">
      <j1 rule="assumption"/>
    </justification>
  </clause>

  <clause id="9">
    <literal><![CDATA[
      f(g(c1)) = c1
    ]]></literal>
    <justification jstring="[xx_res(2,b)].">
      <j1 rule="xx_res" parents="2"/>
    </justification>
  </clause>

  <clause id="11">
    <literal><![CDATA[
      g(f(f1(A))) = f1(A)
    ]]></literal>
    <literal><![CDATA[
      f2(A) != g(f(A))
    ]]></literal>
    <justification jstring="[para(6(b,1),5(b,1,1,1)),flip(c),merge(b)].">
      <j1 rule="para" parents="6 5"/>
      <j2 rule="flip"/>
      <j2 rule="merge"/>
    </justification>
  </clause>

  <clause id="13">
    <literal><![CDATA[
      g(f(f1(A))) = f1(A)
    ]]></literal>
    <literal><![CDATA[
      g(f(A)) != A
    ]]></literal>
    <justification jstring="[para(6(b,1),11(b,1)),flip(c),merge(b)].">
      <j1 rule="para" parents="6 11"/>
      <j2 rule="flip"/>
      <j2 rule="merge"/>
    </justification>
  </clause>

  <clause id="15">
    <literal><![CDATA[
      g(f(f1(g(c1)))) = f1(g(c1))
    ]]></literal>
    <justification jstring="[para(9(a,1),13(b,1,1)),xx(b)].">
      <j1 rule="para" parents="9 13"/>
      <j2 rule="xx"/>
    </justification>
  </clause>

  <clause id="17">
    <literal><![CDATA[
      f(f1(g(c1))) = c1
    ]]></literal>
    <justification jstring="[para(15(a,1),4(b,1,1)),flip(a),xx(b)].">
      <j1 rule="para" parents="15 4"/>
      <j2 rule="flip"/>
      <j2 rule="xx"/>
    </justification>
  </clause>

  <clause id="18">
    <literal><![CDATA[
      f1(g(c1)) = g(c1)
    ]]></literal>
    <justification jstring="[back_rewrite(15),rewrite(17(4)),flip(a)].">
      <j1 rule="back_rewrite" parents="15"/>
      <j2 rule="rewrite" parents="17"/>
      <j2 rule="flip"/>
    </justification>
  </clause>

  <clause id="22">
    <literal><![CDATA[
      f2(g(c1)) = g(c1)
    ]]></literal>
    <justification jstring="[resolve(18,a,8,a)].">
      <j1 rule="resolve" parents="18 8"/>
    </justification>
  </clause>

  <clause id="23">
    <literal><![CDATA[
      $F
    ]]></literal>
    <justification jstring="[ur(7,a,18,a),rewrite(22(3),9(3),22(5)),xx(a)].">
      <j1 rule="ur" parents="7 18"/>
      <j2 rule="rewrite" parents="22 9 22"/>
      <j2 rule="xx"/>
    </justification>
  </clause>

</proof>

<proof number="2" length="16" max_count="14">

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

  <clause id="1" type="assumption">
    <literal><![CDATA[
      f(g(f1(A))) = f1(A)
    ]]></literal>
    <literal><![CDATA[
      f(g(f2(A))) != f2(A)
    ]]></literal>
    <justification jstring="[assumption].">
      <j1 rule="assumption"/>
    </justification>
  </clause>

  <clause id="2" type="assumption">
    <literal><![CDATA[
      f(g(f1(A))) = f1(A)
    ]]></literal>
    <literal><![CDATA[
      f2(A) = A
    ]]></literal>
    <justification jstring="[assumption].">
      <j1 rule="assumption"/>
    </justification>
  </clause>

  <clause id="3" type="assumption">
    <literal><![CDATA[
      f1(A) != A
    ]]></literal>
    <literal><![CDATA[
      f(g(f2(A))) != f2(A)
    ]]></literal>
    <justification jstring="[assumption].">
      <j1 rule="assumption"/>
    </justification>
  </clause>

  <clause id="4" type="assumption">
    <literal><![CDATA[
      f1(A) != A
    ]]></literal>
    <literal><![CDATA[
      f2(A) = A
    ]]></literal>
    <justification jstring="[assumption].">
      <j1 rule="assumption"/>
    </justification>
  </clause>

  <clause id="5" type="assumption">
    <literal><![CDATA[
      g(f(A)) = A
    ]]></literal>
    <literal><![CDATA[
      A != c1
    ]]></literal>
    <justification jstring="[assumption].">
      <j1 rule="assumption"/>
    </justification>
  </clause>

  <clause id="6">
    <literal><![CDATA[
      g(f(A)) = A
    ]]></literal>
    <literal><![CDATA[
      c1 != A
    ]]></literal>
    <justification jstring="[copy(5),flip(b)].">
      <j1 rule="copy" parents="5"/>
      <j2 rule="flip"/>
    </justification>
  </clause>

  <clause id="7" type="assumption">
    <literal><![CDATA[
      A = c1
    ]]></literal>
    <literal><![CDATA[
      g(f(A)) != A
    ]]></literal>
    <justification jstring="[assumption].">
      <j1 rule="assumption"/>
    </justification>
  </clause>

  <clause id="8">
    <literal><![CDATA[
      c1 = A
    ]]></literal>
    <literal><![CDATA[
      g(f(A)) != A
    ]]></literal>
    <justification jstring="[copy(7),flip(a)].">
      <j1 rule="copy" parents="7"/>
      <j2 rule="flip"/>
    </justification>
  </clause>

  <clause id="9">
    <literal><![CDATA[
      f(g(f1(A))) = f1(A)
    ]]></literal>
    <literal><![CDATA[
      f2(A) != f(g(A))
    ]]></literal>
    <justification jstring="[para(2(b,1),1(b,1,1,1)),flip(c),merge(b)].">
      <j1 rule="para" parents="2 1"/>
      <j2 rule="flip"/>
      <j2 rule="merge"/>
    </justification>
  </clause>

  <clause id="12">
    <literal><![CDATA[
      g(f(c1)) = c1
    ]]></literal>
    <justification jstring="[xx_res(6,b)].">
      <j1 rule="xx_res" parents="6"/>
    </justification>
  </clause>

  <clause id="13">
    <literal><![CDATA[
      f(g(f1(A))) = f1(A)
    ]]></literal>
    <literal><![CDATA[
      f(g(A)) != A
    ]]></literal>
    <justification jstring="[para(2(b,1),9(b,1)),flip(c),merge(b)].">
      <j1 rule="para" parents="2 9"/>
      <j2 rule="flip"/>
      <j2 rule="merge"/>
    </justification>
  </clause>

  <clause id="15">
    <literal><![CDATA[
      f(g(f1(f(c1)))) = f1(f(c1))
    ]]></literal>
    <justification jstring="[para(12(a,1),13(b,1,1)),xx(b)].">
      <j1 rule="para" parents="12 13"/>
      <j2 rule="xx"/>
    </justification>
  </clause>

  <clause id="17">
    <literal><![CDATA[
      g(f1(f(c1))) = c1
    ]]></literal>
    <justification jstring="[para(15(a,1),8(b,1,1)),flip(a),xx(b)].">
      <j1 rule="para" parents="15 8"/>
      <j2 rule="flip"/>
      <j2 rule="xx"/>
    </justification>
  </clause>

  <clause id="18">
    <literal><![CDATA[
      f1(f(c1)) = f(c1)
    ]]></literal>
    <justification jstring="[back_rewrite(15),rewrite(17(4)),flip(a)].">
      <j1 rule="back_rewrite" parents="15"/>
      <j2 rule="rewrite" parents="17"/>
      <j2 rule="flip"/>
    </justification>
  </clause>

  <clause id="19">
    <literal><![CDATA[
      f2(f(c1)) = f(c1)
    ]]></literal>
    <justification jstring="[resolve(18,a,4,a)].">
      <j1 rule="resolve" parents="18 4"/>
    </justification>
  </clause>

  <clause id="20">
    <literal><![CDATA[
      $F
    ]]></literal>
    <justification jstring="[ur(3,a,18,a),rewrite(19(3),12(3),19(5)),xx(a)].">
      <j1 rule="ur" parents="3 18"/>
      <j2 rule="rewrite" parents="19 12 19"/>
      <j2 rule="xx"/>
    </justification>
  </clause>

</proof>

</proofs>
