analysis.special_functions.polar_coord
⟷
Mathlib.Analysis.SpecialFunctions.PolarCoord
The following section lists changes to this file in mathlib3 and mathlib4 that occured after the initial port. Most recent changes are shown first. Hovering over a commit will show all commits associated with the same mathlib3 commit.
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(last sync)
mathlib commit https://github.com/leanprover-community/mathlib/commit/65a1391a0106c9204fe45bc73a039f056558cb83
@@ -42,7 +42,7 @@ def polarCoord : PartialHomeomorph (ℝ × ℝ) (ℝ × ℝ)
target := Ioi (0 : ℝ) ×ˢ Ioo (-π) π
map_target' := by
rintro ⟨r, θ⟩ ⟨hr, hθ⟩
- dsimp at hr hθ
+ dsimp at hr hθ
rcases eq_or_ne θ 0 with (rfl | h'θ)
· simpa using hr
· right
@@ -54,14 +54,14 @@ def polarCoord : PartialHomeomorph (ℝ × ℝ) (ℝ × ℝ)
true_and_iff, Complex.arg_lt_pi_iff]
constructor
· cases hxy
- · dsimp at hxy ; linarith [sq_pos_of_ne_zero _ hxy.ne', sq_nonneg y]
+ · dsimp at hxy; linarith [sq_pos_of_ne_zero _ hxy.ne', sq_nonneg y]
· linarith [sq_nonneg x, sq_pos_of_ne_zero _ hxy]
· cases hxy
· exact Or.inl (le_of_lt hxy)
· exact Or.inr hxy
right_inv' := by
rintro ⟨r, θ⟩ ⟨hr, hθ⟩
- dsimp at hr hθ
+ dsimp at hr hθ
simp only [Prod.mk.inj_iff]
constructor
· conv_rhs => rw [← sqrt_sq (le_of_lt hr), ← one_mul (r ^ 2), ← sin_sq_add_cos_sq θ]
@@ -79,7 +79,7 @@ def polarCoord : PartialHomeomorph (ℝ × ℝ) (ℝ × ℝ)
Complex.I_im, sub_self, add_zero, Complex.add_im, Complex.mul_im, mul_one, zero_add]
have Z := Complex.abs_mul_cos_add_sin_mul_I (x + y * Complex.I)
simp only [← Complex.ofReal_cos, ← Complex.ofReal_sin, mul_add, ← Complex.ofReal_mul, ←
- mul_assoc] at Z
+ mul_assoc] at Z
simpa [A, -Complex.ofReal_cos, -Complex.ofReal_sin] using Complex.ext_iff.1 Z
open_target := isOpen_Ioi.Prod isOpen_Ioo
open_source :=
@@ -125,7 +125,7 @@ theorem polarCoord_source_ae_eq_univ : polarCoord.source =ᵐ[volume] univ :=
by
intro x hx
simp only [polarCoord_source, compl_union, mem_inter_iff, mem_compl_iff, mem_set_of_eq, not_lt,
- Classical.not_not] at hx
+ Classical.not_not] at hx
exact hx.2
have B : volume ((LinearMap.snd ℝ ℝ ℝ).ker : Set (ℝ × ℝ)) = 0 :=
by
mathlib commit https://github.com/leanprover-community/mathlib/commit/65a1391a0106c9204fe45bc73a039f056558cb83
@@ -34,7 +34,7 @@ open scoped Real Topology
/-- The polar coordinates local homeomorphism in `ℝ^2`, mapping `(r cos θ, r sin θ)` to `(r, θ)`.
It is a homeomorphism between `ℝ^2 - (-∞, 0]` and `(0, +∞) × (-π, π)`. -/
@[simps]
-def polarCoord : LocalHomeomorph (ℝ × ℝ) (ℝ × ℝ)
+def polarCoord : PartialHomeomorph (ℝ × ℝ) (ℝ × ℝ)
where
toFun q := (Real.sqrt (q.1 ^ 2 + q.2 ^ 2), Complex.arg (Complex.equivRealProd.symm q))
invFun p := (p.1 * cos p.2, p.1 * sin p.2)
mathlib commit https://github.com/leanprover-community/mathlib/commit/ce64cd319bb6b3e82f31c2d38e79080d377be451
@@ -3,8 +3,8 @@ Copyright (c) 2022 Sébastien Gouëzel. All rights reserved.
Released under Apache 2.0 license as described in the file LICENSE.
Authors: Sébastien Gouëzel
-/
-import Mathbin.Analysis.SpecialFunctions.Trigonometric.Deriv
-import Mathbin.MeasureTheory.Function.Jacobian
+import Analysis.SpecialFunctions.Trigonometric.Deriv
+import MeasureTheory.Function.Jacobian
#align_import analysis.special_functions.polar_coord from "leanprover-community/mathlib"@"6b31d1eebd64eab86d5bd9936bfaada6ca8b5842"
mathlib commit https://github.com/leanprover-community/mathlib/commit/8ea5598db6caeddde6cb734aa179cc2408dbd345
@@ -2,15 +2,12 @@
Copyright (c) 2022 Sébastien Gouëzel. All rights reserved.
Released under Apache 2.0 license as described in the file LICENSE.
Authors: Sébastien Gouëzel
-
-! This file was ported from Lean 3 source module analysis.special_functions.polar_coord
-! leanprover-community/mathlib commit 6b31d1eebd64eab86d5bd9936bfaada6ca8b5842
-! Please do not edit these lines, except to modify the commit id
-! if you have ported upstream changes.
-/
import Mathbin.Analysis.SpecialFunctions.Trigonometric.Deriv
import Mathbin.MeasureTheory.Function.Jacobian
+#align_import analysis.special_functions.polar_coord from "leanprover-community/mathlib"@"6b31d1eebd64eab86d5bd9936bfaada6ca8b5842"
+
/-!
# Polar coordinates
mathlib commit https://github.com/leanprover-community/mathlib/commit/9fb8964792b4237dac6200193a0d533f1b3f7423
@@ -33,6 +33,7 @@ open Real Set MeasureTheory
open scoped Real Topology
/- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
+#print polarCoord /-
/-- The polar coordinates local homeomorphism in `ℝ^2`, mapping `(r cos θ, r sin θ)` to `(r, θ)`.
It is a homeomorphism between `ℝ^2 - (-∞, 0]` and `(0, +∞) × (-π, π)`. -/
@[simps]
@@ -101,7 +102,9 @@ def polarCoord : LocalHomeomorph (ℝ × ℝ) (ℝ × ℝ)
· exact (Complex.continuousAt_arg hz).ContinuousWithinAt
· exact complex.equiv_real_prod_clm.symm.continuous.continuous_on
#align polar_coord polarCoord
+-/
+#print hasFDerivAt_polarCoord_symm /-
theorem hasFDerivAt_polarCoord_symm (p : ℝ × ℝ) :
HasFDerivAt polarCoord.symm
(Matrix.toLin (Basis.finTwoProd ℝ) (Basis.finTwoProd ℝ)
@@ -116,6 +119,7 @@ theorem hasFDerivAt_polarCoord_symm (p : ℝ × ℝ) :
2 <;>
simp only [smul_smul, add_comm, neg_mul, neg_smul, smul_neg]
#align has_fderiv_at_polar_coord_symm hasFDerivAt_polarCoord_symm
+-/
#print polarCoord_source_ae_eq_univ /-
theorem polarCoord_source_ae_eq_univ : polarCoord.source =ᵐ[volume] univ :=
mathlib commit https://github.com/leanprover-community/mathlib/commit/a3e83f0fa4391c8740f7d773a7a9b74e311ae2a3
@@ -141,7 +141,7 @@ theorem polarCoord_source_ae_eq_univ : polarCoord.source =ᵐ[volume] univ :=
#print integral_comp_polarCoord_symm /-
theorem integral_comp_polarCoord_symm {E : Type _} [NormedAddCommGroup E] [NormedSpace ℝ E]
[CompleteSpace E] (f : ℝ × ℝ → E) :
- (∫ p in polarCoord.target, p.1 • f (polarCoord.symm p)) = ∫ p, f p :=
+ ∫ p in polarCoord.target, p.1 • f (polarCoord.symm p) = ∫ p, f p :=
by
set B : ℝ × ℝ → ℝ × ℝ →L[ℝ] ℝ × ℝ := fun p =>
(Matrix.toLin (Basis.finTwoProd ℝ) (Basis.finTwoProd ℝ)
@@ -157,7 +157,7 @@ theorem integral_comp_polarCoord_symm {E : Type _} [NormedAddCommGroup E] [Norme
ring
symm
calc
- (∫ p, f p) = ∫ p in polar_coord.source, f p :=
+ ∫ p, f p = ∫ p in polar_coord.source, f p :=
by
rw [← integral_univ]
apply set_integral_congr_set_ae
mathlib commit https://github.com/leanprover-community/mathlib/commit/a3e83f0fa4391c8740f7d773a7a9b74e311ae2a3
@@ -4,7 +4,7 @@ Released under Apache 2.0 license as described in the file LICENSE.
Authors: Sébastien Gouëzel
! This file was ported from Lean 3 source module analysis.special_functions.polar_coord
-! leanprover-community/mathlib commit 8f9fea08977f7e450770933ee6abb20733b47c92
+! leanprover-community/mathlib commit 6b31d1eebd64eab86d5bd9936bfaada6ca8b5842
! Please do not edit these lines, except to modify the commit id
! if you have ported upstream changes.
-/
@@ -14,6 +14,9 @@ import Mathbin.MeasureTheory.Function.Jacobian
/-!
# Polar coordinates
+> THIS FILE IS SYNCHRONIZED WITH MATHLIB4.
+> Any changes to this file require a corresponding PR to mathlib4.
+
We define polar coordinates, as a local homeomorphism in `ℝ^2` between `ℝ^2 - (-∞, 0]` and
`(0, +∞) × (-π, π)`. Its inverse is given by `(r, θ) ↦ (r cos θ, r sin θ)`.
mathlib commit https://github.com/leanprover-community/mathlib/commit/7e5137f579de09a059a5ce98f364a04e221aabf0
@@ -166,7 +166,6 @@ theorem integral_comp_polarCoord_symm {E : Type _} [NormedAddCommGroup E] [Norme
apply set_integral_congr polar_coord.open_target.measurable_set fun x hx => _
rw [B_det, abs_of_pos]
exact hx.1
-
#align integral_comp_polar_coord_symm integral_comp_polarCoord_symm
-/
mathlib commit https://github.com/leanprover-community/mathlib/commit/31c24aa72e7b3e5ed97a8412470e904f82b81004
@@ -114,6 +114,7 @@ theorem hasFDerivAt_polarCoord_symm (p : ℝ × ℝ) :
simp only [smul_smul, add_comm, neg_mul, neg_smul, smul_neg]
#align has_fderiv_at_polar_coord_symm hasFDerivAt_polarCoord_symm
+#print polarCoord_source_ae_eq_univ /-
theorem polarCoord_source_ae_eq_univ : polarCoord.source =ᵐ[volume] univ :=
by
have A : polar_coord.sourceᶜ ⊆ (LinearMap.snd ℝ ℝ ℝ).ker :=
@@ -132,7 +133,9 @@ theorem polarCoord_source_ae_eq_univ : polarCoord.source =ᵐ[volume] univ :=
simp only [ae_eq_univ]
exact le_antisymm ((measure_mono A).trans (le_of_eq B)) bot_le
#align polar_coord_source_ae_eq_univ polarCoord_source_ae_eq_univ
+-/
+#print integral_comp_polarCoord_symm /-
theorem integral_comp_polarCoord_symm {E : Type _} [NormedAddCommGroup E] [NormedSpace ℝ E]
[CompleteSpace E] (f : ℝ × ℝ → E) :
(∫ p in polarCoord.target, p.1 • f (polarCoord.symm p)) = ∫ p, f p :=
@@ -165,4 +168,5 @@ theorem integral_comp_polarCoord_symm {E : Type _} [NormedAddCommGroup E] [Norme
exact hx.1
#align integral_comp_polar_coord_symm integral_comp_polarCoord_symm
+-/
mathlib commit https://github.com/leanprover-community/mathlib/commit/5f25c089cb34db4db112556f23c50d12da81b297
@@ -37,7 +37,7 @@ def polarCoord : LocalHomeomorph (ℝ × ℝ) (ℝ × ℝ)
where
toFun q := (Real.sqrt (q.1 ^ 2 + q.2 ^ 2), Complex.arg (Complex.equivRealProd.symm q))
invFun p := (p.1 * cos p.2, p.1 * sin p.2)
- source := { q | 0 < q.1 } ∪ { q | q.2 ≠ 0 }
+ source := {q | 0 < q.1} ∪ {q | q.2 ≠ 0}
target := Ioi (0 : ℝ) ×ˢ Ioo (-π) π
map_target' := by
rintro ⟨r, θ⟩ ⟨hr, hθ⟩
@@ -91,8 +91,8 @@ def polarCoord : LocalHomeomorph (ℝ × ℝ) (ℝ × ℝ)
by
apply ((continuous_fst.pow 2).add (continuous_snd.pow 2)).sqrt.ContinuousOn.Prod
have A :
- maps_to complex.equiv_real_prod.symm ({ q : ℝ × ℝ | 0 < q.1 } ∪ { q : ℝ × ℝ | q.2 ≠ 0 })
- { z | 0 < z.re ∨ z.im ≠ 0 } :=
+ maps_to complex.equiv_real_prod.symm ({q : ℝ × ℝ | 0 < q.1} ∪ {q : ℝ × ℝ | q.2 ≠ 0})
+ {z | 0 < z.re ∨ z.im ≠ 0} :=
by rintro ⟨x, y⟩ hxy; simpa only using hxy
apply ContinuousOn.comp (fun z hz => _) _ A
· exact (Complex.continuousAt_arg hz).ContinuousWithinAt
@@ -106,7 +106,8 @@ theorem hasFDerivAt_polarCoord_symm (p : ℝ × ℝ) :
p :=
by
rw [Matrix.toLin_finTwoProd_toContinuousLinearMap]
- convert HasFDerivAt.prod
+ convert
+ HasFDerivAt.prod
(has_fderiv_at_fst.mul ((has_deriv_at_cos p.2).comp_hasFDerivAt p hasFDerivAt_snd))
(has_fderiv_at_fst.mul ((has_deriv_at_sin p.2).comp_hasFDerivAt p hasFDerivAt_snd)) using
2 <;>
mathlib commit https://github.com/leanprover-community/mathlib/commit/cca40788df1b8755d5baf17ab2f27dacc2e17acb
@@ -41,7 +41,7 @@ def polarCoord : LocalHomeomorph (ℝ × ℝ) (ℝ × ℝ)
target := Ioi (0 : ℝ) ×ˢ Ioo (-π) π
map_target' := by
rintro ⟨r, θ⟩ ⟨hr, hθ⟩
- dsimp at hr hθ
+ dsimp at hr hθ
rcases eq_or_ne θ 0 with (rfl | h'θ)
· simpa using hr
· right
@@ -53,14 +53,14 @@ def polarCoord : LocalHomeomorph (ℝ × ℝ) (ℝ × ℝ)
true_and_iff, Complex.arg_lt_pi_iff]
constructor
· cases hxy
- · dsimp at hxy; linarith [sq_pos_of_ne_zero _ hxy.ne', sq_nonneg y]
+ · dsimp at hxy ; linarith [sq_pos_of_ne_zero _ hxy.ne', sq_nonneg y]
· linarith [sq_nonneg x, sq_pos_of_ne_zero _ hxy]
· cases hxy
· exact Or.inl (le_of_lt hxy)
· exact Or.inr hxy
right_inv' := by
rintro ⟨r, θ⟩ ⟨hr, hθ⟩
- dsimp at hr hθ
+ dsimp at hr hθ
simp only [Prod.mk.inj_iff]
constructor
· conv_rhs => rw [← sqrt_sq (le_of_lt hr), ← one_mul (r ^ 2), ← sin_sq_add_cos_sq θ]
@@ -78,7 +78,7 @@ def polarCoord : LocalHomeomorph (ℝ × ℝ) (ℝ × ℝ)
Complex.I_im, sub_self, add_zero, Complex.add_im, Complex.mul_im, mul_one, zero_add]
have Z := Complex.abs_mul_cos_add_sin_mul_I (x + y * Complex.I)
simp only [← Complex.ofReal_cos, ← Complex.ofReal_sin, mul_add, ← Complex.ofReal_mul, ←
- mul_assoc] at Z
+ mul_assoc] at Z
simpa [A, -Complex.ofReal_cos, -Complex.ofReal_sin] using Complex.ext_iff.1 Z
open_target := isOpen_Ioi.Prod isOpen_Ioo
open_source :=
@@ -119,7 +119,7 @@ theorem polarCoord_source_ae_eq_univ : polarCoord.source =ᵐ[volume] univ :=
by
intro x hx
simp only [polarCoord_source, compl_union, mem_inter_iff, mem_compl_iff, mem_set_of_eq, not_lt,
- Classical.not_not] at hx
+ Classical.not_not] at hx
exact hx.2
have B : volume ((LinearMap.snd ℝ ℝ ℝ).ker : Set (ℝ × ℝ)) = 0 :=
by
mathlib commit https://github.com/leanprover-community/mathlib/commit/917c3c072e487b3cccdbfeff17e75b40e45f66cb
@@ -27,7 +27,7 @@ noncomputable section
open Real Set MeasureTheory
-open Real Topology
+open scoped Real Topology
/- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
/-- The polar coordinates local homeomorphism in `ℝ^2`, mapping `(r cos θ, r sin θ)` to `(r, θ)`.
mathlib commit https://github.com/leanprover-community/mathlib/commit/917c3c072e487b3cccdbfeff17e75b40e45f66cb
@@ -53,8 +53,7 @@ def polarCoord : LocalHomeomorph (ℝ × ℝ) (ℝ × ℝ)
true_and_iff, Complex.arg_lt_pi_iff]
constructor
· cases hxy
- · dsimp at hxy
- linarith [sq_pos_of_ne_zero _ hxy.ne', sq_nonneg y]
+ · dsimp at hxy; linarith [sq_pos_of_ne_zero _ hxy.ne', sq_nonneg y]
· linarith [sq_nonneg x, sq_pos_of_ne_zero _ hxy]
· cases hxy
· exact Or.inl (le_of_lt hxy)
@@ -94,9 +93,7 @@ def polarCoord : LocalHomeomorph (ℝ × ℝ) (ℝ × ℝ)
have A :
maps_to complex.equiv_real_prod.symm ({ q : ℝ × ℝ | 0 < q.1 } ∪ { q : ℝ × ℝ | q.2 ≠ 0 })
{ z | 0 < z.re ∨ z.im ≠ 0 } :=
- by
- rintro ⟨x, y⟩ hxy
- simpa only using hxy
+ by rintro ⟨x, y⟩ hxy; simpa only using hxy
apply ContinuousOn.comp (fun z hz => _) _ A
· exact (Complex.continuousAt_arg hz).ContinuousWithinAt
· exact complex.equiv_real_prod_clm.symm.continuous.continuous_on
mathlib commit https://github.com/leanprover-community/mathlib/commit/33c67ae661dd8988516ff7f247b0be3018cdd952
@@ -102,19 +102,19 @@ def polarCoord : LocalHomeomorph (ℝ × ℝ) (ℝ × ℝ)
· exact complex.equiv_real_prod_clm.symm.continuous.continuous_on
#align polar_coord polarCoord
-theorem hasFderivAt_polarCoord_symm (p : ℝ × ℝ) :
- HasFderivAt polarCoord.symm
+theorem hasFDerivAt_polarCoord_symm (p : ℝ × ℝ) :
+ HasFDerivAt polarCoord.symm
(Matrix.toLin (Basis.finTwoProd ℝ) (Basis.finTwoProd ℝ)
!![cos p.2, -p.1 * sin p.2; sin p.2, p.1 * cos p.2]).toContinuousLinearMap
p :=
by
rw [Matrix.toLin_finTwoProd_toContinuousLinearMap]
- convert HasFderivAt.prod
- (has_fderiv_at_fst.mul ((has_deriv_at_cos p.2).comp_hasFderivAt p hasFderivAt_snd))
- (has_fderiv_at_fst.mul ((has_deriv_at_sin p.2).comp_hasFderivAt p hasFderivAt_snd)) using
+ convert HasFDerivAt.prod
+ (has_fderiv_at_fst.mul ((has_deriv_at_cos p.2).comp_hasFDerivAt p hasFDerivAt_snd))
+ (has_fderiv_at_fst.mul ((has_deriv_at_sin p.2).comp_hasFDerivAt p hasFDerivAt_snd)) using
2 <;>
simp only [smul_smul, add_comm, neg_mul, neg_smul, smul_neg]
-#align has_fderiv_at_polar_coord_symm hasFderivAt_polarCoord_symm
+#align has_fderiv_at_polar_coord_symm hasFDerivAt_polarCoord_symm
theorem polarCoord_source_ae_eq_univ : polarCoord.source =ᵐ[volume] univ :=
by
@@ -143,8 +143,8 @@ theorem integral_comp_polarCoord_symm {E : Type _} [NormedAddCommGroup E] [Norme
(Matrix.toLin (Basis.finTwoProd ℝ) (Basis.finTwoProd ℝ)
!![cos p.2, -p.1 * sin p.2; sin p.2, p.1 * cos p.2]).toContinuousLinearMap with
hB
- have A : ∀ p ∈ polar_coord.symm.source, HasFderivAt polar_coord.symm (B p) p := fun p hp =>
- hasFderivAt_polarCoord_symm p
+ have A : ∀ p ∈ polar_coord.symm.source, HasFDerivAt polar_coord.symm (B p) p := fun p hp =>
+ hasFDerivAt_polarCoord_symm p
have B_det : ∀ p, (B p).det = p.1 := by
intro p
conv_rhs => rw [← one_mul p.1, ← cos_sq_add_sin_sq p.2]
mathlib commit https://github.com/leanprover-community/mathlib/commit/95a87616d63b3cb49d3fe678d416fbe9c4217bf4
@@ -4,10 +4,11 @@ Released under Apache 2.0 license as described in the file LICENSE.
Authors: Sébastien Gouëzel
! This file was ported from Lean 3 source module analysis.special_functions.polar_coord
-! leanprover-community/mathlib commit f2ce6086713c78a7f880485f7917ea547a215982
+! leanprover-community/mathlib commit 8f9fea08977f7e450770933ee6abb20733b47c92
! Please do not edit these lines, except to modify the commit id
! if you have ported upstream changes.
-/
+import Mathbin.Analysis.SpecialFunctions.Trigonometric.Deriv
import Mathbin.MeasureTheory.Function.Jacobian
/-!
mathlib commit https://github.com/leanprover-community/mathlib/commit/c89fe2d59ae06402c3f55f978016d1ada444f57e
@@ -66,7 +66,7 @@ def polarCoord : LocalHomeomorph (ℝ × ℝ) (ℝ × ℝ)
· conv_rhs => rw [← sqrt_sq (le_of_lt hr), ← one_mul (r ^ 2), ← sin_sq_add_cos_sq θ]
congr 1
ring
- · convert Complex.arg_mul_cos_add_sin_mul_i hr ⟨hθ.1, hθ.2.le⟩
+ · convert Complex.arg_mul_cos_add_sin_mul_I hr ⟨hθ.1, hθ.2.le⟩
simp only [Complex.equivRealProd_symm_apply, Complex.ofReal_mul, Complex.ofReal_cos,
Complex.ofReal_sin]
ring
@@ -76,7 +76,7 @@ def polarCoord : LocalHomeomorph (ℝ × ℝ) (ℝ × ℝ)
simp only [Complex.abs_def, Complex.normSq, pow_two, MonoidWithZeroHom.coe_mk, Complex.add_re,
Complex.ofReal_re, Complex.mul_re, Complex.I_re, MulZeroClass.mul_zero, Complex.ofReal_im,
Complex.I_im, sub_self, add_zero, Complex.add_im, Complex.mul_im, mul_one, zero_add]
- have Z := Complex.abs_mul_cos_add_sin_mul_i (x + y * Complex.I)
+ have Z := Complex.abs_mul_cos_add_sin_mul_I (x + y * Complex.I)
simp only [← Complex.ofReal_cos, ← Complex.ofReal_sin, mul_add, ← Complex.ofReal_mul, ←
mul_assoc] at Z
simpa [A, -Complex.ofReal_cos, -Complex.ofReal_sin] using Complex.ext_iff.1 Z
mathlib commit https://github.com/leanprover-community/mathlib/commit/17ad94b4953419f3e3ce3e77da3239c62d1d09f0
@@ -101,7 +101,6 @@ def polarCoord : LocalHomeomorph (ℝ × ℝ) (ℝ × ℝ)
· exact complex.equiv_real_prod_clm.symm.continuous.continuous_on
#align polar_coord polarCoord
-/- ./././Mathport/Syntax/Translate/Tactic/Basic.lean:31:4: unsupported: too many args: matrix.notation ... #[[]] -/
theorem hasFderivAt_polarCoord_symm (p : ℝ × ℝ) :
HasFderivAt polarCoord.symm
(Matrix.toLin (Basis.finTwoProd ℝ) (Basis.finTwoProd ℝ)
@@ -135,7 +134,6 @@ theorem polarCoord_source_ae_eq_univ : polarCoord.source =ᵐ[volume] univ :=
exact le_antisymm ((measure_mono A).trans (le_of_eq B)) bot_le
#align polar_coord_source_ae_eq_univ polarCoord_source_ae_eq_univ
-/- ./././Mathport/Syntax/Translate/Tactic/Basic.lean:31:4: unsupported: too many args: matrix.notation ... #[[]] -/
theorem integral_comp_polarCoord_symm {E : Type _} [NormedAddCommGroup E] [NormedSpace ℝ E]
[CompleteSpace E] (f : ℝ × ℝ → E) :
(∫ p in polarCoord.target, p.1 • f (polarCoord.symm p)) = ∫ p, f p :=
mathlib commit https://github.com/leanprover-community/mathlib/commit/17ad94b4953419f3e3ce3e77da3239c62d1d09f0
@@ -101,13 +101,11 @@ def polarCoord : LocalHomeomorph (ℝ × ℝ) (ℝ × ℝ)
· exact complex.equiv_real_prod_clm.symm.continuous.continuous_on
#align polar_coord polarCoord
-/- ./././Mathport/Syntax/Translate/Expr.lean:207:4: warning: unsupported notation `«expr!![ » -/
-/- ./././Mathport/Syntax/Translate/Expr.lean:387:14: unsupported user notation matrix.notation -/
+/- ./././Mathport/Syntax/Translate/Tactic/Basic.lean:31:4: unsupported: too many args: matrix.notation ... #[[]] -/
theorem hasFderivAt_polarCoord_symm (p : ℝ × ℝ) :
HasFderivAt polarCoord.symm
(Matrix.toLin (Basis.finTwoProd ℝ) (Basis.finTwoProd ℝ)
- («expr!![ »
- "./././Mathport/Syntax/Translate/Expr.lean:387:14: unsupported user notation matrix.notation")).toContinuousLinearMap
+ !![cos p.2, -p.1 * sin p.2; sin p.2, p.1 * cos p.2]).toContinuousLinearMap
p :=
by
rw [Matrix.toLin_finTwoProd_toContinuousLinearMap]
@@ -137,16 +135,14 @@ theorem polarCoord_source_ae_eq_univ : polarCoord.source =ᵐ[volume] univ :=
exact le_antisymm ((measure_mono A).trans (le_of_eq B)) bot_le
#align polar_coord_source_ae_eq_univ polarCoord_source_ae_eq_univ
-/- ./././Mathport/Syntax/Translate/Expr.lean:207:4: warning: unsupported notation `«expr!![ » -/
-/- ./././Mathport/Syntax/Translate/Expr.lean:387:14: unsupported user notation matrix.notation -/
+/- ./././Mathport/Syntax/Translate/Tactic/Basic.lean:31:4: unsupported: too many args: matrix.notation ... #[[]] -/
theorem integral_comp_polarCoord_symm {E : Type _} [NormedAddCommGroup E] [NormedSpace ℝ E]
[CompleteSpace E] (f : ℝ × ℝ → E) :
(∫ p in polarCoord.target, p.1 • f (polarCoord.symm p)) = ∫ p, f p :=
by
set B : ℝ × ℝ → ℝ × ℝ →L[ℝ] ℝ × ℝ := fun p =>
(Matrix.toLin (Basis.finTwoProd ℝ) (Basis.finTwoProd ℝ)
- («expr!![ »
- "./././Mathport/Syntax/Translate/Expr.lean:387:14: unsupported user notation matrix.notation")).toContinuousLinearMap with
+ !![cos p.2, -p.1 * sin p.2; sin p.2, p.1 * cos p.2]).toContinuousLinearMap with
hB
have A : ∀ p ∈ polar_coord.symm.source, HasFderivAt polar_coord.symm (B p) p := fun p hp =>
hasFderivAt_polarCoord_symm p
mathlib commit https://github.com/leanprover-community/mathlib/commit/ce7e9d53d4bbc38065db3b595cd5bd73c323bc1d
@@ -111,8 +111,7 @@ theorem hasFderivAt_polarCoord_symm (p : ℝ × ℝ) :
p :=
by
rw [Matrix.toLin_finTwoProd_toContinuousLinearMap]
- convert
- HasFderivAt.prod
+ convert HasFderivAt.prod
(has_fderiv_at_fst.mul ((has_deriv_at_cos p.2).comp_hasFderivAt p hasFderivAt_snd))
(has_fderiv_at_fst.mul ((has_deriv_at_sin p.2).comp_hasFderivAt p hasFderivAt_snd)) using
2 <;>
mathlib commit https://github.com/leanprover-community/mathlib/commit/1a313d8bba1bad05faba71a4a4e9742ab5bd9efd
@@ -67,8 +67,8 @@ def polarCoord : LocalHomeomorph (ℝ × ℝ) (ℝ × ℝ)
congr 1
ring
· convert Complex.arg_mul_cos_add_sin_mul_i hr ⟨hθ.1, hθ.2.le⟩
- simp only [Complex.equivRealProd_symm_apply, Complex.ofReal_mul, Complex.of_real_cos,
- Complex.of_real_sin]
+ simp only [Complex.equivRealProd_symm_apply, Complex.ofReal_mul, Complex.ofReal_cos,
+ Complex.ofReal_sin]
ring
left_inv' := by
rintro ⟨x, y⟩ hxy
@@ -77,9 +77,9 @@ def polarCoord : LocalHomeomorph (ℝ × ℝ) (ℝ × ℝ)
Complex.ofReal_re, Complex.mul_re, Complex.I_re, MulZeroClass.mul_zero, Complex.ofReal_im,
Complex.I_im, sub_self, add_zero, Complex.add_im, Complex.mul_im, mul_one, zero_add]
have Z := Complex.abs_mul_cos_add_sin_mul_i (x + y * Complex.I)
- simp only [← Complex.of_real_cos, ← Complex.of_real_sin, mul_add, ← Complex.ofReal_mul, ←
+ simp only [← Complex.ofReal_cos, ← Complex.ofReal_sin, mul_add, ← Complex.ofReal_mul, ←
mul_assoc] at Z
- simpa [A, -Complex.of_real_cos, -Complex.of_real_sin] using Complex.ext_iff.1 Z
+ simpa [A, -Complex.ofReal_cos, -Complex.ofReal_sin] using Complex.ext_iff.1 Z
open_target := isOpen_Ioi.Prod isOpen_Ioo
open_source :=
(isOpen_lt continuous_const continuous_fst).union
mathlib commit https://github.com/leanprover-community/mathlib/commit/2af0836443b4cfb5feda0df0051acdb398304931
@@ -72,10 +72,10 @@ def polarCoord : LocalHomeomorph (ℝ × ℝ) (ℝ × ℝ)
ring
left_inv' := by
rintro ⟨x, y⟩ hxy
- have A : sqrt (x ^ 2 + y ^ 2) = Complex.AbsTheory.Complex.abs (x + y * Complex.I) := by
+ have A : sqrt (x ^ 2 + y ^ 2) = Complex.abs (x + y * Complex.I) := by
simp only [Complex.abs_def, Complex.normSq, pow_two, MonoidWithZeroHom.coe_mk, Complex.add_re,
- Complex.ofReal_re, Complex.mul_re, Complex.i_re, MulZeroClass.mul_zero, Complex.ofReal_im,
- Complex.i_im, sub_self, add_zero, Complex.add_im, Complex.mul_im, mul_one, zero_add]
+ Complex.ofReal_re, Complex.mul_re, Complex.I_re, MulZeroClass.mul_zero, Complex.ofReal_im,
+ Complex.I_im, sub_self, add_zero, Complex.add_im, Complex.mul_im, mul_one, zero_add]
have Z := Complex.abs_mul_cos_add_sin_mul_i (x + y * Complex.I)
simp only [← Complex.of_real_cos, ← Complex.of_real_sin, mul_add, ← Complex.ofReal_mul, ←
mul_assoc] at Z
mathlib commit https://github.com/leanprover-community/mathlib/commit/3180fab693e2cee3bff62675571264cb8778b212
@@ -74,8 +74,8 @@ def polarCoord : LocalHomeomorph (ℝ × ℝ) (ℝ × ℝ)
rintro ⟨x, y⟩ hxy
have A : sqrt (x ^ 2 + y ^ 2) = Complex.AbsTheory.Complex.abs (x + y * Complex.I) := by
simp only [Complex.abs_def, Complex.normSq, pow_two, MonoidWithZeroHom.coe_mk, Complex.add_re,
- Complex.ofReal_re, Complex.mul_re, Complex.i_re, mul_zero, Complex.ofReal_im, Complex.i_im,
- sub_self, add_zero, Complex.add_im, Complex.mul_im, mul_one, zero_add]
+ Complex.ofReal_re, Complex.mul_re, Complex.i_re, MulZeroClass.mul_zero, Complex.ofReal_im,
+ Complex.i_im, sub_self, add_zero, Complex.add_im, Complex.mul_im, mul_one, zero_add]
have Z := Complex.abs_mul_cos_add_sin_mul_i (x + y * Complex.I)
simp only [← Complex.of_real_cos, ← Complex.of_real_sin, mul_add, ← Complex.ofReal_mul, ←
mul_assoc] at Z
mathlib commit https://github.com/leanprover-community/mathlib/commit/ddec54a71a0dd025c05445d467f1a2b7d586a3ba
@@ -67,17 +67,17 @@ def polarCoord : LocalHomeomorph (ℝ × ℝ) (ℝ × ℝ)
congr 1
ring
· convert Complex.arg_mul_cos_add_sin_mul_i hr ⟨hθ.1, hθ.2.le⟩
- simp only [Complex.equivRealProd_symm_apply, Complex.of_real_mul, Complex.of_real_cos,
+ simp only [Complex.equivRealProd_symm_apply, Complex.ofReal_mul, Complex.of_real_cos,
Complex.of_real_sin]
ring
left_inv' := by
rintro ⟨x, y⟩ hxy
- have A : sqrt (x ^ 2 + y ^ 2) = Complex.abs (x + y * Complex.i) := by
+ have A : sqrt (x ^ 2 + y ^ 2) = Complex.AbsTheory.Complex.abs (x + y * Complex.I) := by
simp only [Complex.abs_def, Complex.normSq, pow_two, MonoidWithZeroHom.coe_mk, Complex.add_re,
- Complex.of_real_re, Complex.mul_re, Complex.i_re, mul_zero, Complex.of_real_im,
- Complex.i_im, sub_self, add_zero, Complex.add_im, Complex.mul_im, mul_one, zero_add]
- have Z := Complex.abs_mul_cos_add_sin_mul_i (x + y * Complex.i)
- simp only [← Complex.of_real_cos, ← Complex.of_real_sin, mul_add, ← Complex.of_real_mul, ←
+ Complex.ofReal_re, Complex.mul_re, Complex.i_re, mul_zero, Complex.ofReal_im, Complex.i_im,
+ sub_self, add_zero, Complex.add_im, Complex.mul_im, mul_one, zero_add]
+ have Z := Complex.abs_mul_cos_add_sin_mul_i (x + y * Complex.I)
+ simp only [← Complex.of_real_cos, ← Complex.of_real_sin, mul_add, ← Complex.ofReal_mul, ←
mul_assoc] at Z
simpa [A, -Complex.of_real_cos, -Complex.of_real_sin] using Complex.ext_iff.1 Z
open_target := isOpen_Ioi.Prod isOpen_Ioo
mathlib commit https://github.com/leanprover-community/mathlib/commit/4c586d291f189eecb9d00581aeb3dd998ac34442
@@ -102,12 +102,12 @@ def polarCoord : LocalHomeomorph (ℝ × ℝ) (ℝ × ℝ)
#align polar_coord polarCoord
/- ./././Mathport/Syntax/Translate/Expr.lean:207:4: warning: unsupported notation `«expr!![ » -/
-/- ./././Mathport/Syntax/Translate/Expr.lean:391:14: unsupported user notation matrix.notation -/
+/- ./././Mathport/Syntax/Translate/Expr.lean:387:14: unsupported user notation matrix.notation -/
theorem hasFderivAt_polarCoord_symm (p : ℝ × ℝ) :
HasFderivAt polarCoord.symm
(Matrix.toLin (Basis.finTwoProd ℝ) (Basis.finTwoProd ℝ)
(«expr!![ »
- "./././Mathport/Syntax/Translate/Expr.lean:391:14: unsupported user notation matrix.notation")).toContinuousLinearMap
+ "./././Mathport/Syntax/Translate/Expr.lean:387:14: unsupported user notation matrix.notation")).toContinuousLinearMap
p :=
by
rw [Matrix.toLin_finTwoProd_toContinuousLinearMap]
@@ -139,7 +139,7 @@ theorem polarCoord_source_ae_eq_univ : polarCoord.source =ᵐ[volume] univ :=
#align polar_coord_source_ae_eq_univ polarCoord_source_ae_eq_univ
/- ./././Mathport/Syntax/Translate/Expr.lean:207:4: warning: unsupported notation `«expr!![ » -/
-/- ./././Mathport/Syntax/Translate/Expr.lean:391:14: unsupported user notation matrix.notation -/
+/- ./././Mathport/Syntax/Translate/Expr.lean:387:14: unsupported user notation matrix.notation -/
theorem integral_comp_polarCoord_symm {E : Type _} [NormedAddCommGroup E] [NormedSpace ℝ E]
[CompleteSpace E] (f : ℝ × ℝ → E) :
(∫ p in polarCoord.target, p.1 • f (polarCoord.symm p)) = ∫ p, f p :=
@@ -147,7 +147,7 @@ theorem integral_comp_polarCoord_symm {E : Type _} [NormedAddCommGroup E] [Norme
set B : ℝ × ℝ → ℝ × ℝ →L[ℝ] ℝ × ℝ := fun p =>
(Matrix.toLin (Basis.finTwoProd ℝ) (Basis.finTwoProd ℝ)
(«expr!![ »
- "./././Mathport/Syntax/Translate/Expr.lean:391:14: unsupported user notation matrix.notation")).toContinuousLinearMap with
+ "./././Mathport/Syntax/Translate/Expr.lean:387:14: unsupported user notation matrix.notation")).toContinuousLinearMap with
hB
have A : ∀ p ∈ polar_coord.symm.source, HasFderivAt polar_coord.symm (B p) p := fun p hp =>
hasFderivAt_polarCoord_symm p
mathlib commit https://github.com/leanprover-community/mathlib/commit/bd9851ca476957ea4549eb19b40e7b5ade9428cc
This matches our general policy and zpow_two_pos_of_ne_zero.
Also define sq_pos_of_ne_zero as an alias.
@@ -49,8 +49,8 @@ def polarCoord : PartialHomeomorph (ℝ × ℝ) (ℝ × ℝ) where
true_and_iff, Complex.arg_lt_pi_iff]
constructor
· cases' hxy with hxy hxy
- · dsimp at hxy; linarith [sq_pos_of_ne_zero _ hxy.ne', sq_nonneg y]
- · linarith [sq_nonneg x, sq_pos_of_ne_zero _ hxy]
+ · dsimp at hxy; linarith [sq_pos_of_ne_zero hxy.ne', sq_nonneg y]
+ · linarith [sq_nonneg x, sq_pos_of_ne_zero hxy]
· cases' hxy with hxy hxy
· exact Or.inl (le_of_lt hxy)
· exact Or.inr hxy
set_integral
with setIntegral
(#12215)
Done with a global search and replace, and then (to fix the #align
lines), replace (#align \S*)setIntegral
with $1set_integral
.
@@ -141,12 +141,12 @@ theorem integral_comp_polarCoord_symm {E : Type*} [NormedAddCommGroup E] [Normed
calc
∫ p, f p = ∫ p in polarCoord.source, f p := by
rw [← integral_univ]
- apply set_integral_congr_set_ae
+ apply setIntegral_congr_set_ae
exact polarCoord_source_ae_eq_univ.symm
_ = ∫ p in polarCoord.target, abs (B p).det • f (polarCoord.symm p) := by
apply integral_target_eq_integral_abs_det_fderiv_smul volume A
_ = ∫ p in polarCoord.target, p.1 • f (polarCoord.symm p) := by
- apply set_integral_congr polarCoord.open_target.measurableSet fun x hx => ?_
+ apply setIntegral_congr polarCoord.open_target.measurableSet fun x hx => ?_
rw [B_det, abs_of_pos]
exact hx.1
#align integral_comp_polar_coord_symm integral_comp_polarCoord_symm
This adds the notation √r
for Real.sqrt r
. The precedence is such that √x⁻¹
is parsed as √(x⁻¹)
; not because this is particularly desirable, but because it's the default and the choice doesn't really matter.
This is extracted from #7907, which adds a more general nth root typeclass.
The idea is to perform all the boring substitutions downstream quickly, so that we can play around with custom elaborators with a much slower rate of code-rot.
This PR also won't rot as quickly, as it does not forbid writing x.sqrt
as that PR does.
While perhaps claiming √
for Real.sqrt
is greedy; it:
NNReal.sqrt
and Nat.sqrt
sqrt
on Float
Co-authored-by: Yury G. Kudryashov <urkud@urkud.name>
@@ -30,7 +30,7 @@ open scoped Real Topology
It is a homeomorphism between `ℝ^2 - (-∞, 0]` and `(0, +∞) × (-π, π)`. -/
@[simps]
def polarCoord : PartialHomeomorph (ℝ × ℝ) (ℝ × ℝ) where
- toFun q := (Real.sqrt (q.1 ^ 2 + q.2 ^ 2), Complex.arg (Complex.equivRealProd.symm q))
+ toFun q := (√(q.1 ^ 2 + q.2 ^ 2), Complex.arg (Complex.equivRealProd.symm q))
invFun p := (p.1 * cos p.2, p.1 * sin p.2)
source := {q | 0 < q.1} ∪ {q | q.2 ≠ 0}
target := Ioi (0 : ℝ) ×ˢ Ioo (-π) π
@@ -68,7 +68,7 @@ def polarCoord : PartialHomeomorph (ℝ × ℝ) (ℝ × ℝ) where
ring
left_inv' := by
rintro ⟨x, y⟩ _
- have A : sqrt (x ^ 2 + y ^ 2) = Complex.abs (x + y * Complex.I) := by
+ have A : √(x ^ 2 + y ^ 2) = Complex.abs (x + y * Complex.I) := by
rw [Complex.abs_apply, Complex.normSq_add_mul_I]
have Z := Complex.abs_mul_cos_add_sin_mul_I (x + y * Complex.I)
simp only [← Complex.ofReal_cos, ← Complex.ofReal_sin, mul_add, ← Complex.ofReal_mul, ←
@@ -41,7 +41,7 @@ def polarCoord : PartialHomeomorph (ℝ × ℝ) (ℝ × ℝ) where
· simpa using hr
· right
simp at hr
- simpa only [ne_of_gt hr, Ne.def, mem_setOf_eq, mul_eq_zero, false_or_iff,
+ simpa only [ne_of_gt hr, Ne, mem_setOf_eq, mul_eq_zero, false_or_iff,
sin_eq_zero_iff_of_lt_of_lt hθ.1 hθ.2] using h'θ
map_source' := by
rintro ⟨x, y⟩ hxy
@@ -115,7 +115,7 @@ theorem polarCoord_source_ae_eq_univ : polarCoord.source =ᵐ[volume] univ := by
exact hx.2
have B : volume (LinearMap.ker (LinearMap.snd ℝ ℝ ℝ) : Set (ℝ × ℝ)) = 0 := by
apply Measure.addHaar_submodule
- rw [Ne.def, LinearMap.ker_eq_top]
+ rw [Ne, LinearMap.ker_eq_top]
intro h
have : (LinearMap.snd ℝ ℝ ℝ) (0, 1) = (0 : ℝ × ℝ →ₗ[ℝ] ℝ) (0, 1) := by rw [h]
simp at this
smul
(#11331)
We want to avoid making Lean unfold smul
during unification. A separate instance does helps at the cost of some elaboration failures.
@@ -100,7 +100,7 @@ theorem hasFDerivAt_polarCoord_symm (p : ℝ × ℝ) :
convert HasFDerivAt.prod (𝕜 := ℝ)
(hasFDerivAt_fst.mul ((hasDerivAt_cos p.2).comp_hasFDerivAt p hasFDerivAt_snd))
(hasFDerivAt_fst.mul ((hasDerivAt_sin p.2).comp_hasFDerivAt p hasFDerivAt_snd)) using 2 <;>
- simp [smul_smul, add_comm, neg_mul, neg_smul, smul_neg]
+ simp [smul_smul, add_comm, neg_mul, smul_neg, neg_smul _ (ContinuousLinearMap.snd ℝ ℝ ℝ)]
#align has_fderiv_at_polar_coord_symm hasFDerivAt_polarCoord_symm
-- Porting note: this instance is needed but not automatically synthesised
@@ -134,7 +134,7 @@ theorem integral_comp_polarCoord_symm {E : Type*} [NormedAddCommGroup E] [Normed
have B_det : ∀ p, (B p).det = p.1 := by
intro p
conv_rhs => rw [← one_mul p.1, ← cos_sq_add_sin_sq p.2]
- simp only [neg_mul, LinearMap.det_toContinuousLinearMap, LinearMap.det_toLin,
+ simp only [B, neg_mul, LinearMap.det_toContinuousLinearMap, LinearMap.det_toLin,
Matrix.det_fin_two_of, sub_neg_eq_add]
ring
symm
Clm
-> CLM
, Cle
-> CLE
(#10018)
Rename
Complex.equivRealProdClm
→ Complex.equivRealProdCLM
;
CLE
?Complex.reClm
→ Complex.reCLM
;Complex.imClm
→ Complex.imCLM
;Complex.conjLie
→ Complex.conjLIE
;Complex.conjCle
→ Complex.conjCLE
;Complex.ofRealLi
→ Complex.ofRealLI
;Complex.ofRealClm
→ Complex.ofRealCLM
;fderivInnerClm
→ fderivInnerCLM
;LinearPMap.adjointDomainMkClm
→ LinearPMap.adjointDomainMkCLM
;LinearPMap.adjointDomainMkClmExtend
→ LinearPMap.adjointDomainMkCLMExtend
;IsROrC.reClm
→ IsROrC.reCLM
;IsROrC.imClm
→ IsROrC.imCLM
;IsROrC.conjLie
→ IsROrC.conjLIE
;IsROrC.conjCle
→ IsROrC.conjCLE
;IsROrC.ofRealLi
→ IsROrC.ofRealLI
;IsROrC.ofRealClm
→ IsROrC.ofRealCLM
;MeasureTheory.condexpL1Clm
→ MeasureTheory.condexpL1CLM
;algebraMapClm
→ algebraMapCLM
;WeakDual.CharacterSpace.toClm
→ WeakDual.CharacterSpace.toCLM
;BoundedContinuousFunction.evalClm
→ BoundedContinuousFunction.evalCLM
;ContinuousMap.evalClm
→ ContinuousMap.evalCLM
;TrivSqZeroExt.fstClm
→ TrivSqZeroExt.fstClm
;TrivSqZeroExt.sndClm
→ TrivSqZeroExt.sndCLM
;TrivSqZeroExt.inlClm
→ TrivSqZeroExt.inlCLM
;TrivSqZeroExt.inrClm
→ TrivSqZeroExt.inrCLM
and related theorems.
@@ -89,7 +89,7 @@ def polarCoord : PartialHomeomorph (ℝ × ℝ) (ℝ × ℝ) where
refine' ContinuousOn.comp (f := Complex.equivRealProd.symm)
(g := Complex.arg) (fun z hz => _) _ A
· exact (Complex.continuousAt_arg hz).continuousWithinAt
- · exact Complex.equivRealProdClm.symm.continuous.continuousOn
+ · exact Complex.equivRealProdCLM.symm.continuous.continuousOn
#align polar_coord polarCoord
theorem hasFDerivAt_polarCoord_symm (p : ℝ × ℝ) :
@@ -162,7 +162,7 @@ open scoped Real
/-- The polar coordinates partial homeomorphism in `ℂ`, mapping `r (cos θ + I * sin θ)` to `(r, θ)`.
It is a homeomorphism between `ℂ - ℝ≤0` and `(0, +∞) × (-π, π)`. -/
protected noncomputable def polarCoord : PartialHomeomorph ℂ (ℝ × ℝ) :=
- equivRealProdClm.toHomeomorph.transPartialHomeomorph polarCoord
+ equivRealProdCLM.toHomeomorph.transPartialHomeomorph polarCoord
protected theorem polarCoord_apply (a : ℂ) :
Complex.polarCoord a = (Complex.abs a, Complex.arg a) := by
@@ -177,7 +177,7 @@ protected theorem polarCoord_target :
@[simp]
protected theorem polarCoord_symm_apply (p : ℝ × ℝ) :
Complex.polarCoord.symm p = p.1 * (Real.cos p.2 + Real.sin p.2 * Complex.I) := by
- simp [Complex.polarCoord, equivRealProdClm_symm_apply, mul_add, mul_assoc]
+ simp [Complex.polarCoord, equivRealProdCLM_symm_apply, mul_add, mul_assoc]
theorem polardCoord_symm_abs (p : ℝ × ℝ) :
Complex.abs (Complex.polarCoord.symm p) = |p.1| := by simp
@@ -5,6 +5,7 @@ Authors: Sébastien Gouëzel
-/
import Mathlib.MeasureTheory.Function.Jacobian
import Mathlib.MeasureTheory.Measure.Lebesgue.Complex
+import Mathlib.Analysis.SpecialFunctions.Trigonometric.Deriv
#align_import analysis.special_functions.polar_coord from "leanprover-community/mathlib"@"8f9fea08977f7e450770933ee6abb20733b47c92"
@@ -11,7 +11,7 @@ import Mathlib.MeasureTheory.Measure.Lebesgue.Complex
/-!
# Polar coordinates
-We define polar coordinates, as a local homeomorphism in `ℝ^2` between `ℝ^2 - (-∞, 0]` and
+We define polar coordinates, as a partial homeomorphism in `ℝ^2` between `ℝ^2 - (-∞, 0]` and
`(0, +∞) × (-π, π)`. Its inverse is given by `(r, θ) ↦ (r cos θ, r sin θ)`.
It satisfies the following change of variables formula (see `integral_comp_polarCoord_symm`):
@@ -25,7 +25,7 @@ open Real Set MeasureTheory
open scoped Real Topology
-/-- The polar coordinates local homeomorphism in `ℝ^2`, mapping `(r cos θ, r sin θ)` to `(r, θ)`.
+/-- The polar coordinates partial homeomorphism in `ℝ^2`, mapping `(r cos θ, r sin θ)` to `(r, θ)`.
It is a homeomorphism between `ℝ^2 - (-∞, 0]` and `(0, +∞) × (-π, π)`. -/
@[simps]
def polarCoord : PartialHomeomorph (ℝ × ℝ) (ℝ × ℝ) where
@@ -158,7 +158,7 @@ namespace Complex
open scoped Real
-/-- The polar coordinates local homeomorphism in `ℂ`, mapping `r (cos θ + I * sin θ)` to `(r, θ)`.
+/-- The polar coordinates partial homeomorphism in `ℂ`, mapping `r (cos θ + I * sin θ)` to `(r, θ)`.
It is a homeomorphism between `ℂ - ℝ≤0` and `(0, +∞) × (-π, π)`. -/
protected noncomputable def polarCoord : PartialHomeomorph ℂ (ℝ × ℝ) :=
equivRealProdClm.toHomeomorph.transPartialHomeomorph polarCoord
In preparation of future PRs dealing with estimates of the complex logarithm and its Taylor series, this introduces Complex.slitPlane
for the set of complex numbers not on the closed negative real axis (in Analysis.SpecialFunctions.Complex.Arg
), adds a bunch of API lemmas, and replaces hypotheses of the form 0 < x.re ∨ x.im ≠ 0
by x ∈ slitPlane
in several other files.
(We do not introduce a new file for that to avoid circular imports with Analysis.SpecialFunctions.Complex.Arg
.)
Co-authored-by: Yury G. Kudryashov <urkud@urkud.name>
@@ -83,7 +83,7 @@ def polarCoord : PartialHomeomorph (ℝ × ℝ) (ℝ × ℝ) where
continuousOn_toFun := by
apply ((continuous_fst.pow 2).add (continuous_snd.pow 2)).sqrt.continuousOn.prod
have A : MapsTo Complex.equivRealProd.symm ({q : ℝ × ℝ | 0 < q.1} ∪ {q : ℝ × ℝ | q.2 ≠ 0})
- {z | 0 < z.re ∨ z.im ≠ 0} := by
+ Complex.slitPlane := by
rintro ⟨x, y⟩ hxy; simpa only using hxy
refine' ContinuousOn.comp (f := Complex.equivRealProd.symm)
(g := Complex.arg) (fun z hz => _) _ A
@@ -161,18 +161,17 @@ open scoped Real
/-- The polar coordinates local homeomorphism in `ℂ`, mapping `r (cos θ + I * sin θ)` to `(r, θ)`.
It is a homeomorphism between `ℂ - ℝ≤0` and `(0, +∞) × (-π, π)`. -/
protected noncomputable def polarCoord : PartialHomeomorph ℂ (ℝ × ℝ) :=
- equivRealProdClm.toHomeomorph.toPartialHomeomorph.trans polarCoord
+ equivRealProdClm.toHomeomorph.transPartialHomeomorph polarCoord
protected theorem polarCoord_apply (a : ℂ) :
Complex.polarCoord a = (Complex.abs a, Complex.arg a) := by
simp_rw [Complex.abs_def, Complex.normSq_apply, ← pow_two]
rfl
-protected theorem polarCoord_source :
- Complex.polarCoord.source = {a | 0 < a.re} ∪ {a | a.im ≠ 0} := by simp [Complex.polarCoord]
+protected theorem polarCoord_source : Complex.polarCoord.source = slitPlane := rfl
protected theorem polarCoord_target :
- Complex.polarCoord.target = Set.Ioi (0 : ℝ) ×ˢ Set.Ioo (-π) π := by simp [Complex.polarCoord]
+ Complex.polarCoord.target = Set.Ioi (0 : ℝ) ×ˢ Set.Ioo (-π) π := rfl
@[simp]
protected theorem polarCoord_symm_apply (p : ℝ × ℝ) :
LocalHomeomorph
evokes a "local homeomorphism": this is not what this means.
Instead, this is a homeomorphism on an open set of the domain (extended to the whole space, by the junk value pattern). Hence, partial homeomorphism is more appropriate, and avoids confusion with IsLocallyHomeomorph
.
A future PR will rename LocalEquiv
to PartialEquiv
.
@@ -28,7 +28,7 @@ open scoped Real Topology
/-- The polar coordinates local homeomorphism in `ℝ^2`, mapping `(r cos θ, r sin θ)` to `(r, θ)`.
It is a homeomorphism between `ℝ^2 - (-∞, 0]` and `(0, +∞) × (-π, π)`. -/
@[simps]
-def polarCoord : LocalHomeomorph (ℝ × ℝ) (ℝ × ℝ) where
+def polarCoord : PartialHomeomorph (ℝ × ℝ) (ℝ × ℝ) where
toFun q := (Real.sqrt (q.1 ^ 2 + q.2 ^ 2), Complex.arg (Complex.equivRealProd.symm q))
invFun p := (p.1 * cos p.2, p.1 * sin p.2)
source := {q | 0 < q.1} ∪ {q | q.2 ≠ 0}
@@ -160,8 +160,8 @@ open scoped Real
/-- The polar coordinates local homeomorphism in `ℂ`, mapping `r (cos θ + I * sin θ)` to `(r, θ)`.
It is a homeomorphism between `ℂ - ℝ≤0` and `(0, +∞) × (-π, π)`. -/
-protected noncomputable def polarCoord : LocalHomeomorph ℂ (ℝ × ℝ) :=
- equivRealProdClm.toHomeomorph.toLocalHomeomorph.trans polarCoord
+protected noncomputable def polarCoord : PartialHomeomorph ℂ (ℝ × ℝ) :=
+ equivRealProdClm.toHomeomorph.toPartialHomeomorph.trans polarCoord
protected theorem polarCoord_apply (a : ℂ) :
Complex.polarCoord a = (Complex.abs a, Complex.arg a) := by
They have type ContinuousOn ..., hence should be named accordingly. Suggested by @fpvandoorn in #8736.
@@ -77,10 +77,10 @@ def polarCoord : LocalHomeomorph (ℝ × ℝ) (ℝ × ℝ) where
open_source :=
(isOpen_lt continuous_const continuous_fst).union
(isOpen_ne_fun continuous_snd continuous_const)
- continuous_invFun :=
+ continuousOn_invFun :=
((continuous_fst.mul (continuous_cos.comp continuous_snd)).prod_mk
(continuous_fst.mul (continuous_sin.comp continuous_snd))).continuousOn
- continuous_toFun := by
+ continuousOn_toFun := by
apply ((continuous_fst.pow 2).add (continuous_snd.pow 2)).sqrt.continuousOn.prod
have A : MapsTo Complex.equivRealProd.symm ({q : ℝ × ℝ | 0 < q.1} ∪ {q : ℝ × ℝ | q.2 ≠ 0})
{z | 0 < z.re ∨ z.im ≠ 0} := by
This is the supremum of
along with some minor fixes from failures on nightly-testing as Mathlib master
is merged into it.
Note that some PRs for changes that are already compatible with the current toolchain and will be necessary have already been split out: #8380.
I am hopeful that in future we will be able to progressively merge adaptation PRs into a bump/v4.X.0
branch, so we never end up with a "big merge" like this. However one of these adaptation PRs (#8056) predates my new scheme for combined CI, and it wasn't possible to keep that PR viable in the meantime.
In particular this includes adjustments for the Lean PRs
We can get rid of all the
local macro_rules | `($x ^ $y) => `(HPow.hPow $x $y) -- Porting note: See issue [lean4#2220](https://github.com/leanprover/lean4/pull/2220)
macros across Mathlib (and in any projects that want to write natural number powers of reals).
Changes the default behaviour of simp
to (config := {decide := false})
. This makes simp
(and consequentially norm_num
) less powerful, but also more consistent, and less likely to blow up in long failures. This requires a variety of changes: changing some previously by simp
or norm_num
to decide
or rfl
, or adding (config := {decide := true})
.
This changed the behaviour of simp
so that simp [f]
will only unfold "fully applied" occurrences of f
. The old behaviour can be recovered with simp (config := { unfoldPartialApp := true })
. We may in future add a syntax for this, e.g. simp [!f]
; please provide feedback! In the meantime, we have made the following changes:
(config := { unfoldPartialApp := true })
in some places, to recover the old behaviour@[eqns]
to manually adjust the equation lemmas for a particular definition, recovering the old behaviour just for that definition. See #8371, where we do this for Function.comp
and Function.flip
.This change in Lean may require further changes down the line (e.g. adding the !f
syntax, and/or upstreaming the special treatment for Function.comp
and Function.flip
, and/or removing this special treatment). Please keep an open and skeptical mind about these changes!
Co-authored-by: leanprover-community-mathlib4-bot <leanprover-community-mathlib4-bot@users.noreply.github.com> Co-authored-by: Scott Morrison <scott.morrison@gmail.com> Co-authored-by: Eric Wieser <wieser.eric@gmail.com> Co-authored-by: Mauricio Collares <mauricio@collares.org>
@@ -19,8 +19,6 @@ It satisfies the following change of variables formula (see `integral_comp_polar
-/
-local macro_rules | `($x ^ $y) => `(HPow.hPow $x $y) -- Porting note: See issue lean4#2220
-
noncomputable section Real
open Real Set MeasureTheory
@@ -3,8 +3,8 @@ Copyright (c) 2022 Sébastien Gouëzel. All rights reserved.
Released under Apache 2.0 license as described in the file LICENSE.
Authors: Sébastien Gouëzel
-/
-import Mathlib.Analysis.SpecialFunctions.Trigonometric.Deriv
import Mathlib.MeasureTheory.Function.Jacobian
+import Mathlib.MeasureTheory.Measure.Lebesgue.Complex
#align_import analysis.special_functions.polar_coord from "leanprover-community/mathlib"@"8f9fea08977f7e450770933ee6abb20733b47c92"
@@ -19,11 +19,10 @@ It satisfies the following change of variables formula (see `integral_comp_polar
-/
-
-noncomputable section
-
local macro_rules | `($x ^ $y) => `(HPow.hPow $x $y) -- Porting note: See issue lean4#2220
+noncomputable section Real
+
open Real Set MeasureTheory
open scoped Real Topology
@@ -152,3 +151,44 @@ theorem integral_comp_polarCoord_symm {E : Type*} [NormedAddCommGroup E] [Normed
rw [B_det, abs_of_pos]
exact hx.1
#align integral_comp_polar_coord_symm integral_comp_polarCoord_symm
+
+end Real
+
+noncomputable section Complex
+
+namespace Complex
+
+open scoped Real
+
+/-- The polar coordinates local homeomorphism in `ℂ`, mapping `r (cos θ + I * sin θ)` to `(r, θ)`.
+It is a homeomorphism between `ℂ - ℝ≤0` and `(0, +∞) × (-π, π)`. -/
+protected noncomputable def polarCoord : LocalHomeomorph ℂ (ℝ × ℝ) :=
+ equivRealProdClm.toHomeomorph.toLocalHomeomorph.trans polarCoord
+
+protected theorem polarCoord_apply (a : ℂ) :
+ Complex.polarCoord a = (Complex.abs a, Complex.arg a) := by
+ simp_rw [Complex.abs_def, Complex.normSq_apply, ← pow_two]
+ rfl
+
+protected theorem polarCoord_source :
+ Complex.polarCoord.source = {a | 0 < a.re} ∪ {a | a.im ≠ 0} := by simp [Complex.polarCoord]
+
+protected theorem polarCoord_target :
+ Complex.polarCoord.target = Set.Ioi (0 : ℝ) ×ˢ Set.Ioo (-π) π := by simp [Complex.polarCoord]
+
+@[simp]
+protected theorem polarCoord_symm_apply (p : ℝ × ℝ) :
+ Complex.polarCoord.symm p = p.1 * (Real.cos p.2 + Real.sin p.2 * Complex.I) := by
+ simp [Complex.polarCoord, equivRealProdClm_symm_apply, mul_add, mul_assoc]
+
+theorem polardCoord_symm_abs (p : ℝ × ℝ) :
+ Complex.abs (Complex.polarCoord.symm p) = |p.1| := by simp
+
+protected theorem integral_comp_polarCoord_symm {E : Type*} [NormedAddCommGroup E]
+ [NormedSpace ℝ E] (f : ℂ → E) :
+ (∫ p in polarCoord.target, p.1 • f (Complex.polarCoord.symm p)) = ∫ p, f p := by
+ rw [← (Complex.volume_preserving_equiv_real_prod.symm).integral_comp
+ measurableEquivRealProd.symm.measurableEmbedding, ← integral_comp_polarCoord_symm]
+ rfl
+
+end Complex
Also add formula for cos (x / 2)
, sin (x / 2)
and golf some proofs.
@@ -71,13 +71,11 @@ def polarCoord : LocalHomeomorph (ℝ × ℝ) (ℝ × ℝ) where
left_inv' := by
rintro ⟨x, y⟩ _
have A : sqrt (x ^ 2 + y ^ 2) = Complex.abs (x + y * Complex.I) := by
- simp [Complex.abs_def, Complex.normSq, pow_two, MonoidWithZeroHom.coe_mk, Complex.add_re,
- Complex.ofReal_re, Complex.mul_re, Complex.I_re, mul_zero, Complex.ofReal_im,
- Complex.I_im, sub_self, add_zero, Complex.add_im, Complex.mul_im, mul_one, zero_add]
+ rw [Complex.abs_apply, Complex.normSq_add_mul_I]
have Z := Complex.abs_mul_cos_add_sin_mul_I (x + y * Complex.I)
simp only [← Complex.ofReal_cos, ← Complex.ofReal_sin, mul_add, ← Complex.ofReal_mul, ←
mul_assoc] at Z
- simpa [A, -Complex.ofReal_cos, -Complex.ofReal_sin] using Complex.ext_iff.1 Z
+ simp [A]
open_target := isOpen_Ioi.prod isOpen_Ioo
open_source :=
(isOpen_lt continuous_const continuous_fst).union
CompleteSpace
assumptions (#7691)
Also add completeSpace_prod
, integrable_prod
.
@@ -128,7 +128,7 @@ theorem polarCoord_source_ae_eq_univ : polarCoord.source =ᵐ[volume] univ := by
#align polar_coord_source_ae_eq_univ polarCoord_source_ae_eq_univ
theorem integral_comp_polarCoord_symm {E : Type*} [NormedAddCommGroup E] [NormedSpace ℝ E]
- [CompleteSpace E] (f : ℝ × ℝ → E) :
+ (f : ℝ × ℝ → E) :
(∫ p in polarCoord.target, p.1 • f (polarCoord.symm p)) = ∫ p, f p := by
set B : ℝ × ℝ → ℝ × ℝ →L[ℝ] ℝ × ℝ := fun p =>
LinearMap.toContinuousLinearMap (Matrix.toLin (Basis.finTwoProd ℝ) (Basis.finTwoProd ℝ)
MulZeroClass.
in mul_zero
/zero_mul
(#6682)
Search&replace MulZeroClass.mul_zero
-> mul_zero
, MulZeroClass.zero_mul
-> zero_mul
.
These were introduced by Mathport, as the full name of mul_zero
is actually MulZeroClass.mul_zero
(it's exported with the short name).
@@ -72,7 +72,7 @@ def polarCoord : LocalHomeomorph (ℝ × ℝ) (ℝ × ℝ) where
rintro ⟨x, y⟩ _
have A : sqrt (x ^ 2 + y ^ 2) = Complex.abs (x + y * Complex.I) := by
simp [Complex.abs_def, Complex.normSq, pow_two, MonoidWithZeroHom.coe_mk, Complex.add_re,
- Complex.ofReal_re, Complex.mul_re, Complex.I_re, MulZeroClass.mul_zero, Complex.ofReal_im,
+ Complex.ofReal_re, Complex.mul_re, Complex.I_re, mul_zero, Complex.ofReal_im,
Complex.I_im, sub_self, add_zero, Complex.add_im, Complex.mul_im, mul_one, zero_add]
have Z := Complex.abs_mul_cos_add_sin_mul_I (x + y * Complex.I)
simp only [← Complex.ofReal_cos, ← Complex.ofReal_sin, mul_add, ← Complex.ofReal_mul, ←
Type _
and Sort _
(#6499)
We remove all possible occurences of Type _
and Sort _
in favor of Type*
and Sort*
.
This has nice performance benefits.
@@ -127,7 +127,7 @@ theorem polarCoord_source_ae_eq_univ : polarCoord.source =ᵐ[volume] univ := by
exact le_antisymm ((measure_mono A).trans (le_of_eq B)) bot_le
#align polar_coord_source_ae_eq_univ polarCoord_source_ae_eq_univ
-theorem integral_comp_polarCoord_symm {E : Type _} [NormedAddCommGroup E] [NormedSpace ℝ E]
+theorem integral_comp_polarCoord_symm {E : Type*} [NormedAddCommGroup E] [NormedSpace ℝ E]
[CompleteSpace E] (f : ℝ × ℝ → E) :
(∫ p in polarCoord.target, p.1 • f (polarCoord.symm p)) = ∫ p, f p := by
set B : ℝ × ℝ → ℝ × ℝ →L[ℝ] ℝ × ℝ := fun p =>
@@ -22,7 +22,7 @@ It satisfies the following change of variables formula (see `integral_comp_polar
noncomputable section
-local macro_rules | `($x ^ $y) => `(HPow.hPow $x $y) -- Porting note: See issue #2220
+local macro_rules | `($x ^ $y) => `(HPow.hPow $x $y) -- Porting note: See issue lean4#2220
open Real Set MeasureTheory
@@ -2,15 +2,12 @@
Copyright (c) 2022 Sébastien Gouëzel. All rights reserved.
Released under Apache 2.0 license as described in the file LICENSE.
Authors: Sébastien Gouëzel
-
-! This file was ported from Lean 3 source module analysis.special_functions.polar_coord
-! leanprover-community/mathlib commit 8f9fea08977f7e450770933ee6abb20733b47c92
-! Please do not edit these lines, except to modify the commit id
-! if you have ported upstream changes.
-/
import Mathlib.Analysis.SpecialFunctions.Trigonometric.Deriv
import Mathlib.MeasureTheory.Function.Jacobian
+#align_import analysis.special_functions.polar_coord from "leanprover-community/mathlib"@"8f9fea08977f7e450770933ee6abb20733b47c92"
+
/-!
# Polar coordinates
This is supposed to mean "an additive Haar measure", not adding something to Haar, so it should be one word and not two.
@@ -121,7 +121,7 @@ theorem polarCoord_source_ae_eq_univ : polarCoord.source =ᵐ[volume] univ := by
Classical.not_not] at hx
exact hx.2
have B : volume (LinearMap.ker (LinearMap.snd ℝ ℝ ℝ) : Set (ℝ × ℝ)) = 0 := by
- apply Measure.add_haar_submodule
+ apply Measure.addHaar_submodule
rw [Ne.def, LinearMap.ker_eq_top]
intro h
have : (LinearMap.snd ℝ ℝ ℝ) (0, 1) = (0 : ℝ × ℝ →ₗ[ℝ] ℝ) (0, 1) := by rw [h]
@@ -146,7 +146,7 @@ theorem integral_comp_polarCoord_symm {E : Type _} [NormedAddCommGroup E] [Norme
ring
symm
calc
- (∫ p, f p) = ∫ p in polarCoord.source, f p := by
+ ∫ p, f p = ∫ p in polarCoord.source, f p := by
rw [← integral_univ]
apply set_integral_congr_set_ae
exact polarCoord_source_ae_eq_univ.symm
The unported dependencies are
algebra.order.module
init.core
linear_algebra.free_module.finite.rank
algebra.order.monoid.cancel.defs
algebra.abs
algebra.group_power.lemmas
init.data.list.basic
linear_algebra.free_module.rank
algebra.order.monoid.cancel.basic
init.data.list.default
topology.subset_properties
init.logic
The following 1 dependencies have changed in mathlib3 since they were ported, which may complicate porting this file