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

Proof steps:
state_before: x x' : PGame
x_num : x.Numeric
x'_num : x'.Numeric
h : x' ≤ x
⊢ (x.insertLeft x').Numeric
state_after: x x' : PGame
x_num : x.Numeric
x'_num : x'.Numeric
h : (∀ (i : x'.LeftMoves), x'.moveLeft i < x) ∧ ∀ (j : x.RightMoves), x' < x.moveRight j
⊢ (x.insertLeft x').Numeric
tactic: rw [le_iff_forall_lt x'_num x_num] at h
state_before: x x' : PGame
x_num : x.Numeric
x'_num : x'.Numeric
h : (∀ (i : x'.LeftMoves), x'.moveLeft i < x) ∧ ∀ (j : x.RightMoves), x' < x.moveRight j
⊢ (x.insertLeft x').Numeric
state_after: x x' : PGame
x'_num : x'.Numeric
h : (∀ (i : x'.LeftMoves), x'.moveLeft i < x) ∧ ∀ (j : x.RightMoves), x' < x.moveRight j
x_num :
  match x with
  | mk α β L R => (∀ (i : α) (j : β), L i < R j) ∧ (∀ (i : α), (L i).Numeric) ∧ ∀ (j : β), (R j).Numeric
⊢ match x.insertLeft x' with
  | mk α β L R => (∀ (i : α) (j : β), L i < R j) ∧ (∀ (i : α), (L i).Numeric) ∧ ∀ (j : β), (R j).Numeric
tactic: unfold Numeric at x_num ⊢
state_before: x x' : PGame
x'_num : x'.Numeric
h : (∀ (i : x'.LeftMoves), x'.moveLeft i < x) ∧ ∀ (j : x.RightMoves), x' < x.moveRight j
x_num :
  match x with
  | mk α β L R => (∀ (i : α) (j : β), L i < R j) ∧ (∀ (i : α), (L i).Numeric) ∧ ∀ (j : β), (R j).Numeric
⊢ match x.insertLeft x' with
  | mk α β L R => (∀ (i : α) (j : β), L i < R j) ∧ (∀ (i : α), (L i).Numeric) ∧ ∀ (j : β), (R j).Numeric
state_after: case mk
x' : PGame
x'_num : x'.Numeric
xl xr : Type u_1
xL : xl → PGame
xR : xr → PGame
h :
  (∀ (i : x'.LeftMoves), x'.moveLeft i < mk xl xr xL xR) ∧
    ∀ (j : (mk xl xr xL xR).RightMoves), x' < (mk xl xr xL xR).moveRight j
x_num :
  match mk xl xr xL xR with
  | mk α β L R => (∀ (i : α) (j : β), L i < R j) ∧ (∀ (i : α), (L i).Numeric) ∧ ∀ (j : β), (R j).Numeric
⊢ match (mk xl xr xL xR).insertLeft x' with
  | mk α β L R => (∀ (i : α) (j : β), L i < R j) ∧ (∀ (i : α), (L i).Numeric) ∧ ∀ (j : β), (R j).Numeric
tactic: rcases x with ⟨xl, xr, xL, xR⟩
state_before: case mk
x' : PGame
x'_num : x'.Numeric
xl xr : Type u_1
xL : xl → PGame
xR : xr → PGame
h :
  (∀ (i : x'.LeftMoves), x'.moveLeft i < mk xl xr xL xR) ∧
    ∀ (j : (mk xl xr xL xR).RightMoves), x' < (mk xl xr xL xR).moveRight j
x_num :
  match mk xl xr xL xR with
  | mk α β L R => (∀ (i : α) (j : β), L i < R j) ∧ (∀ (i : α), (L i).Numeric) ∧ ∀ (j : β), (R j).Numeric
⊢ match (mk xl xr xL xR).insertLeft x' with
  | mk α β L R => (∀ (i : α) (j : β), L i < R j) ∧ (∀ (i : α), (L i).Numeric) ∧ ∀ (j : β), (R j).Numeric
state_after: case mk
x' : PGame
x'_num : x'.Numeric
xl xr : Type u_1
xL : xl → PGame
xR : xr → PGame
h :
  (∀ (i : x'.LeftMoves), x'.moveLeft i < mk xl xr xL xR) ∧
    ∀ (j : (mk xl xr xL xR).RightMoves), x' < (mk xl xr xL xR).moveRight j
x_num : (∀ (i : xl) (j : xr), xL i < xR j) ∧ (∀ (i : xl), (xL i).Numeric) ∧ ∀ (j : xr), (xR j).Numeric
⊢ ((∀ (a : xl) (j : xr), xL a < xR j) ∧ ∀ (j : xr), x' < xR j) ∧
    ((∀ (a : xl), (xL a).Numeric) ∧ x'.Numeric) ∧ ∀ (j : xr), (xR j).Numeric
tactic: simp only [insertLeft, Sum.forall, forall_const, Sum.elim_inl, Sum.elim_inr] at x_num ⊢
state_before: case mk
x' : PGame
x'_num : x'.Numeric
xl xr : Type u_1
xL : xl → PGame
xR : xr → PGame
h :
  (∀ (i : x'.LeftMoves), x'.moveLeft i < mk xl xr xL xR) ∧
    ∀ (j : (mk xl xr xL xR).RightMoves), x' < (mk xl xr xL xR).moveRight j
x_num : (∀ (i : xl) (j : xr), xL i < xR j) ∧ (∀ (i : xl), (xL i).Numeric) ∧ ∀ (j : xr), (xR j).Numeric
⊢ ((∀ (a : xl) (j : xr), xL a < xR j) ∧ ∀ (j : xr), x' < xR j) ∧
    ((∀ (a : xl), (xL a).Numeric) ∧ x'.Numeric) ∧ ∀ (j : xr), (xR j).Numeric
state_after: case mk.left
x' : PGame
x'_num : x'.Numeric
xl xr : Type u_1
xL : xl → PGame
xR : xr → PGame
h :
  (∀ (i : x'.LeftMoves), x'.moveLeft i < mk xl xr xL xR) ∧
    ∀ (j : (mk xl xr xL xR).RightMoves), x' < (mk xl xr xL xR).moveRight j
x_num : (∀ (i : xl) (j : xr), xL i < xR j) ∧ (∀ (i : xl), (xL i).Numeric) ∧ ∀ (j : xr), (xR j).Numeric
⊢ (∀ (a : xl) (j : xr), xL a < xR j) ∧ ∀ (j : xr), x' < xR j

case mk.right
x' : PGame
x'_num : x'.Numeric
xl xr : Type u_1
xL : xl → PGame
xR : xr → PGame
h :
  (∀ (i : x'.LeftMoves), x'.moveLeft i < mk xl xr xL xR) ∧
    ∀ (j : (mk xl xr xL xR).RightMoves), x' < (mk xl xr xL xR).moveRight j
x_num : (∀ (i : xl) (j : xr), xL i < xR j) ∧ (∀ (i : xl), (xL i).Numeric) ∧ ∀ (j : xr), (xR j).Numeric
⊢ ((∀ (a : xl), (xL a).Numeric) ∧ x'.Numeric) ∧ ∀ (j : xr), (xR j).Numeric
tactic: constructor