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

tactic: cases a
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 b
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: congr!
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: funext x
state_before: 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✝¹
state_after: case mk.mk.h.e'_5.h
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 : xl
⊢ x✝³ x = x✝¹ x

tactic: apply @Subsingleton.elim _ (subsingleton_short_example (xL x))
state_before: case mk.mk.h.e'_5.h
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 : xl
⊢ x✝³ x = x✝¹ x
state_after: no goals

tactic: funext x
state_before: 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✝
state_after: case mk.mk.h.e'_6.h
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 : xr
⊢ x✝² x = x✝ x

tactic: apply @Subsingleton.elim _ (subsingleton_short_example (xR x))
state_before: case mk.mk.h.e'_6.h
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 : xr
⊢ x✝² x = x✝ x
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
}
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: subst_vars
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 : xr
⊢ (invImage (fun x => x) instWellFoundedRelation).1 (xR x) (mk α β L R)
state_after: α✝ β✝ : Type u_1
L✝ : α✝ → PGame
R✝ : β✝ → PGame
L xL : α✝ → PGame
inst✝³ : Fintype α✝
x✝⁵ : (i : α✝) → (xL i).Short
inst✝² : Fintype α✝
x✝⁴ : (i : α✝) → (xL i).Short
R xR : β✝ → PGame
inst✝¹ : Fintype β✝
x✝³ : (j : β✝) → (xR j).Short
inst✝ : Fintype β✝
x✝² : (j : β✝) → (xR j).Short
x : β✝
x✝¹ : ∀ (y : PGame), (invImage (fun x => x) instWellFoundedRelation).1 y (mk α✝ β✝ L R) → Subsingleton y.Short
x✝ : ∀ (y : PGame), (invImage (fun x => x) instWellFoundedRelation).1 y (mk α✝ β✝ xL xR) → Subsingleton y.Short
h✝¹ : mk α✝ β✝ xL xR = mk α✝ β✝ L R
h✝ : mk α✝ β✝ xL xR = mk α✝ β✝ L✝ R✝
⊢ (invImage (fun x => x) instWellFoundedRelation).1 (xR x) (mk α✝ β✝ L R)

tactic: simp only [mk.injEq, heq_eq_eq, true_and] at *
state_before: α✝ β✝ : Type u_1
L✝ : α✝ → PGame
R✝ : β✝ → PGame
L xL : α✝ → PGame
inst✝³ : Fintype α✝
x✝⁵ : (i : α✝) → (xL i).Short
inst✝² : Fintype α✝
x✝⁴ : (i : α✝) → (xL i).Short
R xR : β✝ → PGame
inst✝¹ : Fintype β✝
x✝³ : (j : β✝) → (xR j).Short
inst✝ : Fintype β✝
x✝² : (j : β✝) → (xR j).Short
x : β✝
x✝¹ : ∀ (y : PGame), (invImage (fun x => x) instWellFoundedRelation).1 y (mk α✝ β✝ L R) → Subsingleton y.Short
x✝ : ∀ (y : PGame), (invImage (fun x => x) instWellFoundedRelation).1 y (mk α✝ β✝ xL xR) → Subsingleton y.Short
h✝¹ : mk α✝ β✝ xL xR = mk α✝ β✝ L R
h✝ : mk α✝ β✝ xL xR = mk α✝ β✝ L✝ R✝
⊢ (invImage (fun x => x) instWellFoundedRelation).1 (xR x) (mk α✝ β✝ L R)
state_after: α✝ β✝ : Type u_1
L✝ : α✝ → PGame
R✝ : β✝ → PGame
L xL : α✝ → PGame
inst✝³ : Fintype α✝
x✝⁵ : (i : α✝) → (xL i).Short
inst✝² : Fintype α✝
x✝⁴ : (i : α✝) → (xL i).Short
R xR : β✝ → PGame
inst✝¹ : Fintype β✝
x✝³ : (j : β✝) → (xR j).Short
inst✝ : Fintype β✝
x✝² : (j : β✝) → (xR j).Short
x : β✝
x✝¹ : ∀ (y : PGame), InvImage WellFoundedRelation.rel (fun x => x) y (mk α✝ β✝ L R) → Subsingleton y.Short
x✝ : ∀ (y : PGame), InvImage WellFoundedRelation.rel (fun x => x) y (mk α✝ β✝ xL xR) → Subsingleton y.Short
h✝¹ : xL = L ∧ xR = R
h✝ : xL = L✝ ∧ xR = R✝
⊢ InvImage WellFoundedRelation.rel (fun x => x) (xR x) (mk α✝ β✝ L R)

tactic: casesm* _ ∧ _
state_before: α✝ β✝ : Type u_1
L✝ : α✝ → PGame
R✝ : β✝ → PGame
L xL : α✝ → PGame
inst✝³ : Fintype α✝
x✝⁵ : (i : α✝) → (xL i).Short
inst✝² : Fintype α✝
x✝⁴ : (i : α✝) → (xL i).Short
R xR : β✝ → PGame
inst✝¹ : Fintype β✝
x✝³ : (j : β✝) → (xR j).Short
inst✝ : Fintype β✝
x✝² : (j : β✝) → (xR j).Short
x : β✝
x✝¹ : ∀ (y : PGame), InvImage WellFoundedRelation.rel (fun x => x) y (mk α✝ β✝ L R) → Subsingleton y.Short
x✝ : ∀ (y : PGame), InvImage WellFoundedRelation.rel (fun x => x) y (mk α✝ β✝ xL xR) → Subsingleton y.Short
h✝¹ : xL = L ∧ xR = R
h✝ : xL = L✝ ∧ xR = R✝
⊢ InvImage WellFoundedRelation.rel (fun x => x) (xR x) (mk α✝ β✝ L R)
state_after: case intro.intro
α✝ β✝ : Type u_1
L✝ : α✝ → PGame
R✝ : β✝ → PGame
L xL : α✝ → PGame
inst✝³ : Fintype α✝
x✝⁵ : (i : α✝) → (xL i).Short
inst✝² : Fintype α✝
x✝⁴ : (i : α✝) → (xL i).Short
R xR : β✝ → PGame
inst✝¹ : Fintype β✝
x✝³ : (j : β✝) → (xR j).Short
inst✝ : Fintype β✝
x✝² : (j : β✝) → (xR j).Short
x : β✝
x✝¹ : ∀ (y : PGame), InvImage WellFoundedRelation.rel (fun x => x) y (mk α✝ β✝ L R) → Subsingleton y.Short
x✝ : ∀ (y : PGame), InvImage WellFoundedRelation.rel (fun x => x) y (mk α✝ β✝ xL xR) → Subsingleton y.Short
left✝¹ : xL = L
right✝¹ : xR = R
left✝ : xL = L✝
right✝ : xR = R✝
⊢ InvImage WellFoundedRelation.rel (fun x => x) (xR x) (mk α✝ β✝ L R)

tactic: subst_vars
state_before: case intro.intro
α✝ β✝ : Type u_1
L✝ : α✝ → PGame
R✝ : β✝ → PGame
L xL : α✝ → PGame
inst✝³ : Fintype α✝
x✝⁵ : (i : α✝) → (xL i).Short
inst✝² : Fintype α✝
x✝⁴ : (i : α✝) → (xL i).Short
R xR : β✝ → PGame
inst✝¹ : Fintype β✝
x✝³ : (j : β✝) → (xR j).Short
inst✝ : Fintype β✝
x✝² : (j : β✝) → (xR j).Short
x : β✝
x✝¹ : ∀ (y : PGame), InvImage WellFoundedRelation.rel (fun x => x) y (mk α✝ β✝ L R) → Subsingleton y.Short
x✝ : ∀ (y : PGame), InvImage WellFoundedRelation.rel (fun x => x) y (mk α✝ β✝ xL xR) → Subsingleton y.Short
left✝¹ : xL = L
right✝¹ : xR = R
left✝ : xL = L✝
right✝ : xR = R✝
⊢ InvImage WellFoundedRelation.rel (fun x => x) (xR x) (mk α✝ β✝ L R)
state_after: case intro.intro
α✝ β✝ : Type u_1
xL : α✝ → PGame
inst✝³ : Fintype α✝
x✝⁵ : (i : α✝) → (xL i).Short
inst✝² : Fintype α✝
x✝⁴ : (i : α✝) → (xL i).Short
xR : β✝ → PGame
inst✝¹ : Fintype β✝
x✝³ : (j : β✝) → (xR j).Short
inst✝ : Fintype β✝
x✝² : (j : β✝) → (xR j).Short
x : β✝
x✝¹ x✝ : ∀ (y : PGame), InvImage WellFoundedRelation.rel (fun x => x) y (mk α✝ β✝ xL xR) → Subsingleton y.Short
⊢ InvImage WellFoundedRelation.rel (fun x => x) (xR x) (mk α✝ β✝ xL xR)

tactic: pgame_wf_tac
state_before: case intro.intro
α✝ β✝ : Type u_1
xL : α✝ → PGame
inst✝³ : Fintype α✝
x✝⁵ : (i : α✝) → (xL i).Short
inst✝² : Fintype α✝
x✝⁴ : (i : α✝) → (xL i).Short
xR : β✝ → PGame
inst✝¹ : Fintype β✝
x✝³ : (j : β✝) → (xR j).Short
inst✝ : Fintype β✝
x✝² : (j : β✝) → (xR j).Short
x : β✝
x✝¹ x✝ : ∀ (y : PGame), InvImage WellFoundedRelation.rel (fun x => x) y (mk α✝ β✝ xL xR) → Subsingleton y.Short
⊢ InvImage WellFoundedRelation.rel (fun x => x) (xR x) (mk α✝ β✝ xL xR)
state_after: no goals