Theorem: eq_if_preStoneCechUnit_eq
File: Mathlib/Topology/StoneCech.lean

tactic: have e := ultrafilter_extend_extends g
state_before: α : Type u
inst✝³ : TopologicalSpace α
β : Type v
inst✝² : TopologicalSpace β
inst✝¹ : T2Space β
inst✝ : CompactSpace β
g : α → β
hg : Continuous g
a b : α
h : preStoneCechUnit a = preStoneCechUnit b
⊢ g a = g b
state_after: α : Type u
inst✝³ : TopologicalSpace α
β : Type v
inst✝² : TopologicalSpace β
inst✝¹ : T2Space β
inst✝ : CompactSpace β
g : α → β
hg : Continuous g
a b : α
h : preStoneCechUnit a = preStoneCechUnit b
e : Ultrafilter.extend g ∘ pure = g
⊢ g a = g b

tactic: rw [← congrFun e a, ← congrFun e b, Function.comp_apply, Function.comp_apply]
state_before: α : Type u
inst✝³ : TopologicalSpace α
β : Type v
inst✝² : TopologicalSpace β
inst✝¹ : T2Space β
inst✝ : CompactSpace β
g : α → β
hg : Continuous g
a b : α
h : preStoneCechUnit a = preStoneCechUnit b
e : Ultrafilter.extend g ∘ pure = g
⊢ g a = g b
state_after: α : Type u
inst✝³ : TopologicalSpace α
β : Type v
inst✝² : TopologicalSpace β
inst✝¹ : T2Space β
inst✝ : CompactSpace β
g : α → β
hg : Continuous g
a b : α
h : preStoneCechUnit a = preStoneCechUnit b
e : Ultrafilter.extend g ∘ pure = g
⊢ Ultrafilter.extend g (pure a) = Ultrafilter.extend g (pure b)

tactic: rw [preStoneCechUnit, preStoneCechUnit, Quot.eq] at h
state_before: α : Type u
inst✝³ : TopologicalSpace α
β : Type v
inst✝² : TopologicalSpace β
inst✝¹ : T2Space β
inst✝ : CompactSpace β
g : α → β
hg : Continuous g
a b : α
h : preStoneCechUnit a = preStoneCechUnit b
e : Ultrafilter.extend g ∘ pure = g
⊢ Ultrafilter.extend g (pure a) = Ultrafilter.extend g (pure b)
state_after: α : Type u
inst✝³ : TopologicalSpace α
β : Type v
inst✝² : TopologicalSpace β
inst✝¹ : T2Space β
inst✝ : CompactSpace β
g : α → β
hg : Continuous g
a b : α
h : EqvGen (fun F G => ∃ x, ↑F ≤ 𝓝 x ∧ ↑G ≤ 𝓝 x) (pure a) (pure b)
e : Ultrafilter.extend g ∘ pure = g
⊢ Ultrafilter.extend g (pure a) = Ultrafilter.extend g (pure b)

tactic: generalize (pure a : Ultrafilter α) = F at h
state_before: α : Type u
inst✝³ : TopologicalSpace α
β : Type v
inst✝² : TopologicalSpace β
inst✝¹ : T2Space β
inst✝ : CompactSpace β
g : α → β
hg : Continuous g
a b : α
h : EqvGen (fun F G => ∃ x, ↑F ≤ 𝓝 x ∧ ↑G ≤ 𝓝 x) (pure a) (pure b)
e : Ultrafilter.extend g ∘ pure = g
⊢ Ultrafilter.extend g (pure a) = Ultrafilter.extend g (pure b)
state_after: α : Type u
inst✝³ : TopologicalSpace α
β : Type v
inst✝² : TopologicalSpace β
inst✝¹ : T2Space β
inst✝ : CompactSpace β
g : α → β
hg : Continuous g
a b : α
e : Ultrafilter.extend g ∘ pure = g
F : Ultrafilter α
h : EqvGen (fun F G => ∃ x, ↑F ≤ 𝓝 x ∧ ↑G ≤ 𝓝 x) F (pure b)
⊢ Ultrafilter.extend g F = Ultrafilter.extend g (pure b)

tactic: generalize (pure b : Ultrafilter α) = G at h
state_before: α : Type u
inst✝³ : TopologicalSpace α
β : Type v
inst✝² : TopologicalSpace β
inst✝¹ : T2Space β
inst✝ : CompactSpace β
g : α → β
hg : Continuous g
a b : α
e : Ultrafilter.extend g ∘ pure = g
F : Ultrafilter α
h : EqvGen (fun F G => ∃ x, ↑F ≤ 𝓝 x ∧ ↑G ≤ 𝓝 x) F (pure b)
⊢ Ultrafilter.extend g F = Ultrafilter.extend g (pure b)
state_after: α : Type u
inst✝³ : TopologicalSpace α
β : Type v
inst✝² : TopologicalSpace β
inst✝¹ : T2Space β
inst✝ : CompactSpace β
g : α → β
hg : Continuous g
a b : α
e : Ultrafilter.extend g ∘ pure = g
F G : Ultrafilter α
h : EqvGen (fun F G => ∃ x, ↑F ≤ 𝓝 x ∧ ↑G ≤ 𝓝 x) F G
⊢ Ultrafilter.extend g F = Ultrafilter.extend g G

tactic: induction h with
| rel x y a => exact let ⟨a, hx, hy⟩ := a; preStoneCechCompat hg hx hy
| refl x => rfl
| symm x y _ h => rw [h]
| trans x y z _ _ h h' => exact h.trans h'
state_before: α : Type u
inst✝³ : TopologicalSpace α
β : Type v
inst✝² : TopologicalSpace β
inst✝¹ : T2Space β
inst✝ : CompactSpace β
g : α → β
hg : Continuous g
a b : α
e : Ultrafilter.extend g ∘ pure = g
F G : Ultrafilter α
h : EqvGen (fun F G => ∃ x, ↑F ≤ 𝓝 x ∧ ↑G ≤ 𝓝 x) F G
⊢ Ultrafilter.extend g F = Ultrafilter.extend g G
state_after: no goals

tactic: exact let ⟨a, hx, hy⟩ := a; preStoneCechCompat hg hx hy
state_before: case rel
α : Type u
inst✝³ : TopologicalSpace α
β : Type v
inst✝² : TopologicalSpace β
inst✝¹ : T2Space β
inst✝ : CompactSpace β
g : α → β
hg : Continuous g
a✝ b : α
e : Ultrafilter.extend g ∘ pure = g
F G x y : Ultrafilter α
a : ∃ x_1, ↑x ≤ 𝓝 x_1 ∧ ↑y ≤ 𝓝 x_1
⊢ Ultrafilter.extend g x = Ultrafilter.extend g y
state_after: no goals

tactic: rfl
state_before: case refl
α : Type u
inst✝³ : TopologicalSpace α
β : Type v
inst✝² : TopologicalSpace β
inst✝¹ : T2Space β
inst✝ : CompactSpace β
g : α → β
hg : Continuous g
a b : α
e : Ultrafilter.extend g ∘ pure = g
F G x : Ultrafilter α
⊢ Ultrafilter.extend g x = Ultrafilter.extend g x
state_after: no goals

tactic: rw [h]
state_before: case symm
α : Type u
inst✝³ : TopologicalSpace α
β : Type v
inst✝² : TopologicalSpace β
inst✝¹ : T2Space β
inst✝ : CompactSpace β
g : α → β
hg : Continuous g
a b : α
e : Ultrafilter.extend g ∘ pure = g
F G x y : Ultrafilter α
a✝ : EqvGen (fun F G => ∃ x, ↑F ≤ 𝓝 x ∧ ↑G ≤ 𝓝 x) x y
h : Ultrafilter.extend g x = Ultrafilter.extend g y
⊢ Ultrafilter.extend g y = Ultrafilter.extend g x
state_after: no goals

tactic: exact h.trans h'
state_before: case trans
α : Type u
inst✝³ : TopologicalSpace α
β : Type v
inst✝² : TopologicalSpace β
inst✝¹ : T2Space β
inst✝ : CompactSpace β
g : α → β
hg : Continuous g
a b : α
e : Ultrafilter.extend g ∘ pure = g
F G x y z : Ultrafilter α
a✝¹ : EqvGen (fun F G => ∃ x, ↑F ≤ 𝓝 x ∧ ↑G ≤ 𝓝 x) x y
a✝ : EqvGen (fun F G => ∃ x, ↑F ≤ 𝓝 x ∧ ↑G ≤ 𝓝 x) y z
h : Ultrafilter.extend g x = Ultrafilter.extend g y
h' : Ultrafilter.extend g y = Ultrafilter.extend g z
⊢ Ultrafilter.extend g x = Ultrafilter.extend g z
state_after: no goals