geometry.manifold.instances.realMathlib.Geometry.Manifold.Instances.Real

This file has been ported!

Changes since the initial port

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.

Changes in mathlib3

(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)

(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)

(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)

(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)

(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)

Changes in mathlib3port

mathlib3
mathlib3port
Diff
@@ -85,16 +85,16 @@ instance [Zero (Fin n)] : Inhabited (EuclideanHalfSpace n) :=
 instance : Inhabited (EuclideanQuadrant n) :=
   ⟨⟨0, fun i => le_rfl⟩⟩
 
-#print range_half_space /-
-theorem range_half_space (n : ℕ) [Zero (Fin n)] :
+#print range_euclideanHalfSpace /-
+theorem range_euclideanHalfSpace (n : ℕ) [Zero (Fin n)] :
     (range fun x : EuclideanHalfSpace n => x.val) = {y | 0 ≤ y 0} := by simp
-#align range_half_space range_half_space
+#align range_half_space range_euclideanHalfSpace
 -/
 
-#print range_quadrant /-
-theorem range_quadrant (n : ℕ) :
+#print range_euclideanQuadrant /-
+theorem range_euclideanQuadrant (n : ℕ) :
     (range fun x : EuclideanQuadrant n => x.val) = {y | ∀ i : Fin n, 0 ≤ y i} := by simp
-#align range_quadrant range_quadrant
+#align range_quadrant range_euclideanQuadrant
 -/
 
 end
Diff
@@ -99,7 +99,7 @@ theorem range_quadrant (n : ℕ) :
 
 end
 
-/- ./././Mathport/Syntax/Translate/Basic.lean:641:2: warning: expanding binder collection (i «expr ∈ » ({0} : set[set] (fin[fin] n))) -/
+/- ./././Mathport/Syntax/Translate/Basic.lean:642:2: warning: expanding binder collection (i «expr ∈ » ({0} : set[set] (fin[fin] n))) -/
 #print modelWithCornersEuclideanHalfSpace /-
 /--
 Definition of the model with corners `(euclidean_space ℝ (fin n), euclidean_half_space n)`, used as
@@ -195,7 +195,7 @@ def IccLeftChart (x y : ℝ) [Fact (x < y)] : PartialHomeomorph (Icc x y) (Eucli
     dsimp at hz h'z
     have A : x + z 0 ≤ y := by linarith
     rw [Subsingleton.elim i 0]
-    simp only [A, add_comm, add_sub_cancel', min_eq_left]
+    simp only [A, add_comm, add_sub_cancel_left, min_eq_left]
   open_source :=
     haveI : IsOpen {z : ℝ | z < y} := isOpen_Iio
     this.preimage continuous_subtype_val
Diff
@@ -183,16 +183,16 @@ def IccLeftChart (x y : ℝ) [Fact (x < y)] : PartialHomeomorph (Icc x y) (Eucli
   map_source' := by simp only [imp_self, sub_lt_sub_iff_right, mem_set_of_eq, forall_true_iff]
   map_target' := by
     simp only [min_lt_iff, mem_set_of_eq]; intro z hz; left
-    dsimp [-Subtype.val_eq_coe] at hz ; linarith
+    dsimp [-Subtype.val_eq_coe] at hz; linarith
   left_inv' := by
     rintro ⟨z, hz⟩ h'z
-    simp only [mem_set_of_eq, mem_Icc] at hz h'z 
+    simp only [mem_set_of_eq, mem_Icc] at hz h'z
     simp only [hz, min_eq_left, sub_add_cancel]
   right_inv' := by
     rintro ⟨z, hz⟩ h'z
     rw [Subtype.mk_eq_mk]
     funext
-    dsimp at hz h'z 
+    dsimp at hz h'z
     have A : x + z 0 ≤ y := by linarith
     rw [Subsingleton.elim i 0]
     simp only [A, add_comm, add_sub_cancel', min_eq_left]
@@ -234,16 +234,16 @@ def IccRightChart (x y : ℝ) [Fact (x < y)] : PartialHomeomorph (Icc x y) (Eucl
   map_source' := by simp only [imp_self, mem_set_of_eq, sub_lt_sub_iff_left, forall_true_iff]
   map_target' := by
     simp only [lt_max_iff, mem_set_of_eq]; intro z hz; left
-    dsimp [-Subtype.val_eq_coe] at hz ; linarith
+    dsimp [-Subtype.val_eq_coe] at hz; linarith
   left_inv' := by
     rintro ⟨z, hz⟩ h'z
-    simp only [mem_set_of_eq, mem_Icc] at hz h'z 
+    simp only [mem_set_of_eq, mem_Icc] at hz h'z
     simp only [hz, sub_eq_add_neg, max_eq_left, add_add_neg_cancel'_right, neg_add_rev, neg_neg]
   right_inv' := by
     rintro ⟨z, hz⟩ h'z
     rw [Subtype.mk_eq_mk]
     funext
-    dsimp at hz h'z 
+    dsimp at hz h'z
     have A : x ≤ y - z 0 := by linarith
     rw [Subsingleton.elim i 0]
     simp only [A, sub_sub_cancel, max_eq_left]
@@ -302,7 +302,7 @@ instance Icc_smooth_manifold (x y : ℝ) [Fact (x < y)] :
     exact cont_diff_id.neg.add contDiff_const
   apply smoothManifoldWithCorners_of_contDiffOn
   intro e e' he he'
-  simp only [atlas, mem_singleton_iff, mem_insert_iff] at he he' 
+  simp only [atlas, mem_singleton_iff, mem_insert_iff] at he he'
   /- We need to check that any composition of two charts gives a `C^∞` function. Each chart can be
       either the left chart or the right chart, leaving 4 possibilities that we handle successively.
       -/
@@ -314,8 +314,8 @@ instance Icc_smooth_manifold (x y : ℝ) [Fact (x < y)] :
     apply M.congr_mono _ (subset_univ _)
     rintro _ ⟨⟨hz₁, hz₂⟩, ⟨⟨z, hz₀⟩, rfl⟩⟩
     simp only [modelWithCornersEuclideanHalfSpace, IccLeftChart, IccRightChart, update_same,
-      max_eq_left, hz₀, lt_sub_iff_add_lt, mfld_simps] at hz₁ hz₂ 
-    rw [min_eq_left hz₁.le, lt_add_iff_pos_left] at hz₂ 
+      max_eq_left, hz₀, lt_sub_iff_add_lt, mfld_simps] at hz₁ hz₂
+    rw [min_eq_left hz₁.le, lt_add_iff_pos_left] at hz₂
     ext i
     rw [Subsingleton.elim i 0]
     simp only [modelWithCornersEuclideanHalfSpace, IccLeftChart, IccRightChart, *, PiLp.add_apply,
@@ -325,8 +325,8 @@ instance Icc_smooth_manifold (x y : ℝ) [Fact (x < y)] :
     apply M.congr_mono _ (subset_univ _)
     rintro _ ⟨⟨hz₁, hz₂⟩, ⟨z, hz₀⟩, rfl⟩
     simp only [modelWithCornersEuclideanHalfSpace, IccLeftChart, IccRightChart, max_lt_iff,
-      update_same, max_eq_left hz₀, mfld_simps] at hz₁ hz₂ 
-    rw [lt_sub_comm] at hz₁ 
+      update_same, max_eq_left hz₀, mfld_simps] at hz₁ hz₂
+    rw [lt_sub_comm] at hz₁
     ext i
     rw [Subsingleton.elim i 0]
     simp only [modelWithCornersEuclideanHalfSpace, IccLeftChart, IccRightChart, PiLp.add_apply,
Diff
@@ -174,7 +174,7 @@ scoped[Manifold]
 /-- The left chart for the topological space `[x, y]`, defined on `[x,y)` and sending `x` to `0` in
 `euclidean_half_space 1`.
 -/
-def IccLeftChart (x y : ℝ) [Fact (x < y)] : LocalHomeomorph (Icc x y) (EuclideanHalfSpace 1)
+def IccLeftChart (x y : ℝ) [Fact (x < y)] : PartialHomeomorph (Icc x y) (EuclideanHalfSpace 1)
     where
   source := {z : Icc x y | z.val < y}
   target := {z : EuclideanHalfSpace 1 | z.val 0 < y - x}
@@ -224,7 +224,7 @@ def IccLeftChart (x y : ℝ) [Fact (x < y)] : LocalHomeomorph (Icc x y) (Euclide
 /-- The right chart for the topological space `[x, y]`, defined on `(x,y]` and sending `y` to `0` in
 `euclidean_half_space 1`.
 -/
-def IccRightChart (x y : ℝ) [Fact (x < y)] : LocalHomeomorph (Icc x y) (EuclideanHalfSpace 1)
+def IccRightChart (x y : ℝ) [Fact (x < y)] : PartialHomeomorph (Icc x y) (EuclideanHalfSpace 1)
     where
   source := {z : Icc x y | x < z.val}
   target := {z : EuclideanHalfSpace 1 | z.val 0 < y - x}
Diff
@@ -3,8 +3,8 @@ Copyright (c) 2019 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.Geometry.Manifold.SmoothManifoldWithCorners
-import Mathbin.Analysis.InnerProductSpace.PiL2
+import Geometry.Manifold.SmoothManifoldWithCorners
+import Analysis.InnerProductSpace.PiL2
 
 #align_import geometry.manifold.instances.real from "leanprover-community/mathlib"@"36938f775671ff28bea1c0310f1608e4afbb22e0"
 
@@ -99,7 +99,7 @@ theorem range_quadrant (n : ℕ) :
 
 end
 
-/- ./././Mathport/Syntax/Translate/Basic.lean:635:2: warning: expanding binder collection (i «expr ∈ » ({0} : set[set] (fin[fin] n))) -/
+/- ./././Mathport/Syntax/Translate/Basic.lean:641:2: warning: expanding binder collection (i «expr ∈ » ({0} : set[set] (fin[fin] n))) -/
 #print modelWithCornersEuclideanHalfSpace /-
 /--
 Definition of the model with corners `(euclidean_space ℝ (fin n), euclidean_half_space n)`, used as
Diff
@@ -2,15 +2,12 @@
 Copyright (c) 2019 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 geometry.manifold.instances.real
-! leanprover-community/mathlib commit 36938f775671ff28bea1c0310f1608e4afbb22e0
-! Please do not edit these lines, except to modify the commit id
-! if you have ported upstream changes.
 -/
 import Mathbin.Geometry.Manifold.SmoothManifoldWithCorners
 import Mathbin.Analysis.InnerProductSpace.PiL2
 
+#align_import geometry.manifold.instances.real from "leanprover-community/mathlib"@"36938f775671ff28bea1c0310f1608e4afbb22e0"
+
 /-!
 # Constructing examples of manifolds over ℝ
 
@@ -102,7 +99,7 @@ theorem range_quadrant (n : ℕ) :
 
 end
 
-/- ./././Mathport/Syntax/Translate/Basic.lean:638:2: warning: expanding binder collection (i «expr ∈ » ({0} : set[set] (fin[fin] n))) -/
+/- ./././Mathport/Syntax/Translate/Basic.lean:635:2: warning: expanding binder collection (i «expr ∈ » ({0} : set[set] (fin[fin] n))) -/
 #print modelWithCornersEuclideanHalfSpace /-
 /--
 Definition of the model with corners `(euclidean_space ℝ (fin n), euclidean_half_space n)`, used as
Diff
@@ -88,17 +88,22 @@ instance [Zero (Fin n)] : Inhabited (EuclideanHalfSpace n) :=
 instance : Inhabited (EuclideanQuadrant n) :=
   ⟨⟨0, fun i => le_rfl⟩⟩
 
+#print range_half_space /-
 theorem range_half_space (n : ℕ) [Zero (Fin n)] :
     (range fun x : EuclideanHalfSpace n => x.val) = {y | 0 ≤ y 0} := by simp
 #align range_half_space range_half_space
+-/
 
+#print range_quadrant /-
 theorem range_quadrant (n : ℕ) :
     (range fun x : EuclideanQuadrant n => x.val) = {y | ∀ i : Fin n, 0 ≤ y i} := by simp
 #align range_quadrant range_quadrant
+-/
 
 end
 
 /- ./././Mathport/Syntax/Translate/Basic.lean:638:2: warning: expanding binder collection (i «expr ∈ » ({0} : set[set] (fin[fin] n))) -/
+#print modelWithCornersEuclideanHalfSpace /-
 /--
 Definition of the model with corners `(euclidean_space ℝ (fin n), euclidean_half_space n)`, used as
 a model for manifolds with boundary. In the locale `manifold`, use the shortcut `𝓡∂ n`.
@@ -128,7 +133,9 @@ def modelWithCornersEuclideanHalfSpace (n : ℕ) [Zero (Fin n)] :
   continuous_invFun :=
     (continuous_id.update 0 <| (continuous_apply 0).max continuous_const).subtype_mk _
 #align model_with_corners_euclidean_half_space modelWithCornersEuclideanHalfSpace
+-/
 
+#print modelWithCornersEuclideanQuadrant /-
 /--
 Definition of the model with corners `(euclidean_space ℝ (fin n), euclidean_quadrant n)`, used as a
 model for manifolds with corners -/
@@ -154,19 +161,19 @@ def modelWithCornersEuclideanQuadrant (n : ℕ) :
     Continuous.subtype_mk
       (continuous_pi fun i => (continuous_id.max continuous_const).comp (continuous_apply i)) _
 #align model_with_corners_euclidean_quadrant modelWithCornersEuclideanQuadrant
+-/
 
--- mathport name: model_with_corners_self.euclidean
 scoped[Manifold]
   notation "𝓡 " n =>
     (modelWithCornersSelf ℝ (EuclideanSpace ℝ (Fin n)) :
       ModelWithCorners ℝ (EuclideanSpace ℝ (Fin n)) (EuclideanSpace ℝ (Fin n)))
 
--- mathport name: model_with_corners_euclidean_half_space.euclidean
 scoped[Manifold]
   notation "𝓡∂ " n =>
     (modelWithCornersEuclideanHalfSpace n :
       ModelWithCorners ℝ (EuclideanSpace ℝ (Fin n)) (EuclideanHalfSpace n))
 
+#print IccLeftChart /-
 /-- The left chart for the topological space `[x, y]`, defined on `[x,y)` and sending `x` to `0` in
 `euclidean_half_space 1`.
 -/
@@ -214,7 +221,9 @@ def IccLeftChart (x y : ℝ) [Fact (x < y)] : LocalHomeomorph (Icc x y) (Euclide
     have B : Continuous fun z : EuclideanSpace ℝ (Fin 1) => z 0 := continuous_apply 0
     exact (A.comp B).comp continuous_subtype_val
 #align Icc_left_chart IccLeftChart
+-/
 
+#print IccRightChart /-
 /-- The right chart for the topological space `[x, y]`, defined on `(x,y]` and sending `y` to `0` in
 `euclidean_half_space 1`.
 -/
@@ -263,7 +272,9 @@ def IccRightChart (x y : ℝ) [Fact (x < y)] : LocalHomeomorph (Icc x y) (Euclid
     have B : Continuous fun z : EuclideanSpace ℝ (Fin 1) => z 0 := continuous_apply 0
     exact (A.comp B).comp continuous_subtype_val
 #align Icc_right_chart IccRightChart
+-/
 
+#print IccManifold /-
 /-- Charted space structure on `[x, y]`, using only two charts taking values in
 `euclidean_half_space 1`.
 -/
@@ -280,7 +291,9 @@ instance IccManifold (x y : ℝ) [Fact (x < y)] : ChartedSpace (EuclideanHalfSpa
       simpa only [not_lt] using h'
   chart_mem_atlas z := by by_cases h' : (z : ℝ) < y <;> simp [h']
 #align Icc_manifold IccManifold
+-/
 
+#print Icc_smooth_manifold /-
 /-- The manifold structure on `[x, y]` is smooth.
 -/
 instance Icc_smooth_manifold (x y : ℝ) [Fact (x < y)] :
@@ -325,6 +338,7 @@ instance Icc_smooth_manifold (x y : ℝ) [Fact (x < y)] :
   ·-- `e = right chart`, `e' = right chart`
     exact (mem_groupoid_of_pregroupoid.mpr (symm_trans_mem_contDiffGroupoid _ _ _)).1
 #align Icc_smooth_manifold Icc_smooth_manifold
+-/
 
 /-! Register the manifold structure on `Icc 0 1`, and also its zero and one. -/
 
Diff
@@ -98,7 +98,7 @@ theorem range_quadrant (n : ℕ) :
 
 end
 
-/- ./././Mathport/Syntax/Translate/Basic.lean:635:2: warning: expanding binder collection (i «expr ∈ » ({0} : set[set] (fin[fin] n))) -/
+/- ./././Mathport/Syntax/Translate/Basic.lean:638:2: warning: expanding binder collection (i «expr ∈ » ({0} : set[set] (fin[fin] n))) -/
 /--
 Definition of the model with corners `(euclidean_space ℝ (fin n), euclidean_half_space n)`, used as
 a model for manifolds with boundary. In the locale `manifold`, use the shortcut `𝓡∂ n`.
Diff
@@ -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 geometry.manifold.instances.real
-! leanprover-community/mathlib commit 6a033cb3d188a12ca5c509b33e2eaac1c61916cd
+! leanprover-community/mathlib commit 36938f775671ff28bea1c0310f1608e4afbb22e0
 ! Please do not edit these lines, except to modify the commit id
 ! if you have ported upstream changes.
 -/
@@ -14,6 +14,9 @@ import Mathbin.Analysis.InnerProductSpace.PiL2
 /-!
 # Constructing examples of manifolds over ℝ
 
+> THIS FILE IS SYNCHRONIZED WITH MATHLIB4.
+> Any changes to this file require a corresponding PR to mathlib4.
+
 We introduce the necessary bits to be able to define manifolds modelled over `ℝ^n`, boundaryless
 or with boundary or with corners. As a concrete example, we construct explicitly the manifold with
 boundary structure on the real interval `[x, y]`.
Diff
@@ -48,13 +48,16 @@ open Set Function
 
 open scoped Manifold
 
+#print EuclideanHalfSpace /-
 /-- The half-space in `ℝ^n`, used to model manifolds with boundary. We only define it when
 `1 ≤ n`, as the definition only makes sense in this case.
 -/
 def EuclideanHalfSpace (n : ℕ) [Zero (Fin n)] : Type :=
   { x : EuclideanSpace ℝ (Fin n) // 0 ≤ x 0 }
 #align euclidean_half_space EuclideanHalfSpace
+-/
 
+#print EuclideanQuadrant /-
 /--
 The quadrant in `ℝ^n`, used to model manifolds with corners, made of all vectors with nonnegative
 coordinates.
@@ -62,6 +65,7 @@ coordinates.
 def EuclideanQuadrant (n : ℕ) : Type :=
   { x : EuclideanSpace ℝ (Fin n) // ∀ i : Fin n, 0 ≤ x i }
 #align euclidean_quadrant EuclideanQuadrant
+-/
 
 section
 
@@ -163,7 +167,7 @@ scoped[Manifold]
 /-- The left chart for the topological space `[x, y]`, defined on `[x,y)` and sending `x` to `0` in
 `euclidean_half_space 1`.
 -/
-def iccLeftChart (x y : ℝ) [Fact (x < y)] : LocalHomeomorph (Icc x y) (EuclideanHalfSpace 1)
+def IccLeftChart (x y : ℝ) [Fact (x < y)] : LocalHomeomorph (Icc x y) (EuclideanHalfSpace 1)
     where
   source := {z : Icc x y | z.val < y}
   target := {z : EuclideanHalfSpace 1 | z.val 0 < y - x}
@@ -206,12 +210,12 @@ def iccLeftChart (x y : ℝ) [Fact (x < y)] : LocalHomeomorph (Icc x y) (Euclide
       (continuous_id.add continuous_const).min continuous_const
     have B : Continuous fun z : EuclideanSpace ℝ (Fin 1) => z 0 := continuous_apply 0
     exact (A.comp B).comp continuous_subtype_val
-#align Icc_left_chart iccLeftChart
+#align Icc_left_chart IccLeftChart
 
 /-- The right chart for the topological space `[x, y]`, defined on `(x,y]` and sending `y` to `0` in
 `euclidean_half_space 1`.
 -/
-def iccRightChart (x y : ℝ) [Fact (x < y)] : LocalHomeomorph (Icc x y) (EuclideanHalfSpace 1)
+def IccRightChart (x y : ℝ) [Fact (x < y)] : LocalHomeomorph (Icc x y) (EuclideanHalfSpace 1)
     where
   source := {z : Icc x y | x < z.val}
   target := {z : EuclideanHalfSpace 1 | z.val 0 < y - x}
@@ -255,15 +259,15 @@ def iccRightChart (x y : ℝ) [Fact (x < y)] : LocalHomeomorph (Icc x y) (Euclid
       (continuous_const.sub continuous_id).max continuous_const
     have B : Continuous fun z : EuclideanSpace ℝ (Fin 1) => z 0 := continuous_apply 0
     exact (A.comp B).comp continuous_subtype_val
-#align Icc_right_chart iccRightChart
+#align Icc_right_chart IccRightChart
 
 /-- Charted space structure on `[x, y]`, using only two charts taking values in
 `euclidean_half_space 1`.
 -/
-instance iccManifold (x y : ℝ) [Fact (x < y)] : ChartedSpace (EuclideanHalfSpace 1) (Icc x y)
+instance IccManifold (x y : ℝ) [Fact (x < y)] : ChartedSpace (EuclideanHalfSpace 1) (Icc x y)
     where
-  atlas := {iccLeftChart x y, iccRightChart x y}
-  chartAt z := if z.val < y then iccLeftChart x y else iccRightChart x y
+  atlas := {IccLeftChart x y, IccRightChart x y}
+  chartAt z := if z.val < y then IccLeftChart x y else IccRightChart x y
   mem_chart_source z := by
     by_cases h' : z.val < y
     · simp only [h', if_true]
@@ -272,7 +276,7 @@ instance iccManifold (x y : ℝ) [Fact (x < y)] : ChartedSpace (EuclideanHalfSpa
       apply lt_of_lt_of_le (Fact.out (x < y))
       simpa only [not_lt] using h'
   chart_mem_atlas z := by by_cases h' : (z : ℝ) < y <;> simp [h']
-#align Icc_manifold iccManifold
+#align Icc_manifold IccManifold
 
 /-- The manifold structure on `[x, y]` is smooth.
 -/
@@ -296,23 +300,23 @@ instance Icc_smooth_manifold (x y : ℝ) [Fact (x < y)] :
   · -- `e = left chart`, `e' = right chart`
     apply M.congr_mono _ (subset_univ _)
     rintro _ ⟨⟨hz₁, hz₂⟩, ⟨⟨z, hz₀⟩, rfl⟩⟩
-    simp only [modelWithCornersEuclideanHalfSpace, iccLeftChart, iccRightChart, update_same,
+    simp only [modelWithCornersEuclideanHalfSpace, IccLeftChart, IccRightChart, update_same,
       max_eq_left, hz₀, lt_sub_iff_add_lt, mfld_simps] at hz₁ hz₂ 
     rw [min_eq_left hz₁.le, lt_add_iff_pos_left] at hz₂ 
     ext i
     rw [Subsingleton.elim i 0]
-    simp only [modelWithCornersEuclideanHalfSpace, iccLeftChart, iccRightChart, *, PiLp.add_apply,
+    simp only [modelWithCornersEuclideanHalfSpace, IccLeftChart, IccRightChart, *, PiLp.add_apply,
       PiLp.neg_apply, max_eq_left, min_eq_left hz₁.le, update_same, mfld_simps]
     abel
   · -- `e = right chart`, `e' = left chart`
     apply M.congr_mono _ (subset_univ _)
     rintro _ ⟨⟨hz₁, hz₂⟩, ⟨z, hz₀⟩, rfl⟩
-    simp only [modelWithCornersEuclideanHalfSpace, iccLeftChart, iccRightChart, max_lt_iff,
+    simp only [modelWithCornersEuclideanHalfSpace, IccLeftChart, IccRightChart, max_lt_iff,
       update_same, max_eq_left hz₀, mfld_simps] at hz₁ hz₂ 
     rw [lt_sub_comm] at hz₁ 
     ext i
     rw [Subsingleton.elim i 0]
-    simp only [modelWithCornersEuclideanHalfSpace, iccLeftChart, iccRightChart, PiLp.add_apply,
+    simp only [modelWithCornersEuclideanHalfSpace, IccLeftChart, IccRightChart, PiLp.add_apply,
       PiLp.neg_apply, update_same, max_eq_left, hz₀, hz₁.le, mfld_simps]
     abel
   ·-- `e = right chart`, `e' = right chart`
Diff
@@ -82,11 +82,11 @@ instance : Inhabited (EuclideanQuadrant n) :=
   ⟨⟨0, fun i => le_rfl⟩⟩
 
 theorem range_half_space (n : ℕ) [Zero (Fin n)] :
-    (range fun x : EuclideanHalfSpace n => x.val) = { y | 0 ≤ y 0 } := by simp
+    (range fun x : EuclideanHalfSpace n => x.val) = {y | 0 ≤ y 0} := by simp
 #align range_half_space range_half_space
 
 theorem range_quadrant (n : ℕ) :
-    (range fun x : EuclideanQuadrant n => x.val) = { y | ∀ i : Fin n, 0 ≤ y i } := by simp
+    (range fun x : EuclideanQuadrant n => x.val) = {y | ∀ i : Fin n, 0 ≤ y i} := by simp
 #align range_quadrant range_quadrant
 
 end
@@ -102,7 +102,7 @@ def modelWithCornersEuclideanHalfSpace (n : ℕ) [Zero (Fin n)] :
   toFun := Subtype.val
   invFun x := ⟨update x 0 (max (x 0) 0), by simp [le_refl]⟩
   source := univ
-  target := { x | 0 ≤ x 0 }
+  target := {x | 0 ≤ x 0}
   map_source' x hx := x.property
   map_target' x hx := mem_univ _
   left_inv' := fun ⟨xval, xprop⟩ hx =>
@@ -131,7 +131,7 @@ def modelWithCornersEuclideanQuadrant (n : ℕ) :
   toFun := Subtype.val
   invFun x := ⟨fun i => max (x i) 0, fun i => by simp only [le_refl, or_true_iff, le_max_iff]⟩
   source := univ
-  target := { x | ∀ i, 0 ≤ x i }
+  target := {x | ∀ i, 0 ≤ x i}
   map_source' x hx := by simpa only [Subtype.range_val] using x.property
   map_target' x hx := mem_univ _
   left_inv' := fun ⟨xval, xprop⟩ hx => by ext i; simp only [Subtype.coe_mk, xprop i, max_eq_left]
@@ -165,8 +165,8 @@ scoped[Manifold]
 -/
 def iccLeftChart (x y : ℝ) [Fact (x < y)] : LocalHomeomorph (Icc x y) (EuclideanHalfSpace 1)
     where
-  source := { z : Icc x y | z.val < y }
-  target := { z : EuclideanHalfSpace 1 | z.val 0 < y - x }
+  source := {z : Icc x y | z.val < y}
+  target := {z : EuclideanHalfSpace 1 | z.val 0 < y - x}
   toFun := fun z : Icc x y => ⟨fun i => z.val - x, sub_nonneg.mpr z.property.1⟩
   invFun z := ⟨min (z.val 0 + x) y, by simp [le_refl, z.prop, le_of_lt (Fact.out (x < y))]⟩
   map_source' := by simp only [imp_self, sub_lt_sub_iff_right, mem_set_of_eq, forall_true_iff]
@@ -186,11 +186,11 @@ def iccLeftChart (x y : ℝ) [Fact (x < y)] : LocalHomeomorph (Icc x y) (Euclide
     rw [Subsingleton.elim i 0]
     simp only [A, add_comm, add_sub_cancel', min_eq_left]
   open_source :=
-    haveI : IsOpen { z : ℝ | z < y } := isOpen_Iio
+    haveI : IsOpen {z : ℝ | z < y} := isOpen_Iio
     this.preimage continuous_subtype_val
   open_target := by
-    have : IsOpen { z : ℝ | z < y - x } := isOpen_Iio
-    have : IsOpen { z : EuclideanSpace ℝ (Fin 1) | z 0 < y - x } :=
+    have : IsOpen {z : ℝ | z < y - x} := isOpen_Iio
+    have : IsOpen {z : EuclideanSpace ℝ (Fin 1) | z 0 < y - x} :=
       this.preimage (@continuous_apply (Fin 1) (fun _ => ℝ) _ 0)
     exact this.preimage continuous_subtype_val
   continuous_toFun := by
@@ -213,8 +213,8 @@ def iccLeftChart (x y : ℝ) [Fact (x < y)] : LocalHomeomorph (Icc x y) (Euclide
 -/
 def iccRightChart (x y : ℝ) [Fact (x < y)] : LocalHomeomorph (Icc x y) (EuclideanHalfSpace 1)
     where
-  source := { z : Icc x y | x < z.val }
-  target := { z : EuclideanHalfSpace 1 | z.val 0 < y - x }
+  source := {z : Icc x y | x < z.val}
+  target := {z : EuclideanHalfSpace 1 | z.val 0 < y - x}
   toFun := fun z : Icc x y => ⟨fun i => y - z.val, sub_nonneg.mpr z.property.2⟩
   invFun z :=
     ⟨max (y - z.val 0) x, by simp [le_refl, z.prop, le_of_lt (Fact.out (x < y)), sub_eq_add_neg]⟩
@@ -235,11 +235,11 @@ def iccRightChart (x y : ℝ) [Fact (x < y)] : LocalHomeomorph (Icc x y) (Euclid
     rw [Subsingleton.elim i 0]
     simp only [A, sub_sub_cancel, max_eq_left]
   open_source :=
-    haveI : IsOpen { z : ℝ | x < z } := isOpen_Ioi
+    haveI : IsOpen {z : ℝ | x < z} := isOpen_Ioi
     this.preimage continuous_subtype_val
   open_target := by
-    have : IsOpen { z : ℝ | z < y - x } := isOpen_Iio
-    have : IsOpen { z : EuclideanSpace ℝ (Fin 1) | z 0 < y - x } :=
+    have : IsOpen {z : ℝ | z < y - x} := isOpen_Iio
+    have : IsOpen {z : EuclideanSpace ℝ (Fin 1) | z 0 < y - x} :=
       this.preimage (@continuous_apply (Fin 1) (fun _ => ℝ) _ 0)
     exact this.preimage continuous_subtype_val
   continuous_toFun := by
Diff
@@ -172,16 +172,16 @@ def iccLeftChart (x y : ℝ) [Fact (x < y)] : LocalHomeomorph (Icc x y) (Euclide
   map_source' := by simp only [imp_self, sub_lt_sub_iff_right, mem_set_of_eq, forall_true_iff]
   map_target' := by
     simp only [min_lt_iff, mem_set_of_eq]; intro z hz; left
-    dsimp [-Subtype.val_eq_coe] at hz; linarith
+    dsimp [-Subtype.val_eq_coe] at hz ; linarith
   left_inv' := by
     rintro ⟨z, hz⟩ h'z
-    simp only [mem_set_of_eq, mem_Icc] at hz h'z
+    simp only [mem_set_of_eq, mem_Icc] at hz h'z 
     simp only [hz, min_eq_left, sub_add_cancel]
   right_inv' := by
     rintro ⟨z, hz⟩ h'z
     rw [Subtype.mk_eq_mk]
     funext
-    dsimp at hz h'z
+    dsimp at hz h'z 
     have A : x + z 0 ≤ y := by linarith
     rw [Subsingleton.elim i 0]
     simp only [A, add_comm, add_sub_cancel', min_eq_left]
@@ -221,16 +221,16 @@ def iccRightChart (x y : ℝ) [Fact (x < y)] : LocalHomeomorph (Icc x y) (Euclid
   map_source' := by simp only [imp_self, mem_set_of_eq, sub_lt_sub_iff_left, forall_true_iff]
   map_target' := by
     simp only [lt_max_iff, mem_set_of_eq]; intro z hz; left
-    dsimp [-Subtype.val_eq_coe] at hz; linarith
+    dsimp [-Subtype.val_eq_coe] at hz ; linarith
   left_inv' := by
     rintro ⟨z, hz⟩ h'z
-    simp only [mem_set_of_eq, mem_Icc] at hz h'z
+    simp only [mem_set_of_eq, mem_Icc] at hz h'z 
     simp only [hz, sub_eq_add_neg, max_eq_left, add_add_neg_cancel'_right, neg_add_rev, neg_neg]
   right_inv' := by
     rintro ⟨z, hz⟩ h'z
     rw [Subtype.mk_eq_mk]
     funext
-    dsimp at hz h'z
+    dsimp at hz h'z 
     have A : x ≤ y - z 0 := by linarith
     rw [Subsingleton.elim i 0]
     simp only [A, sub_sub_cancel, max_eq_left]
@@ -285,7 +285,7 @@ instance Icc_smooth_manifold (x y : ℝ) [Fact (x < y)] :
     exact cont_diff_id.neg.add contDiff_const
   apply smoothManifoldWithCorners_of_contDiffOn
   intro e e' he he'
-  simp only [atlas, mem_singleton_iff, mem_insert_iff] at he he'
+  simp only [atlas, mem_singleton_iff, mem_insert_iff] at he he' 
   /- We need to check that any composition of two charts gives a `C^∞` function. Each chart can be
       either the left chart or the right chart, leaving 4 possibilities that we handle successively.
       -/
@@ -297,8 +297,8 @@ instance Icc_smooth_manifold (x y : ℝ) [Fact (x < y)] :
     apply M.congr_mono _ (subset_univ _)
     rintro _ ⟨⟨hz₁, hz₂⟩, ⟨⟨z, hz₀⟩, rfl⟩⟩
     simp only [modelWithCornersEuclideanHalfSpace, iccLeftChart, iccRightChart, update_same,
-      max_eq_left, hz₀, lt_sub_iff_add_lt, mfld_simps] at hz₁ hz₂
-    rw [min_eq_left hz₁.le, lt_add_iff_pos_left] at hz₂
+      max_eq_left, hz₀, lt_sub_iff_add_lt, mfld_simps] at hz₁ hz₂ 
+    rw [min_eq_left hz₁.le, lt_add_iff_pos_left] at hz₂ 
     ext i
     rw [Subsingleton.elim i 0]
     simp only [modelWithCornersEuclideanHalfSpace, iccLeftChart, iccRightChart, *, PiLp.add_apply,
@@ -308,8 +308,8 @@ instance Icc_smooth_manifold (x y : ℝ) [Fact (x < y)] :
     apply M.congr_mono _ (subset_univ _)
     rintro _ ⟨⟨hz₁, hz₂⟩, ⟨z, hz₀⟩, rfl⟩
     simp only [modelWithCornersEuclideanHalfSpace, iccLeftChart, iccRightChart, max_lt_iff,
-      update_same, max_eq_left hz₀, mfld_simps] at hz₁ hz₂
-    rw [lt_sub_comm] at hz₁
+      update_same, max_eq_left hz₀, mfld_simps] at hz₁ hz₂ 
+    rw [lt_sub_comm] at hz₁ 
     ext i
     rw [Subsingleton.elim i 0]
     simp only [modelWithCornersEuclideanHalfSpace, iccLeftChart, iccRightChart, PiLp.add_apply,
Diff
@@ -46,7 +46,7 @@ noncomputable section
 
 open Set Function
 
-open Manifold
+open scoped Manifold
 
 /-- The half-space in `ℝ^n`, used to model manifolds with boundary. We only define it when
 `1 ≤ n`, as the definition only makes sense in this case.
Diff
@@ -134,12 +134,8 @@ def modelWithCornersEuclideanQuadrant (n : ℕ) :
   target := { x | ∀ i, 0 ≤ x i }
   map_source' x hx := by simpa only [Subtype.range_val] using x.property
   map_target' x hx := mem_univ _
-  left_inv' := fun ⟨xval, xprop⟩ hx => by
-    ext i
-    simp only [Subtype.coe_mk, xprop i, max_eq_left]
-  right_inv' x hx := by
-    ext1 i
-    simp only [hx i, max_eq_left]
+  left_inv' := fun ⟨xval, xprop⟩ hx => by ext i; simp only [Subtype.coe_mk, xprop i, max_eq_left]
+  right_inv' x hx := by ext1 i; simp only [hx i, max_eq_left]
   source_eq := rfl
   unique_diff' :=
     by
@@ -175,11 +171,8 @@ def iccLeftChart (x y : ℝ) [Fact (x < y)] : LocalHomeomorph (Icc x y) (Euclide
   invFun z := ⟨min (z.val 0 + x) y, by simp [le_refl, z.prop, le_of_lt (Fact.out (x < y))]⟩
   map_source' := by simp only [imp_self, sub_lt_sub_iff_right, mem_set_of_eq, forall_true_iff]
   map_target' := by
-    simp only [min_lt_iff, mem_set_of_eq]
-    intro z hz
-    left
-    dsimp [-Subtype.val_eq_coe] at hz
-    linarith
+    simp only [min_lt_iff, mem_set_of_eq]; intro z hz; left
+    dsimp [-Subtype.val_eq_coe] at hz; linarith
   left_inv' := by
     rintro ⟨z, hz⟩ h'z
     simp only [mem_set_of_eq, mem_Icc] at hz h'z
@@ -227,11 +220,8 @@ def iccRightChart (x y : ℝ) [Fact (x < y)] : LocalHomeomorph (Icc x y) (Euclid
     ⟨max (y - z.val 0) x, by simp [le_refl, z.prop, le_of_lt (Fact.out (x < y)), sub_eq_add_neg]⟩
   map_source' := by simp only [imp_self, mem_set_of_eq, sub_lt_sub_iff_left, forall_true_iff]
   map_target' := by
-    simp only [lt_max_iff, mem_set_of_eq]
-    intro z hz
-    left
-    dsimp [-Subtype.val_eq_coe] at hz
-    linarith
+    simp only [lt_max_iff, mem_set_of_eq]; intro z hz; left
+    dsimp [-Subtype.val_eq_coe] at hz; linarith
   left_inv' := by
     rintro ⟨z, hz⟩ h'z
     simp only [mem_set_of_eq, mem_Icc] at hz h'z
Diff
@@ -91,7 +91,7 @@ theorem range_quadrant (n : ℕ) :
 
 end
 
-/- ./././Mathport/Syntax/Translate/Basic.lean:628:2: warning: expanding binder collection (i «expr ∈ » ({0} : set[set] (fin[fin] n))) -/
+/- ./././Mathport/Syntax/Translate/Basic.lean:635:2: warning: expanding binder collection (i «expr ∈ » ({0} : set[set] (fin[fin] n))) -/
 /--
 Definition of the model with corners `(euclidean_space ℝ (fin n), euclidean_half_space n)`, used as
 a model for manifolds with boundary. In the locale `manifold`, use the shortcut `𝓡∂ n`.

Changes in mathlib4

mathlib3
mathlib4
feat(NumberTheory/ModularForms): Asymptotics of Jacobi theta functions (#12020)

This is a (rather boring) technical step in developing the theory of Hurwitz zeta functions: one needs to show that certain sums related to Jacobi theta series decay exponentially for large t.

Diff
@@ -325,8 +325,6 @@ instance Icc_smooth_manifold (x y : ℝ) [Fact (x < y)] :
 
 section
 
-attribute [local instance] Real.fact_zero_lt_one
-
 instance : ChartedSpace (EuclideanHalfSpace 1) (Icc (0 : ℝ) 1) := by infer_instance
 
 instance : SmoothManifoldWithCorners (𝓡∂ 1) (Icc (0 : ℝ) 1) := by infer_instance
doc: fix many more mathlib3 names in doc comments (#11987)

A mix of various changes; generated with a script and manually tweaked.

Diff
@@ -23,7 +23,7 @@ More specifically, we introduce
 
 ## Notations
 
-In the locale `manifold`, we introduce the notations
+In the locale `Manifold`, we introduce the notations
 * `𝓡 n` for the identity model with corners on `EuclideanSpace ℝ (Fin n)`
 * `𝓡∂ n` for `ModelWithCorners ℝ (EuclideanSpace ℝ (Fin n)) (EuclideanHalfSpace n)`.
 
@@ -105,7 +105,7 @@ end
 
 /--
 Definition of the model with corners `(EuclideanSpace ℝ (Fin n), EuclideanHalfSpace n)`, used as
-a model for manifolds with boundary. In the locale `manifold`, use the shortcut `𝓡∂ n`.
+a model for manifolds with boundary. In the locale `Manifold`, use the shortcut `𝓡∂ n`.
 -/
 def modelWithCornersEuclideanHalfSpace (n : ℕ) [Zero (Fin n)] :
     ModelWithCorners ℝ (EuclideanSpace ℝ (Fin n)) (EuclideanHalfSpace n) where
chore: remove some mathlib3 names in doc comments (#11931)
Diff
@@ -30,7 +30,8 @@ In the locale `manifold`, we introduce the notations
 For instance, if a manifold `M` is boundaryless, smooth and modelled on `EuclideanSpace ℝ (Fin m)`,
 and `N` is smooth with boundary modelled on `EuclideanHalfSpace n`, and `f : M → N` is a smooth
 map, then the derivative of `f` can be written simply as `mfderiv (𝓡 m) (𝓡∂ n) f` (as to why the
-model with corners can not be implicit, see the discussion in `smooth_manifold_with_corners.lean`).
+model with corners can not be implicit, see the discussion in
+`Geometry.Manifold.SmoothManifoldWithCorners`).
 
 ## Implementation notes
 
doc(SmoothManifoldWithCorners): document notation (#11933)

for models with corners and \infty

The first two docstrings are small modifications of the module docstring.

Diff
@@ -152,11 +152,13 @@ def modelWithCornersEuclideanQuadrant (n : ℕ) :
     (continuous_pi fun i => (continuous_id.max continuous_const).comp (continuous_apply i)) _
 #align model_with_corners_euclidean_quadrant modelWithCornersEuclideanQuadrant
 
+/-- The model space used to define `n`-dimensional real manifolds without boundary. -/
 scoped[Manifold]
   notation "𝓡 " n =>
     (modelWithCornersSelf ℝ (EuclideanSpace ℝ (Fin n)) :
       ModelWithCorners ℝ (EuclideanSpace ℝ (Fin n)) (EuclideanSpace ℝ (Fin n)))
 
+/-- The model space used to define `n`-dimensional real manifolds with boundary. -/
 scoped[Manifold]
   notation "𝓡∂ " n =>
     (modelWithCornersEuclideanHalfSpace n :
chore(Geometry/Manifold): rename two lemmas using mathlib3 names (#11929)
  • range_half_space -> range_euclideanHalfSpace
  • range_quadrant -> range_euclideanQuadrant
Diff
@@ -88,15 +88,17 @@ theorem EuclideanHalfSpace.ext [Zero (Fin n)] (x y : EuclideanHalfSpace n)
     (h : x.1 = y.1) : x = y :=
   Subtype.eq h
 
-theorem range_half_space (n : ℕ) [Zero (Fin n)] :
+theorem range_euclideanHalfSpace (n : ℕ) [Zero (Fin n)] :
     (range fun x : EuclideanHalfSpace n => x.val) = { y | 0 ≤ y 0 } :=
   Subtype.range_val
-#align range_half_space range_half_space
+#align range_half_space range_euclideanHalfSpace
+@[deprecated] alias range_half_space := range_euclideanHalfSpace -- 2024-04-05
 
-theorem range_quadrant (n : ℕ) :
+theorem range_euclideanQuadrant (n : ℕ) :
     (range fun x : EuclideanQuadrant n => x.val) = { y | ∀ i : Fin n, 0 ≤ y i } :=
   Subtype.range_val
-#align range_quadrant range_quadrant
+#align range_quadrant range_euclideanQuadrant
+@[deprecated] alias range_quadrant := range_euclideanQuadrant -- 2024-04-05
 
 end
 
chore: remove mathport name: <expression> lines (#11928)

Quoting [@digama0](https://github.com/digama0):

These were actually never meant to go in the file, they are basically debugging information and only useful on significantly broken mathport files. You can safely remove all of them.

Diff
@@ -150,13 +150,11 @@ def modelWithCornersEuclideanQuadrant (n : ℕ) :
     (continuous_pi fun i => (continuous_id.max continuous_const).comp (continuous_apply i)) _
 #align model_with_corners_euclidean_quadrant modelWithCornersEuclideanQuadrant
 
--- mathport name: model_with_corners_self.euclidean
 scoped[Manifold]
   notation "𝓡 " n =>
     (modelWithCornersSelf ℝ (EuclideanSpace ℝ (Fin n)) :
       ModelWithCorners ℝ (EuclideanSpace ℝ (Fin n)) (EuclideanSpace ℝ (Fin n)))
 
--- mathport name: model_with_corners_euclidean_half_space.euclidean
 scoped[Manifold]
   notation "𝓡∂ " n =>
     (modelWithCornersEuclideanHalfSpace n :
chore: Rename mul-div cancellation lemmas (#11530)

Lemma names around cancellation of multiplication and division are a mess.

This PR renames a handful of them according to the following table (each big row contains the multiplicative statement, then the three rows contain the GroupWithZero lemma name, the Group lemma, the AddGroup lemma name).

| Statement | New name | Old name | |

Diff
@@ -186,7 +186,7 @@ def IccLeftChart (x y : ℝ) [h : Fact (x < y)] :
     dsimp at hz h'z
     have A : x + z 0 ≤ y := by linarith
     rw [Subsingleton.elim i 0]
-    simp only [A, add_comm, add_sub_cancel', min_eq_left]
+    simp only [A, add_comm, add_sub_cancel_left, min_eq_left]
   open_source :=
     haveI : IsOpen { z : ℝ | z < y } := isOpen_Iio
     this.preimage continuous_subtype_val
chore: classify new theorem / theorem porting notes (#11432)

Classifies by adding issue number #10756 to porting notes claiming anything equivalent to:

  • "added theorem"
  • "added theorems"
  • "new theorem"
  • "new theorems"
  • "added lemma"
  • "new lemma"
  • "new lemmas"
Diff
@@ -79,11 +79,11 @@ instance [Zero (Fin n)] : Inhabited (EuclideanHalfSpace n) :=
 instance : Inhabited (EuclideanQuadrant n) :=
   ⟨⟨0, fun _ => le_rfl⟩⟩
 
-@[ext] -- Porting note: new theorem
+@[ext] -- Porting note (#10756): new theorem
 theorem EuclideanQuadrant.ext (x y : EuclideanQuadrant n) (h : x.1 = y.1) : x = y :=
   Subtype.eq h
 
-@[ext] -- Porting note: new theorem
+@[ext] -- Porting note (#10756): new theorem
 theorem EuclideanHalfSpace.ext [Zero (Fin n)] (x y : EuclideanHalfSpace n)
     (h : x.1 = y.1) : x = y :=
   Subtype.eq h
style: homogenise porting notes (#11145)

Homogenises porting notes via capitalisation and addition of whitespace.

It makes the following changes:

  • converts "--porting note" into "-- Porting note";
  • converts "porting note" into "Porting note".
Diff
@@ -79,11 +79,11 @@ instance [Zero (Fin n)] : Inhabited (EuclideanHalfSpace n) :=
 instance : Inhabited (EuclideanQuadrant n) :=
   ⟨⟨0, fun _ => le_rfl⟩⟩
 
-@[ext] -- porting note: new theorem
+@[ext] -- Porting note: new theorem
 theorem EuclideanQuadrant.ext (x y : EuclideanQuadrant n) (h : x.1 = y.1) : x = y :=
   Subtype.eq h
 
-@[ext] -- porting note: new theorem
+@[ext] -- Porting note: new theorem
 theorem EuclideanHalfSpace.ext [Zero (Fin n)] (x y : EuclideanHalfSpace n)
     (h : x.1 = y.1) : x = y :=
   Subtype.eq h
chore: rename LocalHomeomorph to PartialHomeomorph (#8982)

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.

Zulip discussion

Diff
@@ -166,7 +166,7 @@ scoped[Manifold]
 `EuclideanHalfSpace 1`.
 -/
 def IccLeftChart (x y : ℝ) [h : Fact (x < y)] :
-    LocalHomeomorph (Icc x y) (EuclideanHalfSpace 1) where
+    PartialHomeomorph (Icc x y) (EuclideanHalfSpace 1) where
   source := { z : Icc x y | z.val < y }
   target := { z : EuclideanHalfSpace 1 | z.val 0 < y - x }
   toFun := fun z : Icc x y => ⟨fun _ => z.val - x, sub_nonneg.mpr z.property.1⟩
@@ -214,7 +214,7 @@ def IccLeftChart (x y : ℝ) [h : Fact (x < y)] :
 `EuclideanHalfSpace 1`.
 -/
 def IccRightChart (x y : ℝ) [h : Fact (x < y)] :
-    LocalHomeomorph (Icc x y) (EuclideanHalfSpace 1) where
+    PartialHomeomorph (Icc x y) (EuclideanHalfSpace 1) where
   source := { z : Icc x y | x < z.val }
   target := { z : EuclideanHalfSpace 1 | z.val 0 < y - x }
   toFun z := ⟨fun _ => y - z.val, sub_nonneg.mpr z.property.2⟩
chore: rename {LocalHomeomorph,ChartedSpace}.continuous_{to,inv}Fun fields to continuousOn_{to,inv}Fun (#8848)

They have type ContinuousOn ..., hence should be named accordingly. Suggested by @fpvandoorn in #8736.

Diff
@@ -195,13 +195,13 @@ def IccLeftChart (x y : ℝ) [h : Fact (x < y)] :
     have : IsOpen { z : EuclideanSpace ℝ (Fin 1) | z 0 < y - x } :=
       this.preimage (@continuous_apply (Fin 1) (fun _ => ℝ) _ 0)
     exact this.preimage continuous_subtype_val
-  continuous_toFun := by
+  continuousOn_toFun := by
     apply Continuous.continuousOn
     apply Continuous.subtype_mk
     have : Continuous fun (z : ℝ) (_ : Fin 1) => z - x :=
       Continuous.sub (continuous_pi fun _ => continuous_id) continuous_const
     exact this.comp continuous_subtype_val
-  continuous_invFun := by
+  continuousOn_invFun := by
     apply Continuous.continuousOn
     apply Continuous.subtype_mk
     have A : Continuous fun z : ℝ => min (z + x) y :=
@@ -244,13 +244,13 @@ def IccRightChart (x y : ℝ) [h : Fact (x < y)] :
     have : IsOpen { z : EuclideanSpace ℝ (Fin 1) | z 0 < y - x } :=
       this.preimage (@continuous_apply (Fin 1) (fun _ => ℝ) _ 0)
     exact this.preimage continuous_subtype_val
-  continuous_toFun := by
+  continuousOn_toFun := by
     apply Continuous.continuousOn
     apply Continuous.subtype_mk
     have : Continuous fun (z : ℝ) (_ : Fin 1) => y - z :=
       continuous_const.sub (continuous_pi fun _ => continuous_id)
     exact this.comp continuous_subtype_val
-  continuous_invFun := by
+  continuousOn_invFun := by
     apply Continuous.continuousOn
     apply Continuous.subtype_mk
     have A : Continuous fun z : ℝ => max (y - z) x :=
chore: remove unused simps (#6632)

Co-authored-by: Eric Wieser <wieser.eric@gmail.com>

Diff
@@ -174,7 +174,7 @@ def IccLeftChart (x y : ℝ) [h : Fact (x < y)] :
   map_source' := by simp only [imp_self, sub_lt_sub_iff_right, mem_setOf_eq, forall_true_iff]
   map_target' := by
     simp only [min_lt_iff, mem_setOf_eq]; intro z hz; left
-    dsimp at hz; linarith
+    linarith
   left_inv' := by
     rintro ⟨z, hz⟩ h'z
     simp only [mem_setOf_eq, mem_Icc] at hz h'z
@@ -223,7 +223,7 @@ def IccRightChart (x y : ℝ) [h : Fact (x < y)] :
   map_source' := by simp only [imp_self, mem_setOf_eq, sub_lt_sub_iff_left, forall_true_iff]
   map_target' := by
     simp only [lt_max_iff, mem_setOf_eq]; intro z hz; left
-    dsimp at hz; linarith
+    linarith
   left_inv' := by
     rintro ⟨z, hz⟩ h'z
     simp only [mem_setOf_eq, mem_Icc] at hz h'z
chore: script to replace headers with #align_import statements (#5979)

Open in Gitpod

Co-authored-by: Eric Wieser <wieser.eric@gmail.com> Co-authored-by: Scott Morrison <scott.morrison@gmail.com>

Diff
@@ -2,15 +2,12 @@
 Copyright (c) 2019 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 geometry.manifold.instances.real
-! leanprover-community/mathlib commit 6a033cb3d188a12ca5c509b33e2eaac1c61916cd
-! Please do not edit these lines, except to modify the commit id
-! if you have ported upstream changes.
 -/
 import Mathlib.Geometry.Manifold.SmoothManifoldWithCorners
 import Mathlib.Analysis.InnerProductSpace.PiL2
 
+#align_import geometry.manifold.instances.real from "leanprover-community/mathlib"@"6a033cb3d188a12ca5c509b33e2eaac1c61916cd"
+
 /-!
 # Constructing examples of manifolds over ℝ
 
chore: remove occurrences of semicolon after space (#5713)

This is the second half of the changes originally in #5699, removing all occurrences of ; after a space and implementing a linter rule to enforce it.

In most cases this 2-character substring has a space after it, so the following command was run first:

find . -type f -name "*.lean" -exec sed -i -E 's/ ; /; /g' {} \;

The remaining cases were few enough in number that they were done manually.

Diff
@@ -177,7 +177,7 @@ def IccLeftChart (x y : ℝ) [h : Fact (x < y)] :
   map_source' := by simp only [imp_self, sub_lt_sub_iff_right, mem_setOf_eq, forall_true_iff]
   map_target' := by
     simp only [min_lt_iff, mem_setOf_eq]; intro z hz; left
-    dsimp at hz ; linarith
+    dsimp at hz; linarith
   left_inv' := by
     rintro ⟨z, hz⟩ h'z
     simp only [mem_setOf_eq, mem_Icc] at hz h'z
@@ -226,7 +226,7 @@ def IccRightChart (x y : ℝ) [h : Fact (x < y)] :
   map_source' := by simp only [imp_self, mem_setOf_eq, sub_lt_sub_iff_left, forall_true_iff]
   map_target' := by
     simp only [lt_max_iff, mem_setOf_eq]; intro z hz; left
-    dsimp at hz ; linarith
+    dsimp at hz; linarith
   left_inv' := by
     rintro ⟨z, hz⟩ h'z
     simp only [mem_setOf_eq, mem_Icc] at hz h'z
chore: formatting issues (#4947)

Co-authored-by: Scott Morrison <scott.morrison@anu.edu.au> Co-authored-by: Parcly Taxel <reddeloostw@gmail.com>

Diff
@@ -141,7 +141,7 @@ def modelWithCornersEuclideanQuadrant (n : ℕ) :
   target := { x | ∀ i, 0 ≤ x i }
   map_source' x _ := x.property
   map_target' x _ := mem_univ _
-  left_inv' x _:= by ext i; simp only [Subtype.coe_mk, x.2 i, max_eq_left]
+  left_inv' x _ := by ext i; simp only [Subtype.coe_mk, x.2 i, max_eq_left]
   right_inv' x hx := by ext1 i; simp only [hx i, max_eq_left]
   source_eq := rfl
   unique_diff' := by
@@ -180,13 +180,13 @@ def IccLeftChart (x y : ℝ) [h : Fact (x < y)] :
     dsimp at hz ; linarith
   left_inv' := by
     rintro ⟨z, hz⟩ h'z
-    simp only [mem_setOf_eq, mem_Icc] at hz h'z 
+    simp only [mem_setOf_eq, mem_Icc] at hz h'z
     simp only [hz, min_eq_left, sub_add_cancel]
   right_inv' := by
     rintro ⟨z, hz⟩ h'z
     rw [Subtype.mk_eq_mk]
     funext i
-    dsimp at hz h'z 
+    dsimp at hz h'z
     have A : x + z 0 ≤ y := by linarith
     rw [Subsingleton.elim i 0]
     simp only [A, add_comm, add_sub_cancel', min_eq_left]
@@ -229,13 +229,13 @@ def IccRightChart (x y : ℝ) [h : Fact (x < y)] :
     dsimp at hz ; linarith
   left_inv' := by
     rintro ⟨z, hz⟩ h'z
-    simp only [mem_setOf_eq, mem_Icc] at hz h'z 
+    simp only [mem_setOf_eq, mem_Icc] at hz h'z
     simp only [hz, sub_eq_add_neg, max_eq_left, add_add_neg_cancel'_right, neg_add_rev, neg_neg]
   right_inv' := by
     rintro ⟨z, hz⟩ h'z
     rw [Subtype.mk_eq_mk]
     funext i
-    dsimp at hz h'z 
+    dsimp at hz h'z
     have A : x ≤ y - z 0 := by linarith
     rw [Subsingleton.elim i 0]
     simp only [A, sub_sub_cancel, max_eq_left]
@@ -288,7 +288,7 @@ instance Icc_smooth_manifold (x y : ℝ) [Fact (x < y)] :
     contDiff_id.neg.add contDiff_const
   apply smoothManifoldWithCorners_of_contDiffOn
   intro e e' he he'
-  simp only [atlas, mem_singleton_iff, mem_insert_iff] at he he' 
+  simp only [atlas, mem_singleton_iff, mem_insert_iff] at he he'
   /- We need to check that any composition of two charts gives a `C^∞` function. Each chart can be
   either the left chart or the right chart, leaving 4 possibilities that we handle successively. -/
   rcases he with (rfl | rfl) <;> rcases he' with (rfl | rfl)
@@ -298,8 +298,8 @@ instance Icc_smooth_manifold (x y : ℝ) [Fact (x < y)] :
     apply M.contDiffOn.congr
     rintro _ ⟨⟨hz₁, hz₂⟩, ⟨⟨z, hz₀⟩, rfl⟩⟩
     simp only [modelWithCornersEuclideanHalfSpace, IccLeftChart, IccRightChart, update_same,
-      max_eq_left, hz₀, lt_sub_iff_add_lt, mfld_simps] at hz₁ hz₂ 
-    rw [min_eq_left hz₁.le, lt_add_iff_pos_left] at hz₂ 
+      max_eq_left, hz₀, lt_sub_iff_add_lt, mfld_simps] at hz₁ hz₂
+    rw [min_eq_left hz₁.le, lt_add_iff_pos_left] at hz₂
     ext i
     rw [Subsingleton.elim i 0]
     simp only [modelWithCornersEuclideanHalfSpace, IccLeftChart, IccRightChart, *, PiLp.add_apply,
@@ -309,8 +309,8 @@ instance Icc_smooth_manifold (x y : ℝ) [Fact (x < y)] :
     apply M.contDiffOn.congr
     rintro _ ⟨⟨hz₁, hz₂⟩, ⟨z, hz₀⟩, rfl⟩
     simp only [modelWithCornersEuclideanHalfSpace, IccLeftChart, IccRightChart, max_lt_iff,
-      update_same, max_eq_left hz₀, mfld_simps] at hz₁ hz₂ 
-    rw [lt_sub_comm] at hz₁ 
+      update_same, max_eq_left hz₀, mfld_simps] at hz₁ hz₂
+    rw [lt_sub_comm] at hz₁
     ext i
     rw [Subsingleton.elim i 0]
     simp only [modelWithCornersEuclideanHalfSpace, IccLeftChart, IccRightChart, PiLp.add_apply,
feat: port Geometry.Manifold.Instances.Real (#4654)

Co-authored-by: Jeremy Tan Jie Rui <reddeloostw@gmail.com>

Dependencies 12 + 945

946 files ported (98.7%)
420890 lines ported (98.7%)
Show graph

The unported dependencies are

The following 1 dependencies have changed in mathlib3 since they were ported, which may complicate porting this file