Theorem: Surreal.Multiplication.mul_right_le_of_equiv
File: Mathlib/SetTheory/Surreal/Multiplication.lean

tactic: have he' := neg_equiv_neg_iff.2 he
state_before: x x₁ x₂ x₃ x' y y₁ y₂ y₃ y' : PGame
ih : ∀ (a : Args), ArgsRel a (Args.P1 x y) → P124 a
hx : x.Numeric
hy : y.Numeric
ih' : ∀ (a : Args), ArgsRel a (Args.P24 x₁ x₂ y) → P124 a
h₁ : x₁.Numeric
h₂ : x₂.Numeric
h₁₂ : IH24 x₁ x₂ y
h₂₁ : IH24 x₂ x₁ y
he : x₁ ≈ x₂
⊢ x₁ * y ≤ x₂ * y
state_after: x x₁ x₂ x₃ x' y y₁ y₂ y₃ y' : PGame
ih : ∀ (a : Args), ArgsRel a (Args.P1 x y) → P124 a
hx : x.Numeric
hy : y.Numeric
ih' : ∀ (a : Args), ArgsRel a (Args.P24 x₁ x₂ y) → P124 a
h₁ : x₁.Numeric
h₂ : x₂.Numeric
h₁₂ : IH24 x₁ x₂ y
h₂₁ : IH24 x₂ x₁ y
he : x₁ ≈ x₂
he' : -x₁ ≈ -x₂
⊢ x₁ * y ≤ x₂ * y

tactic: apply PGame.le_of_forall_lt <;> simp_rw [lt_iff_game_lt]
state_before: x x₁ x₂ x₃ x' y y₁ y₂ y₃ y' : PGame
ih : ∀ (a : Args), ArgsRel a (Args.P1 x y) → P124 a
hx : x.Numeric
hy : y.Numeric
ih' : ∀ (a : Args), ArgsRel a (Args.P24 x₁ x₂ y) → P124 a
h₁ : x₁.Numeric
h₂ : x₂.Numeric
h₁₂ : IH24 x₁ x₂ y
h₂₁ : IH24 x₂ x₁ y
he : x₁ ≈ x₂
he' : -x₁ ≈ -x₂
⊢ x₁ * y ≤ x₂ * y
state_after: case h₁
x x₁ x₂ x₃ x' y y₁ y₂ y₃ y' : PGame
ih : ∀ (a : Args), ArgsRel a (Args.P1 x y) → P124 a
hx : x.Numeric
hy : y.Numeric
ih' : ∀ (a : Args), ArgsRel a (Args.P24 x₁ x₂ y) → P124 a
h₁ : x₁.Numeric
h₂ : x₂.Numeric
h₁₂ : IH24 x₁ x₂ y
h₂₁ : IH24 x₂ x₁ y
he : x₁ ≈ x₂
he' : -x₁ ≈ -x₂
⊢ ∀ (i : (x₁ * y).LeftMoves), ⟦(x₁ * y).moveLeft i⟧ < ⟦x₂ * y⟧

case h₂
x x₁ x₂ x₃ x' y y₁ y₂ y₃ y' : PGame
ih : ∀ (a : Args), ArgsRel a (Args.P1 x y) → P124 a
hx : x.Numeric
hy : y.Numeric
ih' : ∀ (a : Args), ArgsRel a (Args.P24 x₁ x₂ y) → P124 a
h₁ : x₁.Numeric
h₂ : x₂.Numeric
h₁₂ : IH24 x₁ x₂ y
h₂₁ : IH24 x₂ x₁ y
he : x₁ ≈ x₂
he' : -x₁ ≈ -x₂
⊢ ∀ (j : (x₂ * y).RightMoves), ⟦x₁ * y⟧ < ⟦(x₂ * y).moveRight j⟧

tactic: refine ⟨mulOption_lt_mul_of_equiv h₁ h₁₂ he, ?_⟩
state_before: case h₁
x x₁ x₂ x₃ x' y y₁ y₂ y₃ y' : PGame
ih : ∀ (a : Args), ArgsRel a (Args.P1 x y) → P124 a
hx : x.Numeric
hy : y.Numeric
ih' : ∀ (a : Args), ArgsRel a (Args.P24 x₁ x₂ y) → P124 a
h₁ : x₁.Numeric
h₂ : x₂.Numeric
h₁₂ : IH24 x₁ x₂ y
h₂₁ : IH24 x₂ x₁ y
he : x₁ ≈ x₂
he' : -x₁ ≈ -x₂
⊢ (∀ (i : x₁.LeftMoves) (j : y.LeftMoves), ⟦x₂ * y⟧ > ⟦x₁.mulOption y i j⟧) ∧
    ∀ (i : (-x₁).LeftMoves) (j : (-y).LeftMoves), ⟦x₂ * y⟧ > ⟦(-x₁).mulOption (-y) i j⟧
state_after: case h₁
x x₁ x₂ x₃ x' y y₁ y₂ y₃ y' : PGame
ih : ∀ (a : Args), ArgsRel a (Args.P1 x y) → P124 a
hx : x.Numeric
hy : y.Numeric
ih' : ∀ (a : Args), ArgsRel a (Args.P24 x₁ x₂ y) → P124 a
h₁ : x₁.Numeric
h₂ : x₂.Numeric
h₁₂ : IH24 x₁ x₂ y
h₂₁ : IH24 x₂ x₁ y
he : x₁ ≈ x₂
he' : -x₁ ≈ -x₂
⊢ ∀ (i : (-x₁).LeftMoves) (j : (-y).LeftMoves), ⟦x₂ * y⟧ > ⟦(-x₁).mulOption (-y) i j⟧

tactic: rw [← quot_neg_mul_neg]
state_before: case h₁
x x₁ x₂ x₃ x' y y₁ y₂ y₃ y' : PGame
ih : ∀ (a : Args), ArgsRel a (Args.P1 x y) → P124 a
hx : x.Numeric
hy : y.Numeric
ih' : ∀ (a : Args), ArgsRel a (Args.P24 x₁ x₂ y) → P124 a
h₁ : x₁.Numeric
h₂ : x₂.Numeric
h₁₂ : IH24 x₁ x₂ y
h₂₁ : IH24 x₂ x₁ y
he : x₁ ≈ x₂
he' : -x₁ ≈ -x₂
⊢ ∀ (i : (-x₁).LeftMoves) (j : (-y).LeftMoves), ⟦x₂ * y⟧ > ⟦(-x₁).mulOption (-y) i j⟧
state_after: case h₁
x x₁ x₂ x₃ x' y y₁ y₂ y₃ y' : PGame
ih : ∀ (a : Args), ArgsRel a (Args.P1 x y) → P124 a
hx : x.Numeric
hy : y.Numeric
ih' : ∀ (a : Args), ArgsRel a (Args.P24 x₁ x₂ y) → P124 a
h₁ : x₁.Numeric
h₂ : x₂.Numeric
h₁₂ : IH24 x₁ x₂ y
h₂₁ : IH24 x₂ x₁ y
he : x₁ ≈ x₂
he' : -x₁ ≈ -x₂
⊢ ∀ (i : (-x₁).LeftMoves) (j : (-y).LeftMoves), ⟦-x₂ * -y⟧ > ⟦(-x₁).mulOption (-y) i j⟧

tactic: exact mulOption_lt_mul_of_equiv h₁.neg (ih24_neg <| (ih24_neg h₂₁).1).2 he'
state_before: case h₁
x x₁ x₂ x₃ x' y y₁ y₂ y₃ y' : PGame
ih : ∀ (a : Args), ArgsRel a (Args.P1 x y) → P124 a
hx : x.Numeric
hy : y.Numeric
ih' : ∀ (a : Args), ArgsRel a (Args.P24 x₁ x₂ y) → P124 a
h₁ : x₁.Numeric
h₂ : x₂.Numeric
h₁₂ : IH24 x₁ x₂ y
h₂₁ : IH24 x₂ x₁ y
he : x₁ ≈ x₂
he' : -x₁ ≈ -x₂
⊢ ∀ (i : (-x₁).LeftMoves) (j : (-y).LeftMoves), ⟦-x₂ * -y⟧ > ⟦(-x₁).mulOption (-y) i j⟧
state_after: no goals

tactic: rw [rightMoves_mul_iff]
state_before: case h₂
x x₁ x₂ x₃ x' y y₁ y₂ y₃ y' : PGame
ih : ∀ (a : Args), ArgsRel a (Args.P1 x y) → P124 a
hx : x.Numeric
hy : y.Numeric
ih' : ∀ (a : Args), ArgsRel a (Args.P24 x₁ x₂ y) → P124 a
h₁ : x₁.Numeric
h₂ : x₂.Numeric
h₁₂ : IH24 x₁ x₂ y
h₂₁ : IH24 x₂ x₁ y
he : x₁ ≈ x₂
he' : -x₁ ≈ -x₂
⊢ ∀ (j : (x₂ * y).RightMoves), ⟦x₁ * y⟧ < ⟦(x₂ * y).moveRight j⟧
state_after: case h₂
x x₁ x₂ x₃ x' y y₁ y₂ y₃ y' : PGame
ih : ∀ (a : Args), ArgsRel a (Args.P1 x y) → P124 a
hx : x.Numeric
hy : y.Numeric
ih' : ∀ (a : Args), ArgsRel a (Args.P24 x₁ x₂ y) → P124 a
h₁ : x₁.Numeric
h₂ : x₂.Numeric
h₁₂ : IH24 x₁ x₂ y
h₂₁ : IH24 x₂ x₁ y
he : x₁ ≈ x₂
he' : -x₁ ≈ -x₂
⊢ (∀ (i : x₂.LeftMoves) (j : (-y).LeftMoves), ⟦x₁ * y⟧ < -⟦x₂.mulOption (-y) i j⟧) ∧
    ∀ (i : (-x₂).LeftMoves) (j : y.LeftMoves), ⟦x₁ * y⟧ < -⟦(-x₂).mulOption y i j⟧

tactic: constructor <;> intros <;> rw [lt_neg]
state_before: case h₂
x x₁ x₂ x₃ x' y y₁ y₂ y₃ y' : PGame
ih : ∀ (a : Args), ArgsRel a (Args.P1 x y) → P124 a
hx : x.Numeric
hy : y.Numeric
ih' : ∀ (a : Args), ArgsRel a (Args.P24 x₁ x₂ y) → P124 a
h₁ : x₁.Numeric
h₂ : x₂.Numeric
h₁₂ : IH24 x₁ x₂ y
h₂₁ : IH24 x₂ x₁ y
he : x₁ ≈ x₂
he' : -x₁ ≈ -x₂
⊢ (∀ (i : x₂.LeftMoves) (j : (-y).LeftMoves), ⟦x₁ * y⟧ < -⟦x₂.mulOption (-y) i j⟧) ∧
    ∀ (i : (-x₂).LeftMoves) (j : y.LeftMoves), ⟦x₁ * y⟧ < -⟦(-x₂).mulOption y i j⟧
state_after: case h₂.left
x x₁ x₂ x₃ x' y y₁ y₂ y₃ y' : PGame
ih : ∀ (a : Args), ArgsRel a (Args.P1 x y) → P124 a
hx : x.Numeric
hy : y.Numeric
ih' : ∀ (a : Args), ArgsRel a (Args.P24 x₁ x₂ y) → P124 a
h₁ : x₁.Numeric
h₂ : x₂.Numeric
h₁₂ : IH24 x₁ x₂ y
h₂₁ : IH24 x₂ x₁ y
he : x₁ ≈ x₂
he' : -x₁ ≈ -x₂
i✝ : x₂.LeftMoves
j✝ : (-y).LeftMoves
⊢ ⟦x₂.mulOption (-y) i✝ j✝⟧ < -⟦x₁ * y⟧

case h₂.right
x x₁ x₂ x₃ x' y y₁ y₂ y₃ y' : PGame
ih : ∀ (a : Args), ArgsRel a (Args.P1 x y) → P124 a
hx : x.Numeric
hy : y.Numeric
ih' : ∀ (a : Args), ArgsRel a (Args.P24 x₁ x₂ y) → P124 a
h₁ : x₁.Numeric
h₂ : x₂.Numeric
h₁₂ : IH24 x₁ x₂ y
h₂₁ : IH24 x₂ x₁ y
he : x₁ ≈ x₂
he' : -x₁ ≈ -x₂
i✝ : (-x₂).LeftMoves
j✝ : y.LeftMoves
⊢ ⟦(-x₂).mulOption y i✝ j✝⟧ < -⟦x₁ * y⟧

tactic: rw [← quot_mul_neg]
state_before: case h₂.left
x x₁ x₂ x₃ x' y y₁ y₂ y₃ y' : PGame
ih : ∀ (a : Args), ArgsRel a (Args.P1 x y) → P124 a
hx : x.Numeric
hy : y.Numeric
ih' : ∀ (a : Args), ArgsRel a (Args.P24 x₁ x₂ y) → P124 a
h₁ : x₁.Numeric
h₂ : x₂.Numeric
h₁₂ : IH24 x₁ x₂ y
h₂₁ : IH24 x₂ x₁ y
he : x₁ ≈ x₂
he' : -x₁ ≈ -x₂
i✝ : x₂.LeftMoves
j✝ : (-y).LeftMoves
⊢ ⟦x₂.mulOption (-y) i✝ j✝⟧ < -⟦x₁ * y⟧
state_after: case h₂.left
x x₁ x₂ x₃ x' y y₁ y₂ y₃ y' : PGame
ih : ∀ (a : Args), ArgsRel a (Args.P1 x y) → P124 a
hx : x.Numeric
hy : y.Numeric
ih' : ∀ (a : Args), ArgsRel a (Args.P24 x₁ x₂ y) → P124 a
h₁ : x₁.Numeric
h₂ : x₂.Numeric
h₁₂ : IH24 x₁ x₂ y
h₂₁ : IH24 x₂ x₁ y
he : x₁ ≈ x₂
he' : -x₁ ≈ -x₂
i✝ : x₂.LeftMoves
j✝ : (-y).LeftMoves
⊢ ⟦x₂.mulOption (-y) i✝ j✝⟧ < ⟦x₁ * -y⟧

tactic: apply mulOption_lt_mul_of_equiv h₂ (ih24_neg h₂₁).2 (symm he)
state_before: case h₂.left
x x₁ x₂ x₃ x' y y₁ y₂ y₃ y' : PGame
ih : ∀ (a : Args), ArgsRel a (Args.P1 x y) → P124 a
hx : x.Numeric
hy : y.Numeric
ih' : ∀ (a : Args), ArgsRel a (Args.P24 x₁ x₂ y) → P124 a
h₁ : x₁.Numeric
h₂ : x₂.Numeric
h₁₂ : IH24 x₁ x₂ y
h₂₁ : IH24 x₂ x₁ y
he : x₁ ≈ x₂
he' : -x₁ ≈ -x₂
i✝ : x₂.LeftMoves
j✝ : (-y).LeftMoves
⊢ ⟦x₂.mulOption (-y) i✝ j✝⟧ < ⟦x₁ * -y⟧
state_after: no goals

tactic: rw [← quot_neg_mul]
state_before: case h₂.right
x x₁ x₂ x₃ x' y y₁ y₂ y₃ y' : PGame
ih : ∀ (a : Args), ArgsRel a (Args.P1 x y) → P124 a
hx : x.Numeric
hy : y.Numeric
ih' : ∀ (a : Args), ArgsRel a (Args.P24 x₁ x₂ y) → P124 a
h₁ : x₁.Numeric
h₂ : x₂.Numeric
h₁₂ : IH24 x₁ x₂ y
h₂₁ : IH24 x₂ x₁ y
he : x₁ ≈ x₂
he' : -x₁ ≈ -x₂
i✝ : (-x₂).LeftMoves
j✝ : y.LeftMoves
⊢ ⟦(-x₂).mulOption y i✝ j✝⟧ < -⟦x₁ * y⟧
state_after: case h₂.right
x x₁ x₂ x₃ x' y y₁ y₂ y₃ y' : PGame
ih : ∀ (a : Args), ArgsRel a (Args.P1 x y) → P124 a
hx : x.Numeric
hy : y.Numeric
ih' : ∀ (a : Args), ArgsRel a (Args.P24 x₁ x₂ y) → P124 a
h₁ : x₁.Numeric
h₂ : x₂.Numeric
h₁₂ : IH24 x₁ x₂ y
h₂₁ : IH24 x₂ x₁ y
he : x₁ ≈ x₂
he' : -x₁ ≈ -x₂
i✝ : (-x₂).LeftMoves
j✝ : y.LeftMoves
⊢ ⟦(-x₂).mulOption y i✝ j✝⟧ < ⟦-x₁ * y⟧

tactic: apply mulOption_lt_mul_of_equiv h₂.neg (ih24_neg h₁₂).1 (symm he')
state_before: case h₂.right
x x₁ x₂ x₃ x' y y₁ y₂ y₃ y' : PGame
ih : ∀ (a : Args), ArgsRel a (Args.P1 x y) → P124 a
hx : x.Numeric
hy : y.Numeric
ih' : ∀ (a : Args), ArgsRel a (Args.P24 x₁ x₂ y) → P124 a
h₁ : x₁.Numeric
h₂ : x₂.Numeric
h₁₂ : IH24 x₁ x₂ y
h₂₁ : IH24 x₂ x₁ y
he : x₁ ≈ x₂
he' : -x₁ ≈ -x₂
i✝ : (-x₂).LeftMoves
j✝ : y.LeftMoves
⊢ ⟦(-x₂).mulOption y i✝ j✝⟧ < ⟦-x₁ * y⟧
state_after: no goals