set_theory.game.state
⟷
Mathlib.SetTheory.Game.State
The following section lists changes to this file in mathlib3 and mathlib4 that occured after the initial port. Most recent changes are shown first. Hovering over a commit will show all commits associated with the same mathlib3 commit.
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(last sync)
mathlib commit https://github.com/leanprover-community/mathlib/commit/65a1391a0106c9204fe45bc73a039f056558cb83
@@ -58,7 +58,7 @@ theorem SetTheory.PGame.turnBound_ne_zero_of_left_move {s t : S}
by
intro h
have t := state.left_bound m
- rw [h] at t
+ rw [h] at t
exact Nat.not_succ_le_zero _ t
#align pgame.turn_bound_ne_zero_of_left_move SetTheory.PGame.turnBound_ne_zero_of_left_move
-/
@@ -69,7 +69,7 @@ theorem SetTheory.PGame.turnBound_ne_zero_of_right_move {s t : S}
by
intro h
have t := state.right_bound m
- rw [h] at t
+ rw [h] at t
exact Nat.not_succ_le_zero _ t
#align pgame.turn_bound_ne_zero_of_right_move SetTheory.PGame.turnBound_ne_zero_of_right_move
-/
@@ -115,23 +115,23 @@ def SetTheory.PGame.ofStateAuxRelabelling :
| s, 0, 0, hn, hm => by
dsimp [SetTheory.PGame.ofStateAux]
fconstructor; rfl; rfl
- · intro i; dsimp at i ; exfalso
+ · intro i; dsimp at i; exfalso
exact turn_bound_ne_zero_of_left_move i.2 (nonpos_iff_eq_zero.mp hn)
- · intro j; dsimp at j ; exfalso
+ · intro j; dsimp at j; exfalso
exact turn_bound_ne_zero_of_right_move j.2 (nonpos_iff_eq_zero.mp hm)
| s, 0, m + 1, hn, hm => by
dsimp [SetTheory.PGame.ofStateAux]
fconstructor; rfl; rfl
- · intro i; dsimp at i ; exfalso
+ · intro i; dsimp at i; exfalso
exact turn_bound_ne_zero_of_left_move i.2 (nonpos_iff_eq_zero.mp hn)
- · intro j; dsimp at j ; exfalso
+ · intro j; dsimp at j; exfalso
exact turn_bound_ne_zero_of_right_move j.2 (nonpos_iff_eq_zero.mp hn)
| s, n + 1, 0, hn, hm => by
dsimp [SetTheory.PGame.ofStateAux]
fconstructor; rfl; rfl
- · intro i; dsimp at i ; exfalso
+ · intro i; dsimp at i; exfalso
exact turn_bound_ne_zero_of_left_move i.2 (nonpos_iff_eq_zero.mp hm)
- · intro j; dsimp at j ; exfalso
+ · intro j; dsimp at j; exfalso
exact turn_bound_ne_zero_of_right_move j.2 (nonpos_iff_eq_zero.mp hm)
| s, n + 1, m + 1, hn, hm => by
dsimp [SetTheory.PGame.ofStateAux]
mathlib commit https://github.com/leanprover-community/mathlib/commit/ce64cd319bb6b3e82f31c2d38e79080d377be451
@@ -3,7 +3,7 @@ Copyright (c) 2019 Scott Morrison. All rights reserved.
Released under Apache 2.0 license as described in the file LICENSE.
Authors: Scott Morrison
-/
-import Mathbin.SetTheory.Game.Short
+import SetTheory.Game.Short
#align_import set_theory.game.state from "leanprover-community/mathlib"@"728ef9dbb281241906f25cbeb30f90d83e0bb451"
mathlib commit https://github.com/leanprover-community/mathlib/commit/442a83d738cb208d3600056c489be16900ba701d
@@ -29,9 +29,9 @@ See `set_theory/game/domineering` for an example using this construction.
universe u
-namespace PGame
+namespace SetTheory.PGame
-#print PGame.State /-
+#print SetTheory.PGame.State /-
/-- `pgame_state S` describes how to interpret `s : S` as a state of a combinatorial game.
Use `pgame.of_state s` or `game.of_state s` to construct the game.
@@ -39,226 +39,252 @@ Use `pgame.of_state s` or `game.of_state s` to construct the game.
by a move by Left or Right. `pgame_state.turn_bound : S → ℕ` gives an upper bound on the number of
possible turns remaining from this state.
-/
-class State (S : Type u) where
+class SetTheory.PGame.State (S : Type u) where
turnBound : S → ℕ
l : S → Finset S
r : S → Finset S
left_bound : ∀ {s t : S} (m : t ∈ L s), turn_bound t < turn_bound s
right_bound : ∀ {s t : S} (m : t ∈ R s), turn_bound t < turn_bound s
-#align pgame.state PGame.State
+#align pgame.state SetTheory.PGame.State
-/
open StateM
-variable {S : Type u} [State S]
+variable {S : Type u} [SetTheory.PGame.State S]
-#print PGame.turnBound_ne_zero_of_left_move /-
-theorem turnBound_ne_zero_of_left_move {s t : S} (m : t ∈ l s) : turnBound s ≠ 0 :=
+#print SetTheory.PGame.turnBound_ne_zero_of_left_move /-
+theorem SetTheory.PGame.turnBound_ne_zero_of_left_move {s t : S}
+ (m : t ∈ SetTheory.PGame.State.l s) : SetTheory.PGame.State.turnBound s ≠ 0 :=
by
intro h
have t := state.left_bound m
rw [h] at t
exact Nat.not_succ_le_zero _ t
-#align pgame.turn_bound_ne_zero_of_left_move PGame.turnBound_ne_zero_of_left_move
+#align pgame.turn_bound_ne_zero_of_left_move SetTheory.PGame.turnBound_ne_zero_of_left_move
-/
-#print PGame.turnBound_ne_zero_of_right_move /-
-theorem turnBound_ne_zero_of_right_move {s t : S} (m : t ∈ r s) : turnBound s ≠ 0 :=
+#print SetTheory.PGame.turnBound_ne_zero_of_right_move /-
+theorem SetTheory.PGame.turnBound_ne_zero_of_right_move {s t : S}
+ (m : t ∈ SetTheory.PGame.State.r s) : SetTheory.PGame.State.turnBound s ≠ 0 :=
by
intro h
have t := state.right_bound m
rw [h] at t
exact Nat.not_succ_le_zero _ t
-#align pgame.turn_bound_ne_zero_of_right_move PGame.turnBound_ne_zero_of_right_move
+#align pgame.turn_bound_ne_zero_of_right_move SetTheory.PGame.turnBound_ne_zero_of_right_move
-/
-#print PGame.turnBound_of_left /-
-theorem turnBound_of_left {s t : S} (m : t ∈ l s) (n : ℕ) (h : turnBound s ≤ n + 1) :
- turnBound t ≤ n :=
- Nat.le_of_lt_succ (Nat.lt_of_lt_of_le (left_bound m) h)
-#align pgame.turn_bound_of_left PGame.turnBound_of_left
+#print SetTheory.PGame.turnBound_of_left /-
+theorem SetTheory.PGame.turnBound_of_left {s t : S} (m : t ∈ SetTheory.PGame.State.l s) (n : ℕ)
+ (h : SetTheory.PGame.State.turnBound s ≤ n + 1) : SetTheory.PGame.State.turnBound t ≤ n :=
+ Nat.le_of_lt_succ (Nat.lt_of_lt_of_le (SetTheory.PGame.State.left_bound m) h)
+#align pgame.turn_bound_of_left SetTheory.PGame.turnBound_of_left
-/
-#print PGame.turnBound_of_right /-
-theorem turnBound_of_right {s t : S} (m : t ∈ r s) (n : ℕ) (h : turnBound s ≤ n + 1) :
- turnBound t ≤ n :=
- Nat.le_of_lt_succ (Nat.lt_of_lt_of_le (right_bound m) h)
-#align pgame.turn_bound_of_right PGame.turnBound_of_right
+#print SetTheory.PGame.turnBound_of_right /-
+theorem SetTheory.PGame.turnBound_of_right {s t : S} (m : t ∈ SetTheory.PGame.State.r s) (n : ℕ)
+ (h : SetTheory.PGame.State.turnBound s ≤ n + 1) : SetTheory.PGame.State.turnBound t ≤ n :=
+ Nat.le_of_lt_succ (Nat.lt_of_lt_of_le (SetTheory.PGame.State.right_bound m) h)
+#align pgame.turn_bound_of_right SetTheory.PGame.turnBound_of_right
-/
-#print PGame.ofStateAux /-
+#print SetTheory.PGame.ofStateAux /-
/-- Construct a `pgame` from a state and a (not necessarily optimal) bound on the number of
turns remaining.
-/
-def ofStateAux : ∀ (n : ℕ) (s : S) (h : turnBound s ≤ n), PGame
+def SetTheory.PGame.ofStateAux :
+ ∀ (n : ℕ) (s : S) (h : SetTheory.PGame.State.turnBound s ≤ n), SetTheory.PGame
| 0, s, h =>
- PGame.mk { t // t ∈ l s } { t // t ∈ r s }
+ SetTheory.PGame.mk { t // t ∈ SetTheory.PGame.State.l s } { t // t ∈ SetTheory.PGame.State.r s }
(fun t => by exfalso; exact turn_bound_ne_zero_of_left_move t.2 (nonpos_iff_eq_zero.mp h))
fun t => by exfalso; exact turn_bound_ne_zero_of_right_move t.2 (nonpos_iff_eq_zero.mp h)
| n + 1, s, h =>
- PGame.mk { t // t ∈ l s } { t // t ∈ r s }
- (fun t => of_state_aux n t (turnBound_of_left t.2 n h)) fun t =>
- of_state_aux n t (turnBound_of_right t.2 n h)
-#align pgame.of_state_aux PGame.ofStateAux
+ SetTheory.PGame.mk { t // t ∈ SetTheory.PGame.State.l s } { t // t ∈ SetTheory.PGame.State.r s }
+ (fun t => of_state_aux n t (SetTheory.PGame.turnBound_of_left t.2 n h)) fun t =>
+ of_state_aux n t (SetTheory.PGame.turnBound_of_right t.2 n h)
+#align pgame.of_state_aux SetTheory.PGame.ofStateAux
-/
-#print PGame.ofStateAuxRelabelling /-
+#print SetTheory.PGame.ofStateAuxRelabelling /-
/-- Two different (valid) turn bounds give equivalent games. -/
-def ofStateAuxRelabelling :
- ∀ (s : S) (n m : ℕ) (hn : turnBound s ≤ n) (hm : turnBound s ≤ m),
- Relabelling (ofStateAux n s hn) (ofStateAux m s hm)
+def SetTheory.PGame.ofStateAuxRelabelling :
+ ∀ (s : S) (n m : ℕ) (hn : SetTheory.PGame.State.turnBound s ≤ n)
+ (hm : SetTheory.PGame.State.turnBound s ≤ m),
+ SetTheory.PGame.Relabelling (SetTheory.PGame.ofStateAux n s hn)
+ (SetTheory.PGame.ofStateAux m s hm)
| s, 0, 0, hn, hm => by
- dsimp [PGame.ofStateAux]
+ dsimp [SetTheory.PGame.ofStateAux]
fconstructor; rfl; rfl
· intro i; dsimp at i ; exfalso
exact turn_bound_ne_zero_of_left_move i.2 (nonpos_iff_eq_zero.mp hn)
· intro j; dsimp at j ; exfalso
exact turn_bound_ne_zero_of_right_move j.2 (nonpos_iff_eq_zero.mp hm)
| s, 0, m + 1, hn, hm => by
- dsimp [PGame.ofStateAux]
+ dsimp [SetTheory.PGame.ofStateAux]
fconstructor; rfl; rfl
· intro i; dsimp at i ; exfalso
exact turn_bound_ne_zero_of_left_move i.2 (nonpos_iff_eq_zero.mp hn)
· intro j; dsimp at j ; exfalso
exact turn_bound_ne_zero_of_right_move j.2 (nonpos_iff_eq_zero.mp hn)
| s, n + 1, 0, hn, hm => by
- dsimp [PGame.ofStateAux]
+ dsimp [SetTheory.PGame.ofStateAux]
fconstructor; rfl; rfl
· intro i; dsimp at i ; exfalso
exact turn_bound_ne_zero_of_left_move i.2 (nonpos_iff_eq_zero.mp hm)
· intro j; dsimp at j ; exfalso
exact turn_bound_ne_zero_of_right_move j.2 (nonpos_iff_eq_zero.mp hm)
| s, n + 1, m + 1, hn, hm => by
- dsimp [PGame.ofStateAux]
+ dsimp [SetTheory.PGame.ofStateAux]
fconstructor; rfl; rfl
· intro i
apply of_state_aux_relabelling
· intro j
apply of_state_aux_relabelling
-#align pgame.of_state_aux_relabelling PGame.ofStateAuxRelabelling
+#align pgame.of_state_aux_relabelling SetTheory.PGame.ofStateAuxRelabelling
-/
-#print PGame.ofState /-
+#print SetTheory.PGame.ofState /-
/-- Construct a combinatorial `pgame` from a state. -/
-def ofState (s : S) : PGame :=
- ofStateAux (turnBound s) s (refl _)
-#align pgame.of_state PGame.ofState
+def SetTheory.PGame.ofState (s : S) : SetTheory.PGame :=
+ SetTheory.PGame.ofStateAux (SetTheory.PGame.State.turnBound s) s (refl _)
+#align pgame.of_state SetTheory.PGame.ofState
-/
-#print PGame.leftMovesOfStateAux /-
+#print SetTheory.PGame.leftMovesOfStateAux /-
/-- The equivalence between `left_moves` for a `pgame` constructed using `of_state_aux _ s _`, and
`L s`. -/
-def leftMovesOfStateAux (n : ℕ) {s : S} (h : turnBound s ≤ n) :
- LeftMoves (ofStateAux n s h) ≃ { t // t ∈ l s } := by induction n <;> rfl
-#align pgame.left_moves_of_state_aux PGame.leftMovesOfStateAux
+def SetTheory.PGame.leftMovesOfStateAux (n : ℕ) {s : S}
+ (h : SetTheory.PGame.State.turnBound s ≤ n) :
+ SetTheory.PGame.LeftMoves (SetTheory.PGame.ofStateAux n s h) ≃
+ { t // t ∈ SetTheory.PGame.State.l s } :=
+ by induction n <;> rfl
+#align pgame.left_moves_of_state_aux SetTheory.PGame.leftMovesOfStateAux
-/
-#print PGame.leftMovesOfState /-
+#print SetTheory.PGame.leftMovesOfState /-
/-- The equivalence between `left_moves` for a `pgame` constructed using `of_state s`, and `L s`. -/
-def leftMovesOfState (s : S) : LeftMoves (ofState s) ≃ { t // t ∈ l s } :=
- leftMovesOfStateAux _ _
-#align pgame.left_moves_of_state PGame.leftMovesOfState
+def SetTheory.PGame.leftMovesOfState (s : S) :
+ SetTheory.PGame.LeftMoves (SetTheory.PGame.ofState s) ≃
+ { t // t ∈ SetTheory.PGame.State.l s } :=
+ SetTheory.PGame.leftMovesOfStateAux _ _
+#align pgame.left_moves_of_state SetTheory.PGame.leftMovesOfState
-/
-#print PGame.rightMovesOfStateAux /-
+#print SetTheory.PGame.rightMovesOfStateAux /-
/-- The equivalence between `right_moves` for a `pgame` constructed using `of_state_aux _ s _`, and
`R s`. -/
-def rightMovesOfStateAux (n : ℕ) {s : S} (h : turnBound s ≤ n) :
- RightMoves (ofStateAux n s h) ≃ { t // t ∈ r s } := by induction n <;> rfl
-#align pgame.right_moves_of_state_aux PGame.rightMovesOfStateAux
+def SetTheory.PGame.rightMovesOfStateAux (n : ℕ) {s : S}
+ (h : SetTheory.PGame.State.turnBound s ≤ n) :
+ SetTheory.PGame.RightMoves (SetTheory.PGame.ofStateAux n s h) ≃
+ { t // t ∈ SetTheory.PGame.State.r s } :=
+ by induction n <;> rfl
+#align pgame.right_moves_of_state_aux SetTheory.PGame.rightMovesOfStateAux
-/
-#print PGame.rightMovesOfState /-
+#print SetTheory.PGame.rightMovesOfState /-
/-- The equivalence between `right_moves` for a `pgame` constructed using `of_state s`, and
`R s`. -/
-def rightMovesOfState (s : S) : RightMoves (ofState s) ≃ { t // t ∈ r s } :=
- rightMovesOfStateAux _ _
-#align pgame.right_moves_of_state PGame.rightMovesOfState
+def SetTheory.PGame.rightMovesOfState (s : S) :
+ SetTheory.PGame.RightMoves (SetTheory.PGame.ofState s) ≃
+ { t // t ∈ SetTheory.PGame.State.r s } :=
+ SetTheory.PGame.rightMovesOfStateAux _ _
+#align pgame.right_moves_of_state SetTheory.PGame.rightMovesOfState
-/
-#print PGame.relabellingMoveLeftAux /-
+#print SetTheory.PGame.relabellingMoveLeftAux /-
/-- The relabelling showing `move_left` applied to a game constructed using `of_state_aux`
has itself been constructed using `of_state_aux`.
-/
-def relabellingMoveLeftAux (n : ℕ) {s : S} (h : turnBound s ≤ n)
- (t : LeftMoves (ofStateAux n s h)) :
- Relabelling (moveLeft (ofStateAux n s h) t)
- (ofStateAux (n - 1) ((leftMovesOfStateAux n h) t : S)
- (turnBound_of_left ((leftMovesOfStateAux n h) t).2 (n - 1) (Nat.le_trans h le_tsub_add))) :=
+def SetTheory.PGame.relabellingMoveLeftAux (n : ℕ) {s : S}
+ (h : SetTheory.PGame.State.turnBound s ≤ n)
+ (t : SetTheory.PGame.LeftMoves (SetTheory.PGame.ofStateAux n s h)) :
+ SetTheory.PGame.Relabelling (SetTheory.PGame.moveLeft (SetTheory.PGame.ofStateAux n s h) t)
+ (SetTheory.PGame.ofStateAux (n - 1) ((SetTheory.PGame.leftMovesOfStateAux n h) t : S)
+ (SetTheory.PGame.turnBound_of_left ((SetTheory.PGame.leftMovesOfStateAux n h) t).2 (n - 1)
+ (Nat.le_trans h le_tsub_add))) :=
by
induction n
· have t' := (left_moves_of_state_aux 0 h) t
exfalso; exact turn_bound_ne_zero_of_left_move t'.2 (nonpos_iff_eq_zero.mp h)
· rfl
-#align pgame.relabelling_move_left_aux PGame.relabellingMoveLeftAux
+#align pgame.relabelling_move_left_aux SetTheory.PGame.relabellingMoveLeftAux
-/
-#print PGame.relabellingMoveLeft /-
+#print SetTheory.PGame.relabellingMoveLeft /-
/-- The relabelling showing `move_left` applied to a game constructed using `of`
has itself been constructed using `of`.
-/
-def relabellingMoveLeft (s : S) (t : LeftMoves (ofState s)) :
- Relabelling (moveLeft (ofState s) t) (ofState ((leftMovesOfState s).toFun t : S)) :=
+def SetTheory.PGame.relabellingMoveLeft (s : S)
+ (t : SetTheory.PGame.LeftMoves (SetTheory.PGame.ofState s)) :
+ SetTheory.PGame.Relabelling (SetTheory.PGame.moveLeft (SetTheory.PGame.ofState s) t)
+ (SetTheory.PGame.ofState ((SetTheory.PGame.leftMovesOfState s).toFun t : S)) :=
by
trans
apply relabelling_move_left_aux
apply of_state_aux_relabelling
-#align pgame.relabelling_move_left PGame.relabellingMoveLeft
+#align pgame.relabelling_move_left SetTheory.PGame.relabellingMoveLeft
-/
-#print PGame.relabellingMoveRightAux /-
+#print SetTheory.PGame.relabellingMoveRightAux /-
/-- The relabelling showing `move_right` applied to a game constructed using `of_state_aux`
has itself been constructed using `of_state_aux`.
-/
-def relabellingMoveRightAux (n : ℕ) {s : S} (h : turnBound s ≤ n)
- (t : RightMoves (ofStateAux n s h)) :
- Relabelling (moveRight (ofStateAux n s h) t)
- (ofStateAux (n - 1) ((rightMovesOfStateAux n h) t : S)
- (turnBound_of_right ((rightMovesOfStateAux n h) t).2 (n - 1)
+def SetTheory.PGame.relabellingMoveRightAux (n : ℕ) {s : S}
+ (h : SetTheory.PGame.State.turnBound s ≤ n)
+ (t : SetTheory.PGame.RightMoves (SetTheory.PGame.ofStateAux n s h)) :
+ SetTheory.PGame.Relabelling (SetTheory.PGame.moveRight (SetTheory.PGame.ofStateAux n s h) t)
+ (SetTheory.PGame.ofStateAux (n - 1) ((SetTheory.PGame.rightMovesOfStateAux n h) t : S)
+ (SetTheory.PGame.turnBound_of_right ((SetTheory.PGame.rightMovesOfStateAux n h) t).2 (n - 1)
(Nat.le_trans h le_tsub_add))) :=
by
induction n
· have t' := (right_moves_of_state_aux 0 h) t
exfalso; exact turn_bound_ne_zero_of_right_move t'.2 (nonpos_iff_eq_zero.mp h)
· rfl
-#align pgame.relabelling_move_right_aux PGame.relabellingMoveRightAux
+#align pgame.relabelling_move_right_aux SetTheory.PGame.relabellingMoveRightAux
-/
-#print PGame.relabellingMoveRight /-
+#print SetTheory.PGame.relabellingMoveRight /-
/-- The relabelling showing `move_right` applied to a game constructed using `of`
has itself been constructed using `of`.
-/
-def relabellingMoveRight (s : S) (t : RightMoves (ofState s)) :
- Relabelling (moveRight (ofState s) t) (ofState ((rightMovesOfState s).toFun t : S)) :=
+def SetTheory.PGame.relabellingMoveRight (s : S)
+ (t : SetTheory.PGame.RightMoves (SetTheory.PGame.ofState s)) :
+ SetTheory.PGame.Relabelling (SetTheory.PGame.moveRight (SetTheory.PGame.ofState s) t)
+ (SetTheory.PGame.ofState ((SetTheory.PGame.rightMovesOfState s).toFun t : S)) :=
by
trans
apply relabelling_move_right_aux
apply of_state_aux_relabelling
-#align pgame.relabelling_move_right PGame.relabellingMoveRight
+#align pgame.relabelling_move_right SetTheory.PGame.relabellingMoveRight
-/
-#print PGame.fintypeLeftMovesOfStateAux /-
-instance fintypeLeftMovesOfStateAux (n : ℕ) (s : S) (h : turnBound s ≤ n) :
- Fintype (LeftMoves (ofStateAux n s h)) :=
+#print SetTheory.PGame.fintypeLeftMovesOfStateAux /-
+instance SetTheory.PGame.fintypeLeftMovesOfStateAux (n : ℕ) (s : S)
+ (h : SetTheory.PGame.State.turnBound s ≤ n) :
+ Fintype (SetTheory.PGame.LeftMoves (SetTheory.PGame.ofStateAux n s h)) :=
by
apply Fintype.ofEquiv _ (left_moves_of_state_aux _ _).symm
infer_instance
-#align pgame.fintype_left_moves_of_state_aux PGame.fintypeLeftMovesOfStateAux
+#align pgame.fintype_left_moves_of_state_aux SetTheory.PGame.fintypeLeftMovesOfStateAux
-/
-#print PGame.fintypeRightMovesOfStateAux /-
-instance fintypeRightMovesOfStateAux (n : ℕ) (s : S) (h : turnBound s ≤ n) :
- Fintype (RightMoves (ofStateAux n s h)) :=
+#print SetTheory.PGame.fintypeRightMovesOfStateAux /-
+instance SetTheory.PGame.fintypeRightMovesOfStateAux (n : ℕ) (s : S)
+ (h : SetTheory.PGame.State.turnBound s ≤ n) :
+ Fintype (SetTheory.PGame.RightMoves (SetTheory.PGame.ofStateAux n s h)) :=
by
apply Fintype.ofEquiv _ (right_moves_of_state_aux _ _).symm
infer_instance
-#align pgame.fintype_right_moves_of_state_aux PGame.fintypeRightMovesOfStateAux
+#align pgame.fintype_right_moves_of_state_aux SetTheory.PGame.fintypeRightMovesOfStateAux
-/
-#print PGame.shortOfStateAux /-
-instance shortOfStateAux : ∀ (n : ℕ) {s : S} (h : turnBound s ≤ n), Short (ofStateAux n s h)
+#print SetTheory.PGame.shortOfStateAux /-
+instance SetTheory.PGame.shortOfStateAux :
+ ∀ (n : ℕ) {s : S} (h : SetTheory.PGame.State.turnBound s ≤ n),
+ SetTheory.PGame.Short (SetTheory.PGame.ofStateAux n s h)
| 0, s, h =>
- Short.mk'
+ SetTheory.PGame.Short.mk'
(fun i => by
have i := (left_moves_of_state_aux _ _).toFun i
exfalso
@@ -268,32 +294,34 @@ instance shortOfStateAux : ∀ (n : ℕ) {s : S} (h : turnBound s ≤ n), Short
exfalso
exact turn_bound_ne_zero_of_right_move j.2 (nonpos_iff_eq_zero.mp h)
| n + 1, s, h =>
- Short.mk'
+ SetTheory.PGame.Short.mk'
(fun i =>
- shortOfRelabelling (relabellingMoveLeftAux (n + 1) h i).symm (short_of_state_aux n _))
+ SetTheory.PGame.shortOfRelabelling (SetTheory.PGame.relabellingMoveLeftAux (n + 1) h i).symm
+ (short_of_state_aux n _))
fun j =>
- shortOfRelabelling (relabellingMoveRightAux (n + 1) h j).symm (short_of_state_aux n _)
-#align pgame.short_of_state_aux PGame.shortOfStateAux
+ SetTheory.PGame.shortOfRelabelling (SetTheory.PGame.relabellingMoveRightAux (n + 1) h j).symm
+ (short_of_state_aux n _)
+#align pgame.short_of_state_aux SetTheory.PGame.shortOfStateAux
-/
-#print PGame.shortOfState /-
-instance shortOfState (s : S) : Short (ofState s) :=
+#print SetTheory.PGame.shortOfState /-
+instance SetTheory.PGame.shortOfState (s : S) : SetTheory.PGame.Short (SetTheory.PGame.ofState s) :=
by
- dsimp [PGame.ofState]
+ dsimp [SetTheory.PGame.ofState]
infer_instance
-#align pgame.short_of_state PGame.shortOfState
+#align pgame.short_of_state SetTheory.PGame.shortOfState
-/
-end PGame
+end SetTheory.PGame
-namespace Game
+namespace SetTheory.Game
-#print Game.ofState /-
+#print SetTheory.Game.ofState /-
/-- Construct a combinatorial `game` from a state. -/
-def ofState {S : Type u} [PGame.State S] (s : S) : Game :=
- ⟦PGame.ofState s⟧
-#align game.of_state Game.ofState
+def SetTheory.Game.ofState {S : Type u} [SetTheory.PGame.State S] (s : S) : SetTheory.Game :=
+ ⟦SetTheory.PGame.ofState s⟧
+#align game.of_state SetTheory.Game.ofState
-/
-end Game
+end SetTheory.Game
mathlib commit https://github.com/leanprover-community/mathlib/commit/8ea5598db6caeddde6cb734aa179cc2408dbd345
@@ -2,14 +2,11 @@
Copyright (c) 2019 Scott Morrison. All rights reserved.
Released under Apache 2.0 license as described in the file LICENSE.
Authors: Scott Morrison
-
-! This file was ported from Lean 3 source module set_theory.game.state
-! leanprover-community/mathlib commit 728ef9dbb281241906f25cbeb30f90d83e0bb451
-! Please do not edit these lines, except to modify the commit id
-! if you have ported upstream changes.
-/
import Mathbin.SetTheory.Game.Short
+#align_import set_theory.game.state from "leanprover-community/mathlib"@"728ef9dbb281241906f25cbeb30f90d83e0bb451"
+
/-!
# Games described via "the state of the board".
mathlib commit https://github.com/leanprover-community/mathlib/commit/728ef9dbb281241906f25cbeb30f90d83e0bb451
@@ -4,7 +4,7 @@ Released under Apache 2.0 license as described in the file LICENSE.
Authors: Scott Morrison
! This file was ported from Lean 3 source module set_theory.game.state
-! leanprover-community/mathlib commit b134b2f5cf6dd25d4bbfd3c498b6e36c11a17225
+! leanprover-community/mathlib commit 728ef9dbb281241906f25cbeb30f90d83e0bb451
! Please do not edit these lines, except to modify the commit id
! if you have ported upstream changes.
-/
@@ -13,6 +13,9 @@ import Mathbin.SetTheory.Game.Short
/-!
# Games described via "the state of the board".
+> THIS FILE IS SYNCHRONIZED WITH MATHLIB4.
+> Any changes to this file require a corresponding PR to mathlib4.
+
We provide a simple mechanism for constructing combinatorial (pre-)games, by describing
"the state of the board", and providing an upper bound on the number of turns remaining.
mathlib commit https://github.com/leanprover-community/mathlib/commit/9240e8be927a0955b9a82c6c85ef499ee3a626b8
@@ -31,6 +31,7 @@ universe u
namespace PGame
+#print PGame.State /-
/-- `pgame_state S` describes how to interpret `s : S` as a state of a combinatorial game.
Use `pgame.of_state s` or `game.of_state s` to construct the game.
@@ -45,11 +46,13 @@ class State (S : Type u) where
left_bound : ∀ {s t : S} (m : t ∈ L s), turn_bound t < turn_bound s
right_bound : ∀ {s t : S} (m : t ∈ R s), turn_bound t < turn_bound s
#align pgame.state PGame.State
+-/
open StateM
variable {S : Type u} [State S]
+#print PGame.turnBound_ne_zero_of_left_move /-
theorem turnBound_ne_zero_of_left_move {s t : S} (m : t ∈ l s) : turnBound s ≠ 0 :=
by
intro h
@@ -57,7 +60,9 @@ theorem turnBound_ne_zero_of_left_move {s t : S} (m : t ∈ l s) : turnBound s
rw [h] at t
exact Nat.not_succ_le_zero _ t
#align pgame.turn_bound_ne_zero_of_left_move PGame.turnBound_ne_zero_of_left_move
+-/
+#print PGame.turnBound_ne_zero_of_right_move /-
theorem turnBound_ne_zero_of_right_move {s t : S} (m : t ∈ r s) : turnBound s ≠ 0 :=
by
intro h
@@ -65,17 +70,23 @@ theorem turnBound_ne_zero_of_right_move {s t : S} (m : t ∈ r s) : turnBound s
rw [h] at t
exact Nat.not_succ_le_zero _ t
#align pgame.turn_bound_ne_zero_of_right_move PGame.turnBound_ne_zero_of_right_move
+-/
+#print PGame.turnBound_of_left /-
theorem turnBound_of_left {s t : S} (m : t ∈ l s) (n : ℕ) (h : turnBound s ≤ n + 1) :
turnBound t ≤ n :=
Nat.le_of_lt_succ (Nat.lt_of_lt_of_le (left_bound m) h)
#align pgame.turn_bound_of_left PGame.turnBound_of_left
+-/
+#print PGame.turnBound_of_right /-
theorem turnBound_of_right {s t : S} (m : t ∈ r s) (n : ℕ) (h : turnBound s ≤ n + 1) :
turnBound t ≤ n :=
Nat.le_of_lt_succ (Nat.lt_of_lt_of_le (right_bound m) h)
#align pgame.turn_bound_of_right PGame.turnBound_of_right
+-/
+#print PGame.ofStateAux /-
/-- Construct a `pgame` from a state and a (not necessarily optimal) bound on the number of
turns remaining.
-/
@@ -89,7 +100,9 @@ def ofStateAux : ∀ (n : ℕ) (s : S) (h : turnBound s ≤ n), PGame
(fun t => of_state_aux n t (turnBound_of_left t.2 n h)) fun t =>
of_state_aux n t (turnBound_of_right t.2 n h)
#align pgame.of_state_aux PGame.ofStateAux
+-/
+#print PGame.ofStateAuxRelabelling /-
/-- Two different (valid) turn bounds give equivalent games. -/
def ofStateAuxRelabelling :
∀ (s : S) (n m : ℕ) (hn : turnBound s ≤ n) (hm : turnBound s ≤ m),
@@ -123,35 +136,47 @@ def ofStateAuxRelabelling :
· intro j
apply of_state_aux_relabelling
#align pgame.of_state_aux_relabelling PGame.ofStateAuxRelabelling
+-/
+#print PGame.ofState /-
/-- Construct a combinatorial `pgame` from a state. -/
def ofState (s : S) : PGame :=
ofStateAux (turnBound s) s (refl _)
#align pgame.of_state PGame.ofState
+-/
+#print PGame.leftMovesOfStateAux /-
/-- The equivalence between `left_moves` for a `pgame` constructed using `of_state_aux _ s _`, and
`L s`. -/
def leftMovesOfStateAux (n : ℕ) {s : S} (h : turnBound s ≤ n) :
LeftMoves (ofStateAux n s h) ≃ { t // t ∈ l s } := by induction n <;> rfl
#align pgame.left_moves_of_state_aux PGame.leftMovesOfStateAux
+-/
+#print PGame.leftMovesOfState /-
/-- The equivalence between `left_moves` for a `pgame` constructed using `of_state s`, and `L s`. -/
def leftMovesOfState (s : S) : LeftMoves (ofState s) ≃ { t // t ∈ l s } :=
leftMovesOfStateAux _ _
#align pgame.left_moves_of_state PGame.leftMovesOfState
+-/
+#print PGame.rightMovesOfStateAux /-
/-- The equivalence between `right_moves` for a `pgame` constructed using `of_state_aux _ s _`, and
`R s`. -/
def rightMovesOfStateAux (n : ℕ) {s : S} (h : turnBound s ≤ n) :
RightMoves (ofStateAux n s h) ≃ { t // t ∈ r s } := by induction n <;> rfl
#align pgame.right_moves_of_state_aux PGame.rightMovesOfStateAux
+-/
+#print PGame.rightMovesOfState /-
/-- The equivalence between `right_moves` for a `pgame` constructed using `of_state s`, and
`R s`. -/
def rightMovesOfState (s : S) : RightMoves (ofState s) ≃ { t // t ∈ r s } :=
rightMovesOfStateAux _ _
#align pgame.right_moves_of_state PGame.rightMovesOfState
+-/
+#print PGame.relabellingMoveLeftAux /-
/-- The relabelling showing `move_left` applied to a game constructed using `of_state_aux`
has itself been constructed using `of_state_aux`.
-/
@@ -166,7 +191,9 @@ def relabellingMoveLeftAux (n : ℕ) {s : S} (h : turnBound s ≤ n)
exfalso; exact turn_bound_ne_zero_of_left_move t'.2 (nonpos_iff_eq_zero.mp h)
· rfl
#align pgame.relabelling_move_left_aux PGame.relabellingMoveLeftAux
+-/
+#print PGame.relabellingMoveLeft /-
/-- The relabelling showing `move_left` applied to a game constructed using `of`
has itself been constructed using `of`.
-/
@@ -177,7 +204,9 @@ def relabellingMoveLeft (s : S) (t : LeftMoves (ofState s)) :
apply relabelling_move_left_aux
apply of_state_aux_relabelling
#align pgame.relabelling_move_left PGame.relabellingMoveLeft
+-/
+#print PGame.relabellingMoveRightAux /-
/-- The relabelling showing `move_right` applied to a game constructed using `of_state_aux`
has itself been constructed using `of_state_aux`.
-/
@@ -193,7 +222,9 @@ def relabellingMoveRightAux (n : ℕ) {s : S} (h : turnBound s ≤ n)
exfalso; exact turn_bound_ne_zero_of_right_move t'.2 (nonpos_iff_eq_zero.mp h)
· rfl
#align pgame.relabelling_move_right_aux PGame.relabellingMoveRightAux
+-/
+#print PGame.relabellingMoveRight /-
/-- The relabelling showing `move_right` applied to a game constructed using `of`
has itself been constructed using `of`.
-/
@@ -204,21 +235,27 @@ def relabellingMoveRight (s : S) (t : RightMoves (ofState s)) :
apply relabelling_move_right_aux
apply of_state_aux_relabelling
#align pgame.relabelling_move_right PGame.relabellingMoveRight
+-/
+#print PGame.fintypeLeftMovesOfStateAux /-
instance fintypeLeftMovesOfStateAux (n : ℕ) (s : S) (h : turnBound s ≤ n) :
Fintype (LeftMoves (ofStateAux n s h)) :=
by
apply Fintype.ofEquiv _ (left_moves_of_state_aux _ _).symm
infer_instance
#align pgame.fintype_left_moves_of_state_aux PGame.fintypeLeftMovesOfStateAux
+-/
+#print PGame.fintypeRightMovesOfStateAux /-
instance fintypeRightMovesOfStateAux (n : ℕ) (s : S) (h : turnBound s ≤ n) :
Fintype (RightMoves (ofStateAux n s h)) :=
by
apply Fintype.ofEquiv _ (right_moves_of_state_aux _ _).symm
infer_instance
#align pgame.fintype_right_moves_of_state_aux PGame.fintypeRightMovesOfStateAux
+-/
+#print PGame.shortOfStateAux /-
instance shortOfStateAux : ∀ (n : ℕ) {s : S} (h : turnBound s ≤ n), Short (ofStateAux n s h)
| 0, s, h =>
Short.mk'
@@ -237,21 +274,26 @@ instance shortOfStateAux : ∀ (n : ℕ) {s : S} (h : turnBound s ≤ n), Short
fun j =>
shortOfRelabelling (relabellingMoveRightAux (n + 1) h j).symm (short_of_state_aux n _)
#align pgame.short_of_state_aux PGame.shortOfStateAux
+-/
+#print PGame.shortOfState /-
instance shortOfState (s : S) : Short (ofState s) :=
by
dsimp [PGame.ofState]
infer_instance
#align pgame.short_of_state PGame.shortOfState
+-/
end PGame
namespace Game
+#print Game.ofState /-
/-- Construct a combinatorial `game` from a state. -/
def ofState {S : Type u} [PGame.State S] (s : S) : Game :=
⟦PGame.ofState s⟧
#align game.of_state Game.ofState
+-/
end Game
mathlib commit https://github.com/leanprover-community/mathlib/commit/cca40788df1b8755d5baf17ab2f27dacc2e17acb
@@ -54,7 +54,7 @@ theorem turnBound_ne_zero_of_left_move {s t : S} (m : t ∈ l s) : turnBound s
by
intro h
have t := state.left_bound m
- rw [h] at t
+ rw [h] at t
exact Nat.not_succ_le_zero _ t
#align pgame.turn_bound_ne_zero_of_left_move PGame.turnBound_ne_zero_of_left_move
@@ -62,7 +62,7 @@ theorem turnBound_ne_zero_of_right_move {s t : S} (m : t ∈ r s) : turnBound s
by
intro h
have t := state.right_bound m
- rw [h] at t
+ rw [h] at t
exact Nat.not_succ_le_zero _ t
#align pgame.turn_bound_ne_zero_of_right_move PGame.turnBound_ne_zero_of_right_move
@@ -97,23 +97,23 @@ def ofStateAuxRelabelling :
| s, 0, 0, hn, hm => by
dsimp [PGame.ofStateAux]
fconstructor; rfl; rfl
- · intro i; dsimp at i; exfalso
+ · intro i; dsimp at i ; exfalso
exact turn_bound_ne_zero_of_left_move i.2 (nonpos_iff_eq_zero.mp hn)
- · intro j; dsimp at j; exfalso
+ · intro j; dsimp at j ; exfalso
exact turn_bound_ne_zero_of_right_move j.2 (nonpos_iff_eq_zero.mp hm)
| s, 0, m + 1, hn, hm => by
dsimp [PGame.ofStateAux]
fconstructor; rfl; rfl
- · intro i; dsimp at i; exfalso
+ · intro i; dsimp at i ; exfalso
exact turn_bound_ne_zero_of_left_move i.2 (nonpos_iff_eq_zero.mp hn)
- · intro j; dsimp at j; exfalso
+ · intro j; dsimp at j ; exfalso
exact turn_bound_ne_zero_of_right_move j.2 (nonpos_iff_eq_zero.mp hn)
| s, n + 1, 0, hn, hm => by
dsimp [PGame.ofStateAux]
fconstructor; rfl; rfl
- · intro i; dsimp at i; exfalso
+ · intro i; dsimp at i ; exfalso
exact turn_bound_ne_zero_of_left_move i.2 (nonpos_iff_eq_zero.mp hm)
- · intro j; dsimp at j; exfalso
+ · intro j; dsimp at j ; exfalso
exact turn_bound_ne_zero_of_right_move j.2 (nonpos_iff_eq_zero.mp hm)
| s, n + 1, m + 1, hn, hm => by
dsimp [PGame.ofStateAux]
mathlib commit https://github.com/leanprover-community/mathlib/commit/917c3c072e487b3cccdbfeff17e75b40e45f66cb
@@ -97,35 +97,23 @@ def ofStateAuxRelabelling :
| s, 0, 0, hn, hm => by
dsimp [PGame.ofStateAux]
fconstructor; rfl; rfl
- · intro i
- dsimp at i
- exfalso
+ · intro i; dsimp at i; exfalso
exact turn_bound_ne_zero_of_left_move i.2 (nonpos_iff_eq_zero.mp hn)
- · intro j
- dsimp at j
- exfalso
+ · intro j; dsimp at j; exfalso
exact turn_bound_ne_zero_of_right_move j.2 (nonpos_iff_eq_zero.mp hm)
| s, 0, m + 1, hn, hm => by
dsimp [PGame.ofStateAux]
fconstructor; rfl; rfl
- · intro i
- dsimp at i
- exfalso
+ · intro i; dsimp at i; exfalso
exact turn_bound_ne_zero_of_left_move i.2 (nonpos_iff_eq_zero.mp hn)
- · intro j
- dsimp at j
- exfalso
+ · intro j; dsimp at j; exfalso
exact turn_bound_ne_zero_of_right_move j.2 (nonpos_iff_eq_zero.mp hn)
| s, n + 1, 0, hn, hm => by
dsimp [PGame.ofStateAux]
fconstructor; rfl; rfl
- · intro i
- dsimp at i
- exfalso
+ · intro i; dsimp at i; exfalso
exact turn_bound_ne_zero_of_left_move i.2 (nonpos_iff_eq_zero.mp hm)
- · intro j
- dsimp at j
- exfalso
+ · intro j; dsimp at j; exfalso
exact turn_bound_ne_zero_of_right_move j.2 (nonpos_iff_eq_zero.mp hm)
| s, n + 1, m + 1, hn, hm => by
dsimp [PGame.ofStateAux]
@@ -175,8 +163,7 @@ def relabellingMoveLeftAux (n : ℕ) {s : S} (h : turnBound s ≤ n)
by
induction n
· have t' := (left_moves_of_state_aux 0 h) t
- exfalso
- exact turn_bound_ne_zero_of_left_move t'.2 (nonpos_iff_eq_zero.mp h)
+ exfalso; exact turn_bound_ne_zero_of_left_move t'.2 (nonpos_iff_eq_zero.mp h)
· rfl
#align pgame.relabelling_move_left_aux PGame.relabellingMoveLeftAux
@@ -203,8 +190,7 @@ def relabellingMoveRightAux (n : ℕ) {s : S} (h : turnBound s ≤ n)
by
induction n
· have t' := (right_moves_of_state_aux 0 h) t
- exfalso
- exact turn_bound_ne_zero_of_right_move t'.2 (nonpos_iff_eq_zero.mp h)
+ exfalso; exact turn_bound_ne_zero_of_right_move t'.2 (nonpos_iff_eq_zero.mp h)
· rfl
#align pgame.relabelling_move_right_aux PGame.relabellingMoveRightAux
mathlib commit https://github.com/leanprover-community/mathlib/commit/95a87616d63b3cb49d3fe678d416fbe9c4217bf4
@@ -29,7 +29,7 @@ See `set_theory/game/domineering` for an example using this construction.
universe u
-namespace Pgame
+namespace PGame
/-- `pgame_state S` describes how to interpret `s : S` as a state of a combinatorial game.
Use `pgame.of_state s` or `game.of_state s` to construct the game.
@@ -44,7 +44,7 @@ class State (S : Type u) where
r : S → Finset S
left_bound : ∀ {s t : S} (m : t ∈ L s), turn_bound t < turn_bound s
right_bound : ∀ {s t : S} (m : t ∈ R s), turn_bound t < turn_bound s
-#align pgame.state Pgame.State
+#align pgame.state PGame.State
open StateM
@@ -56,7 +56,7 @@ theorem turnBound_ne_zero_of_left_move {s t : S} (m : t ∈ l s) : turnBound s
have t := state.left_bound m
rw [h] at t
exact Nat.not_succ_le_zero _ t
-#align pgame.turn_bound_ne_zero_of_left_move Pgame.turnBound_ne_zero_of_left_move
+#align pgame.turn_bound_ne_zero_of_left_move PGame.turnBound_ne_zero_of_left_move
theorem turnBound_ne_zero_of_right_move {s t : S} (m : t ∈ r s) : turnBound s ≠ 0 :=
by
@@ -64,38 +64,38 @@ theorem turnBound_ne_zero_of_right_move {s t : S} (m : t ∈ r s) : turnBound s
have t := state.right_bound m
rw [h] at t
exact Nat.not_succ_le_zero _ t
-#align pgame.turn_bound_ne_zero_of_right_move Pgame.turnBound_ne_zero_of_right_move
+#align pgame.turn_bound_ne_zero_of_right_move PGame.turnBound_ne_zero_of_right_move
theorem turnBound_of_left {s t : S} (m : t ∈ l s) (n : ℕ) (h : turnBound s ≤ n + 1) :
turnBound t ≤ n :=
Nat.le_of_lt_succ (Nat.lt_of_lt_of_le (left_bound m) h)
-#align pgame.turn_bound_of_left Pgame.turnBound_of_left
+#align pgame.turn_bound_of_left PGame.turnBound_of_left
theorem turnBound_of_right {s t : S} (m : t ∈ r s) (n : ℕ) (h : turnBound s ≤ n + 1) :
turnBound t ≤ n :=
Nat.le_of_lt_succ (Nat.lt_of_lt_of_le (right_bound m) h)
-#align pgame.turn_bound_of_right Pgame.turnBound_of_right
+#align pgame.turn_bound_of_right PGame.turnBound_of_right
/-- Construct a `pgame` from a state and a (not necessarily optimal) bound on the number of
turns remaining.
-/
-def ofStateAux : ∀ (n : ℕ) (s : S) (h : turnBound s ≤ n), Pgame
+def ofStateAux : ∀ (n : ℕ) (s : S) (h : turnBound s ≤ n), PGame
| 0, s, h =>
- Pgame.mk { t // t ∈ l s } { t // t ∈ r s }
+ PGame.mk { t // t ∈ l s } { t // t ∈ r s }
(fun t => by exfalso; exact turn_bound_ne_zero_of_left_move t.2 (nonpos_iff_eq_zero.mp h))
fun t => by exfalso; exact turn_bound_ne_zero_of_right_move t.2 (nonpos_iff_eq_zero.mp h)
| n + 1, s, h =>
- Pgame.mk { t // t ∈ l s } { t // t ∈ r s }
+ PGame.mk { t // t ∈ l s } { t // t ∈ r s }
(fun t => of_state_aux n t (turnBound_of_left t.2 n h)) fun t =>
of_state_aux n t (turnBound_of_right t.2 n h)
-#align pgame.of_state_aux Pgame.ofStateAux
+#align pgame.of_state_aux PGame.ofStateAux
/-- Two different (valid) turn bounds give equivalent games. -/
def ofStateAuxRelabelling :
∀ (s : S) (n m : ℕ) (hn : turnBound s ≤ n) (hm : turnBound s ≤ m),
Relabelling (ofStateAux n s hn) (ofStateAux m s hm)
| s, 0, 0, hn, hm => by
- dsimp [Pgame.ofStateAux]
+ dsimp [PGame.ofStateAux]
fconstructor; rfl; rfl
· intro i
dsimp at i
@@ -106,7 +106,7 @@ def ofStateAuxRelabelling :
exfalso
exact turn_bound_ne_zero_of_right_move j.2 (nonpos_iff_eq_zero.mp hm)
| s, 0, m + 1, hn, hm => by
- dsimp [Pgame.ofStateAux]
+ dsimp [PGame.ofStateAux]
fconstructor; rfl; rfl
· intro i
dsimp at i
@@ -117,7 +117,7 @@ def ofStateAuxRelabelling :
exfalso
exact turn_bound_ne_zero_of_right_move j.2 (nonpos_iff_eq_zero.mp hn)
| s, n + 1, 0, hn, hm => by
- dsimp [Pgame.ofStateAux]
+ dsimp [PGame.ofStateAux]
fconstructor; rfl; rfl
· intro i
dsimp at i
@@ -128,41 +128,41 @@ def ofStateAuxRelabelling :
exfalso
exact turn_bound_ne_zero_of_right_move j.2 (nonpos_iff_eq_zero.mp hm)
| s, n + 1, m + 1, hn, hm => by
- dsimp [Pgame.ofStateAux]
+ dsimp [PGame.ofStateAux]
fconstructor; rfl; rfl
· intro i
apply of_state_aux_relabelling
· intro j
apply of_state_aux_relabelling
-#align pgame.of_state_aux_relabelling Pgame.ofStateAuxRelabelling
+#align pgame.of_state_aux_relabelling PGame.ofStateAuxRelabelling
/-- Construct a combinatorial `pgame` from a state. -/
-def ofState (s : S) : Pgame :=
+def ofState (s : S) : PGame :=
ofStateAux (turnBound s) s (refl _)
-#align pgame.of_state Pgame.ofState
+#align pgame.of_state PGame.ofState
/-- The equivalence between `left_moves` for a `pgame` constructed using `of_state_aux _ s _`, and
`L s`. -/
def leftMovesOfStateAux (n : ℕ) {s : S} (h : turnBound s ≤ n) :
LeftMoves (ofStateAux n s h) ≃ { t // t ∈ l s } := by induction n <;> rfl
-#align pgame.left_moves_of_state_aux Pgame.leftMovesOfStateAux
+#align pgame.left_moves_of_state_aux PGame.leftMovesOfStateAux
/-- The equivalence between `left_moves` for a `pgame` constructed using `of_state s`, and `L s`. -/
def leftMovesOfState (s : S) : LeftMoves (ofState s) ≃ { t // t ∈ l s } :=
leftMovesOfStateAux _ _
-#align pgame.left_moves_of_state Pgame.leftMovesOfState
+#align pgame.left_moves_of_state PGame.leftMovesOfState
/-- The equivalence between `right_moves` for a `pgame` constructed using `of_state_aux _ s _`, and
`R s`. -/
def rightMovesOfStateAux (n : ℕ) {s : S} (h : turnBound s ≤ n) :
RightMoves (ofStateAux n s h) ≃ { t // t ∈ r s } := by induction n <;> rfl
-#align pgame.right_moves_of_state_aux Pgame.rightMovesOfStateAux
+#align pgame.right_moves_of_state_aux PGame.rightMovesOfStateAux
/-- The equivalence between `right_moves` for a `pgame` constructed using `of_state s`, and
`R s`. -/
def rightMovesOfState (s : S) : RightMoves (ofState s) ≃ { t // t ∈ r s } :=
rightMovesOfStateAux _ _
-#align pgame.right_moves_of_state Pgame.rightMovesOfState
+#align pgame.right_moves_of_state PGame.rightMovesOfState
/-- The relabelling showing `move_left` applied to a game constructed using `of_state_aux`
has itself been constructed using `of_state_aux`.
@@ -178,7 +178,7 @@ def relabellingMoveLeftAux (n : ℕ) {s : S} (h : turnBound s ≤ n)
exfalso
exact turn_bound_ne_zero_of_left_move t'.2 (nonpos_iff_eq_zero.mp h)
· rfl
-#align pgame.relabelling_move_left_aux Pgame.relabellingMoveLeftAux
+#align pgame.relabelling_move_left_aux PGame.relabellingMoveLeftAux
/-- The relabelling showing `move_left` applied to a game constructed using `of`
has itself been constructed using `of`.
@@ -189,7 +189,7 @@ def relabellingMoveLeft (s : S) (t : LeftMoves (ofState s)) :
trans
apply relabelling_move_left_aux
apply of_state_aux_relabelling
-#align pgame.relabelling_move_left Pgame.relabellingMoveLeft
+#align pgame.relabelling_move_left PGame.relabellingMoveLeft
/-- The relabelling showing `move_right` applied to a game constructed using `of_state_aux`
has itself been constructed using `of_state_aux`.
@@ -206,7 +206,7 @@ def relabellingMoveRightAux (n : ℕ) {s : S} (h : turnBound s ≤ n)
exfalso
exact turn_bound_ne_zero_of_right_move t'.2 (nonpos_iff_eq_zero.mp h)
· rfl
-#align pgame.relabelling_move_right_aux Pgame.relabellingMoveRightAux
+#align pgame.relabelling_move_right_aux PGame.relabellingMoveRightAux
/-- The relabelling showing `move_right` applied to a game constructed using `of`
has itself been constructed using `of`.
@@ -217,21 +217,21 @@ def relabellingMoveRight (s : S) (t : RightMoves (ofState s)) :
trans
apply relabelling_move_right_aux
apply of_state_aux_relabelling
-#align pgame.relabelling_move_right Pgame.relabellingMoveRight
+#align pgame.relabelling_move_right PGame.relabellingMoveRight
instance fintypeLeftMovesOfStateAux (n : ℕ) (s : S) (h : turnBound s ≤ n) :
Fintype (LeftMoves (ofStateAux n s h)) :=
by
apply Fintype.ofEquiv _ (left_moves_of_state_aux _ _).symm
infer_instance
-#align pgame.fintype_left_moves_of_state_aux Pgame.fintypeLeftMovesOfStateAux
+#align pgame.fintype_left_moves_of_state_aux PGame.fintypeLeftMovesOfStateAux
instance fintypeRightMovesOfStateAux (n : ℕ) (s : S) (h : turnBound s ≤ n) :
Fintype (RightMoves (ofStateAux n s h)) :=
by
apply Fintype.ofEquiv _ (right_moves_of_state_aux _ _).symm
infer_instance
-#align pgame.fintype_right_moves_of_state_aux Pgame.fintypeRightMovesOfStateAux
+#align pgame.fintype_right_moves_of_state_aux PGame.fintypeRightMovesOfStateAux
instance shortOfStateAux : ∀ (n : ℕ) {s : S} (h : turnBound s ≤ n), Short (ofStateAux n s h)
| 0, s, h =>
@@ -250,21 +250,21 @@ instance shortOfStateAux : ∀ (n : ℕ) {s : S} (h : turnBound s ≤ n), Short
shortOfRelabelling (relabellingMoveLeftAux (n + 1) h i).symm (short_of_state_aux n _))
fun j =>
shortOfRelabelling (relabellingMoveRightAux (n + 1) h j).symm (short_of_state_aux n _)
-#align pgame.short_of_state_aux Pgame.shortOfStateAux
+#align pgame.short_of_state_aux PGame.shortOfStateAux
instance shortOfState (s : S) : Short (ofState s) :=
by
- dsimp [Pgame.ofState]
+ dsimp [PGame.ofState]
infer_instance
-#align pgame.short_of_state Pgame.shortOfState
+#align pgame.short_of_state PGame.shortOfState
-end Pgame
+end PGame
namespace Game
/-- Construct a combinatorial `game` from a state. -/
-def ofState {S : Type u} [Pgame.State S] (s : S) : Game :=
- ⟦Pgame.ofState s⟧
+def ofState {S : Type u} [PGame.State S] (s : S) : Game :=
+ ⟦PGame.ofState s⟧
#align game.of_state Game.ofState
end Game
mathlib commit https://github.com/leanprover-community/mathlib/commit/bd9851ca476957ea4549eb19b40e7b5ade9428cc
Game
to SetTheory.Game
(#6365)
move Game
and PGame
into namespace SetTheory
as _root_.Game
might collide with other definitions (e.g. in projects depending on mathlib)
@@ -25,14 +25,15 @@ See `SetTheory/Game/Domineering` for an example using this construction.
universe u
+namespace SetTheory
namespace PGame
-/-- `PGame.State S` describes how to interpret `s : S` as a state of a combinatorial game.
-Use `PGame.ofState s` or `Game.ofState s` to construct the game.
+/-- `SetTheory.PGame.State S` describes how to interpret `s : S` as a state of a combinatorial game.
+Use `SetTheory.PGame.ofState s` or `SetTheory.Game.ofState s` to construct the game.
-`PGame.State.l : S → Finset S` and `PGame.State.r : S → Finset S` describe the states reachable
-by a move by Left or Right. `PGame.State.turnBound : S → ℕ` gives an upper bound on the number of
-possible turns remaining from this state.
+`SetTheory.PGame.State.l : S → Finset S` and `SetTheory.PGame.State.r : S → Finset S` describe
+the states reachable by a move by Left or Right. `SetTheory.PGame.State.turnBound : S → ℕ`
+gives an upper bound on the number of possible turns remaining from this state.
-/
class State (S : Type u) where
turnBound : S → ℕ
@@ -40,7 +41,7 @@ class State (S : Type u) where
r : S → Finset S
left_bound : ∀ {s t : S}, t ∈ l s → turnBound t < turnBound s
right_bound : ∀ {s t : S}, t ∈ r s → turnBound t < turnBound s
-#align pgame.state PGame.State
+#align pgame.state SetTheory.PGame.State
open State
@@ -51,24 +52,24 @@ theorem turnBound_ne_zero_of_left_move {s t : S} (m : t ∈ l s) : turnBound s
have t := left_bound m
rw [h] at t
exact Nat.not_succ_le_zero _ t
-#align pgame.turn_bound_ne_zero_of_left_move PGame.turnBound_ne_zero_of_left_move
+#align pgame.turn_bound_ne_zero_of_left_move SetTheory.PGame.turnBound_ne_zero_of_left_move
theorem turnBound_ne_zero_of_right_move {s t : S} (m : t ∈ r s) : turnBound s ≠ 0 := by
intro h
have t := right_bound m
rw [h] at t
exact Nat.not_succ_le_zero _ t
-#align pgame.turn_bound_ne_zero_of_right_move PGame.turnBound_ne_zero_of_right_move
+#align pgame.turn_bound_ne_zero_of_right_move SetTheory.PGame.turnBound_ne_zero_of_right_move
theorem turnBound_of_left {s t : S} (m : t ∈ l s) (n : ℕ) (h : turnBound s ≤ n + 1) :
turnBound t ≤ n :=
Nat.le_of_lt_succ (Nat.lt_of_lt_of_le (left_bound m) h)
-#align pgame.turn_bound_of_left PGame.turnBound_of_left
+#align pgame.turn_bound_of_left SetTheory.PGame.turnBound_of_left
theorem turnBound_of_right {s t : S} (m : t ∈ r s) (n : ℕ) (h : turnBound s ≤ n + 1) :
turnBound t ≤ n :=
Nat.le_of_lt_succ (Nat.lt_of_lt_of_le (right_bound m) h)
-#align pgame.turn_bound_of_right PGame.turnBound_of_right
+#align pgame.turn_bound_of_right SetTheory.PGame.turnBound_of_right
/-- Construct a `PGame` from a state and a (not necessarily optimal) bound on the number of
turns remaining.
@@ -82,7 +83,7 @@ def ofStateAux : ∀ (n : ℕ) (s : S), turnBound s ≤ n → PGame
PGame.mk { t // t ∈ l s } { t // t ∈ r s }
(fun t => ofStateAux n t (turnBound_of_left t.2 n h)) fun t =>
ofStateAux n t (turnBound_of_right t.2 n h)
-#align pgame.of_state_aux PGame.ofStateAux
+#align pgame.of_state_aux SetTheory.PGame.ofStateAux
/-- Two different (valid) turn bounds give equivalent games. -/
def ofStateAuxRelabelling :
@@ -116,35 +117,35 @@ def ofStateAuxRelabelling :
apply ofStateAuxRelabelling
· intro j
apply ofStateAuxRelabelling
-#align pgame.of_state_aux_relabelling PGame.ofStateAuxRelabelling
+#align pgame.of_state_aux_relabelling SetTheory.PGame.ofStateAuxRelabelling
/-- Construct a combinatorial `PGame` from a state. -/
def ofState (s : S) : PGame :=
ofStateAux (turnBound s) s (refl _)
-#align pgame.of_state PGame.ofState
+#align pgame.of_state SetTheory.PGame.ofState
/-- The equivalence between `leftMoves` for a `PGame` constructed using `ofStateAux _ s _`, and
`L s`. -/
def leftMovesOfStateAux (n : ℕ) {s : S} (h : turnBound s ≤ n) :
LeftMoves (ofStateAux n s h) ≃ { t // t ∈ l s } := by induction n <;> rfl
-#align pgame.left_moves_of_state_aux PGame.leftMovesOfStateAux
+#align pgame.left_moves_of_state_aux SetTheory.PGame.leftMovesOfStateAux
/-- The equivalence between `leftMoves` for a `PGame` constructed using `ofState s`, and `l s`. -/
def leftMovesOfState (s : S) : LeftMoves (ofState s) ≃ { t // t ∈ l s } :=
leftMovesOfStateAux _ _
-#align pgame.left_moves_of_state PGame.leftMovesOfState
+#align pgame.left_moves_of_state SetTheory.PGame.leftMovesOfState
/-- The equivalence between `rightMoves` for a `PGame` constructed using `ofStateAux _ s _`, and
`R s`. -/
def rightMovesOfStateAux (n : ℕ) {s : S} (h : turnBound s ≤ n) :
RightMoves (ofStateAux n s h) ≃ { t // t ∈ r s } := by induction n <;> rfl
-#align pgame.right_moves_of_state_aux PGame.rightMovesOfStateAux
+#align pgame.right_moves_of_state_aux SetTheory.PGame.rightMovesOfStateAux
/-- The equivalence between `rightMoves` for a `PGame` constructed using `ofState s`, and
`R s`. -/
def rightMovesOfState (s : S) : RightMoves (ofState s) ≃ { t // t ∈ r s } :=
rightMovesOfStateAux _ _
-#align pgame.right_moves_of_state PGame.rightMovesOfState
+#align pgame.right_moves_of_state SetTheory.PGame.rightMovesOfState
/-- The relabelling showing `moveLeft` applied to a game constructed using `ofStateAux`
has itself been constructed using `ofStateAux`.
@@ -159,7 +160,7 @@ def relabellingMoveLeftAux (n : ℕ) {s : S} (h : turnBound s ≤ n)
· have t' := (leftMovesOfStateAux 0 h) t
exfalso; exact turnBound_ne_zero_of_left_move t'.2 (nonpos_iff_eq_zero.mp h)
· rfl
-#align pgame.relabelling_move_left_aux PGame.relabellingMoveLeftAux
+#align pgame.relabelling_move_left_aux SetTheory.PGame.relabellingMoveLeftAux
/-- The relabelling showing `moveLeft` applied to a game constructed using `of`
has itself been constructed using `of`.
@@ -169,7 +170,7 @@ def relabellingMoveLeft (s : S) (t : LeftMoves (ofState s)) :
trans
apply relabellingMoveLeftAux
apply ofStateAuxRelabelling
-#align pgame.relabelling_move_left PGame.relabellingMoveLeft
+#align pgame.relabelling_move_left SetTheory.PGame.relabellingMoveLeft
/-- The relabelling showing `moveRight` applied to a game constructed using `ofStateAux`
has itself been constructed using `ofStateAux`.
@@ -184,7 +185,7 @@ def relabellingMoveRightAux (n : ℕ) {s : S} (h : turnBound s ≤ n)
· have t' := (rightMovesOfStateAux 0 h) t
exfalso; exact turnBound_ne_zero_of_right_move t'.2 (nonpos_iff_eq_zero.mp h)
· rfl
-#align pgame.relabelling_move_right_aux PGame.relabellingMoveRightAux
+#align pgame.relabelling_move_right_aux SetTheory.PGame.relabellingMoveRightAux
/-- The relabelling showing `moveRight` applied to a game constructed using `of`
has itself been constructed using `of`.
@@ -194,17 +195,17 @@ def relabellingMoveRight (s : S) (t : RightMoves (ofState s)) :
trans
apply relabellingMoveRightAux
apply ofStateAuxRelabelling
-#align pgame.relabelling_move_right PGame.relabellingMoveRight
+#align pgame.relabelling_move_right SetTheory.PGame.relabellingMoveRight
instance fintypeLeftMovesOfStateAux (n : ℕ) (s : S) (h : turnBound s ≤ n) :
Fintype (LeftMoves (ofStateAux n s h)) := by
apply Fintype.ofEquiv _ (leftMovesOfStateAux _ _).symm
-#align pgame.fintype_left_moves_of_state_aux PGame.fintypeLeftMovesOfStateAux
+#align pgame.fintype_left_moves_of_state_aux SetTheory.PGame.fintypeLeftMovesOfStateAux
instance fintypeRightMovesOfStateAux (n : ℕ) (s : S) (h : turnBound s ≤ n) :
Fintype (RightMoves (ofStateAux n s h)) := by
apply Fintype.ofEquiv _ (rightMovesOfStateAux _ _).symm
-#align pgame.fintype_right_moves_of_state_aux PGame.fintypeRightMovesOfStateAux
+#align pgame.fintype_right_moves_of_state_aux SetTheory.PGame.fintypeRightMovesOfStateAux
instance shortOfStateAux : ∀ (n : ℕ) {s : S} (h : turnBound s ≤ n), Short (ofStateAux n s h)
| 0, s, h =>
@@ -223,12 +224,12 @@ instance shortOfStateAux : ∀ (n : ℕ) {s : S} (h : turnBound s ≤ n), Short
shortOfRelabelling (relabellingMoveLeftAux (n + 1) h i).symm (shortOfStateAux n _))
fun j =>
shortOfRelabelling (relabellingMoveRightAux (n + 1) h j).symm (shortOfStateAux n _)
-#align pgame.short_of_state_aux PGame.shortOfStateAux
+#align pgame.short_of_state_aux SetTheory.PGame.shortOfStateAux
instance shortOfState (s : S) : Short (ofState s) := by
dsimp [PGame.ofState]
infer_instance
-#align pgame.short_of_state PGame.shortOfState
+#align pgame.short_of_state SetTheory.PGame.shortOfState
end PGame
@@ -237,6 +238,6 @@ namespace Game
/-- Construct a combinatorial `Game` from a state. -/
def ofState {S : Type u} [PGame.State S] (s : S) : Game :=
⟦PGame.ofState s⟧
-#align game.of_state Game.ofState
+#align game.of_state SetTheory.Game.ofState
end Game
@@ -2,14 +2,11 @@
Copyright (c) 2019 Scott Morrison. All rights reserved.
Released under Apache 2.0 license as described in the file LICENSE.
Authors: Scott Morrison
-
-! This file was ported from Lean 3 source module set_theory.game.state
-! leanprover-community/mathlib commit b134b2f5cf6dd25d4bbfd3c498b6e36c11a17225
-! Please do not edit these lines, except to modify the commit id
-! if you have ported upstream changes.
-/
import Mathlib.SetTheory.Game.Short
+#align_import set_theory.game.state from "leanprover-community/mathlib"@"b134b2f5cf6dd25d4bbfd3c498b6e36c11a17225"
+
/-!
# Games described via "the state of the board".
This is the second half of the changes originally in #5699, removing all occurrences of ;
after a space and implementing a linter rule to enforce it.
In most cases this 2-character substring has a space after it, so the following command was run first:
find . -type f -name "*.lean" -exec sed -i -E 's/ ; /; /g' {} \;
The remaining cases were few enough in number that they were done manually.
@@ -94,23 +94,23 @@ def ofStateAuxRelabelling :
| s, 0, 0, hn, hm => by
dsimp [PGame.ofStateAux]
fconstructor; rfl; rfl
- · intro i; dsimp at i ; exfalso
+ · intro i; dsimp at i; exfalso
exact turnBound_ne_zero_of_left_move i.2 (nonpos_iff_eq_zero.mp hn)
- · intro j; dsimp at j ; exfalso
+ · intro j; dsimp at j; exfalso
exact turnBound_ne_zero_of_right_move j.2 (nonpos_iff_eq_zero.mp hm)
| s, 0, m + 1, hn, hm => by
dsimp [PGame.ofStateAux]
fconstructor; rfl; rfl
- · intro i; dsimp at i ; exfalso
+ · intro i; dsimp at i; exfalso
exact turnBound_ne_zero_of_left_move i.2 (nonpos_iff_eq_zero.mp hn)
- · intro j; dsimp at j ; exfalso
+ · intro j; dsimp at j; exfalso
exact turnBound_ne_zero_of_right_move j.2 (nonpos_iff_eq_zero.mp hn)
| s, n + 1, 0, hn, hm => by
dsimp [PGame.ofStateAux]
fconstructor; rfl; rfl
- · intro i; dsimp at i ; exfalso
+ · intro i; dsimp at i; exfalso
exact turnBound_ne_zero_of_left_move i.2 (nonpos_iff_eq_zero.mp hm)
- · intro j; dsimp at j ; exfalso
+ · intro j; dsimp at j; exfalso
exact turnBound_ne_zero_of_right_move j.2 (nonpos_iff_eq_zero.mp hm)
| s, n + 1, m + 1, hn, hm => by
dsimp [PGame.ofStateAux]
The unported dependencies are