Theorem: AddMonoidHom.completion_add
File: Mathlib/Topology/Algebra/GroupCompletion.lean

tactic: have hfg := hf.add hg
state_before: M : Type ?u.267459
R : Type ?u.267462
α : Type u_2
β : Type ?u.267468
inst✝⁸ : UniformSpace α
inst✝⁷ : AddGroup α
inst✝⁶ : UniformAddGroup α
inst✝⁵ : UniformSpace β
inst✝⁴ : AddGroup β
inst✝³ : UniformAddGroup β
γ : Type u_1
inst✝² : AddCommGroup γ
inst✝¹ : UniformSpace γ
inst✝ : UniformAddGroup γ
f g : α →+ γ
hf : Continuous ↑f
hg : Continuous ↑g
⊢ completion (f + g) (_ : Continuous fun x => ↑f x + ↑g x) = completion f hf + completion g hg

tactic: ext x
state_before: M : Type ?u.267459
R : Type ?u.267462
α : Type u_2
β : Type ?u.267468
inst✝⁸ : UniformSpace α
inst✝⁷ : AddGroup α
inst✝⁶ : UniformAddGroup α
inst✝⁵ : UniformSpace β
inst✝⁴ : AddGroup β
inst✝³ : UniformAddGroup β
γ : Type u_1
inst✝² : AddCommGroup γ
inst✝¹ : UniformSpace γ
inst✝ : UniformAddGroup γ
f g : α →+ γ
hf : Continuous ↑f
hg : Continuous ↑g
hfg : Continuous fun x => ↑f x + ↑g x
⊢ completion (f + g) (_ : Continuous fun x => ↑f x + ↑g x) = completion f hf + completion g hg

tactic: refine Completion.induction_on x ?_ ?_
state_before: case h
M : Type ?u.267459
R : Type ?u.267462
α : Type u_2
β : Type ?u.267468
inst✝⁸ : UniformSpace α
inst✝⁷ : AddGroup α
inst✝⁶ : UniformAddGroup α
inst✝⁵ : UniformSpace β
inst✝⁴ : AddGroup β
inst✝³ : UniformAddGroup β
γ : Type u_1
inst✝² : AddCommGroup γ
inst✝¹ : UniformSpace γ
inst✝ : UniformAddGroup γ
f g : α →+ γ
hf : Continuous ↑f
hg : Continuous ↑g
hfg : Continuous fun x => ↑f x + ↑g x
x : Completion α
⊢ ↑(completion (f + g) (_ : Continuous fun x => ↑f x + ↑g x)) x = ↑(completion f hf + completion g hg) x

tactic: exact isClosed_eq ((f + g).continuous_completion hfg)
  ((f.continuous_completion hf).add (g.continuous_completion hg))
state_before: case h.refine_1
M : Type ?u.267459
R : Type ?u.267462
α : Type u_2
β : Type ?u.267468
inst✝⁸ : UniformSpace α
inst✝⁷ : AddGroup α
inst✝⁶ : UniformAddGroup α
inst✝⁵ : UniformSpace β
inst✝⁴ : AddGroup β
inst✝³ : UniformAddGroup β
γ : Type u_1
inst✝² : AddCommGroup γ
inst✝¹ : UniformSpace γ
inst✝ : UniformAddGroup γ
f g : α →+ γ
hf : Continuous ↑f
hg : Continuous ↑g
hfg : Continuous fun x => ↑f x + ↑g x
x : Completion α
⊢ IsClosed {a | ↑(completion (f + g) (_ : Continuous fun x => ↑f x + ↑g x)) a = ↑(completion f hf + completion g hg) a}

tactic: intro a
state_before: case h.refine_2
M : Type ?u.267459
R : Type ?u.267462
α : Type u_2
β : Type ?u.267468
inst✝⁸ : UniformSpace α
inst✝⁷ : AddGroup α
inst✝⁶ : UniformAddGroup α
inst✝⁵ : UniformSpace β
inst✝⁴ : AddGroup β
inst✝³ : UniformAddGroup β
γ : Type u_1
inst✝² : AddCommGroup γ
inst✝¹ : UniformSpace γ
inst✝ : UniformAddGroup γ
f g : α →+ γ
hf : Continuous ↑f
hg : Continuous ↑g
hfg : Continuous fun x => ↑f x + ↑g x
x : Completion α
⊢ ∀ (a : α),
    ↑(completion (f + g) (_ : Continuous fun x => ↑f x + ↑g x)) (↑α a) = ↑(completion f hf + completion g hg) (↑α a)

tactic: simp [(f + g).completion_coe hfg, coe_add, f.completion_coe hf, g.completion_coe hg]
state_before: case h.refine_2
M : Type ?u.267459
R : Type ?u.267462
α : Type u_2
β : Type ?u.267468
inst✝⁸ : UniformSpace α
inst✝⁷ : AddGroup α
inst✝⁶ : UniformAddGroup α
inst✝⁵ : UniformSpace β
inst✝⁴ : AddGroup β
inst✝³ : UniformAddGroup β
γ : Type u_1
inst✝² : AddCommGroup γ
inst✝¹ : UniformSpace γ
inst✝ : UniformAddGroup γ
f g : α →+ γ
hf : Continuous ↑f
hg : Continuous ↑g
hfg : Continuous fun x => ↑f x + ↑g x
x : Completion α
a : α
⊢ ↑(completion (f + g) (_ : Continuous fun x => ↑f x + ↑g x)) (↑α a) = ↑(completion f hf + completion g hg) (↑α a)