Theorem: SetTheory.PGame.lf_asymm
File: Mathlib/SetTheory/Surreal/Basic.lean

tactic: refine numeric_rec (C := fun x => ∀ z (_oz : Numeric z), x ⧏ z → ¬z ⧏ x)
  (fun xl xr xL xR hx _oxl _oxr IHxl IHxr => ?_) x ox y oy
state_before: x y : PGame
ox : x.Numeric
oy : y.Numeric
⊢ x ⧏ y → ¬y ⧏ x
state_after: x y : PGame
ox : x.Numeric
oy : y.Numeric
xl xr : Type u_1
xL : xl → PGame
xR : xr → PGame
hx : ∀ (i : xl) (j : xr), xL i < xR j
_oxl : ∀ (i : xl), (xL i).Numeric
_oxr : ∀ (i : xr), (xR i).Numeric
IHxl : ∀ (i : xl), (fun x => ∀ (z : PGame), z.Numeric → x ⧏ z → ¬z ⧏ x) (xL i)
IHxr : ∀ (i : xr), (fun x => ∀ (z : PGame), z.Numeric → x ⧏ z → ¬z ⧏ x) (xR i)
⊢ (fun x => ∀ (z : PGame), z.Numeric → x ⧏ z → ¬z ⧏ x) (mk xl xr xL xR)

tactic: refine numeric_rec fun yl yr yL yR hy oyl oyr _IHyl _IHyr => ?_
state_before: x y : PGame
ox : x.Numeric
oy : y.Numeric
xl xr : Type u_1
xL : xl → PGame
xR : xr → PGame
hx : ∀ (i : xl) (j : xr), xL i < xR j
_oxl : ∀ (i : xl), (xL i).Numeric
_oxr : ∀ (i : xr), (xR i).Numeric
IHxl : ∀ (i : xl), (fun x => ∀ (z : PGame), z.Numeric → x ⧏ z → ¬z ⧏ x) (xL i)
IHxr : ∀ (i : xr), (fun x => ∀ (z : PGame), z.Numeric → x ⧏ z → ¬z ⧏ x) (xR i)
⊢ (fun x => ∀ (z : PGame), z.Numeric → x ⧏ z → ¬z ⧏ x) (mk xl xr xL xR)
state_after: x y : PGame
ox : x.Numeric
oy : y.Numeric
xl xr : Type u_1
xL : xl → PGame
xR : xr → PGame
hx : ∀ (i : xl) (j : xr), xL i < xR j
_oxl : ∀ (i : xl), (xL i).Numeric
_oxr : ∀ (i : xr), (xR i).Numeric
IHxl : ∀ (i : xl), (fun x => ∀ (z : PGame), z.Numeric → x ⧏ z → ¬z ⧏ x) (xL i)
IHxr : ∀ (i : xr), (fun x => ∀ (z : PGame), z.Numeric → x ⧏ z → ¬z ⧏ x) (xR i)
yl yr : Type u_1
yL : yl → PGame
yR : yr → PGame
hy : ∀ (i : yl) (j : yr), yL i < yR j
oyl : ∀ (i : yl), (yL i).Numeric
oyr : ∀ (i : yr), (yR i).Numeric
_IHyl : ∀ (i : yl), mk xl xr xL xR ⧏ yL i → ¬yL i ⧏ mk xl xr xL xR
_IHyr : ∀ (i : yr), mk xl xr xL xR ⧏ yR i → ¬yR i ⧏ mk xl xr xL xR
⊢ mk xl xr xL xR ⧏ mk yl yr yL yR → ¬mk yl yr yL yR ⧏ mk xl xr xL xR

tactic: rw [mk_lf_mk, mk_lf_mk]
state_before: x y : PGame
ox : x.Numeric
oy : y.Numeric
xl xr : Type u_1
xL : xl → PGame
xR : xr → PGame
hx : ∀ (i : xl) (j : xr), xL i < xR j
_oxl : ∀ (i : xl), (xL i).Numeric
_oxr : ∀ (i : xr), (xR i).Numeric
IHxl : ∀ (i : xl), (fun x => ∀ (z : PGame), z.Numeric → x ⧏ z → ¬z ⧏ x) (xL i)
IHxr : ∀ (i : xr), (fun x => ∀ (z : PGame), z.Numeric → x ⧏ z → ¬z ⧏ x) (xR i)
yl yr : Type u_1
yL : yl → PGame
yR : yr → PGame
hy : ∀ (i : yl) (j : yr), yL i < yR j
oyl : ∀ (i : yl), (yL i).Numeric
oyr : ∀ (i : yr), (yR i).Numeric
_IHyl : ∀ (i : yl), mk xl xr xL xR ⧏ yL i → ¬yL i ⧏ mk xl xr xL xR
_IHyr : ∀ (i : yr), mk xl xr xL xR ⧏ yR i → ¬yR i ⧏ mk xl xr xL xR
⊢ mk xl xr xL xR ⧏ mk yl yr yL yR → ¬mk yl yr yL yR ⧏ mk xl xr xL xR
state_after: x y : PGame
ox : x.Numeric
oy : y.Numeric
xl xr : Type u_1
xL : xl → PGame
xR : xr → PGame
hx : ∀ (i : xl) (j : xr), xL i < xR j
_oxl : ∀ (i : xl), (xL i).Numeric
_oxr : ∀ (i : xr), (xR i).Numeric
IHxl : ∀ (i : xl), (fun x => ∀ (z : PGame), z.Numeric → x ⧏ z → ¬z ⧏ x) (xL i)
IHxr : ∀ (i : xr), (fun x => ∀ (z : PGame), z.Numeric → x ⧏ z → ¬z ⧏ x) (xR i)
yl yr : Type u_1
yL : yl → PGame
yR : yr → PGame
hy : ∀ (i : yl) (j : yr), yL i < yR j
oyl : ∀ (i : yl), (yL i).Numeric
oyr : ∀ (i : yr), (yR i).Numeric
_IHyl : ∀ (i : yl), mk xl xr xL xR ⧏ yL i → ¬yL i ⧏ mk xl xr xL xR
_IHyr : ∀ (i : yr), mk xl xr xL xR ⧏ yR i → ¬yR i ⧏ mk xl xr xL xR
⊢ ((∃ i, mk xl xr xL xR ≤ yL i) ∨ ∃ j, xR j ≤ mk yl yr yL yR) →
    ¬((∃ i, mk yl yr yL yR ≤ xL i) ∨ ∃ j, yR j ≤ mk xl xr xL xR)

tactic: rintro (⟨i, h₁⟩ | ⟨j, h₁⟩) (⟨i, h₂⟩ | ⟨j, h₂⟩)
state_before: x y : PGame
ox : x.Numeric
oy : y.Numeric
xl xr : Type u_1
xL : xl → PGame
xR : xr → PGame
hx : ∀ (i : xl) (j : xr), xL i < xR j
_oxl : ∀ (i : xl), (xL i).Numeric
_oxr : ∀ (i : xr), (xR i).Numeric
IHxl : ∀ (i : xl), (fun x => ∀ (z : PGame), z.Numeric → x ⧏ z → ¬z ⧏ x) (xL i)
IHxr : ∀ (i : xr), (fun x => ∀ (z : PGame), z.Numeric → x ⧏ z → ¬z ⧏ x) (xR i)
yl yr : Type u_1
yL : yl → PGame
yR : yr → PGame
hy : ∀ (i : yl) (j : yr), yL i < yR j
oyl : ∀ (i : yl), (yL i).Numeric
oyr : ∀ (i : yr), (yR i).Numeric
_IHyl : ∀ (i : yl), mk xl xr xL xR ⧏ yL i → ¬yL i ⧏ mk xl xr xL xR
_IHyr : ∀ (i : yr), mk xl xr xL xR ⧏ yR i → ¬yR i ⧏ mk xl xr xL xR
⊢ ((∃ i, mk xl xr xL xR ≤ yL i) ∨ ∃ j, xR j ≤ mk yl yr yL yR) →
    ¬((∃ i, mk yl yr yL yR ≤ xL i) ∨ ∃ j, yR j ≤ mk xl xr xL xR)
state_after: case inl.intro.inl.intro
x y : PGame
ox : x.Numeric
oy : y.Numeric
xl xr : Type u_1
xL : xl → PGame
xR : xr → PGame
hx : ∀ (i : xl) (j : xr), xL i < xR j
_oxl : ∀ (i : xl), (xL i).Numeric
_oxr : ∀ (i : xr), (xR i).Numeric
IHxl : ∀ (i : xl), (fun x => ∀ (z : PGame), z.Numeric → x ⧏ z → ¬z ⧏ x) (xL i)
IHxr : ∀ (i : xr), (fun x => ∀ (z : PGame), z.Numeric → x ⧏ z → ¬z ⧏ x) (xR i)
yl yr : Type u_1
yL : yl → PGame
yR : yr → PGame
hy : ∀ (i : yl) (j : yr), yL i < yR j
oyl : ∀ (i : yl), (yL i).Numeric
oyr : ∀ (i : yr), (yR i).Numeric
_IHyl : ∀ (i : yl), mk xl xr xL xR ⧏ yL i → ¬yL i ⧏ mk xl xr xL xR
_IHyr : ∀ (i : yr), mk xl xr xL xR ⧏ yR i → ¬yR i ⧏ mk xl xr xL xR
i✝ : yl
h₁ : mk xl xr xL xR ≤ yL i✝
i : xl
h₂ : mk yl yr yL yR ≤ xL i
⊢ False

case inl.intro.inr.intro
x y : PGame
ox : x.Numeric
oy : y.Numeric
xl xr : Type u_1
xL : xl → PGame
xR : xr → PGame
hx : ∀ (i : xl) (j : xr), xL i < xR j
_oxl : ∀ (i : xl), (xL i).Numeric
_oxr : ∀ (i : xr), (xR i).Numeric
IHxl : ∀ (i : xl), (fun x => ∀ (z : PGame), z.Numeric → x ⧏ z → ¬z ⧏ x) (xL i)
IHxr : ∀ (i : xr), (fun x => ∀ (z : PGame), z.Numeric → x ⧏ z → ¬z ⧏ x) (xR i)
yl yr : Type u_1
yL : yl → PGame
yR : yr → PGame
hy : ∀ (i : yl) (j : yr), yL i < yR j
oyl : ∀ (i : yl), (yL i).Numeric
oyr : ∀ (i : yr), (yR i).Numeric
_IHyl : ∀ (i : yl), mk xl xr xL xR ⧏ yL i → ¬yL i ⧏ mk xl xr xL xR
_IHyr : ∀ (i : yr), mk xl xr xL xR ⧏ yR i → ¬yR i ⧏ mk xl xr xL xR
i : yl
h₁ : mk xl xr xL xR ≤ yL i
j : yr
h₂ : yR j ≤ mk xl xr xL xR
⊢ False

case inr.intro.inl.intro
x y : PGame
ox : x.Numeric
oy : y.Numeric
xl xr : Type u_1
xL : xl → PGame
xR : xr → PGame
hx : ∀ (i : xl) (j : xr), xL i < xR j
_oxl : ∀ (i : xl), (xL i).Numeric
_oxr : ∀ (i : xr), (xR i).Numeric
IHxl : ∀ (i : xl), (fun x => ∀ (z : PGame), z.Numeric → x ⧏ z → ¬z ⧏ x) (xL i)
IHxr : ∀ (i : xr), (fun x => ∀ (z : PGame), z.Numeric → x ⧏ z → ¬z ⧏ x) (xR i)
yl yr : Type u_1
yL : yl → PGame
yR : yr → PGame
hy : ∀ (i : yl) (j : yr), yL i < yR j
oyl : ∀ (i : yl), (yL i).Numeric
oyr : ∀ (i : yr), (yR i).Numeric
_IHyl : ∀ (i : yl), mk xl xr xL xR ⧏ yL i → ¬yL i ⧏ mk xl xr xL xR
_IHyr : ∀ (i : yr), mk xl xr xL xR ⧏ yR i → ¬yR i ⧏ mk xl xr xL xR
j : xr
h₁ : xR j ≤ mk yl yr yL yR
i : xl
h₂ : mk yl yr yL yR ≤ xL i
⊢ False

case inr.intro.inr.intro
x y : PGame
ox : x.Numeric
oy : y.Numeric
xl xr : Type u_1
xL : xl → PGame
xR : xr → PGame
hx : ∀ (i : xl) (j : xr), xL i < xR j
_oxl : ∀ (i : xl), (xL i).Numeric
_oxr : ∀ (i : xr), (xR i).Numeric
IHxl : ∀ (i : xl), (fun x => ∀ (z : PGame), z.Numeric → x ⧏ z → ¬z ⧏ x) (xL i)
IHxr : ∀ (i : xr), (fun x => ∀ (z : PGame), z.Numeric → x ⧏ z → ¬z ⧏ x) (xR i)
yl yr : Type u_1
yL : yl → PGame
yR : yr → PGame
hy : ∀ (i : yl) (j : yr), yL i < yR j
oyl : ∀ (i : yl), (yL i).Numeric
oyr : ∀ (i : yr), (yR i).Numeric
_IHyl : ∀ (i : yl), mk xl xr xL xR ⧏ yL i → ¬yL i ⧏ mk xl xr xL xR
_IHyr : ∀ (i : yr), mk xl xr xL xR ⧏ yR i → ¬yR i ⧏ mk xl xr xL xR
j✝ : xr
h₁ : xR j✝ ≤ mk yl yr yL yR
j : yr
h₂ : yR j ≤ mk xl xr xL xR
⊢ False

tactic: exact IHxl _ _ (oyl _) (h₁.moveLeft_lf _) (h₂.moveLeft_lf _)
state_before: case inl.intro.inl.intro
x y : PGame
ox : x.Numeric
oy : y.Numeric
xl xr : Type u_1
xL : xl → PGame
xR : xr → PGame
hx : ∀ (i : xl) (j : xr), xL i < xR j
_oxl : ∀ (i : xl), (xL i).Numeric
_oxr : ∀ (i : xr), (xR i).Numeric
IHxl : ∀ (i : xl), (fun x => ∀ (z : PGame), z.Numeric → x ⧏ z → ¬z ⧏ x) (xL i)
IHxr : ∀ (i : xr), (fun x => ∀ (z : PGame), z.Numeric → x ⧏ z → ¬z ⧏ x) (xR i)
yl yr : Type u_1
yL : yl → PGame
yR : yr → PGame
hy : ∀ (i : yl) (j : yr), yL i < yR j
oyl : ∀ (i : yl), (yL i).Numeric
oyr : ∀ (i : yr), (yR i).Numeric
_IHyl : ∀ (i : yl), mk xl xr xL xR ⧏ yL i → ¬yL i ⧏ mk xl xr xL xR
_IHyr : ∀ (i : yr), mk xl xr xL xR ⧏ yR i → ¬yR i ⧏ mk xl xr xL xR
i✝ : yl
h₁ : mk xl xr xL xR ≤ yL i✝
i : xl
h₂ : mk yl yr yL yR ≤ xL i
⊢ False
state_after: no goals

tactic: exact (le_trans h₂ h₁).not_gf (lf_of_lt (hy _ _))
state_before: case inl.intro.inr.intro
x y : PGame
ox : x.Numeric
oy : y.Numeric
xl xr : Type u_1
xL : xl → PGame
xR : xr → PGame
hx : ∀ (i : xl) (j : xr), xL i < xR j
_oxl : ∀ (i : xl), (xL i).Numeric
_oxr : ∀ (i : xr), (xR i).Numeric
IHxl : ∀ (i : xl), (fun x => ∀ (z : PGame), z.Numeric → x ⧏ z → ¬z ⧏ x) (xL i)
IHxr : ∀ (i : xr), (fun x => ∀ (z : PGame), z.Numeric → x ⧏ z → ¬z ⧏ x) (xR i)
yl yr : Type u_1
yL : yl → PGame
yR : yr → PGame
hy : ∀ (i : yl) (j : yr), yL i < yR j
oyl : ∀ (i : yl), (yL i).Numeric
oyr : ∀ (i : yr), (yR i).Numeric
_IHyl : ∀ (i : yl), mk xl xr xL xR ⧏ yL i → ¬yL i ⧏ mk xl xr xL xR
_IHyr : ∀ (i : yr), mk xl xr xL xR ⧏ yR i → ¬yR i ⧏ mk xl xr xL xR
i : yl
h₁ : mk xl xr xL xR ≤ yL i
j : yr
h₂ : yR j ≤ mk xl xr xL xR
⊢ False
state_after: no goals

tactic: exact (le_trans h₁ h₂).not_gf (lf_of_lt (hx _ _))
state_before: case inr.intro.inl.intro
x y : PGame
ox : x.Numeric
oy : y.Numeric
xl xr : Type u_1
xL : xl → PGame
xR : xr → PGame
hx : ∀ (i : xl) (j : xr), xL i < xR j
_oxl : ∀ (i : xl), (xL i).Numeric
_oxr : ∀ (i : xr), (xR i).Numeric
IHxl : ∀ (i : xl), (fun x => ∀ (z : PGame), z.Numeric → x ⧏ z → ¬z ⧏ x) (xL i)
IHxr : ∀ (i : xr), (fun x => ∀ (z : PGame), z.Numeric → x ⧏ z → ¬z ⧏ x) (xR i)
yl yr : Type u_1
yL : yl → PGame
yR : yr → PGame
hy : ∀ (i : yl) (j : yr), yL i < yR j
oyl : ∀ (i : yl), (yL i).Numeric
oyr : ∀ (i : yr), (yR i).Numeric
_IHyl : ∀ (i : yl), mk xl xr xL xR ⧏ yL i → ¬yL i ⧏ mk xl xr xL xR
_IHyr : ∀ (i : yr), mk xl xr xL xR ⧏ yR i → ¬yR i ⧏ mk xl xr xL xR
j : xr
h₁ : xR j ≤ mk yl yr yL yR
i : xl
h₂ : mk yl yr yL yR ≤ xL i
⊢ False
state_after: no goals

tactic: exact IHxr _ _ (oyr _) (h₁.lf_moveRight _) (h₂.lf_moveRight _)
state_before: case inr.intro.inr.intro
x y : PGame
ox : x.Numeric
oy : y.Numeric
xl xr : Type u_1
xL : xl → PGame
xR : xr → PGame
hx : ∀ (i : xl) (j : xr), xL i < xR j
_oxl : ∀ (i : xl), (xL i).Numeric
_oxr : ∀ (i : xr), (xR i).Numeric
IHxl : ∀ (i : xl), (fun x => ∀ (z : PGame), z.Numeric → x ⧏ z → ¬z ⧏ x) (xL i)
IHxr : ∀ (i : xr), (fun x => ∀ (z : PGame), z.Numeric → x ⧏ z → ¬z ⧏ x) (xR i)
yl yr : Type u_1
yL : yl → PGame
yR : yr → PGame
hy : ∀ (i : yl) (j : yr), yL i < yR j
oyl : ∀ (i : yl), (yL i).Numeric
oyr : ∀ (i : yr), (yR i).Numeric
_IHyl : ∀ (i : yl), mk xl xr xL xR ⧏ yL i → ¬yL i ⧏ mk xl xr xL xR
_IHyr : ∀ (i : yr), mk xl xr xL xR ⧏ yR i → ¬yR i ⧏ mk xl xr xL xR
j✝ : xr
h₁ : xR j✝ ≤ mk yl yr yL yR
j : yr
h₂ : yR j ≤ mk xl xr xL xR
⊢ False
state_after: no goals