Theorem: SetTheory.PGame.subsingleton_short_example
File: Mathlib/SetTheory/Game/Short.lean

Proof steps:
state_before: xl xr : Type u_1
xL : xl → PGame
xR : xr → PGame
a b : (mk xl xr xL xR).Short
⊢ a = b
state_after: case mk
xl xr : Type u_1
xL : xl → PGame
xR : xr → PGame
b : (mk xl xr xL xR).Short
inst✝¹ : Fintype xl
inst✝ : Fintype xr
x✝¹ : (i : xl) → (xL i).Short
x✝ : (j : xr) → (xR j).Short
⊢ Short.mk x✝¹ x✝ = b
tactic: cases a
state_before: case mk
xl xr : Type u_1
xL : xl → PGame
xR : xr → PGame
b : (mk xl xr xL xR).Short
inst✝¹ : Fintype xl
inst✝ : Fintype xr
x✝¹ : (i : xl) → (xL i).Short
x✝ : (j : xr) → (xR j).Short
⊢ Short.mk x✝¹ x✝ = b
state_after: case mk.mk
xl xr : Type u_1
xL : xl → PGame
xR : xr → PGame
inst✝³ : Fintype xl
inst✝² : Fintype xr
x✝³ : (i : xl) → (xL i).Short
x✝² : (j : xr) → (xR j).Short
inst✝¹ : Fintype xl
inst✝ : Fintype xr
x✝¹ : (i : xl) → (xL i).Short
x✝ : (j : xr) → (xR j).Short
⊢ Short.mk x✝³ x✝² = Short.mk x✝¹ x✝
tactic: cases b
state_before: case mk.mk
xl xr : Type u_1
xL : xl → PGame
xR : xr → PGame
inst✝³ : Fintype xl
inst✝² : Fintype xr
x✝³ : (i : xl) → (xL i).Short
x✝² : (j : xr) → (xR j).Short
inst✝¹ : Fintype xl
inst✝ : Fintype xr
x✝¹ : (i : xl) → (xL i).Short
x✝ : (j : xr) → (xR j).Short
⊢ Short.mk x✝³ x✝² = Short.mk x✝¹ x✝
state_after: case mk.mk.h.e'_5
xl xr : Type u_1
xL : xl → PGame
xR : xr → PGame
inst✝³ : Fintype xl
inst✝² : Fintype xr
x✝³ : (i : xl) → (xL i).Short
x✝² : (j : xr) → (xR j).Short
inst✝¹ : Fintype xl
inst✝ : Fintype xr
x✝¹ : (i : xl) → (xL i).Short
x✝ : (j : xr) → (xR j).Short
⊢ x✝³ = x✝¹

case mk.mk.h.e'_6
xl xr : Type u_1
xL : xl → PGame
xR : xr → PGame
inst✝³ : Fintype xl
inst✝² : Fintype xr
x✝³ : (i : xl) → (xL i).Short
x✝² : (j : xr) → (xR j).Short
inst✝¹ : Fintype xl
inst✝ : Fintype xr
x✝¹ : (i : xl) → (xL i).Short
x✝ : (j : xr) → (xR j).Short
⊢ x✝² = x✝
tactic: congr!
state_before: xl xr : Type u_1
xL : xl → PGame
xR : xr → PGame
x✝⁵ : ∀ (y : PGame), (invImage (fun x => x) instWellFoundedRelation).1 y (mk xl xr xL xR) → Subsingleton y.Short
a b : (mk xl xr xL xR).Short
α β : Type u_1
L : α → PGame
R : β → PGame
x✝⁴ : ∀ (y : PGame), (invImage (fun x => x) instWellFoundedRelation).1 y (mk α β L R) → Subsingleton y.Short
h✝³ : mk xl xr xL xR = mk α β L R
α_eq✝¹ : xl = α
L✝² : xl → PGame
inst✝³ : Fintype xl
β_eq✝¹ : xr = β
R✝² : xr → PGame
inst✝² : Fintype xr
a_eq✝³ : HEq xL L✝²
x✝³ : (i : xl) → (xL i).Short
a_eq✝² : HEq xR R✝²
x✝² : (j : xr) → (xR j).Short
h✝² : HEq a (Short.mk x✝³ x✝²)
α✝ β✝ : Type u_1
L✝¹ : α✝ → PGame
R✝¹ : β✝ → PGame
h✝¹ : mk xl xr xL xR = mk α✝ β✝ L✝¹ R✝¹
α_eq✝ : xl = α✝
L✝ : xl → PGame
inst✝¹ : Fintype xl
β_eq✝ : xr = β✝
R✝ : xr → PGame
inst✝ : Fintype xr
a_eq✝¹ : HEq xL L✝
x✝¹ : (i : xl) → (xL i).Short
a_eq✝ : HEq xR R✝
x✝ : (j : xr) → (xR j).Short
h✝ : HEq b (Short.mk x✝¹ x✝)
x : xl
⊢ (invImage (fun x => x) instWellFoundedRelation).1 (xL x) (mk α β L R)

xl xr : Type u_1
xL : xl → PGame
xR : xr → PGame
x✝⁵ : ∀ (y : PGame), (invImage (fun x => x) instWellFoundedRelation).1 y (mk xl xr xL xR) → Subsingleton y.Short
a b : (mk xl xr xL xR).Short
α β : Type u_1
L : α → PGame
R : β → PGame
x✝⁴ : ∀ (y : PGame), (invImage (fun x => x) instWellFoundedRelation).1 y (mk α β L R) → Subsingleton y.Short
h✝³ : mk xl xr xL xR = mk α β L R
α_eq✝¹ : xl = α
L✝² : xl → PGame
inst✝³ : Fintype xl
β_eq✝¹ : xr = β
R✝² : xr → PGame
inst✝² : Fintype xr
a_eq✝³ : HEq xL L✝²
x✝³ : (i : xl) → (xL i).Short
a_eq✝² : HEq xR R✝²
x✝² : (j : xr) → (xR j).Short
h✝² : HEq a (Short.mk x✝³ x✝²)
α✝ β✝ : Type u_1
L✝¹ : α✝ → PGame
R✝¹ : β✝ → PGame
h✝¹ : mk xl xr xL xR = mk α✝ β✝ L✝¹ R✝¹
α_eq✝ : xl = α✝
L✝ : xl → PGame
inst✝¹ : Fintype xl
β_eq✝ : xr = β✝
R✝ : xr → PGame
inst✝ : Fintype xr
a_eq✝¹ : HEq xL L✝
x✝¹ : (i : xl) → (xL i).Short
a_eq✝ : HEq xR R✝
x✝ : (j : xr) → (xR j).Short
h✝ : HEq b (Short.mk x✝¹ x✝)
x : xr
⊢ (invImage (fun x => x) instWellFoundedRelation).1 (xR x) (mk α β L R)
state_after: no goals
tactic: all_goals {
  subst_vars
  simp only [mk.injEq, heq_eq_eq, true_and] at *
  casesm* _ ∧ _
  subst_vars
  pgame_wf_tac
}