awhecmu/canonical-drafter-extract-mathlib huggingface dataset:
-- Module: Mathlib.Analysis.Calculus.ContDiff.Convolution
Goal:
𝕜 : Type u𝕜
G : Type uG
E : Type uE
E' : Type uE'
F : Type uF
P : Type uP
inst : NormedAddCommGroup E
inst_1 : NormedAddCommGroup E'
inst_2 : NormedAddCommGroup F
inst_3 : RCLike 𝕜
inst_4 : NormedSpace 𝕜 E
inst_5 : NormedSpace 𝕜 E'
inst_6 : NormedSpace ℝ F
inst_7 : NormedSpace 𝕜 F
inst_8 : MeasurableSpace G
inst_9 : NormedAddCommGroup G
inst_10 : BorelSpace G
inst_11 : NormedSpace 𝕜 G
inst_12 : NormedAddCommGroup P
inst_13 : NormedSpace 𝕜 P
μ : Measure G
f : G → E
n : ℕ∞
L : E →L[𝕜] E' →L[𝕜] F
g : P → G → E'
s : Set P
k : Set G
hs : IsOpen[PseudoMetricSpace.toUniformSpace.toTopologicalSpace] s
hk : IsCompact k
hgs : ∀ (p : P) (x : G), p ∈ s → x ∉ k → g p x = 0
hf : LocallyIntegrable f μ
hg : ContDiffOn 𝕜 (↑n : WithTop ℕ∞) (↿g) (SProd.sprod (β := Set G) s univ)
eG : Type (max uG uE' uF uP) := ULift.{max uE' uF uP, uG} G
this : MeasurableSpace eG := borel eG
this_1 : BorelSpace eG
eE' : Type (max uE' uG uF uP) := ULift.{max uG uF uP, uE'} E'
eF : Type (max uF uG uE' uP) := ULift.{max uG uE' uP, uF} F
eP : Type (max uP uG uE' uF) := ULift.{max uG uE' uF, uP} P
isoG : eG ≃L[𝕜] G := ContinuousLinearEquiv.ulift
isoE' : eE' ≃L[𝕜] E' := ContinuousLinearEquiv.ulift
isoF : eF ≃L[𝕜] F := ContinuousLinearEquiv.ulift
isoP : eP ≃L[𝕜] P := ContinuousLinearEquiv.ulift
ef : eG → E := f ∘ (⇑isoG : (a : eG) → G)
eμ : Measure eG := Measure.map (⇑isoG.symm : (a : G) → eG) μ
eg : eP → eG → eE' :=
  fun (ep : eP) (ex : eG) ↦ (isoE'.symm : (a : E') → eE') (g ((isoP : (a : eP) → P) ep) ((isoG : (a : eG) → G) ex))
eL : E →L[𝕜] eE' →L[𝕜] eF :=
  ContinuousLinearMap.comp (σ₂₃ := RingHom.id 𝕜)
    (↑(ContinuousLinearEquiv.symm (isoE'.arrowCongr (𝕜 := 𝕜) (E := eE') (F := E') (G := F) (H := eF) isoF)) :
      (E' →L[𝕜] F) →L[𝕜] eE' →L[𝕜] eF)
    L
R : (q : eP × eG) → eF := fun (q : eP × eG) ↦ convolution (𝕜 := 𝕜) ef (eg q.1) eL eμ q.2
R_contdiff :
  ContDiffOn 𝕜 (↑n : WithTop ℕ∞) R (SProd.sprod (α := Set eP) (β := Set eG) ((⇑isoP : (a : eP) → P) ⁻¹' s) univ)
A :
  ContDiffOn 𝕜 (F := F) (↑n : WithTop ℕ∞)
    ((⇑isoF : (a : eF) → F) ∘ R ∘ (⇑(isoP.prodCongr isoG).symm : (a : P × G) → eP × eG))
    (SProd.sprod (β := Set G) s univ)
p : P
x : G
⊢ IsClosedEmbedding (X := G) (Y := eG) (⇑isoG.symm : (a : G) → eG)

Tactic:
exact isoG.symm.toHomeomorph.isClosedEmbedding

Premises used: ContinuousLinearEquiv.symm, ContinuousLinearEquiv.toHomeomorph, Homeomorph.isClosedEmbedding
-- Module: Mathlib.Analysis.Calculus.ContDiff.Convolution
Goal:
𝕜 : Type u𝕜
G : Type uG
E : Type uE
E' : Type uE'
F : Type uF
P : Type uP
inst : NormedAddCommGroup E
inst_1 : NormedAddCommGroup E'
inst_2 : NormedAddCommGroup F
inst_3 : RCLike 𝕜
inst_4 : NormedSpace 𝕜 E
inst_5 : NormedSpace 𝕜 E'
inst_6 : NormedSpace ℝ F
inst_7 : NormedSpace 𝕜 F
inst_8 : MeasurableSpace G
inst_9 : NormedAddCommGroup G
inst_10 : BorelSpace G
inst_11 : NormedSpace 𝕜 G
inst_12 : NormedAddCommGroup P
inst_13 : NormedSpace 𝕜 P
μ : Measure G
f : G → E
n : ℕ∞
L : E →L[𝕜] E' →L[𝕜] F
g : P → G → E'
s : Set P
k : Set G
hs : IsOpen[PseudoMetricSpace.toUniformSpace.toTopologicalSpace] s
hk : IsCompact k
hgs : ∀ (p : P) (x : G), p ∈ s → x ∉ k → g p x = 0
hf : LocallyIntegrable f μ
hg : ContDiffOn 𝕜 (↑n : WithTop ℕ∞) (↿g) (SProd.sprod (β := Set G) s univ)
eG : Type (max uG uE' uF uP) := ULift.{max uE' uF uP, uG} G
this : MeasurableSpace eG := borel eG
this_1 : BorelSpace eG
eE' : Type (max uE' uG uF uP) := ULift.{max uG uF uP, uE'} E'
eF : Type (max uF uG uE' uP) := ULift.{max uG uE' uP, uF} F
eP : Type (max uP uG uE' uF) := ULift.{max uG uE' uF, uP} P
isoG : eG ≃L[𝕜] G := ContinuousLinearEquiv.ulift
isoE' : eE' ≃L[𝕜] E' := ContinuousLinearEquiv.ulift
isoF : eF ≃L[𝕜] F := ContinuousLinearEquiv.ulift
isoP : eP ≃L[𝕜] P := ContinuousLinearEquiv.ulift
ef : eG → E := f ∘ (⇑isoG : (a : eG) → G)
eμ : Measure eG := Measure.map (⇑isoG.symm : (a : G) → eG) μ
eg : eP → eG → eE' :=
  fun (ep : eP) (ex : eG) ↦ (isoE'.symm : (a : E') → eE') (g ((isoP : (a : eP) → P) ep) ((isoG : (a : eG) → G) ex))
eL : E →L[𝕜] eE' →L[𝕜] eF :=
  ContinuousLinearMap.comp (σ₂₃ := RingHom.id 𝕜)
    (↑(ContinuousLinearEquiv.symm (isoE'.arrowCongr (𝕜 := 𝕜) (E := eE') (F := E') (G := F) (H := eF) isoF)) :
      (E' →L[𝕜] F) →L[𝕜] eE' →L[𝕜] eF)
    L
R : (q : eP × eG) → eF := fun (q : eP × eG) ↦ convolution (𝕜 := 𝕜) ef (eg q.1) eL eμ q.2
R_contdiff :
  ContDiffOn 𝕜 (↑n : WithTop ℕ∞) R (SProd.sprod (α := Set eP) (β := Set eG) ((⇑isoP : (a : eP) → P) ⁻¹' s) univ)
A :
  ContDiffOn 𝕜 (F := F) (↑n : WithTop ℕ∞)
    ((⇑isoF : (a : eF) → F) ∘ R ∘ (⇑(isoP.prodCongr isoG).symm : (a : P × G) → eP × eG))
    (SProd.sprod (β := Set G) s univ)
⊢ Eq (α := P × G → F) ((⇑isoF : (a : eF) → F) ∘ R ∘ (⇑(isoP.prodCongr isoG).symm : (a : P × G) → eP × eG))
    fun (q : P × G) ↦ convolution.{u𝕜, uG, uE, uE', uF} (𝕜 := 𝕜) f (g q.1) L μ q.2

Tactic:
have : isoF ∘ R ∘ (isoP.prodCongr isoG).symm = fun q : P × G => (f ⋆[L, μ] g q.1) q.2 := by
    apply funext
    rintro ⟨p, x⟩
    simp only [(· ∘ ·), ContinuousLinearEquiv.prodCongr_symm, ContinuousLinearEquiv.prodCongr_apply]
    simp only [R, convolution]
    rw [IsClosedEmbedding.integral_map, ← isoF.integral_comp_comm]
    · rfl
    · exact isoG.symm.toHomeomorph.isClosedEmbedding
-- Module: Mathlib.Analysis.Calculus.ContDiff.Convolution
Goal:
𝕜 : Type u𝕜
G : Type uG
E : Type uE
E' : Type uE'
F : Type uF
P : Type uP
inst : NormedAddCommGroup E
inst_1 : NormedAddCommGroup E'
inst_2 : NormedAddCommGroup F
inst_3 : RCLike 𝕜
inst_4 : NormedSpace 𝕜 E
inst_5 : NormedSpace 𝕜 E'
inst_6 : NormedSpace ℝ F
inst_7 : NormedSpace 𝕜 F
inst_8 : MeasurableSpace G
inst_9 : NormedAddCommGroup G
inst_10 : BorelSpace G
inst_11 : NormedSpace 𝕜 G
inst_12 : NormedAddCommGroup P
inst_13 : NormedSpace 𝕜 P
μ : Measure G
f : G → E
n : ℕ∞
L : E →L[𝕜] E' →L[𝕜] F
g : P → G → E'
s : Set P
k : Set G
hs : IsOpen[PseudoMetricSpace.toUniformSpace.toTopologicalSpace] s
hk : IsCompact k
hgs : ∀ (p : P) (x : G), p ∈ s → x ∉ k → g p x = 0
hf : LocallyIntegrable f μ
hg : ContDiffOn 𝕜 (↑n : WithTop ℕ∞) (↿g) (SProd.sprod (β := Set G) s univ)
eG : Type (max uG uE' uF uP) := ULift.{max uE' uF uP, uG} G
this_1 : MeasurableSpace eG := borel eG
this_2 : BorelSpace eG
eE' : Type (max uE' uG uF uP) := ULift.{max uG uF uP, uE'} E'
eF : Type (max uF uG uE' uP) := ULift.{max uG uE' uP, uF} F
eP : Type (max uP uG uE' uF) := ULift.{max uG uE' uF, uP} P
isoG : eG ≃L[𝕜] G := ContinuousLinearEquiv.ulift
isoE' : eE' ≃L[𝕜] E' := ContinuousLinearEquiv.ulift
isoF : eF ≃L[𝕜] F := ContinuousLinearEquiv.ulift
isoP : eP ≃L[𝕜] P := ContinuousLinearEquiv.ulift
ef : eG → E := f ∘ (⇑isoG : (a : eG) → G)
eμ : Measure eG := Measure.map (⇑isoG.symm : (a : G) → eG) μ
eg : eP → eG → eE' :=
  fun (ep : eP) (ex : eG) ↦ (isoE'.symm : (a : E') → eE') (g ((isoP : (a : eP) → P) ep) ((isoG : (a : eG) → G) ex))
eL : E →L[𝕜] eE' →L[𝕜] eF :=
  ContinuousLinearMap.comp (σ₂₃ := RingHom.id 𝕜)
    (↑(ContinuousLinearEquiv.symm (isoE'.arrowCongr (𝕜 := 𝕜) (E := eE') (F := E') (G := F) (H := eF) isoF)) :
      (E' →L[𝕜] F) →L[𝕜] eE' →L[𝕜] eF)
    L
R : (q : eP × eG) → eF := fun (q : eP × eG) ↦ convolution (𝕜 := 𝕜) ef (eg q.1) eL eμ q.2
R_contdiff :
  ContDiffOn 𝕜 (↑n : WithTop ℕ∞) R (SProd.sprod (α := Set eP) (β := Set eG) ((⇑isoP : (a : eP) → P) ⁻¹' s) univ)
A :
  ContDiffOn 𝕜 (F := F) (↑n : WithTop ℕ∞)
    ((⇑isoF : (a : eF) → F) ∘ R ∘ (⇑(isoP.prodCongr isoG).symm : (a : P × G) → eP × eG))
    (SProd.sprod (β := Set G) s univ)
this :
  Eq (α := P × G → F) ((⇑isoF : (a : eF) → F) ∘ R ∘ (⇑(isoP.prodCongr isoG).symm : (a : P × G) → eP × eG))
    fun (q : P × G) ↦ convolution.{u𝕜, uG, uE, uE', uF} (𝕜 := 𝕜) f (g q.1) L μ q.2
⊢ ContDiffOn 𝕜 (F := F) (↑n : WithTop ℕ∞)
    (fun (q : P × G) ↦ convolution.{u𝕜, uG, uE, uE', uF} (𝕜 := 𝕜) f (g q.1) L μ q.2) (SProd.sprod (β := Set G) s univ)

Tactic:
simp_rw [this] at A
-- Module: Mathlib.Analysis.Calculus.ContDiff.Convolution
Goal:
𝕜 : Type u𝕜
G : Type uG
E : Type uE
E' : Type uE'
F : Type uF
P : Type uP
inst : NormedAddCommGroup E
inst_1 : NormedAddCommGroup E'
inst_2 : NormedAddCommGroup F
inst_3 : RCLike 𝕜
inst_4 : NormedSpace 𝕜 E
inst_5 : NormedSpace 𝕜 E'
inst_6 : NormedSpace ℝ F
inst_7 : NormedSpace 𝕜 F
inst_8 : MeasurableSpace G
inst_9 : NormedAddCommGroup G
inst_10 : BorelSpace G
inst_11 : NormedSpace 𝕜 G
inst_12 : NormedAddCommGroup P
inst_13 : NormedSpace 𝕜 P
μ : Measure G
f : G → E
n : ℕ∞
L : E →L[𝕜] E' →L[𝕜] F
g : P → G → E'
s : Set P
k : Set G
hs : IsOpen[PseudoMetricSpace.toUniformSpace.toTopologicalSpace] s
hk : IsCompact k
hgs : ∀ (p : P) (x : G), p ∈ s → x ∉ k → g p x = 0
hf : LocallyIntegrable f μ
hg : ContDiffOn 𝕜 (↑n : WithTop ℕ∞) (↿g) (SProd.sprod (β := Set G) s univ)
eG : Type (max uG uE' uF uP) := ULift.{max uE' uF uP, uG} G
this_1 : MeasurableSpace eG := borel eG
this_2 : BorelSpace eG
eE' : Type (max uE' uG uF uP) := ULift.{max uG uF uP, uE'} E'
eF : Type (max uF uG uE' uP) := ULift.{max uG uE' uP, uF} F
eP : Type (max uP uG uE' uF) := ULift.{max uG uE' uF, uP} P
isoG : eG ≃L[𝕜] G := ContinuousLinearEquiv.ulift
isoE' : eE' ≃L[𝕜] E' := ContinuousLinearEquiv.ulift
isoF : eF ≃L[𝕜] F := ContinuousLinearEquiv.ulift
isoP : eP ≃L[𝕜] P := ContinuousLinearEquiv.ulift
ef : eG → E := f ∘ (⇑isoG : (a : eG) → G)
eμ : Measure eG := Measure.map (⇑isoG.symm : (a : G) → eG) μ
eg : eP → eG → eE' :=
  fun (ep : eP) (ex : eG) ↦ (isoE'.symm : (a : E') → eE') (g ((isoP : (a : eP) → P) ep) ((isoG : (a : eG) → G) ex))
eL : E →L[𝕜] eE' →L[𝕜] eF :=
  ContinuousLinearMap.comp (σ₂₃ := RingHom.id 𝕜)
    (↑(ContinuousLinearEquiv.symm (isoE'.arrowCongr (𝕜 := 𝕜) (E := eE') (F := E') (G := F) (H := eF) isoF)) :
      (E' →L[𝕜] F) →L[𝕜] eE' →L[𝕜] eF)
    L
R : (q : eP × eG) → eF := fun (q : eP × eG) ↦ convolution (𝕜 := 𝕜) ef (eg q.1) eL eμ q.2
R_contdiff :
  ContDiffOn 𝕜 (↑n : WithTop ℕ∞) R (SProd.sprod (α := Set eP) (β := Set eG) ((⇑isoP : (a : eP) → P) ⁻¹' s) univ)
this :
  Eq (α := P × G → F) ((⇑isoF : (a : eF) → F) ∘ R ∘ (⇑(isoP.prodCongr isoG).symm : (a : P × G) → eP × eG))
    fun (q : P × G) ↦ convolution.{u𝕜, uG, uE, uE', uF} (𝕜 := 𝕜) f (g q.1) L μ q.2
A :
  ContDiffOn 𝕜 (F := F) (↑n : WithTop ℕ∞)
    (fun (q : P × G) ↦ convolution.{u𝕜, uG, uE, uE', uF} (𝕜 := 𝕜) f (g q.1) L μ q.2) (SProd.sprod (β := Set G) s univ)
⊢ ContDiffOn 𝕜 (F := F) (↑n : WithTop ℕ∞)
    (fun (q : P × G) ↦ convolution.{u𝕜, uG, uE, uE', uF} (𝕜 := 𝕜) f (g q.1) L μ q.2) (SProd.sprod (β := Set G) s univ)

Tactic:
A
-- Module: Mathlib.Analysis.Calculus.ContDiff.Convolution
Goal:
𝕜 : Type u𝕜
G : Type uG
E : Type uE
E' : Type uE'
F : Type uF
P : Type uP
inst : NormedAddCommGroup E
inst_1 : NormedAddCommGroup E'
inst_2 : NormedAddCommGroup F
inst_3 : RCLike 𝕜
inst_4 : NormedSpace 𝕜 E
inst_5 : NormedSpace 𝕜 E'
inst_6 : NormedSpace ℝ F
inst_7 : NormedSpace 𝕜 F
inst_8 : MeasurableSpace G
inst_9 : NormedAddCommGroup G
inst_10 : BorelSpace G
inst_11 : NormedSpace 𝕜 G
inst_12 : NormedAddCommGroup P
inst_13 : NormedSpace 𝕜 P
μ : Measure G
f : G → E
n : ℕ∞
L : E →L[𝕜] E' →L[𝕜] F
g : P → G → E'
s : Set P
k : Set G
hs : IsOpen[PseudoMetricSpace.toUniformSpace.toTopologicalSpace] s
hk : IsCompact k
hgs : ∀ (p : P) (x : G), p ∈ s → x ∉ k → g p x = 0
hf : LocallyIntegrable f μ
hg : ContDiffOn 𝕜 (↑n : WithTop ℕ∞) (↿g) (SProd.sprod (β := Set G) s univ)
eG : Type (max uG uE' uF uP) := ULift.{max uE' uF uP, uG} G
this_1 : MeasurableSpace eG := borel eG
this_2 : BorelSpace eG
eE' : Type (max uE' uG uF uP) := ULift.{max uG uF uP, uE'} E'
eF : Type (max uF uG uE' uP) := ULift.{max uG uE' uP, uF} F
eP : Type (max uP uG uE' uF) := ULift.{max uG uE' uF, uP} P
isoG : eG ≃L[𝕜] G := ContinuousLinearEquiv.ulift
isoE' : eE' ≃L[𝕜] E' := ContinuousLinearEquiv.ulift
isoF : eF ≃L[𝕜] F := ContinuousLinearEquiv.ulift
isoP : eP ≃L[𝕜] P := ContinuousLinearEquiv.ulift
ef : eG → E := f ∘ (⇑isoG : (a : eG) → G)
eμ : Measure eG := Measure.map (⇑isoG.symm : (a : G) → eG) μ
eg : eP → eG → eE' :=
  fun (ep : eP) (ex : eG) ↦ (isoE'.symm : (a : E') → eE') (g ((isoP : (a : eP) → P) ep) ((isoG : (a : eG) → G) ex))
eL : E →L[𝕜] eE' →L[𝕜] eF :=
  ContinuousLinearMap.comp (σ₂₃ := RingHom.id 𝕜)
    (↑(ContinuousLinearEquiv.symm (isoE'.arrowCongr (𝕜 := 𝕜) (E := eE') (F := E') (G := F) (H := eF) isoF)) :
      (E' →L[𝕜] F) →L[𝕜] eE' →L[𝕜] eF)
    L
R : (q : eP × eG) → eF := fun (q : eP × eG) ↦ convolution (𝕜 := 𝕜) ef (eg q.1) eL eμ q.2
R_contdiff :
  ContDiffOn 𝕜 (↑n : WithTop ℕ∞) R (SProd.sprod (α := Set eP) (β := Set eG) ((⇑isoP : (a : eP) → P) ⁻¹' s) univ)
this :
  Eq (α := P × G → F) ((⇑isoF : (a : eF) → F) ∘ R ∘ (⇑(isoP.prodCongr isoG).symm : (a : P × G) → eP × eG))
    fun (q : P × G) ↦ convolution.{u𝕜, uG, uE, uE', uF} (𝕜 := 𝕜) f (g q.1) L μ q.2
A :
  ContDiffOn 𝕜 (F := F) (↑n : WithTop ℕ∞)
    (fun (q : P × G) ↦ convolution.{u𝕜, uG, uE, uE', uF} (𝕜 := 𝕜) f (g q.1) L μ q.2) (SProd.sprod (β := Set G) s univ)
⊢ ContDiffOn 𝕜 (F := F) (↑n : WithTop ℕ∞)
    (fun (q : P × G) ↦ convolution.{u𝕜, uG, uE, uE', uF} (𝕜 := 𝕜) f (g q.1) L μ q.2) (SProd.sprod (β := Set G) s univ)

Tactic:
exact A
-- Module: Mathlib.Analysis.Calculus.ContDiff.Convolution
Goal:
𝕜 : Type u𝕜
G : Type uG
E : Type uE
E' : Type uE'
F : Type uF
P : Type uP
inst : NormedAddCommGroup E
inst_1 : NormedAddCommGroup E'
inst_2 : NormedAddCommGroup F
inst_3 : RCLike 𝕜
inst_4 : NormedSpace 𝕜 E
inst_5 : NormedSpace 𝕜 E'
inst_6 : NormedSpace ℝ F
inst_7 : NormedSpace 𝕜 F
inst_8 : MeasurableSpace G
inst_9 : NormedAddCommGroup G
inst_10 : BorelSpace G
inst_11 : NormedSpace 𝕜 G
inst_12 : NormedAddCommGroup P
inst_13 : NormedSpace 𝕜 P
μ : Measure G
n : ℕ∞
L : E →L[𝕜] E' →L[𝕜] F
s : Set P
v : P → G
hv : ContDiffOn 𝕜 (↑n : WithTop ℕ∞) v s
f : G → E
g : P → G → E'
k : Set G
hs : IsOpen[PseudoMetricSpace.toUniformSpace.toTopologicalSpace] s
hk : IsCompact k
hgs : ∀ (p : P) (x : G), p ∈ s → x ∉ k → g p x = 0
hf : LocallyIntegrable f μ
hg : ContDiffOn 𝕜 (↑n : WithTop ℕ∞) (↿g) (SProd.sprod (β := Set G) s univ)
apply : MapsTo (fun (x : P) ↦ (id x, v x)) s (SProd.sprod (β := Set G) s univ)
⊢ ContDiffOn.{u𝕜, uP, uF} 𝕜 (F := F) (↑n : WithTop ℕ∞)
    (fun (x : P) ↦ convolution.{u𝕜, uG, uE, uE', uF} (𝕜 := 𝕜) f (g x) L μ (v x)) s

Tactic:
apply (contDiffOn_convolution_right_with_param L hs hk hgs hf hg).comp (contDiffOn_id.prodMk hv)

Premises used: ContDiffOn.comp, MeasureTheory.contDiffOn_convolution_right_with_param, ContDiffOn.prodMk, contDiffOn_id
-- Module: Mathlib.Analysis.Calculus.ContDiff.Convolution
Goal:
𝕜 : Type u𝕜
G : Type uG
E : Type uE
E' : Type uE'
F : Type uF
P : Type uP
inst : NormedAddCommGroup E
inst_1 : NormedAddCommGroup E'
inst_2 : NormedAddCommGroup F
inst_3 : RCLike 𝕜
inst_4 : NormedSpace 𝕜 E
inst_5 : NormedSpace 𝕜 E'
inst_6 : NormedSpace ℝ F
inst_7 : NormedSpace 𝕜 F
inst_8 : MeasurableSpace G
inst_9 : NormedAddCommGroup G
inst_10 : BorelSpace G
inst_11 : NormedSpace 𝕜 G
inst_12 : NormedAddCommGroup P
inst_13 : NormedSpace 𝕜 P
μ : Measure G
n : ℕ∞
L : E →L[𝕜] E' →L[𝕜] F
s : Set P
v : P → G
hv : ContDiffOn 𝕜 (↑n : WithTop ℕ∞) v s
f : G → E
g : P → G → E'
k : Set G
hs : IsOpen[PseudoMetricSpace.toUniformSpace.toTopologicalSpace] s
hk : IsCompact k
hgs : ∀ (p : P) (x : G), p ∈ s → x ∉ k → g p x = 0
hf : LocallyIntegrable f μ
hg : ContDiffOn 𝕜 (↑n : WithTop ℕ∞) (↿g) (SProd.sprod (β := Set G) s univ)
x : P
hx : x ∈ s
⊢ (fun (x : P) ↦ (id x, v x)) x ∈ SProd.sprod (β := Set G) s univ

Tactic:
simp only [hx, prodMk_mem_set_prod_eq, mem_univ, and_self_iff, _root_.id]

Premises used: id, Set.prodMk_mem_set_prod_eq, Set.mem_univ, and_self_iff
-- Module: Mathlib.Analysis.Calculus.ContDiff.Convolution
Goal:
𝕜 : Type u𝕜
G : Type uG
E : Type uE
E' : Type uE'
F : Type uF
P : Type uP
inst : NormedAddCommGroup E
inst_1 : NormedAddCommGroup E'
inst_2 : NormedAddCommGroup F
inst_3 : RCLike 𝕜
inst_4 : NormedSpace 𝕜 E
inst_5 : NormedSpace 𝕜 E'
inst_6 : NormedSpace ℝ F
inst_7 : NormedSpace 𝕜 F
inst_8 : MeasurableSpace G
inst_9 : NormedAddCommGroup G
inst_10 : BorelSpace G
inst_11 : NormedSpace 𝕜 G
inst_12 : NormedAddCommGroup P
inst_13 : NormedSpace 𝕜 P
μ : Measure G
inst_14 : μ.IsAddLeftInvariant
inst_15 : μ.IsNegInvariant
L : E' →L[𝕜] E →L[𝕜] F
f : G → E
n : ℕ∞
g : P → G → E'
s : Set P
k : Set G
hs : IsOpen[PseudoMetricSpace.toUniformSpace.toTopologicalSpace] s
hk : IsCompact k
hgs : ∀ (p : P) (x : G), p ∈ s → x ∉ k → g p x = 0
hf : LocallyIntegrable f μ
hg : ContDiffOn 𝕜 (↑n : WithTop ℕ∞) (↿g) (SProd.sprod (β := Set G) s univ)
⊢ ContDiffOn 𝕜 (F := F) (↑n : WithTop ℕ∞)
    (fun (q : P × G) ↦ convolution.{u𝕜, uG, uE', uE, uF} (𝕜 := 𝕜) (g q.1) f L μ q.2) (SProd.sprod (β := Set G) s univ)

Tactic:
simpa only [convolution_flip] using contDiffOn_convolution_right_with_param L.flip hs hk hgs hf hg

Premises used: MeasureTheory.convolution_flip, MeasureTheory.contDiffOn_convolution_right_with_param, ContinuousLinearMap.flip
-- Module: Mathlib.Analysis.Calculus.ContDiff.Convolution
Goal:
𝕜 : Type u𝕜
G : Type uG
E : Type uE
E' : Type uE'
F : Type uF
P : Type uP
inst : NormedAddCommGroup E
inst_1 : NormedAddCommGroup E'
inst_2 : NormedAddCommGroup F
inst_3 : RCLike 𝕜
inst_4 : NormedSpace 𝕜 E
inst_5 : NormedSpace 𝕜 E'
inst_6 : NormedSpace ℝ F
inst_7 : NormedSpace 𝕜 F
inst_8 : MeasurableSpace G
inst_9 : NormedAddCommGroup G
inst_10 : BorelSpace G
inst_11 : NormedSpace 𝕜 G
inst_12 : NormedAddCommGroup P
inst_13 : NormedSpace 𝕜 P
μ : Measure G
inst_14 : μ.IsAddLeftInvariant
inst_15 : μ.IsNegInvariant
L : E' →L[𝕜] E →L[𝕜] F
s : Set P
n : ℕ∞
v : P → G
hv : ContDiffOn 𝕜 (↑n : WithTop ℕ∞) v s
f : G → E
g : P → G → E'
k : Set G
hs : IsOpen[PseudoMetricSpace.toUniformSpace.toTopologicalSpace] s
hk : IsCompact k
hgs : ∀ (p : P) (x : G), p ∈ s → x ∉ k → g p x = 0
hf : LocallyIntegrable f μ
hg : ContDiffOn 𝕜 (↑n : WithTop ℕ∞) (↿g) (SProd.sprod (β := Set G) s univ)
apply : MapsTo (fun (x : P) ↦ (id x, v x)) s (SProd.sprod (β := Set G) s univ)
⊢ ContDiffOn.{u𝕜, uP, uF} 𝕜 (F := F) (↑n : WithTop ℕ∞)
    (fun (x : P) ↦ convolution.{u𝕜, uG, uE', uE, uF} (𝕜 := 𝕜) (g x) f L μ (v x)) s

Tactic:
apply (contDiffOn_convolution_left_with_param L hs hk hgs hf hg).comp (contDiffOn_id.prodMk hv)

Premises used: MeasureTheory.contDiffOn_convolution_left_with_param, ContDiffOn.comp, ContDiffOn.prodMk, contDiffOn_id
-- Module: Mathlib.Analysis.Calculus.ContDiff.Convolution
Goal:
𝕜 : Type u𝕜
G : Type uG
E : Type uE
E' : Type uE'
F : Type uF
P : Type uP
inst : NormedAddCommGroup E
inst_1 : NormedAddCommGroup E'
inst_2 : NormedAddCommGroup F
inst_3 : RCLike 𝕜
inst_4 : NormedSpace 𝕜 E
inst_5 : NormedSpace 𝕜 E'
inst_6 : NormedSpace ℝ F
inst_7 : NormedSpace 𝕜 F
inst_8 : MeasurableSpace G
inst_9 : NormedAddCommGroup G
inst_10 : BorelSpace G
inst_11 : NormedSpace 𝕜 G
inst_12 : NormedAddCommGroup P
inst_13 : NormedSpace 𝕜 P
μ : Measure G
inst_14 : μ.IsAddLeftInvariant
inst_15 : μ.IsNegInvariant
L : E' →L[𝕜] E →L[𝕜] F
s : Set P
n : ℕ∞
v : P → G
hv : ContDiffOn 𝕜 (↑n : WithTop ℕ∞) v s
f : G → E
g : P → G → E'
k : Set G
hs : IsOpen[PseudoMetricSpace.toUniformSpace.toTopologicalSpace] s
hk : IsCompact k
hgs : ∀ (p : P) (x : G), p ∈ s → x ∉ k → g p x = 0
hf : LocallyIntegrable f μ
hg : ContDiffOn 𝕜 (↑n : WithTop ℕ∞) (↿g) (SProd.sprod (β := Set G) s univ)
x : P
hx : x ∈ s
⊢ (fun (x : P) ↦ (id x, v x)) x ∈ SProd.sprod (β := Set G) s univ

Tactic:
simp only [hx, prodMk_mem_set_prod_eq, mem_univ, and_self_iff, _root_.id]

Premises used: id, Set.prodMk_mem_set_prod_eq, Set.mem_univ, and_self_iff
-- Module: Mathlib.Analysis.Calculus.ContDiff.Convolution
Goal:
𝕜 : Type u𝕜
G : Type uG
E : Type uE
E' : Type uE'
F : Type uF
inst : NormedAddCommGroup E
inst_1 : NormedAddCommGroup E'
inst_2 : NormedAddCommGroup F
f : G → E
g : G → E'
inst_3 : RCLike 𝕜
inst_4 : NormedSpace 𝕜 E
inst_5 : NormedSpace 𝕜 E'
inst_6 : NormedSpace ℝ F
inst_7 : NormedSpace 𝕜 F
inst_8 : MeasurableSpace G
inst_9 : NormedAddCommGroup G
inst_10 : BorelSpace G
inst_11 : NormedSpace 𝕜 G
μ : Measure G
L : E →L[𝕜] E' →L[𝕜] F
n : ℕ∞
hcg : HasCompactSupport g
hf : LocallyIntegrable f μ
hg : ContDiff 𝕜 (↑n : WithTop ℕ∞) g
rcases :
  ∀ (k : Set G) (hk : IsCompact k) (h'k : ∀ x ∉ k, g x = 0),
    ContDiff.{u𝕜, uG, uF} 𝕜 (F := F) (↑n : WithTop ℕ∞) (convolution.{u𝕜, uG, uE, uE', uF} (𝕜 := 𝕜) f g L μ)
⊢ ContDiff.{u𝕜, uG, uF} 𝕜 (F := F) (↑n : WithTop ℕ∞) (convolution.{u𝕜, uG, uE, uE', uF} (𝕜 := 𝕜) f g L μ)

Tactic:
rcases exists_compact_iff_hasCompactSupport.2 hcg with ⟨k, hk, h'k⟩

Premises used: Iff.mpr, exists_compact_iff_hasCompactSupport
-- Module: Mathlib.Analysis.Calculus.ContDiff.Convolution
Goal:
𝕜 : Type u𝕜
G : Type uG
E : Type uE
E' : Type uE'
F : Type uF
inst : NormedAddCommGroup E
inst_1 : NormedAddCommGroup E'
inst_2 : NormedAddCommGroup F
f : G → E
g : G → E'
inst_3 : RCLike 𝕜
inst_4 : NormedSpace 𝕜 E
inst_5 : NormedSpace 𝕜 E'
inst_6 : NormedSpace ℝ F
inst_7 : NormedSpace 𝕜 F
inst_8 : MeasurableSpace G
inst_9 : NormedAddCommGroup G
inst_10 : BorelSpace G
inst_11 : NormedSpace 𝕜 G
μ : Measure G
L : E →L[𝕜] E' →L[𝕜] F
n : ℕ∞
hcg : HasCompactSupport g
hf : LocallyIntegrable f μ
hg : ContDiff 𝕜 (↑n : WithTop ℕ∞) g
k : Set G
hk : IsCompact k
h'k : ∀ x ∉ k, g x = 0
rw : ContDiffOn.{u𝕜, uG, uF} 𝕜 (F := F) (↑n : WithTop ℕ∞) (convolution.{u𝕜, uG, uE, uE', uF} (𝕜 := 𝕜) f g L μ) univ
⊢ ContDiff.{u𝕜, uG, uF} 𝕜 (F := F) (↑n : WithTop ℕ∞) (convolution.{u𝕜, uG, uE, uE', uF} (𝕜 := 𝕜) f g L μ)

Tactic:
rw [← contDiffOn_univ]

Premises used: contDiffOn_univ
-- Module: Mathlib.Analysis.Calculus.ContDiff.Convolution
Goal:
𝕜 : Type u𝕜
G : Type uG
E : Type uE
E' : Type uE'
F : Type uF
inst : NormedAddCommGroup E
inst_1 : NormedAddCommGroup E'
inst_2 : NormedAddCommGroup F
f : G → E
g : G → E'
inst_3 : RCLike 𝕜
inst_4 : NormedSpace 𝕜 E
inst_5 : NormedSpace 𝕜 E'
inst_6 : NormedSpace ℝ F
inst_7 : NormedSpace 𝕜 F
inst_8 : MeasurableSpace G
inst_9 : NormedAddCommGroup G
inst_10 : BorelSpace G
inst_11 : NormedSpace 𝕜 G
μ : Measure G
L : E →L[𝕜] E' →L[𝕜] F
n : ℕ∞
hcg : HasCompactSupport g
hf : LocallyIntegrable f μ
hg : ContDiff 𝕜 (↑n : WithTop ℕ∞) g
k : Set G
hk : IsCompact k
h'k : ∀ x ∉ k, g x = 0
⊢ ContDiffOn.{u𝕜, uG, uF} 𝕜 (F := F) (↑n : WithTop ℕ∞) (convolution.{u𝕜, uG, uE, uE', uF} (𝕜 := 𝕜) f g L μ) univ

Tactic:
contDiffOn_convolution_right_with_param_comp L contDiffOn_id isOpen_univ hk
    (fun p x _ hx => h'k x hx) hf (hg.comp contDiff_snd).contDiffOn

Premises used: ContDiff.contDiffOn, isOpen_univ, MeasureTheory.contDiffOn_convolution_right_with_param_comp, ContDiff.comp, contDiff_snd, contDiffOn_id
-- Module: Mathlib.Analysis.Calculus.ContDiff.Convolution
Goal:
𝕜 : Type u𝕜
G : Type uG
E : Type uE
E' : Type uE'
F : Type uF
inst : NormedAddCommGroup E
inst_1 : NormedAddCommGroup E'
inst_2 : NormedAddCommGroup F
f : G → E
g : G → E'
inst_3 : RCLike 𝕜
inst_4 : NormedSpace 𝕜 E
inst_5 : NormedSpace 𝕜 E'
inst_6 : NormedSpace ℝ F
inst_7 : NormedSpace 𝕜 F
inst_8 : MeasurableSpace G
inst_9 : NormedAddCommGroup G
inst_10 : BorelSpace G
inst_11 : NormedSpace 𝕜 G
μ : Measure G
L : E →L[𝕜] E' →L[𝕜] F
n : ℕ∞
hcg : HasCompactSupport g
hf : LocallyIntegrable f μ
hg : ContDiff 𝕜 (↑n : WithTop ℕ∞) g
k : Set G
hk : IsCompact k
h'k : ∀ x ∉ k, g x = 0
⊢ ContDiffOn.{u𝕜, uG, uF} 𝕜 (F := F) (↑n : WithTop ℕ∞) (convolution.{u𝕜, uG, uE, uE', uF} (𝕜 := 𝕜) f g L μ) univ

Tactic:
exact contDiffOn_convolution_right_with_param_comp L contDiffOn_id isOpen_univ hk
    (fun p x _ hx => h'k x hx) hf (hg.comp contDiff_snd).contDiffOn

Premises used: ContDiff.contDiffOn, isOpen_univ, MeasureTheory.contDiffOn_convolution_right_with_param_comp, ContDiff.comp, contDiff_snd, contDiffOn_id
-- Module: Mathlib.Analysis.Calculus.ContDiff.Convolution
Goal:
𝕜 : Type u𝕜
G : Type uG
E : Type uE
E' : Type uE'
F : Type uF
inst : NormedAddCommGroup E
inst_1 : NormedAddCommGroup E'
inst_2 : NormedAddCommGroup F
f : G → E
g : G → E'
inst_3 : RCLike 𝕜
inst_4 : NormedSpace 𝕜 E
inst_5 : NormedSpace 𝕜 E'
inst_6 : NormedSpace ℝ F
inst_7 : NormedSpace 𝕜 F
inst_8 : MeasurableSpace G
inst_9 : NormedAddCommGroup G
inst_10 : BorelSpace G
inst_11 : NormedSpace 𝕜 G
μ : Measure G
L : E →L[𝕜] E' →L[𝕜] F
inst_12 : μ.IsAddLeftInvariant
inst_13 : μ.IsNegInvariant
n : ℕ∞
hcf : HasCompactSupport f
hf : ContDiff 𝕜 (↑n : WithTop ℕ∞) f
hg : LocallyIntegrable g μ
rw : ContDiff.{u𝕜, uG, uF} 𝕜 (F := F) (↑n : WithTop ℕ∞) (convolution.{u𝕜, uG, uE', uE, uF} (𝕜 := 𝕜) g f L.flip μ)
⊢ ContDiff.{u𝕜, uG, uF} 𝕜 (F := F) (↑n : WithTop ℕ∞) (convolution.{u𝕜, uG, uE, uE', uF} (𝕜 := 𝕜) f g L μ)

Tactic:
rw [← convolution_flip]

Premises used: MeasureTheory.convolution_flip