Theorem: SetTheory.PGame.lt_birthday_iff
File: Mathlib/SetTheory/Game/Birthday.lean

tactic: constructor
state_before: x : PGame
o : Ordinal.{u_1}
⊢ o < x.birthday ↔ (∃ i, o ≤ (x.moveLeft i).birthday) ∨ ∃ i, o ≤ (x.moveRight i).birthday
state_after: case mp
x : PGame
o : Ordinal.{u_1}
⊢ o < x.birthday → (∃ i, o ≤ (x.moveLeft i).birthday) ∨ ∃ i, o ≤ (x.moveRight i).birthday

case mpr
x : PGame
o : Ordinal.{u_1}
⊢ ((∃ i, o ≤ (x.moveLeft i).birthday) ∨ ∃ i, o ≤ (x.moveRight i).birthday) → o < x.birthday

tactic: rw [birthday_def]
state_before: case mp
x : PGame
o : Ordinal.{u_1}
⊢ o < x.birthday → (∃ i, o ≤ (x.moveLeft i).birthday) ∨ ∃ i, o ≤ (x.moveRight i).birthday
state_after: case mp
x : PGame
o : Ordinal.{u_1}
⊢ o < max (lsub fun i => (x.moveLeft i).birthday) (lsub fun i => (x.moveRight i).birthday) →
    (∃ i, o ≤ (x.moveLeft i).birthday) ∨ ∃ i, o ≤ (x.moveRight i).birthday

tactic: intro h
state_before: case mp
x : PGame
o : Ordinal.{u_1}
⊢ o < max (lsub fun i => (x.moveLeft i).birthday) (lsub fun i => (x.moveRight i).birthday) →
    (∃ i, o ≤ (x.moveLeft i).birthday) ∨ ∃ i, o ≤ (x.moveRight i).birthday
state_after: case mp
x : PGame
o : Ordinal.{u_1}
h : o < max (lsub fun i => (x.moveLeft i).birthday) (lsub fun i => (x.moveRight i).birthday)
⊢ (∃ i, o ≤ (x.moveLeft i).birthday) ∨ ∃ i, o ≤ (x.moveRight i).birthday

tactic: cases' lt_max_iff.1 h with h' h'
state_before: case mp
x : PGame
o : Ordinal.{u_1}
h : o < max (lsub fun i => (x.moveLeft i).birthday) (lsub fun i => (x.moveRight i).birthday)
⊢ (∃ i, o ≤ (x.moveLeft i).birthday) ∨ ∃ i, o ≤ (x.moveRight i).birthday
state_after: case mp.inl
x : PGame
o : Ordinal.{u_1}
h : o < max (lsub fun i => (x.moveLeft i).birthday) (lsub fun i => (x.moveRight i).birthday)
h' : o < lsub fun i => (x.moveLeft i).birthday
⊢ (∃ i, o ≤ (x.moveLeft i).birthday) ∨ ∃ i, o ≤ (x.moveRight i).birthday

case mp.inr
x : PGame
o : Ordinal.{u_1}
h : o < max (lsub fun i => (x.moveLeft i).birthday) (lsub fun i => (x.moveRight i).birthday)
h' : o < lsub fun i => (x.moveRight i).birthday
⊢ (∃ i, o ≤ (x.moveLeft i).birthday) ∨ ∃ i, o ≤ (x.moveRight i).birthday

tactic: left
state_before: case mp.inl
x : PGame
o : Ordinal.{u_1}
h : o < max (lsub fun i => (x.moveLeft i).birthday) (lsub fun i => (x.moveRight i).birthday)
h' : o < lsub fun i => (x.moveLeft i).birthday
⊢ (∃ i, o ≤ (x.moveLeft i).birthday) ∨ ∃ i, o ≤ (x.moveRight i).birthday
state_after: case mp.inl.h
x : PGame
o : Ordinal.{u_1}
h : o < max (lsub fun i => (x.moveLeft i).birthday) (lsub fun i => (x.moveRight i).birthday)
h' : o < lsub fun i => (x.moveLeft i).birthday
⊢ ∃ i, o ≤ (x.moveLeft i).birthday

tactic: rwa [lt_lsub_iff] at h'
state_before: case mp.inl.h
x : PGame
o : Ordinal.{u_1}
h : o < max (lsub fun i => (x.moveLeft i).birthday) (lsub fun i => (x.moveRight i).birthday)
h' : o < lsub fun i => (x.moveLeft i).birthday
⊢ ∃ i, o ≤ (x.moveLeft i).birthday
state_after: no goals

tactic: right
state_before: case mp.inr
x : PGame
o : Ordinal.{u_1}
h : o < max (lsub fun i => (x.moveLeft i).birthday) (lsub fun i => (x.moveRight i).birthday)
h' : o < lsub fun i => (x.moveRight i).birthday
⊢ (∃ i, o ≤ (x.moveLeft i).birthday) ∨ ∃ i, o ≤ (x.moveRight i).birthday
state_after: case mp.inr.h
x : PGame
o : Ordinal.{u_1}
h : o < max (lsub fun i => (x.moveLeft i).birthday) (lsub fun i => (x.moveRight i).birthday)
h' : o < lsub fun i => (x.moveRight i).birthday
⊢ ∃ i, o ≤ (x.moveRight i).birthday

tactic: rwa [lt_lsub_iff] at h'
state_before: case mp.inr.h
x : PGame
o : Ordinal.{u_1}
h : o < max (lsub fun i => (x.moveLeft i).birthday) (lsub fun i => (x.moveRight i).birthday)
h' : o < lsub fun i => (x.moveRight i).birthday
⊢ ∃ i, o ≤ (x.moveRight i).birthday
state_after: no goals

tactic: rintro (⟨i, hi⟩ | ⟨i, hi⟩)
state_before: case mpr
x : PGame
o : Ordinal.{u_1}
⊢ ((∃ i, o ≤ (x.moveLeft i).birthday) ∨ ∃ i, o ≤ (x.moveRight i).birthday) → o < x.birthday
state_after: case mpr.inl.intro
x : PGame
o : Ordinal.{u_1}
i : x.LeftMoves
hi : o ≤ (x.moveLeft i).birthday
⊢ o < x.birthday

case mpr.inr.intro
x : PGame
o : Ordinal.{u_1}
i : x.RightMoves
hi : o ≤ (x.moveRight i).birthday
⊢ o < x.birthday

tactic: exact hi.trans_lt (birthday_moveLeft_lt i)
state_before: case mpr.inl.intro
x : PGame
o : Ordinal.{u_1}
i : x.LeftMoves
hi : o ≤ (x.moveLeft i).birthday
⊢ o < x.birthday
state_after: no goals

tactic: exact hi.trans_lt (birthday_moveRight_lt i)
state_before: case mpr.inr.intro
x : PGame
o : Ordinal.{u_1}
i : x.RightMoves
hi : o ≤ (x.moveRight i).birthday
⊢ o < x.birthday
state_after: no goals