LCM: Weak Koenig's Lemma.
(∀x.∀y.(P(x)∨Q(y))⇒(∀x.P(x)∨∀y.Q(y)))

In[407]:=

Clear[P, Q] ;

We define the classical principle Weak Koenig's Lemma for recursive Lemma. We state it in the form: "if a recursive binary tree is infinite, then either the left or the right-hand side of the tree are infinite". Modulo choice axiom, this says that if a recursive binary tree is infinite, then it has an infinite branch. We get the branch by taking, at each step, left or right according to which side is infinite.

In[408]:=

F14 = Impl[Un["x", Un["y", Disj["P(x)", "Q(y)"]]], Disj[Un["x", "P(x)"], Un["y", "Q(y)"]]] ;

In[409]:=

Lin[F14]

Out[409]=

(∀x.∀y.(P(x)∨Q(y))(∀x.P(x)∨∀y.Q(y)))

Thin and thick edges in Eloise's view-tree (a reminder). Whenever we backtrack from position i to position j<i, we retract all positions j+1, ..., i. We mark this fact by drawing the edges leading to the positions j+1, ..., i thinner. If the position j was retracted, and now we recover it, the whole play comes back to the state it was in position j. We mark this fact by drawing the edges leading to positions 1, ..., j either thin or thick, according if they were thin or thick in the view-tree for position j. A single move can change the look of the view-tree deeply, because we can recover an older state of the tree.

Dotted positions (reminder). We mark with a big dot any position to which Eloise can backtrack to using intuitionistic backtracking: all negative judgements of the tree, and the last positive judgement, in the part of the tree having thick edges.

We choose the parameters of the game.

In[410]:=

savedplay = ( "move 1"    "Box"     ) ;                    ... ;drop" BCK[F14, "LCM, ConstructiveImplication, CutFree, FontSize=18", savedplay] ;

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

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

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

\n\n

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

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

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

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

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

Goal of: Eloise

{}

⊢

{} , (∀x.∀y.(P(x)∨Q(y))(∀x.P(x)∨∀y.Q(y)))

Goal of: Abelard

{} , (∀x.∀y.(P(x)∨Q(y))(∀x.P(x)∨∀y.Q(y))),  {}

⊢

{}

____________________________________________________________________

Abelard must attack the only subformula (∀x.∀y.(P(x)∨Q(y))(∀x.P(x)∨∀y.Q(y)))

Abelard moves: Box

\n\n

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

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

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

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

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

Goal of: Eloise

{}

⊢

{(∀x.∀y.(P(x)∨Q(y))(∀x.P(x)∨∀y.Q(y)))} , (∀x.∀y.(P(x)∨Q(y))(∀x.P(x)∨∀y.Q(y)))

Goal of: Abelard

{(∀x.∀y.(P(x)∨Q(y))(∀x.P(x)∨∀y.Q(y)))} , & ... 8704;x.∀y.(P(x)∨Q(y))(∀x.P(x)∨∀y.Q(y))),  {}

⊢

{}

____________________________________________________________________

Eloise must either attack the left, or defend the right subformula of (∀x.∀y.(P(x)∨Q(y))(∀x.P(x)∨∀y.Q(y)))

Eloise moves: Left

\n\n

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

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

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

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

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

Goal of: Eloise

{} , ∀x.∀y.(P(x)∨Q(y)),  {}

⊢

{(∀x.∀y.(P(x)∨Q(y))(∀x.P(x)∨∀y.Q(y))), (∀x.∀y.(P(x)∨Q(y))(∀x.P(x)∨∀y.Q(y)))}

Goal of: Abelard

{(∀x.∀y.(P(x)∨Q(y))(∀x.P(x)∨∀y.Q(y))), (∀x.∀y.(P(x)∨Q(y))(∀x.P(x)∨∀y.Q(y)))}

⊢

{} , ∀x.∀y.(P(x)∨Q(y))

____________________________________________________________________

Eloise must attack some instance x of ∀x.∀y.(P(x)∨Q(y))

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_2212.gif]

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

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

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

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

Goal of: Eloise

{∀x.∀y.(P(x)∨Q(y))}

⊢

{(∀x.∀y.(P(x)∨Q(y))(∀x.P(x)∨∀y.Q(y)))} , (∀x.∀y.(P(x)∨Q(y))(∀x.P(x)∨∀y.Q(y)))

Goal of: Abelard

{(∀x.∀y.(P(x)∨Q(y))(∀x.P(x)∨∀y.Q(y)))} , & ... 8704;x.∀y.(P(x)∨Q(y))(∀x.P(x)∨∀y.Q(y))),  {}

⊢

{}

____________________________________________________________________

Eloise must either attack the left, or defend the right subformula of (∀x.∀y.(P(x)∨Q(y))(∀x.P(x)∨∀y.Q(y)))

Eloise moves: Right

\n\n

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

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

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

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

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

Goal of: Eloise

{∀x.∀y.(P(x)∨Q(y))}

⊢

{(∀x.∀y.(P(x)∨Q(y))(∀x.P(x)∨∀y.Q(y))), (∀x.& ... #62754;(∀x.P(x)∨∀y.Q(y)))} , (∀x.P(x)∨∀y.Q(y))

Goal of: Abelard

{(∀x.∀y.(P(x)∨Q(y))(∀x.P(x)∨∀y.Q(y))), (∀x.& ... ∨∀y.Q(y)))} , (∀x.P(x)∨∀y.Q(y)),  {}

⊢

{}

____________________________________________________________________

Eloise must defend the left or right subformula of (∀x.P(x)∨∀y.Q(y))

Eloise moves: Left

\n\n

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

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

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

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

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

Goal of: Eloise

{∀x.∀y.(P(x)∨Q(y))}

⊢

{(∀x.∀y.(P(x)∨Q(y))(∀x.P(x)∨∀y.Q(y))), (∀x.& ... x.P(x)∨∀y.Q(y))), (∀x.P(x)∨∀y.Q(y))} , ∀x.P(x)

Goal of: Abelard

{(∀x.∀y.(P(x)∨Q(y))(∀x.P(x)∨∀y.Q(y))), (∀x.& ... .Q(y))), (∀x.P(x)∨∀y.Q(y))} , ∀x.P(x),  {}

⊢

{}

____________________________________________________________________

Abelard must attack some instance x of ∀x.P(x)

Abelard moves: x=a

\n\n

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

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

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

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

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

Goal of: Eloise

{∀x.∀y.(P(x)∨Q(y))}

⊢

{(∀x.∀y.(P(x)∨Q(y))(∀x.P(x)∨∀y.Q(y))), (∀x.& ... ∨∀y.Q(y))), (∀x.P(x)∨∀y.Q(y)), ∀x.P(x)} , P(a)

Goal of: Abelard

{(∀x.∀y.(P(x)∨Q(y))(∀x.P(x)∨∀y.Q(y))), (∀x.& ... ), (∀x.P(x)∨∀y.Q(y)), ∀x.P(x)} , P(a),  {}

⊢

{}

____________________________________________________________________

P(a) is false.

Eloise moves: Atom

\n\n

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

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

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

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

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

Goal of: Eloise

{∀x.∀y.(P(x)∨Q(y))}

⊢

{(∀x.∀y.(P(x)∨Q(y))(∀x.P(x)∨∀y.Q(y))), (∀x.& ... 704;y.Q(y))), (∀x.P(x)∨∀y.Q(y)), ∀x.P(x), P(a)} , 

Goal of: Abelard

{(∀x.∀y.(P(x)∨Q(y))(∀x.P(x)∨∀y.Q(y))), (∀x.& ... ;x.P(x)∨∀y.Q(y)), ∀x.P(x), P(a)} , ,  {}

⊢

{}

____________________________________________________________________

Eloise has no subformulas to choose.

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

This backtracking drops out the current goal and possibly more nodes (proper LCM move).

\n\n

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

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

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

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

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

Goal of: Eloise

{∀x.∀y.(P(x)∨Q(y))}

⊢

{(∀x.∀y.(P(x)∨Q(y))(∀x.P(x)∨∀y.Q(y))), (∀x.& ... )∨∀y.Q(y)), ∀x.P(x), P(a)} , (∀x.P(x)∨∀y.Q(y))

Goal of: Abelard

{(∀x.∀y.(P(x)∨Q(y))(∀x.P(x)∨∀y.Q(y))), (∀x.& ... ∨∀y.Q(y)))} , (∀x.P(x)∨∀y.Q(y)),  {}

⊢

{}

____________________________________________________________________

Eloise must defend the left or right subformula of (∀x.P(x)∨∀y.Q(y))

Eloise moves: Right

\n\n

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

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

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

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

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

Goal of: Eloise

{∀x.∀y.(P(x)∨Q(y))}

⊢

{(∀x.∀y.(P(x)∨Q(y))(∀x.P(x)∨∀y.Q(y))), (∀x.& ... x.P(x)∨∀y.Q(y))), (∀x.P(x)∨∀y.Q(y))} , ∀y.Q(y)

Goal of: Abelard

{(∀x.∀y.(P(x)∨Q(y))(∀x.P(x)∨∀y.Q(y))), (∀x.& ... .Q(y))), (∀x.P(x)∨∀y.Q(y))} , ∀y.Q(y),  {}

⊢

{}

____________________________________________________________________

Abelard must attack some instance y of ∀y.Q(y)

Abelard moves: y=b

\n\n

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

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

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

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

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

Goal of: Eloise

{∀x.∀y.(P(x)∨Q(y))}

⊢

{(∀x.∀y.(P(x)∨Q(y))(∀x.P(x)∨∀y.Q(y))), (∀x.& ... ∨∀y.Q(y))), (∀x.P(x)∨∀y.Q(y)), ∀y.Q(y)} , Q(b)

Goal of: Abelard

{(∀x.∀y.(P(x)∨Q(y))(∀x.P(x)∨∀y.Q(y))), (∀x.& ... ), (∀x.P(x)∨∀y.Q(y)), ∀y.Q(y)} , Q(b),  {}

⊢

{}

____________________________________________________________________

Q(b) is false.

Eloise moves: Atom

\n\n

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

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

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

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

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

Goal of: Eloise

{∀x.∀y.(P(x)∨Q(y))}

⊢

{(∀x.∀y.(P(x)∨Q(y))(∀x.P(x)∨∀y.Q(y))), (∀x.& ... 704;y.Q(y))), (∀x.P(x)∨∀y.Q(y)), ∀y.Q(y), Q(b)} , 

Goal of: Abelard

{(∀x.∀y.(P(x)∨Q(y))(∀x.P(x)∨∀y.Q(y))), (∀x.& ... ;x.P(x)∨∀y.Q(y)), ∀y.Q(y), Q(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_2349.gif]

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

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

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

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

Goal of: Eloise

{} , ∀x.∀y.(P(x)∨Q(y)),  {}

⊢

{(∀x.∀y.(P(x)∨Q(y))(∀x.P(x)∨∀y.Q(y))), (∀x.& ... ;x.P(x)∨∀y.Q(y))), (∀x.P(x)∨∀y.Q(y)), ∀y.Q(y), Q(b), }

Goal of: Abelard

{(∀x.∀y.(P(x)∨Q(y))(∀x.P(x)∨∀y.Q(y))), (∀x.∀y.(P(x)∨Q(y))(∀x.P(x)∨∀y.Q(y)))}

⊢

{} , ∀x.∀y.(P(x)∨Q(y))

____________________________________________________________________

Eloise must attack some instance x of ∀x.∀y.(P(x)∨Q(y))

Eloise moves: x=a

\n\n

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

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

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

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

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

Goal of: Eloise

{∀x.∀y.(P(x)∨Q(y))} , ∀y.(P(a)∨Q(y)),  {}

⊢

{(∀x.∀y.(P(x)∨Q(y))(∀x.P(x)∨∀y.Q(y))), (∀x.& ... ;x.P(x)∨∀y.Q(y))), (∀x.P(x)∨∀y.Q(y)), ∀y.Q(y), Q(b), }

Goal of: Abelard

{(∀x.∀y.(P(x)∨Q(y))(∀x.P(x)∨∀y.Q(y))), (∀x.∀y.(P(x)∨Q(y))(∀x.P(x)∨∀y.Q(y)))}

⊢

{∀x.∀y.(P(x)∨Q(y))} , ∀y.(P(a)∨Q(y))

____________________________________________________________________

Eloise must attack some instance y of ∀y.(P(a)∨Q(y))

Eloise moves: y=b

\n\n

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

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

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

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

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

Goal of: Eloise

{∀x.∀y.(P(x)∨Q(y)), ∀y.(P(a)∨Q(y))} , (P(a)∨Q(b)),  {}

⊢

{(∀x.∀y.(P(x)∨Q(y))(∀x.P(x)∨∀y.Q(y))), (∀x.& ... ;x.P(x)∨∀y.Q(y))), (∀x.P(x)∨∀y.Q(y)), ∀y.Q(y), Q(b), }

Goal of: Abelard

{(∀x.∀y.(P(x)∨Q(y))(∀x.P(x)∨∀y.Q(y))), (∀x.∀y.(P(x)∨Q(y))(∀x.P(x)∨∀y.Q(y)))}

⊢

{∀x.∀y.(P(x)∨Q(y)), ∀y.(P(a)∨Q(y))} , (P(a)∨Q(b))

____________________________________________________________________

Abelard must defend the left or right subformula of (P(a)∨Q(b))

Abelard moves: Left

\n\n

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

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

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

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

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

Goal of: Eloise

{∀x.∀y.(P(x)∨Q(y)), ∀y.(P(a)∨Q(y)), (P(a)∨Q(b))} , P(a),  {}

⊢

{(∀x.∀y.(P(x)∨Q(y))(∀x.P(x)∨∀y.Q(y))), (∀x.& ... ;x.P(x)∨∀y.Q(y))), (∀x.P(x)∨∀y.Q(y)), ∀y.Q(y), Q(b), }

Goal of: Abelard

{(∀x.∀y.(P(x)∨Q(y))(∀x.P(x)∨∀y.Q(y))), (∀x.∀y.(P(x)∨Q(y))(∀x.P(x)∨∀y.Q(y)))}

⊢

{∀x.∀y.(P(x)∨Q(y)), ∀y.(P(a)∨Q(y)), (P(a)∨Q(b))} , P(a)

____________________________________________________________________

P(a) is false.

Abelard moves: Atom

\n\n

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

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

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

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

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

Goal of: Eloise

{∀x.∀y.(P(x)∨Q(y)), ∀y.(P(a)∨Q(y)), (P(a)∨Q(b)), P(a)} , ,  {}

⊢

{(∀x.∀y.(P(x)∨Q(y))(∀x.P(x)∨∀y.Q(y))), (∀x.& ... ;x.P(x)∨∀y.Q(y))), (∀x.P(x)∨∀y.Q(y)), ∀y.Q(y), Q(b), }

Goal of: Abelard

{(∀x.∀y.(P(x)∨Q(y))(∀x.P(x)∨∀y.Q(y))), (∀x.∀y.(P(x)∨Q(y))(∀x.P(x)∨∀y.Q(y)))}

⊢

{∀x.∀y.(P(x)∨Q(y)), ∀y.(P(a)∨Q(y)), (P(a)∨Q(b)), P(a)} , 

____________________________________________________________________

Abelard has no subformulas to choose.

Abelard gives up.

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

This is the list of all moves of the play:

( move 1    Box     )            move 2    L            move 3    bck 2        ...             move 11   b            move 12   L            move 13   Atom            move 14   drop


Created by Mathematica  (November 11, 2006)