l3lab/ntp-mathlib huggingface dataset:
@[simp]
theorem comp_sub [RingHomCompTriple σ₁₂ σ₂₃ σ₁₃] [TopologicalAddGroup M₂] [TopologicalAddGroup M₃]
    (g : M₂ →SL[σ₂₃] M₃) (f₁ f₂ : M →SL[σ₁₂] M₂) : g.comp (f₁ - f₂) = g.comp f₁ - g.comp f₂ := by
  

Proof state:
R : Type u_1
inst✝¹⁶ : Ring R
R₂ : Type u_2
inst✝¹⁵ : Ring R₂
R₃ : Type u_3
inst✝¹⁴ : Ring R₃
M : Type u_4
inst✝¹³ : TopologicalSpace M
inst✝¹² : AddCommGroup M
M₂ : Type u_5
inst✝¹¹ : TopologicalSpace M₂
inst✝¹⁰ : AddCommGroup M₂
M₃ : Type u_6
inst✝⁹ : TopologicalSpace M₃
inst✝⁸ : AddCommGroup M₃
M₄ : Type u_7
inst✝⁷ : TopologicalSpace M₄
inst✝⁶ : AddCommGroup M₄
inst✝⁵ : Module R M
inst✝⁴ : Module R₂ M₂
inst✝³ : Module R₃ M₃
σ₁₂ : R →+* R₂
σ₂₃ : R₂ →+* R₃
σ₁₃ : R →+* R₃
inst✝² : RingHomCompTriple σ₁₂ σ₂₃ σ₁₃
inst✝¹ : TopologicalAddGroup M₂
inst✝ : TopologicalAddGroup M₃
g : M₂ →SL[σ₂₃] M₃
f₁ f₂ : M →SL[σ₁₂] M₂
⊢ comp g (f₁ - f₂) = comp g f₁ - comp g f₂

Next tactic:
ext
@[simp]
theorem comp_sub [RingHomCompTriple σ₁₂ σ₂₃ σ₁₃] [TopologicalAddGroup M₂] [TopologicalAddGroup M₃]
    (g : M₂ →SL[σ₂₃] M₃) (f₁ f₂ : M →SL[σ₁₂] M₂) : g.comp (f₁ - f₂) = g.comp f₁ - g.comp f₂ := by
  ext
  

Proof state:
case h
R : Type u_1
inst✝¹⁶ : Ring R
R₂ : Type u_2
inst✝¹⁵ : Ring R₂
R₃ : Type u_3
inst✝¹⁴ : Ring R₃
M : Type u_4
inst✝¹³ : TopologicalSpace M
inst✝¹² : AddCommGroup M
M₂ : Type u_5
inst✝¹¹ : TopologicalSpace M₂
inst✝¹⁰ : AddCommGroup M₂
M₃ : Type u_6
inst✝⁹ : TopologicalSpace M₃
inst✝⁸ : AddCommGroup M₃
M₄ : Type u_7
inst✝⁷ : TopologicalSpace M₄
inst✝⁶ : AddCommGroup M₄
inst✝⁵ : Module R M
inst✝⁴ : Module R₂ M₂
inst✝³ : Module R₃ M₃
σ₁₂ : R →+* R₂
σ₂₃ : R₂ →+* R₃
σ₁₃ : R →+* R₃
inst✝² : RingHomCompTriple σ₁₂ σ₂₃ σ₁₃
inst✝¹ : TopologicalAddGroup M₂
inst✝ : TopologicalAddGroup M₃
g : M₂ →SL[σ₂₃] M₃
f₁ f₂ : M →SL[σ₁₂] M₂
x✝ : M
⊢ (comp g (f₁ - f₂)) x✝ = (comp g f₁ - comp g f₂) x✝

Next tactic:
simp
@[simp]
theorem sub_comp [RingHomCompTriple σ₁₂ σ₂₃ σ₁₃] [TopologicalAddGroup M₃] (g₁ g₂ : M₂ →SL[σ₂₃] M₃)
    (f : M →SL[σ₁₂] M₂) : (g₁ - g₂).comp f = g₁.comp f - g₂.comp f := by
  

Proof state:
R : Type u_1
inst✝¹⁵ : Ring R
R₂ : Type u_2
inst✝¹⁴ : Ring R₂
R₃ : Type u_3
inst✝¹³ : Ring R₃
M : Type u_4
inst✝¹² : TopologicalSpace M
inst✝¹¹ : AddCommGroup M
M₂ : Type u_5
inst✝¹⁰ : TopologicalSpace M₂
inst✝⁹ : AddCommGroup M₂
M₃ : Type u_6
inst✝⁸ : TopologicalSpace M₃
inst✝⁷ : AddCommGroup M₃
M₄ : Type u_7
inst✝⁶ : TopologicalSpace M₄
inst✝⁵ : AddCommGroup M₄
inst✝⁴ : Module R M
inst✝³ : Module R₂ M₂
inst✝² : Module R₃ M₃
σ₁₂ : R →+* R₂
σ₂₃ : R₂ →+* R₃
σ₁₃ : R →+* R₃
inst✝¹ : RingHomCompTriple σ₁₂ σ₂₃ σ₁₃
inst✝ : TopologicalAddGroup M₃
g₁ g₂ : M₂ →SL[σ₂₃] M₃
f : M →SL[σ₁₂] M₂
⊢ comp (g₁ - g₂) f = comp g₁ f - comp g₂ f

Next tactic:
ext
@[simp]
theorem sub_comp [RingHomCompTriple σ₁₂ σ₂₃ σ₁₃] [TopologicalAddGroup M₃] (g₁ g₂ : M₂ →SL[σ₂₃] M₃)
    (f : M →SL[σ₁₂] M₂) : (g₁ - g₂).comp f = g₁.comp f - g₂.comp f := by
  ext
  

Proof state:
case h
R : Type u_1
inst✝¹⁵ : Ring R
R₂ : Type u_2
inst✝¹⁴ : Ring R₂
R₃ : Type u_3
inst✝¹³ : Ring R₃
M : Type u_4
inst✝¹² : TopologicalSpace M
inst✝¹¹ : AddCommGroup M
M₂ : Type u_5
inst✝¹⁰ : TopologicalSpace M₂
inst✝⁹ : AddCommGroup M₂
M₃ : Type u_6
inst✝⁸ : TopologicalSpace M₃
inst✝⁷ : AddCommGroup M₃
M₄ : Type u_7
inst✝⁶ : TopologicalSpace M₄
inst✝⁵ : AddCommGroup M₄
inst✝⁴ : Module R M
inst✝³ : Module R₂ M₂
inst✝² : Module R₃ M₃
σ₁₂ : R →+* R₂
σ₂₃ : R₂ →+* R₃
σ₁₃ : R →+* R₃
inst✝¹ : RingHomCompTriple σ₁₂ σ₂₃ σ₁₃
inst✝ : TopologicalAddGroup M₃
g₁ g₂ : M₂ →SL[σ₂₃] M₃
f : M →SL[σ₁₂] M₂
x✝ : M
⊢ (comp (g₁ - g₂) f) x✝ = (comp g₁ f - comp g₂ f) x✝

Next tactic:
simp
theorem smulRight_one_pow [TopologicalSpace R] [TopologicalRing R] (c : R) (n : ℕ) :
    smulRight (1 : R →L[R] R) c ^ n = smulRight (1 : R →L[R] R) (c ^ n) := by
  

Proof state:
R : Type u_1
inst✝¹⁵ : Ring R
R₂ : Type u_2
inst✝¹⁴ : Ring R₂
R₃ : Type u_3
inst✝¹³ : Ring R₃
M : Type u_4
inst✝¹² : TopologicalSpace M
inst✝¹¹ : AddCommGroup M
M₂ : Type u_5
inst✝¹⁰ : TopologicalSpace M₂
inst✝⁹ : AddCommGroup M₂
M₃ : Type u_6
inst✝⁸ : TopologicalSpace M₃
inst✝⁷ : AddCommGroup M₃
M₄ : Type u_7
inst✝⁶ : TopologicalSpace M₄
inst✝⁵ : AddCommGroup M₄
inst✝⁴ : Module R M
inst✝³ : Module R₂ M₂
inst✝² : Module R₃ M₃
σ₁₂ : R →+* R₂
σ₂₃ : R₂ →+* R₃
σ₁₃ : R →+* R₃
inst✝¹ : TopologicalSpace R
inst✝ : TopologicalRing R
c : R
n : ℕ
⊢ smulRight 1 c ^ n = smulRight 1 (c ^ n)

Next tactic:
induction' n with n ihn
theorem smulRight_one_pow [TopologicalSpace R] [TopologicalRing R] (c : R) (n : ℕ) :
    smulRight (1 : R →L[R] R) c ^ n = smulRight (1 : R →L[R] R) (c ^ n) := by
  induction' n with n ihn
  · 

Proof state:
case zero
R : Type u_1
inst✝¹⁵ : Ring R
R₂ : Type u_2
inst✝¹⁴ : Ring R₂
R₃ : Type u_3
inst✝¹³ : Ring R₃
M : Type u_4
inst✝¹² : TopologicalSpace M
inst✝¹¹ : AddCommGroup M
M₂ : Type u_5
inst✝¹⁰ : TopologicalSpace M₂
inst✝⁹ : AddCommGroup M₂
M₃ : Type u_6
inst✝⁸ : TopologicalSpace M₃
inst✝⁷ : AddCommGroup M₃
M₄ : Type u_7
inst✝⁶ : TopologicalSpace M₄
inst✝⁵ : AddCommGroup M₄
inst✝⁴ : Module R M
inst✝³ : Module R₂ M₂
inst✝² : Module R₃ M₃
σ₁₂ : R →+* R₂
σ₂₃ : R₂ →+* R₃
σ₁₃ : R →+* R₃
inst✝¹ : TopologicalSpace R
inst✝ : TopologicalRing R
c : R
⊢ smulRight 1 c ^ Nat.zero = smulRight 1 (c ^ Nat.zero)

Next tactic:
ext
theorem smulRight_one_pow [TopologicalSpace R] [TopologicalRing R] (c : R) (n : ℕ) :
    smulRight (1 : R →L[R] R) c ^ n = smulRight (1 : R →L[R] R) (c ^ n) := by
  induction' n with n ihn
  · ext
    

Proof state:
case zero.h
R : Type u_1
inst✝¹⁵ : Ring R
R₂ : Type u_2
inst✝¹⁴ : Ring R₂
R₃ : Type u_3
inst✝¹³ : Ring R₃
M : Type u_4
inst✝¹² : TopologicalSpace M
inst✝¹¹ : AddCommGroup M
M₂ : Type u_5
inst✝¹⁰ : TopologicalSpace M₂
inst✝⁹ : AddCommGroup M₂
M₃ : Type u_6
inst✝⁸ : TopologicalSpace M₃
inst✝⁷ : AddCommGroup M₃
M₄ : Type u_7
inst✝⁶ : TopologicalSpace M₄
inst✝⁵ : AddCommGroup M₄
inst✝⁴ : Module R M
inst✝³ : Module R₂ M₂
inst✝² : Module R₃ M₃
σ₁₂ : R →+* R₂
σ₂₃ : R₂ →+* R₃
σ₁₃ : R →+* R₃
inst✝¹ : TopologicalSpace R
inst✝ : TopologicalRing R
c : R
⊢ (smulRight 1 c ^ Nat.zero) 1 = (smulRight 1 (c ^ Nat.zero)) 1

Next tactic:
simp
theorem smulRight_one_pow [TopologicalSpace R] [TopologicalRing R] (c : R) (n : ℕ) :
    smulRight (1 : R →L[R] R) c ^ n = smulRight (1 : R →L[R] R) (c ^ n) := by
  induction' n with n ihn
  · ext
    simp
  · 

Proof state:
case succ
R : Type u_1
inst✝¹⁵ : Ring R
R₂ : Type u_2
inst✝¹⁴ : Ring R₂
R₃ : Type u_3
inst✝¹³ : Ring R₃
M : Type u_4
inst✝¹² : TopologicalSpace M
inst✝¹¹ : AddCommGroup M
M₂ : Type u_5
inst✝¹⁰ : TopologicalSpace M₂
inst✝⁹ : AddCommGroup M₂
M₃ : Type u_6
inst✝⁸ : TopologicalSpace M₃
inst✝⁷ : AddCommGroup M₃
M₄ : Type u_7
inst✝⁶ : TopologicalSpace M₄
inst✝⁵ : AddCommGroup M₄
inst✝⁴ : Module R M
inst✝³ : Module R₂ M₂
inst✝² : Module R₃ M₃
σ₁₂ : R →+* R₂
σ₂₃ : R₂ →+* R₃
σ₁₃ : R →+* R₃
inst✝¹ : TopologicalSpace R
inst✝ : TopologicalRing R
c : R
n : ℕ
ihn : smulRight 1 c ^ n = smulRight 1 (c ^ n)
⊢ smulRight 1 c ^ Nat.succ n = smulRight 1 (c ^ Nat.succ n)

Next tactic:
rw [pow_succ, ihn, mul_def, smulRight_comp, smul_eq_mul, pow_succ']
/-- Given a right inverse `f₂ : M₂ →L[R] M` to `f₁ : M →L[R] M₂`,
`projKerOfRightInverse f₁ f₂ h` is the projection `M →L[R] LinearMap.ker f₁` along
`LinearMap.range f₂`. -/
def projKerOfRightInverse [TopologicalAddGroup M] (f₁ : M →SL[σ₁₂] M₂) (f₂ : M₂ →SL[σ₂₁] M)
    (h : Function.RightInverse f₂ f₁) : M →L[R] LinearMap.ker f₁ :=
  (id R M - f₂.comp f₁).codRestrict (LinearMap.ker f₁) fun x => by 

Proof state:
R : Type u_1
inst✝¹⁵ : Ring R
R₂ : Type u_2
inst✝¹⁴ : Ring R₂
R₃ : Type u_3
inst✝¹³ : Ring R₃
M : Type u_4
inst✝¹² : TopologicalSpace M
inst✝¹¹ : AddCommGroup M
M₂ : Type u_5
inst✝¹⁰ : TopologicalSpace M₂
inst✝⁹ : AddCommGroup M₂
M₃ : Type u_6
inst✝⁸ : TopologicalSpace M₃
inst✝⁷ : AddCommGroup M₃
M₄ : Type u_7
inst✝⁶ : TopologicalSpace M₄
inst✝⁵ : AddCommGroup M₄
inst✝⁴ : Module R M
inst✝³ : Module R₂ M₂
inst✝² : Module R₃ M₃
σ₁₂ : R →+* R₂
σ₂₃ : R₂ →+* R₃
σ₁₃ : R →+* R₃
σ₂₁ : R₂ →+* R
inst✝¹ : RingHomInvPair σ₁₂ σ₂₁
inst✝ : TopologicalAddGroup M
f₁ : M →SL[σ₁₂] M₂
f₂ : M₂ →SL[σ₂₁] M
h : Function.RightInverse ⇑f₂ ⇑f₁
x : M
⊢ (id R M - comp f₂ f₁) x ∈ LinearMap.ker f₁

Next tactic:
simp [h (f₁ x)]
@[simp]
theorem projKerOfRightInverse_apply_idem [TopologicalAddGroup M] (f₁ : M →SL[σ₁₂] M₂)
    (f₂ : M₂ →SL[σ₂₁] M) (h : Function.RightInverse f₂ f₁) (x : LinearMap.ker f₁) :
    f₁.projKerOfRightInverse f₂ h x = x := by
  

Proof state:
R : Type u_1
inst✝¹⁵ : Ring R
R₂ : Type u_2
inst✝¹⁴ : Ring R₂
R₃ : Type u_3
inst✝¹³ : Ring R₃
M : Type u_4
inst✝¹² : TopologicalSpace M
inst✝¹¹ : AddCommGroup M
M₂ : Type u_5
inst✝¹⁰ : TopologicalSpace M₂
inst✝⁹ : AddCommGroup M₂
M₃ : Type u_6
inst✝⁸ : TopologicalSpace M₃
inst✝⁷ : AddCommGroup M₃
M₄ : Type u_7
inst✝⁶ : TopologicalSpace M₄
inst✝⁵ : AddCommGroup M₄
inst✝⁴ : Module R M
inst✝³ : Module R₂ M₂
inst✝² : Module R₃ M₃
σ₁₂ : R →+* R₂
σ₂₃ : R₂ →+* R₃
σ₁₃ : R →+* R₃
σ₂₁ : R₂ →+* R
inst✝¹ : RingHomInvPair σ₁₂ σ₂₁
inst✝ : TopologicalAddGroup M
f₁ : M →SL[σ₁₂] M₂
f₂ : M₂ →SL[σ₂₁] M
h : Function.RightInverse ⇑f₂ ⇑f₁
x : ↥(LinearMap.ker f₁)
⊢ (projKerOfRightInverse f₁ f₂ h) ↑x = x

Next tactic:
ext1
@[simp]
theorem projKerOfRightInverse_apply_idem [TopologicalAddGroup M] (f₁ : M →SL[σ₁₂] M₂)
    (f₂ : M₂ →SL[σ₂₁] M) (h : Function.RightInverse f₂ f₁) (x : LinearMap.ker f₁) :
    f₁.projKerOfRightInverse f₂ h x = x := by
  ext1
  

Proof state:
case a
R : Type u_1
inst✝¹⁵ : Ring R
R₂ : Type u_2
inst✝¹⁴ : Ring R₂
R₃ : Type u_3
inst✝¹³ : Ring R₃
M : Type u_4
inst✝¹² : TopologicalSpace M
inst✝¹¹ : AddCommGroup M
M₂ : Type u_5
inst✝¹⁰ : TopologicalSpace M₂
inst✝⁹ : AddCommGroup M₂
M₃ : Type u_6
inst✝⁸ : TopologicalSpace M₃
inst✝⁷ : AddCommGroup M₃
M₄ : Type u_7
inst✝⁶ : TopologicalSpace M₄
inst✝⁵ : AddCommGroup M₄
inst✝⁴ : Module R M
inst✝³ : Module R₂ M₂
inst✝² : Module R₃ M₃
σ₁₂ : R →+* R₂
σ₂₃ : R₂ →+* R₃
σ₁₃ : R →+* R₃
σ₂₁ : R₂ →+* R
inst✝¹ : RingHomInvPair σ₁₂ σ₂₁
inst✝ : TopologicalAddGroup M
f₁ : M →SL[σ₁₂] M₂
f₂ : M₂ →SL[σ₂₁] M
h : Function.RightInverse ⇑f₂ ⇑f₁
x : ↥(LinearMap.ker f₁)
⊢ ↑((projKerOfRightInverse f₁ f₂ h) ↑x) = ↑x

Next tactic:
simp
@[simp]
theorem projKerOfRightInverse_comp_inv [TopologicalAddGroup M] (f₁ : M →SL[σ₁₂] M₂)
    (f₂ : M₂ →SL[σ₂₁] M) (h : Function.RightInverse f₂ f₁) (y : M₂) :
    f₁.projKerOfRightInverse f₂ h (f₂ y) = 0 :=
  Subtype.ext_iff_val.2 <| by 

Proof state:
R : Type u_1
inst✝¹⁵ : Ring R
R₂ : Type u_2
inst✝¹⁴ : Ring R₂
R₃ : Type u_3
inst✝¹³ : Ring R₃
M : Type u_4
inst✝¹² : TopologicalSpace M
inst✝¹¹ : AddCommGroup M
M₂ : Type u_5
inst✝¹⁰ : TopologicalSpace M₂
inst✝⁹ : AddCommGroup M₂
M₃ : Type u_6
inst✝⁸ : TopologicalSpace M₃
inst✝⁷ : AddCommGroup M₃
M₄ : Type u_7
inst✝⁶ : TopologicalSpace M₄
inst✝⁵ : AddCommGroup M₄
inst✝⁴ : Module R M
inst✝³ : Module R₂ M₂
inst✝² : Module R₃ M₃
σ₁₂ : R →+* R₂
σ₂₃ : R₂ →+* R₃
σ₁₃ : R →+* R₃
σ₂₁ : R₂ →+* R
inst✝¹ : RingHomInvPair σ₁₂ σ₂₁
inst✝ : TopologicalAddGroup M
f₁ : M →SL[σ₁₂] M₂
f₂ : M₂ →SL[σ₂₁] M
h : Function.RightInverse ⇑f₂ ⇑f₁
y : M₂
⊢ ↑((projKerOfRightInverse f₁ f₂ h) (f₂ y)) = ↑0

Next tactic:
simp [h y]
/-- A nonzero continuous linear functional is open. -/
protected theorem isOpenMap_of_ne_zero [TopologicalSpace R] [DivisionRing R] [ContinuousSub R]
    [AddCommGroup M] [TopologicalSpace M] [ContinuousAdd M] [Module R M] [ContinuousSMul R M]
    (f : M →L[R] R) (hf : f ≠ 0) : IsOpenMap f :=
  let ⟨x, hx⟩ := exists_ne_zero hf
  IsOpenMap.of_sections fun y =>
    ⟨fun a => y + (a - f y) • (f x)⁻¹ • x, Continuous.continuousAt <| by 

Proof state:
R : Type u_1
M : Type u_2
inst✝⁷ : TopologicalSpace R
inst✝⁶ : DivisionRing R
inst✝⁵ : ContinuousSub R
inst✝⁴ : AddCommGroup M
inst✝³ : TopologicalSpace M
inst✝² : ContinuousAdd M
inst✝¹ : Module R M
inst✝ : ContinuousSMul R M
f : M →L[R] R
hf : f ≠ 0
x : M
hx : f x ≠ 0
y : M
⊢ Continuous fun a => y + (a - f y) • (f x)⁻¹ • x

Next tactic:
continuity
/-- A nonzero continuous linear functional is open. -/
protected theorem isOpenMap_of_ne_zero [TopologicalSpace R] [DivisionRing R] [ContinuousSub R]
    [AddCommGroup M] [TopologicalSpace M] [ContinuousAdd M] [Module R M] [ContinuousSMul R M]
    (f : M →L[R] R) (hf : f ≠ 0) : IsOpenMap f :=
  let ⟨x, hx⟩ := exists_ne_zero hf
  IsOpenMap.of_sections fun y =>
    ⟨fun a => y + (a - f y) • (f x)⁻¹ • x, Continuous.continuousAt <| by continuity, by 

Proof state:
R : Type u_1
M : Type u_2
inst✝⁷ : TopologicalSpace R
inst✝⁶ : DivisionRing R
inst✝⁵ : ContinuousSub R
inst✝⁴ : AddCommGroup M
inst✝³ : TopologicalSpace M
inst✝² : ContinuousAdd M
inst✝¹ : Module R M
inst✝ : ContinuousSMul R M
f : M →L[R] R
hf : f ≠ 0
x : M
hx : f x ≠ 0
y : M
⊢ (fun a => y + (a - f y) • (f x)⁻¹ • x) (f y) = y

Next tactic:
simp
/-- A nonzero continuous linear functional is open. -/
protected theorem isOpenMap_of_ne_zero [TopologicalSpace R] [DivisionRing R] [ContinuousSub R]
    [AddCommGroup M] [TopologicalSpace M] [ContinuousAdd M] [Module R M] [ContinuousSMul R M]
    (f : M →L[R] R) (hf : f ≠ 0) : IsOpenMap f :=
  let ⟨x, hx⟩ := exists_ne_zero hf
  IsOpenMap.of_sections fun y =>
    ⟨fun a => y + (a - f y) • (f x)⁻¹ • x, Continuous.continuousAt <| by continuity, by simp,
      fun a => by 

Proof state:
R : Type u_1
M : Type u_2
inst✝⁷ : TopologicalSpace R
inst✝⁶ : DivisionRing R
inst✝⁵ : ContinuousSub R
inst✝⁴ : AddCommGroup M
inst✝³ : TopologicalSpace M
inst✝² : ContinuousAdd M
inst✝¹ : Module R M
inst✝ : ContinuousSMul R M
f : M →L[R] R
hf : f ≠ 0
x : M
hx : f x ≠ 0
y : M
a : R
⊢ f ((fun a => y + (a - f y) • (f x)⁻¹ • x) a) = a

Next tactic:
simp [hx]
@[simp]
theorem comp_smul [LinearMap.CompatibleSMul N₂ N₃ S R] (hₗ : N₂ →L[R] N₃) (c : S)
    (fₗ : M →L[R] N₂) : hₗ.comp (c • fₗ) = c • hₗ.comp fₗ := by
  

Proof state:
R : Type u_1
R₂ : Type u_2
R₃ : Type u_3
S : Type u_4
S₃ : Type u_5
inst✝³³ : Semiring R
inst✝³² : Semiring R₂
inst✝³¹ : Semiring R₃
inst✝³⁰ : Monoid S
inst✝²⁹ : Monoid S₃
M : Type u_6
inst✝²⁸ : TopologicalSpace M
inst✝²⁷ : AddCommMonoid M
inst✝²⁶ : Module R M
M₂ : Type u_7
inst✝²⁵ : TopologicalSpace M₂
inst✝²⁴ : AddCommMonoid M₂
inst✝²³ : Module R₂ M₂
M₃ : Type u_8
inst✝²² : TopologicalSpace M₃
inst✝²¹ : AddCommMonoid M₃
inst✝²⁰ : Module R₃ M₃
N₂ : Type u_9
inst✝¹⁹ : TopologicalSpace N₂
inst✝¹⁸ : AddCommMonoid N₂
inst✝¹⁷ : Module R N₂
N₃ : Type u_10
inst✝¹⁶ : TopologicalSpace N₃
inst✝¹⁵ : AddCommMonoid N₃
inst✝¹⁴ : Module R N₃
inst✝¹³ : DistribMulAction S₃ M₃
inst✝¹² : SMulCommClass R₃ S₃ M₃
inst✝¹¹ : ContinuousConstSMul S₃ M₃
inst✝¹⁰ : DistribMulAction S N₃
inst✝⁹ : SMulCommClass R S N₃
inst✝⁸ : ContinuousConstSMul S N₃
σ₁₂ : R →+* R₂
σ₂₃ : R₂ →+* R₃
σ₁₃ : R →+* R₃
inst✝⁷ : RingHomCompTriple σ₁₂ σ₂₃ σ₁₃
inst✝⁶ : DistribMulAction S₃ M₂
inst✝⁵ : ContinuousConstSMul S₃ M₂
inst✝⁴ : SMulCommClass R₂ S₃ M₂
inst✝³ : DistribMulAction S N₂
inst✝² : ContinuousConstSMul S N₂
inst✝¹ : SMulCommClass R S N₂
inst✝ : LinearMap.CompatibleSMul N₂ N₃ S R
hₗ : N₂ →L[R] N₃
c : S
fₗ : M →L[R] N₂
⊢ comp hₗ (c • fₗ) = c • comp hₗ fₗ

Next tactic:
ext x
@[simp]
theorem comp_smul [LinearMap.CompatibleSMul N₂ N₃ S R] (hₗ : N₂ →L[R] N₃) (c : S)
    (fₗ : M →L[R] N₂) : hₗ.comp (c • fₗ) = c • hₗ.comp fₗ := by
  ext x
  

Proof state:
case h
R : Type u_1
R₂ : Type u_2
R₃ : Type u_3
S : Type u_4
S₃ : Type u_5
inst✝³³ : Semiring R
inst✝³² : Semiring R₂
inst✝³¹ : Semiring R₃
inst✝³⁰ : Monoid S
inst✝²⁹ : Monoid S₃
M : Type u_6
inst✝²⁸ : TopologicalSpace M
inst✝²⁷ : AddCommMonoid M
inst✝²⁶ : Module R M
M₂ : Type u_7
inst✝²⁵ : TopologicalSpace M₂
inst✝²⁴ : AddCommMonoid M₂
inst✝²³ : Module R₂ M₂
M₃ : Type u_8
inst✝²² : TopologicalSpace M₃
inst✝²¹ : AddCommMonoid M₃
inst✝²⁰ : Module R₃ M₃
N₂ : Type u_9
inst✝¹⁹ : TopologicalSpace N₂
inst✝¹⁸ : AddCommMonoid N₂
inst✝¹⁷ : Module R N₂
N₃ : Type u_10
inst✝¹⁶ : TopologicalSpace N₃
inst✝¹⁵ : AddCommMonoid N₃
inst✝¹⁴ : Module R N₃
inst✝¹³ : DistribMulAction S₃ M₃
inst✝¹² : SMulCommClass R₃ S₃ M₃
inst✝¹¹ : ContinuousConstSMul S₃ M₃
inst✝¹⁰ : DistribMulAction S N₃
inst✝⁹ : SMulCommClass R S N₃
inst✝⁸ : ContinuousConstSMul S N₃
σ₁₂ : R →+* R₂
σ₂₃ : R₂ →+* R₃
σ₁₃ : R →+* R₃
inst✝⁷ : RingHomCompTriple σ₁₂ σ₂₃ σ₁₃
inst✝⁶ : DistribMulAction S₃ M₂
inst✝⁵ : ContinuousConstSMul S₃ M₂
inst✝⁴ : SMulCommClass R₂ S₃ M₂
inst✝³ : DistribMulAction S N₂
inst✝² : ContinuousConstSMul S N₂
inst✝¹ : SMulCommClass R S N₂
inst✝ : LinearMap.CompatibleSMul N₂ N₃ S R
hₗ : N₂ →L[R] N₃
c : S
fₗ : M →L[R] N₂
x : M
⊢ (comp hₗ (c • fₗ)) x = (c • comp hₗ fₗ) x

Next tactic:
exact hₗ.map_smul_of_tower c (fₗ x)
@[simp]
theorem comp_smulₛₗ [SMulCommClass R₂ R₂ M₂] [SMulCommClass R₃ R₃ M₃] [ContinuousConstSMul R₂ M₂]
    [ContinuousConstSMul R₃ M₃] (h : M₂ →SL[σ₂₃] M₃) (c : R₂) (f : M →SL[σ₁₂] M₂) :
    h.comp (c • f) = σ₂₃ c • h.comp f := by
  

Proof state:
R : Type u_1
R₂ : Type u_2
R₃ : Type u_3
S : Type u_4
S₃ : Type u_5
inst✝³⁶ : Semiring R
inst✝³⁵ : Semiring R₂
inst✝³⁴ : Semiring R₃
inst✝³³ : Monoid S
inst✝³² : Monoid S₃
M : Type u_6
inst✝³¹ : TopologicalSpace M
inst✝³⁰ : AddCommMonoid M
inst✝²⁹ : Module R M
M₂ : Type u_7
inst✝²⁸ : TopologicalSpace M₂
inst✝²⁷ : AddCommMonoid M₂
inst✝²⁶ : Module R₂ M₂
M₃ : Type u_8
inst✝²⁵ : TopologicalSpace M₃
inst✝²⁴ : AddCommMonoid M₃
inst✝²³ : Module R₃ M₃
N₂ : Type u_9
inst✝²² : TopologicalSpace N₂
inst✝²¹ : AddCommMonoid N₂
inst✝²⁰ : Module R N₂
N₃ : Type u_10
inst✝¹⁹ : TopologicalSpace N₃
inst✝¹⁸ : AddCommMonoid N₃
inst✝¹⁷ : Module R N₃
inst✝¹⁶ : DistribMulAction S₃ M₃
inst✝¹⁵ : SMulCommClass R₃ S₃ M₃
inst✝¹⁴ : ContinuousConstSMul S₃ M₃
inst✝¹³ : DistribMulAction S N₃
inst✝¹² : SMulCommClass R S N₃
inst✝¹¹ : ContinuousConstSMul S N₃
σ₁₂ : R →+* R₂
σ₂₃ : R₂ →+* R₃
σ₁₃ : R →+* R₃
inst✝¹⁰ : RingHomCompTriple σ₁₂ σ₂₃ σ₁₃
inst✝⁹ : DistribMulAction S₃ M₂
inst✝⁸ : ContinuousConstSMul S₃ M₂
inst✝⁷ : SMulCommClass R₂ S₃ M₂
inst✝⁶ : DistribMulAction S N₂
inst✝⁵ : ContinuousConstSMul S N₂
inst✝⁴ : SMulCommClass R S N₂
inst✝³ : SMulCommClass R₂ R₂ M₂
inst✝² : SMulCommClass R₃ R₃ M₃
inst✝¹ : ContinuousConstSMul R₂ M₂
inst✝ : ContinuousConstSMul R₃ M₃
h : M₂ →SL[σ₂₃] M₃
c : R₂
f : M →SL[σ₁₂] M₂
⊢ comp h (c • f) = σ₂₃ c • comp h f

Next tactic:
ext x
@[simp]
theorem comp_smulₛₗ [SMulCommClass R₂ R₂ M₂] [SMulCommClass R₃ R₃ M₃] [ContinuousConstSMul R₂ M₂]
    [ContinuousConstSMul R₃ M₃] (h : M₂ →SL[σ₂₃] M₃) (c : R₂) (f : M →SL[σ₁₂] M₂) :
    h.comp (c • f) = σ₂₃ c • h.comp f := by
  ext x
  

Proof state:
case h
R : Type u_1
R₂ : Type u_2
R₃ : Type u_3
S : Type u_4
S₃ : Type u_5
inst✝³⁶ : Semiring R
inst✝³⁵ : Semiring R₂
inst✝³⁴ : Semiring R₃
inst✝³³ : Monoid S
inst✝³² : Monoid S₃
M : Type u_6
inst✝³¹ : TopologicalSpace M
inst✝³⁰ : AddCommMonoid M
inst✝²⁹ : Module R M
M₂ : Type u_7
inst✝²⁸ : TopologicalSpace M₂
inst✝²⁷ : AddCommMonoid M₂
inst✝²⁶ : Module R₂ M₂
M₃ : Type u_8
inst✝²⁵ : TopologicalSpace M₃
inst✝²⁴ : AddCommMonoid M₃
inst✝²³ : Module R₃ M₃
N₂ : Type u_9
inst✝²² : TopologicalSpace N₂
inst✝²¹ : AddCommMonoid N₂
inst✝²⁰ : Module R N₂
N₃ : Type u_10
inst✝¹⁹ : TopologicalSpace N₃
inst✝¹⁸ : AddCommMonoid N₃
inst✝¹⁷ : Module R N₃
inst✝¹⁶ : DistribMulAction S₃ M₃
inst✝¹⁵ : SMulCommClass R₃ S₃ M₃
inst✝¹⁴ : ContinuousConstSMul S₃ M₃
inst✝¹³ : DistribMulAction S N₃
inst✝¹² : SMulCommClass R S N₃
inst✝¹¹ : ContinuousConstSMul S N₃
σ₁₂ : R →+* R₂
σ₂₃ : R₂ →+* R₃
σ₁₃ : R →+* R₃
inst✝¹⁰ : RingHomCompTriple σ₁₂ σ₂₃ σ₁₃
inst✝⁹ : DistribMulAction S₃ M₂
inst✝⁸ : ContinuousConstSMul S₃ M₂
inst✝⁷ : SMulCommClass R₂ S₃ M₂
inst✝⁶ : DistribMulAction S N₂
inst✝⁵ : ContinuousConstSMul S N₂
inst✝⁴ : SMulCommClass R S N₂
inst✝³ : SMulCommClass R₂ R₂ M₂
inst✝² : SMulCommClass R₃ R₃ M₃
inst✝¹ : ContinuousConstSMul R₂ M₂
inst✝ : ContinuousConstSMul R₃ M₃
h : M₂ →SL[σ₂₃] M₃
c : R₂
f : M →SL[σ₁₂] M₂
x : M
⊢ (comp h (c • f)) x = (σ₂₃ c • comp h f) x

Next tactic:
simp only [coe_smul', coe_comp', Function.comp_apply, Pi.smul_apply,
    ContinuousLinearMap.map_smulₛₗ]
/-- `ContinuousLinearMap.prod` as an `Equiv`. -/
@[simps apply]
def prodEquiv : (M →L[R] N₂) × (M →L[R] N₃) ≃ (M →L[R] N₂ × N₃) where
  toFun f := f.1.prod f.2
  invFun f := ⟨(fst _ _ _).comp f, (snd _ _ _).comp f⟩
  left_inv f := by 

Proof state:
R : Type u_1
R₂ : Type u_2
R₃ : Type u_3
S : Type u_4
S₃ : Type u_5
inst✝²⁹ : Semiring R
inst✝²⁸ : Semiring R₂
inst✝²⁷ : Semiring R₃
inst✝²⁶ : Semiring S
inst✝²⁵ : Semiring S₃
M : Type u_6
inst✝²⁴ : TopologicalSpace M
inst✝²³ : AddCommMonoid M
inst✝²² : Module R M
M₂ : Type u_7
inst✝²¹ : TopologicalSpace M₂
inst✝²⁰ : AddCommMonoid M₂
inst✝¹⁹ : Module R₂ M₂
M₃ : Type u_8
inst✝¹⁸ : TopologicalSpace M₃
inst✝¹⁷ : AddCommMonoid M₃
inst✝¹⁶ : Module R₃ M₃
N₂ : Type u_9
inst✝¹⁵ : TopologicalSpace N₂
inst✝¹⁴ : AddCommMonoid N₂
inst✝¹³ : Module R N₂
N₃ : Type u_10
inst✝¹² : TopologicalSpace N₃
inst✝¹¹ : AddCommMonoid N₃
inst✝¹⁰ : Module R N₃
inst✝⁹ : Module S₃ M₃
inst✝⁸ : SMulCommClass R₃ S₃ M₃
inst✝⁷ : ContinuousConstSMul S₃ M₃
inst✝⁶ : Module S N₂
inst✝⁵ : ContinuousConstSMul S N₂
inst✝⁴ : SMulCommClass R S N₂
inst✝³ : Module S N₃
inst✝² : SMulCommClass R S N₃
inst✝¹ : ContinuousConstSMul S N₃
σ₁₂ : R →+* R₂
σ₂₃ : R₂ →+* R₃
σ₁₃ : R →+* R₃
inst✝ : RingHomCompTriple σ₁₂ σ₂₃ σ₁₃
c : S
h : M₂ →SL[σ₂₃] M₃
f✝ g : M →SL[σ₁₂] M₂
x y z : M
f : (M →L[R] N₂) × (M →L[R] N₃)
⊢ (fun f => (comp (fst R N₂ N₃) f, comp (snd R N₂ N₃) f)) ((fun f => ContinuousLinearMap.prod f.1 f.2) f) = f

Next tactic:
ext
/-- `ContinuousLinearMap.prod` as an `Equiv`. -/
@[simps apply]
def prodEquiv : (M →L[R] N₂) × (M →L[R] N₃) ≃ (M →L[R] N₂ × N₃) where
  toFun f := f.1.prod f.2
  invFun f := ⟨(fst _ _ _).comp f, (snd _ _ _).comp f⟩
  left_inv f := by ext <;> 

Proof state:
case a.h
R : Type u_1
R₂ : Type u_2
R₃ : Type u_3
S : Type u_4
S₃ : Type u_5
inst✝²⁹ : Semiring R
inst✝²⁸ : Semiring R₂
inst✝²⁷ : Semiring R₃
inst✝²⁶ : Semiring S
inst✝²⁵ : Semiring S₃
M : Type u_6
inst✝²⁴ : TopologicalSpace M
inst✝²³ : AddCommMonoid M
inst✝²² : Module R M
M₂ : Type u_7
inst✝²¹ : TopologicalSpace M₂
inst✝²⁰ : AddCommMonoid M₂
inst✝¹⁹ : Module R₂ M₂
M₃ : Type u_8
inst✝¹⁸ : TopologicalSpace M₃
inst✝¹⁷ : AddCommMonoid M₃
inst✝¹⁶ : Module R₃ M₃
N₂ : Type u_9
inst✝¹⁵ : TopologicalSpace N₂
inst✝¹⁴ : AddCommMonoid N₂
inst✝¹³ : Module R N₂
N₃ : Type u_10
inst✝¹² : TopologicalSpace N₃
inst✝¹¹ : AddCommMonoid N₃
inst✝¹⁰ : Module R N₃
inst✝⁹ : Module S₃ M₃
inst✝⁸ : SMulCommClass R₃ S₃ M₃
inst✝⁷ : ContinuousConstSMul S₃ M₃
inst✝⁶ : Module S N₂
inst✝⁵ : ContinuousConstSMul S N₂
inst✝⁴ : SMulCommClass R S N₂
inst✝³ : Module S N₃
inst✝² : SMulCommClass R S N₃
inst✝¹ : ContinuousConstSMul S N₃
σ₁₂ : R →+* R₂
σ₂₃ : R₂ →+* R₃
σ₁₃ : R →+* R₃
inst✝ : RingHomCompTriple σ₁₂ σ₂₃ σ₁₃
c : S
h : M₂ →SL[σ₂₃] M₃
f✝ g : M →SL[σ₁₂] M₂
x y z : M
f : (M →L[R] N₂) × (M →L[R] N₃)
x✝ : M
⊢ ((fun f => (comp (fst R N₂ N₃) f, comp (snd R N₂ N₃) f)) ((fun f => ContinuousLinearMap.prod f.1 f.2) f)).1 x✝ =
    f.1 x✝

Next tactic:
rfl
/-- `ContinuousLinearMap.prod` as an `Equiv`. -/
@[simps apply]
def prodEquiv : (M →L[R] N₂) × (M →L[R] N₃) ≃ (M →L[R] N₂ × N₃) where
  toFun f := f.1.prod f.2
  invFun f := ⟨(fst _ _ _).comp f, (snd _ _ _).comp f⟩
  left_inv f := by ext <;> 

Proof state:
case a.h
R : Type u_1
R₂ : Type u_2
R₃ : Type u_3
S : Type u_4
S₃ : Type u_5
inst✝²⁹ : Semiring R
inst✝²⁸ : Semiring R₂
inst✝²⁷ : Semiring R₃
inst✝²⁶ : Semiring S
inst✝²⁵ : Semiring S₃
M : Type u_6
inst✝²⁴ : TopologicalSpace M
inst✝²³ : AddCommMonoid M
inst✝²² : Module R M
M₂ : Type u_7
inst✝²¹ : TopologicalSpace M₂
inst✝²⁰ : AddCommMonoid M₂
inst✝¹⁹ : Module R₂ M₂
M₃ : Type u_8
inst✝¹⁸ : TopologicalSpace M₃
inst✝¹⁷ : AddCommMonoid M₃
inst✝¹⁶ : Module R₃ M₃
N₂ : Type u_9
inst✝¹⁵ : TopologicalSpace N₂
inst✝¹⁴ : AddCommMonoid N₂
inst✝¹³ : Module R N₂
N₃ : Type u_10
inst✝¹² : TopologicalSpace N₃
inst✝¹¹ : AddCommMonoid N₃
inst✝¹⁰ : Module R N₃
inst✝⁹ : Module S₃ M₃
inst✝⁸ : SMulCommClass R₃ S₃ M₃
inst✝⁷ : ContinuousConstSMul S₃ M₃
inst✝⁶ : Module S N₂
inst✝⁵ : ContinuousConstSMul S N₂
inst✝⁴ : SMulCommClass R S N₂
inst✝³ : Module S N₃
inst✝² : SMulCommClass R S N₃
inst✝¹ : ContinuousConstSMul S N₃
σ₁₂ : R →+* R₂
σ₂₃ : R₂ →+* R₃
σ₁₃ : R →+* R₃
inst✝ : RingHomCompTriple σ₁₂ σ₂₃ σ₁₃
c : S
h : M₂ →SL[σ₂₃] M₃
f✝ g : M →SL[σ₁₂] M₂
x y z : M
f : (M →L[R] N₂) × (M →L[R] N₃)
x✝ : M
⊢ ((fun f => (comp (fst R N₂ N₃) f, comp (snd R N₂ N₃) f)) ((fun f => ContinuousLinearMap.prod f.1 f.2) f)).2 x✝ =
    f.2 x✝

Next tactic:
rfl