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

tactic: refine fun z w h ↦ ⟨?_, ?_⟩
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
⊢ IH4 x₁ x₂ y
state_after: case refine_1
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
z w : PGame
h : w.IsOption y
⊢ z.IsOption x₁ → P2 z x₂ w

case refine_2
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
z w : PGame
h : w.IsOption y
⊢ z.IsOption x₂ → P2 x₁ z w

tactic: all_goals
  intro h'
  apply (ih' (Args.P24 _ _ _) <| (TransGen.single _).tail <|
    (cutExpand_add_left {x₁}).2 <| cutExpand_pair_right h).1
  try exact (cutExpand_add_right {w}).2 <| cutExpand_pair_left h'
  try exact (cutExpand_add_right {w}).2 <| cutExpand_pair_right h'
state_before: case refine_1
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
z w : PGame
h : w.IsOption y
⊢ z.IsOption x₁ → P2 z x₂ w

case refine_2
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
z w : PGame
h : w.IsOption y
⊢ z.IsOption x₂ → P2 x₁ z w
state_after: no goals

tactic: intro h'
state_before: case refine_2
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
z w : PGame
h : w.IsOption y
⊢ z.IsOption x₂ → P2 x₁ z w
state_after: case refine_2
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
z w : PGame
h : w.IsOption y
h' : z.IsOption x₂
⊢ P2 x₁ z w

tactic: apply (ih' (Args.P24 _ _ _) <| (TransGen.single _).tail <|
  (cutExpand_add_left {x₁}).2 <| cutExpand_pair_right h).1
state_before: case refine_2
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
z w : PGame
h : w.IsOption y
h' : z.IsOption x₂
⊢ P2 x₁ z w
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
z w : PGame
h : w.IsOption y
h' : z.IsOption x₂
⊢ CutExpand IsOption (Args.P24 x₁ z w).toMultiset ({x₁} + {x₂, w})

tactic: try exact (cutExpand_add_right {w}).2 <| cutExpand_pair_left h'
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
z w : PGame
h : w.IsOption y
h' : z.IsOption x₁
⊢ CutExpand IsOption (Args.P24 z x₂ w).toMultiset ({x₁} + {x₂, w})
state_after: no goals

tactic: try exact (cutExpand_add_right {w}).2 <| cutExpand_pair_right h'
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
z w : PGame
h : w.IsOption y
h' : z.IsOption x₂
⊢ CutExpand IsOption (Args.P24 x₁ z w).toMultiset ({x₁} + {x₂, w})
state_after: no goals

tactic: exact (cutExpand_add_right {w}).2 <| cutExpand_pair_left h'
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
z w : PGame
h : w.IsOption y
h' : z.IsOption x₁
⊢ CutExpand IsOption (Args.P24 z x₂ w).toMultiset ({x₁} + {x₂, w})
state_after: no goals

tactic: exact (cutExpand_add_right {w}).2 <| cutExpand_pair_right h'
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
z w : PGame
h : w.IsOption y
h' : z.IsOption x₂
⊢ CutExpand IsOption (Args.P24 x₁ z w).toMultiset ({x₁} + {x₂, w})
state_after: no goals