Intuitionistic Logic: f function and fg injective imply g injective.
( Fun_f∧Inj_fg ⇒ Inj_g )

In this example we interpret a simple equational reasoning. Assume f is a function, and fg is injective, in order to prove that g is injective. Take any a, b, and assume g(a)=g(b), in order to prove a=b. Since f is a function, we have fg(a)=fg(b). Since fg is injective, we conclude a=b, as wished.
Below we interpret this equational reasoning as a recursive winning strategy for Eloise using intuitionistic backtracking.

There is a recursive winning strategy for Eloise. We do not describe it in full. The idea is that we read the proof itself as a strategy. Each time we invoke a particular hypothesis, or the thesis, we backtrack to it. The move by Abelard or Eloise corresponds to the logical rule we apply there.

In[395]:=

SetAbbreviation["Fun_f",   Un["x", Un["y", Impl[" ... nj_g", Un["x", Un["y", Impl["g(x)=g(y)", "x=y"]]]] ;

In[398]:=

F27 = Impl[Conj["Fun_f", "Inj_fg"], "Inj_g"] Lin[F27]

Out[398]=

Impl[Conj[Fun_f, Inj_fg], Inj_g]

Out[399]=

((Fun_f∧Inj_fg)Inj_g)

Dotted positions (reminder). We mark with a big dot any position to which Eloise can backtrack to: all negative judgements of the tree, and the last positive judgement of the tree.

In[400]:=

savedplay = ( "move 1"            "Box"             ) ;    ... istic, ConstructiveImplication, CutFree", "TreeWidth=900, FontSize=12", savedplay]

[Graphics:../HTMLFiles/index_1537.gif]

[Graphics:../HTMLFiles/index_1538.gif]

[Graphics:../HTMLFiles/index_1539.gif]

\n\n

[Graphics:../HTMLFiles/index_1541.gif]

[Graphics:../HTMLFiles/index_1542.gif]

[Graphics:../HTMLFiles/index_1543.gif]

[Graphics:../HTMLFiles/index_1544.gif]

[Graphics:../HTMLFiles/index_1545.gif]

Goal of: Eloise

{}

⊢

((Fun_f∧Inj_fg)Inj_g)

Goal of: Abelard

{} , ((Fun_f∧Inj_fg)Inj_g),  {}

⊢

{}

____________________________________________________________________

Abelard must attack the only subformula ((Fun_f∧Inj_fg)Inj_g)

Abelard moves: Box

\n\n

[Graphics:../HTMLFiles/index_1556.gif]

[Graphics:../HTMLFiles/index_1557.gif]

[Graphics:../HTMLFiles/index_1558.gif]

[Graphics:../HTMLFiles/index_1559.gif]

[Graphics:../HTMLFiles/index_1560.gif]

Goal of: Eloise

{}

⊢

((Fun_f∧Inj_fg)Inj_g)

Goal of: Abelard

{((Fun_f∧Inj_fg)Inj_g)} , ((Fun_f∧Inj_fg)Inj_g),  {}

⊢

{}

____________________________________________________________________

Eloise must either attack the left, or defend the right subformula of ((Fun_f∧Inj_fg)Inj_g)

Eloise moves: Left

\n\n

[Graphics:../HTMLFiles/index_1571.gif]

[Graphics:../HTMLFiles/index_1572.gif]

[Graphics:../HTMLFiles/index_1573.gif]

[Graphics:../HTMLFiles/index_1574.gif]

[Graphics:../HTMLFiles/index_1575.gif]

Goal of: Eloise

{} , (Fun_f∧Inj_fg),  {}

⊢

{((Fun_f∧Inj_fg)Inj_g)}

Goal of: Abelard

{((Fun_f∧Inj_fg)Inj_g), ((Fun_f∧Inj_fg)Inj_g)}

⊢

(Fun_f∧Inj_fg)

____________________________________________________________________

Eloise must attack the left or right subformula of (Fun_f∧Inj_fg)

Eloise backtracks to the node number 2 of the play.

This backtracking re-uses an hypothesis or defends the current goal (intuitionistic move).

\n\n

[Graphics:../HTMLFiles/index_1587.gif]

[Graphics:../HTMLFiles/index_1588.gif]

[Graphics:../HTMLFiles/index_1589.gif]

[Graphics:../HTMLFiles/index_1590.gif]

[Graphics:../HTMLFiles/index_1591.gif]

Goal of: Eloise

{(Fun_f∧Inj_fg)}

⊢

((Fun_f∧Inj_fg)Inj_g)

Goal of: Abelard

{((Fun_f∧Inj_fg)Inj_g)} , ((Fun_f∧Inj_fg)Inj_g),  {}

⊢

{}

____________________________________________________________________

Eloise must either attack the left, or defend the right subformula of ((Fun_f∧Inj_fg)Inj_g)

Eloise moves: Right

\n\n

[Graphics:../HTMLFiles/index_1602.gif]

[Graphics:../HTMLFiles/index_1603.gif]

[Graphics:../HTMLFiles/index_1604.gif]

[Graphics:../HTMLFiles/index_1605.gif]

[Graphics:../HTMLFiles/index_1606.gif]

Goal of: Eloise

{(Fun_f∧Inj_fg)}

⊢

Inj_g

Goal of: Abelard

{((Fun_f∧Inj_fg)Inj_g), ((Fun_f∧Inj_fg)Inj_g)} , Inj_g,  {}

⊢

{}

____________________________________________________________________

Abelard must attack some instance x of ∀x.∀y.(g(x)=g(y)x=y)

Abelard moves: x=a

\n\n

[Graphics:../HTMLFiles/index_1617.gif]

[Graphics:../HTMLFiles/index_1618.gif]

[Graphics:../HTMLFiles/index_1619.gif]

[Graphics:../HTMLFiles/index_1620.gif]

[Graphics:../HTMLFiles/index_1621.gif]

Goal of: Eloise

{(Fun_f∧Inj_fg)}

⊢

∀y.(g(a)=g(y)a=y)

Goal of: Abelard

{((Fun_f∧Inj_fg)Inj_g), ((Fun_f∧Inj_fg)Inj_g), Inj_g} , ∀y.(g(a)=g(y)a=y),  {}

⊢

{}

____________________________________________________________________

Abelard must attack some instance y of ∀y.(g(a)=g(y)a=y)

Abelard moves: y=b

\n\n

[Graphics:../HTMLFiles/index_1632.gif]

[Graphics:../HTMLFiles/index_1633.gif]

[Graphics:../HTMLFiles/index_1634.gif]

[Graphics:../HTMLFiles/index_1635.gif]

[Graphics:../HTMLFiles/index_1636.gif]

Goal of: Eloise

{(Fun_f∧Inj_fg)}

⊢

(g(a)=g(b)a=b)

Goal of: Abelard

{((Fun_f∧Inj_fg)Inj_g), ((Fun_f∧Inj_fg)Inj_g), Inj_g, ∀y.(g(a)=g(y)a=y)} , (g(a)=g(b)a=b),  {}

⊢

{}

____________________________________________________________________

Abelard must attack the only subformula (g(a)=g(b)a=b)

Abelard moves: Box

\n\n

[Graphics:../HTMLFiles/index_1647.gif]

[Graphics:../HTMLFiles/index_1648.gif]

[Graphics:../HTMLFiles/index_1649.gif]

[Graphics:../HTMLFiles/index_1650.gif]

[Graphics:../HTMLFiles/index_1651.gif]

Goal of: Eloise

{(Fun_f∧Inj_fg)}

⊢

(g(a)=g(b)a=b)

Goal of: Abelard

{((Fun_f∧Inj_fg)Inj_g), ((Fun_f∧Inj_fg)Inj_g), Inj_g, ∀y.(g( ... #62755;a=y), (g(a)=g(b)a=b)} , (g(a)=g(b)a=b),  {}

⊢

{}

____________________________________________________________________

Eloise must either attack the left, or defend the right subformula of (g(a)=g(b)a=b)

Eloise moves: Left

\n\n

[Graphics:../HTMLFiles/index_1662.gif]

[Graphics:../HTMLFiles/index_1663.gif]

[Graphics:../HTMLFiles/index_1664.gif]

[Graphics:../HTMLFiles/index_1665.gif]

[Graphics:../HTMLFiles/index_1666.gif]

Goal of: Eloise

{(Fun_f∧Inj_fg)} , g(a)=g(b),  {}

⊢

{(g(a)=g(b)a=b)}

Goal of: Abelard

{((Fun_f∧Inj_fg)Inj_g), ((Fun_f∧Inj_fg)Inj_g), Inj_g, ∀y.(g(a)=g(y)a=y), (g(a)=g(b)a=b), (g(a)=g(b)a=b)}

⊢

g(a)=g(b)

____________________________________________________________________

g(a)=g(b) is true.

Abelard moves: Atom

\n\n

[Graphics:../HTMLFiles/index_1677.gif]

[Graphics:../HTMLFiles/index_1678.gif]

[Graphics:../HTMLFiles/index_1679.gif]

[Graphics:../HTMLFiles/index_1680.gif]

[Graphics:../HTMLFiles/index_1681.gif]

Goal of: Eloise

{(Fun_f∧Inj_fg), g(a)=g(b)} , ,  {}

⊢

{(g(a)=g(b)a=b)}

Goal of: Abelard

{((Fun_f∧Inj_fg)Inj_g), ((Fun_f∧Inj_fg)Inj_g), Inj_g, ∀y.(g(a)=g(y)a=y), (g(a)=g(b)a=b), (g(a)=g(b)a=b)}

⊢



____________________________________________________________________

Eloise has no subformulas to choose.

Eloise backtracks to the node number 3 of the play.

This backtracking re-uses an hypothesis or defends the current goal (intuitionistic move).

\n\n

[Graphics:../HTMLFiles/index_1693.gif]

[Graphics:../HTMLFiles/index_1694.gif]

[Graphics:../HTMLFiles/index_1695.gif]

[Graphics:../HTMLFiles/index_1696.gif]

[Graphics:../HTMLFiles/index_1697.gif]

Goal of: Eloise

{} , (Fun_f∧Inj_fg),  {g(a)=g(b), }

⊢

{(g(a)=g(b)a=b)}

Goal of: Abelard

{((Fun_f∧Inj_fg)Inj_g), ((Fun_f∧Inj_fg)Inj_g)}

⊢

(Fun_f∧Inj_fg)

____________________________________________________________________

Eloise must attack the left or right subformula of (Fun_f∧Inj_fg)

Eloise moves: Left

\n\n

[Graphics:../HTMLFiles/index_1708.gif]

[Graphics:../HTMLFiles/index_1709.gif]

[Graphics:../HTMLFiles/index_1710.gif]

[Graphics:../HTMLFiles/index_1711.gif]

[Graphics:../HTMLFiles/index_1712.gif]

Goal of: Eloise

{(Fun_f∧Inj_fg), g(a)=g(b), } , Fun_f,  {}

⊢

{(g(a)=g(b)a=b)}

Goal of: Abelard

{((Fun_f∧Inj_fg)Inj_g), ((Fun_f∧Inj_fg)Inj_g)}

⊢

Fun_f

____________________________________________________________________

Eloise must attack some instance x of ∀x.∀y.(x=yf(x)=f(y))

Eloise moves: x=g(a)

\n\n

[Graphics:../HTMLFiles/index_1723.gif]

[Graphics:../HTMLFiles/index_1724.gif]

[Graphics:../HTMLFiles/index_1725.gif]

[Graphics:../HTMLFiles/index_1726.gif]

[Graphics:../HTMLFiles/index_1727.gif]

Goal of: Eloise

{(Fun_f∧Inj_fg), g(a)=g(b), , Fun_f} , ∀y.(g(a)=yf(g(a))=f(y)),  {}

⊢

{(g(a)=g(b)a=b)}

Goal of: Abelard

{((Fun_f∧Inj_fg)Inj_g), ((Fun_f∧Inj_fg)Inj_g)}

⊢

∀y.(g(a)=yf(g(a))=f(y))

____________________________________________________________________

Eloise must attack some instance y of ∀y.(g(a)=yf(g(a))=f(y))

Eloise moves: y=g(b)

\n\n

[Graphics:../HTMLFiles/index_1738.gif]

[Graphics:../HTMLFiles/index_1739.gif]

[Graphics:../HTMLFiles/index_1740.gif]

[Graphics:../HTMLFiles/index_1741.gif]

[Graphics:../HTMLFiles/index_1742.gif]

Goal of: Eloise

{(Fun_f∧Inj_fg), g(a)=g(b), , Fun_f, ∀y.(g(a)=yf(g(a))=f(y))} , (g(a)=g(b)f(g(a))=f(g(b))),  {}

⊢

{(g(a)=g(b)a=b)}

Goal of: Abelard

{((Fun_f∧Inj_fg)Inj_g), ((Fun_f∧Inj_fg)Inj_g)}

⊢

(g(a)=g(b)f(g(a))=f(g(b)))

____________________________________________________________________

Eloise must attack the only subformula (g(a)=g(b)f(g(a))=f(g(b)))

Eloise moves: Box

\n\n

[Graphics:../HTMLFiles/index_1753.gif]

[Graphics:../HTMLFiles/index_1754.gif]

[Graphics:../HTMLFiles/index_1755.gif]

[Graphics:../HTMLFiles/index_1756.gif]

[Graphics:../HTMLFiles/index_1757.gif]

Goal of: Eloise

{(Fun_f∧Inj_fg), g(a)=g(b), , Fun_f, ∀y.(g(a)=yf(g(a))=f(y)), (g(a ... #62755;f(g(a))=f(g(b)))} , (g(a)=g(b)f(g(a))=f(g(b))),  {}

⊢

{(g(a)=g(b)a=b)}

Goal of: Abelard

{((Fun_f∧Inj_fg)Inj_g), ((Fun_f∧Inj_fg)Inj_g)}

⊢

(g(a)=g(b)f(g(a))=f(g(b)))

____________________________________________________________________

Abelard must either attack the left, or defend the right subformula of (g(a)=g(b)f(g(a))=f(g(b)))

Abelard moves: Right

\n\n

[Graphics:../HTMLFiles/index_1768.gif]

[Graphics:../HTMLFiles/index_1769.gif]

[Graphics:../HTMLFiles/index_1770.gif]

[Graphics:../HTMLFiles/index_1771.gif]

[Graphics:../HTMLFiles/index_1772.gif]

Goal of: Eloise

{(Fun_f∧Inj_fg), g(a)=g(b), , Fun_f, ∀y.(g(a)=yf(g(a))=f(y)), (g(a ... g(b))), (g(a)=g(b)f(g(a))=f(g(b)))} , f(g(a))=f(g(b)),  {}

⊢

{(g(a)=g(b)a=b)}

Goal of: Abelard

{((Fun_f∧Inj_fg)Inj_g), ((Fun_f∧Inj_fg)Inj_g)}

⊢

f(g(a))=f(g(b))

____________________________________________________________________

f(g(a))=f(g(b)) is true.

Abelard moves: Atom

\n\n

[Graphics:../HTMLFiles/index_1783.gif]

[Graphics:../HTMLFiles/index_1784.gif]

[Graphics:../HTMLFiles/index_1785.gif]

[Graphics:../HTMLFiles/index_1786.gif]

[Graphics:../HTMLFiles/index_1787.gif]

Goal of: Eloise

{(Fun_f∧Inj_fg), g(a)=g(b), , Fun_f, ∀y.(g(a)=yf(g(a))=f(y)), (g(a ... (a)=g(b)f(g(a))=f(g(b))), f(g(a))=f(g(b))} , ,  {}

⊢

{(g(a)=g(b)a=b)}

Goal of: Abelard

{((Fun_f∧Inj_fg)Inj_g), ((Fun_f∧Inj_fg)Inj_g)}

⊢



____________________________________________________________________

Eloise has no subformulas to choose.

Eloise backtracks to the node number 3 of the play.

This backtracking re-uses an hypothesis or defends the current goal (intuitionistic move).

\n\n

[Graphics:../HTMLFiles/index_1799.gif]

[Graphics:../HTMLFiles/index_1800.gif]

[Graphics:../HTMLFiles/index_1801.gif]

[Graphics:../HTMLFiles/index_1802.gif]

[Graphics:../HTMLFiles/index_1803.gif]

Goal of: Eloise

{} , (Fun_f∧Inj_fg),  {g(a)=g(b), , Fun_f, ͦ ... (g(a)=g(b)f(g(a))=f(g(b))), (g(a)=g(b)f(g(a))=f(g(b))), f(g(a))=f(g(b)), }

⊢

{(g(a)=g(b)a=b)}

Goal of: Abelard

{((Fun_f∧Inj_fg)Inj_g), ((Fun_f∧Inj_fg)Inj_g)}

⊢

(Fun_f∧Inj_fg)

____________________________________________________________________

Eloise must attack the left or right subformula of (Fun_f∧Inj_fg)

Eloise moves: Right

\n\n

[Graphics:../HTMLFiles/index_1814.gif]

[Graphics:../HTMLFiles/index_1815.gif]

[Graphics:../HTMLFiles/index_1816.gif]

[Graphics:../HTMLFiles/index_1817.gif]

[Graphics:../HTMLFiles/index_1818.gif]

Goal of: Eloise

{(Fun_f∧Inj_fg), g(a)=g(b), , Fun_f, ∀y.(g(a)=yf(g(a))=f(y)), (g(a ... f(g(a))=f(g(b))), f(g(a))=f(g(b)), } , Inj_fg,  {}

⊢

{(g(a)=g(b)a=b)}

Goal of: Abelard

{((Fun_f∧Inj_fg)Inj_g), ((Fun_f∧Inj_fg)Inj_g)}

⊢

Inj_fg

____________________________________________________________________

Eloise must attack some instance x of ∀x.∀y.(f(g(x))=f(g(y))x=y)

Eloise moves: x=a

\n\n

[Graphics:../HTMLFiles/index_1829.gif]

[Graphics:../HTMLFiles/index_1830.gif]

[Graphics:../HTMLFiles/index_1831.gif]

[Graphics:../HTMLFiles/index_1832.gif]

[Graphics:../HTMLFiles/index_1833.gif]

Goal of: Eloise

{(Fun_f∧Inj_fg), g(a)=g(b), , Fun_f, ∀y.(g(a)=yf(g(a))=f(y)), (g(a ... )), , Inj_fg} , ∀y.(f(g(a))=f(g(y))a=y),  {}

⊢

{(g(a)=g(b)a=b)}

Goal of: Abelard

{((Fun_f∧Inj_fg)Inj_g), ((Fun_f∧Inj_fg)Inj_g)}

⊢

∀y.(f(g(a))=f(g(y))a=y)

____________________________________________________________________

Eloise must attack some instance y of ∀y.(f(g(a))=f(g(y))a=y)

Eloise moves: y=b

\n\n

[Graphics:../HTMLFiles/index_1844.gif]

[Graphics:../HTMLFiles/index_1845.gif]

[Graphics:../HTMLFiles/index_1846.gif]

[Graphics:../HTMLFiles/index_1847.gif]

[Graphics:../HTMLFiles/index_1848.gif]

Goal of: Eloise

{(Fun_f∧Inj_fg), g(a)=g(b), , Fun_f, ∀y.(g(a)=yf(g(a))=f(y)), (g(a ... .(f(g(a))=f(g(y))a=y)} , (f(g(a))=f(g(b))a=b),  {}

⊢

{(g(a)=g(b)a=b)}

Goal of: Abelard

{((Fun_f∧Inj_fg)Inj_g), ((Fun_f∧Inj_fg)Inj_g)}

⊢

(f(g(a))=f(g(b))a=b)

____________________________________________________________________

Eloise must attack the only subformula (f(g(a))=f(g(b))a=b)

Eloise moves: Box

\n\n

[Graphics:../HTMLFiles/index_1859.gif]

[Graphics:../HTMLFiles/index_1860.gif]

[Graphics:../HTMLFiles/index_1861.gif]

[Graphics:../HTMLFiles/index_1862.gif]

[Graphics:../HTMLFiles/index_1863.gif]

Goal of: Eloise

{(Fun_f∧Inj_fg), g(a)=g(b), , Fun_f, ∀y.(g(a)=yf(g(a))=f(y)), (g(a ...  (f(g(a))=f(g(b))a=b)} , (f(g(a))=f(g(b))a=b),  {}

⊢

{(g(a)=g(b)a=b)}

Goal of: Abelard

{((Fun_f∧Inj_fg)Inj_g), ((Fun_f∧Inj_fg)Inj_g)}

⊢

(f(g(a))=f(g(b))a=b)

____________________________________________________________________

Abelard must either attack the left, or defend the right subformula of (f(g(a))=f(g(b))a=b)

Abelard moves: Right

\n\n

[Graphics:../HTMLFiles/index_1874.gif]

[Graphics:../HTMLFiles/index_1875.gif]

[Graphics:../HTMLFiles/index_1876.gif]

[Graphics:../HTMLFiles/index_1877.gif]

[Graphics:../HTMLFiles/index_1878.gif]

Goal of: Eloise

{(Fun_f∧Inj_fg), g(a)=g(b), , Fun_f, ∀y.(g(a)=yf(g(a))=f(y)), (g(a ... (a))=f(g(b))a=b), (f(g(a))=f(g(b))a=b)} , a=b,  {}

⊢

{(g(a)=g(b)a=b)}

Goal of: Abelard

{((Fun_f∧Inj_fg)Inj_g), ((Fun_f∧Inj_fg)Inj_g)}

⊢

a=b

____________________________________________________________________

a=b is true.

Abelard moves: Atom

\n\n

[Graphics:../HTMLFiles/index_1889.gif]

[Graphics:../HTMLFiles/index_1890.gif]

[Graphics:../HTMLFiles/index_1891.gif]

[Graphics:../HTMLFiles/index_1892.gif]

[Graphics:../HTMLFiles/index_1893.gif]

Goal of: Eloise

{(Fun_f∧Inj_fg), g(a)=g(b), , Fun_f, ∀y.(g(a)=yf(g(a))=f(y)), (g(a ... ))a=b), (f(g(a))=f(g(b))a=b), a=b} , ,  {}

⊢

{(g(a)=g(b)a=b)}

Goal of: Abelard

{((Fun_f∧Inj_fg)Inj_g), ((Fun_f∧Inj_fg)Inj_g)}

⊢



____________________________________________________________________

Eloise has no subformulas to choose.

Eloise backtracks to the node number 7 of the play.

This backtracking re-uses an hypothesis or defends the current goal (intuitionistic move).

\n\n

[Graphics:../HTMLFiles/index_1905.gif]

[Graphics:../HTMLFiles/index_1906.gif]

[Graphics:../HTMLFiles/index_1907.gif]

[Graphics:../HTMLFiles/index_1908.gif]

[Graphics:../HTMLFiles/index_1909.gif]

Goal of: Eloise

{(Fun_f∧Inj_fg), g(a)=g(b), , Fun_f, ∀y.(g(a)=yf(g(a))=f(y)), (g(a ... ))=f(g(y))a=y), (f(g(a))=f(g(b))a=b), (f(g(a))=f(g(b))a=b), a=b, }

⊢

(g(a)=g(b)a=b)

Goal of: Abelard

{((Fun_f∧Inj_fg)Inj_g), ((Fun_f∧Inj_fg)Inj_g), Inj_g, ∀y.(g( ... #62755;a=y), (g(a)=g(b)a=b)} , (g(a)=g(b)a=b),  {}

⊢

{}

____________________________________________________________________

Eloise must either attack the left, or defend the right subformula of (g(a)=g(b)a=b)

Eloise moves: Right

\n\n

[Graphics:../HTMLFiles/index_1920.gif]

[Graphics:../HTMLFiles/index_1921.gif]

[Graphics:../HTMLFiles/index_1922.gif]

[Graphics:../HTMLFiles/index_1923.gif]

[Graphics:../HTMLFiles/index_1924.gif]

Goal of: Eloise

{(Fun_f∧Inj_fg), g(a)=g(b), , Fun_f, ∀y.(g(a)=yf(g(a))=f(y)), (g(a ... ))=f(g(y))a=y), (f(g(a))=f(g(b))a=b), (f(g(a))=f(g(b))a=b), a=b, }

⊢

a=b

Goal of: Abelard

{((Fun_f∧Inj_fg)Inj_g), ((Fun_f∧Inj_fg)Inj_g), Inj_g, ∀y.(g( ... 5;a=y), (g(a)=g(b)a=b), (g(a)=g(b)a=b)} , a=b,  {}

⊢

{}

____________________________________________________________________

a=b is true.

Eloise moves: Atom

\n\n

[Graphics:../HTMLFiles/index_1935.gif]

[Graphics:../HTMLFiles/index_1936.gif]

[Graphics:../HTMLFiles/index_1937.gif]

[Graphics:../HTMLFiles/index_1938.gif]

[Graphics:../HTMLFiles/index_1939.gif]

Goal of: Eloise

{(Fun_f∧Inj_fg), g(a)=g(b), , Fun_f, ∀y.(g(a)=yf(g(a))=f(y)), (g(a ... ))=f(g(y))a=y), (f(g(a))=f(g(b))a=b), (f(g(a))=f(g(b))a=b), a=b, }

⊢



Goal of: Abelard

{((Fun_f∧Inj_fg)Inj_g), ((Fun_f∧Inj_fg)Inj_g), Inj_g, ∀y.(g( ... (a)=g(b)a=b), (g(a)=g(b)a=b), a=b} , ,  {}

⊢

{}

____________________________________________________________________

Abelard has no subformulas to choose.

Abelard gives up.

[Graphics:../HTMLFiles/index_1949.gif]

This is the list of all moves of the play:

( move 1            Box             )            move 2            L           ...            move 21           R            move 22           Atom            move 23           drop


Created by Mathematica  (November 11, 2006)