Theorem: UniformSpace.Completion.continuous_mul
File: Mathlib/Topology/Algebra/UniformRing.lean

tactic: let m := (AddMonoidHom.mul : α →+ α →+ α).compr₂ toCompl
state_before: α : Type u_1
inst✝³ : Ring α
inst✝² : UniformSpace α
inst✝¹ : TopologicalRing α
inst✝ : UniformAddGroup α
⊢ Continuous fun p => p.1 * p.2
state_after: α : Type u_1
inst✝³ : Ring α
inst✝² : UniformSpace α
inst✝¹ : TopologicalRing α
inst✝ : UniformAddGroup α
m : α →+ α →+ Completion α := AddMonoidHom.mul.compr₂ toCompl
⊢ Continuous fun p => p.1 * p.2

tactic: have : Continuous fun p : α × α => m p.1 p.2 := by
  apply (continuous_coe α).comp _
  simp only [AddMonoidHom.coe_mul, AddMonoidHom.coe_mulLeft]
  exact _root_.continuous_mul
state_before: α : Type u_1
inst✝³ : Ring α
inst✝² : UniformSpace α
inst✝¹ : TopologicalRing α
inst✝ : UniformAddGroup α
m : α →+ α →+ Completion α := AddMonoidHom.mul.compr₂ toCompl
⊢ Continuous fun p => p.1 * p.2
state_after: α : Type u_1
inst✝³ : Ring α
inst✝² : UniformSpace α
inst✝¹ : TopologicalRing α
inst✝ : UniformAddGroup α
m : α →+ α →+ Completion α := AddMonoidHom.mul.compr₂ toCompl
this : Continuous fun p => (m p.1) p.2
⊢ Continuous fun p => p.1 * p.2

tactic: have di : DenseInducing (toCompl : α → Completion α) := denseInducing_coe
state_before: α : Type u_1
inst✝³ : Ring α
inst✝² : UniformSpace α
inst✝¹ : TopologicalRing α
inst✝ : UniformAddGroup α
m : α →+ α →+ Completion α := AddMonoidHom.mul.compr₂ toCompl
this : Continuous fun p => (m p.1) p.2
⊢ Continuous fun p => p.1 * p.2
state_after: α : Type u_1
inst✝³ : Ring α
inst✝² : UniformSpace α
inst✝¹ : TopologicalRing α
inst✝ : UniformAddGroup α
m : α →+ α →+ Completion α := AddMonoidHom.mul.compr₂ toCompl
this : Continuous fun p => (m p.1) p.2
di : DenseInducing ⇑toCompl
⊢ Continuous fun p => p.1 * p.2

tactic: convert di.extend_Z_bilin di this
state_before: α : Type u_1
inst✝³ : Ring α
inst✝² : UniformSpace α
inst✝¹ : TopologicalRing α
inst✝ : UniformAddGroup α
m : α →+ α →+ Completion α := AddMonoidHom.mul.compr₂ toCompl
this : Continuous fun p => (m p.1) p.2
di : DenseInducing ⇑toCompl
⊢ Continuous fun p => p.1 * p.2
state_after: no goals

tactic: apply (continuous_coe α).comp _
state_before: α : Type u_1
inst✝³ : Ring α
inst✝² : UniformSpace α
inst✝¹ : TopologicalRing α
inst✝ : UniformAddGroup α
m : α →+ α →+ Completion α := AddMonoidHom.mul.compr₂ toCompl
⊢ Continuous fun p => (m p.1) p.2
state_after: α : Type u_1
inst✝³ : Ring α
inst✝² : UniformSpace α
inst✝¹ : TopologicalRing α
inst✝ : UniformAddGroup α
m : α →+ α →+ Completion α := AddMonoidHom.mul.compr₂ toCompl
⊢ Continuous fun p => (AddMonoidHom.mul p.1) p.2

tactic: simp only [AddMonoidHom.coe_mul, AddMonoidHom.coe_mulLeft]
state_before: α : Type u_1
inst✝³ : Ring α
inst✝² : UniformSpace α
inst✝¹ : TopologicalRing α
inst✝ : UniformAddGroup α
m : α →+ α →+ Completion α := AddMonoidHom.mul.compr₂ toCompl
⊢ Continuous fun p => (AddMonoidHom.mul p.1) p.2
state_after: α : Type u_1
inst✝³ : Ring α
inst✝² : UniformSpace α
inst✝¹ : TopologicalRing α
inst✝ : UniformAddGroup α
m : α →+ α →+ Completion α := AddMonoidHom.mul.compr₂ toCompl
⊢ Continuous fun p => p.1 * p.2

tactic: exact _root_.continuous_mul
state_before: α : Type u_1
inst✝³ : Ring α
inst✝² : UniformSpace α
inst✝¹ : TopologicalRing α
inst✝ : UniformAddGroup α
m : α →+ α →+ Completion α := AddMonoidHom.mul.compr₂ toCompl
⊢ Continuous fun p => p.1 * p.2
state_after: no goals