measure_theory.group.geometry_of_numbersMathlib.MeasureTheory.Group.GeometryOfNumbers

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)

(last sync)

Changes in mathlib3port

mathlib3
mathlib3port
Diff
@@ -66,7 +66,7 @@ theorem exists_pair_mem_lattice_not_disjoint_vadd [AddCommGroup L] [Countable L]
 #align measure_theory.exists_pair_mem_lattice_not_disjoint_vadd MeasureTheory.exists_pair_mem_lattice_not_disjoint_vadd
 -/
 
-/- ./././Mathport/Syntax/Translate/Basic.lean:641:2: warning: expanding binder collection (x «expr ≠ » 0) -/
+/- ./././Mathport/Syntax/Translate/Basic.lean:642:2: warning: expanding binder collection (x «expr ≠ » 0) -/
 #print MeasureTheory.exists_ne_zero_mem_lattice_of_measure_mul_two_pow_lt_measure /-
 /-- The **Minkowksi Convex Body Theorem**. If `s` is a convex symmetric domain of `E` whose volume
 is large enough compared to the covolume of a lattice `L` of `E`, then it contains a non-zero
Diff
@@ -87,9 +87,9 @@ theorem exists_ne_zero_mem_lattice_of_measure_mul_two_pow_lt_measure [NormedAddC
     exists_pair_mem_lattice_not_disjoint_vadd fund ((h_conv.smul _).NullMeasurableSet _) h_vol
   obtain ⟨_, ⟨v, hv, rfl⟩, w, hw, hvw⟩ := not_disjoint_iff.mp h
   refine' ⟨x - y, sub_ne_zero.2 hxy, _⟩
-  rw [mem_inv_smul_set_iff₀ (two_ne_zero' ℝ)] at hv hw 
+  rw [mem_inv_smul_set_iff₀ (two_ne_zero' ℝ)] at hv hw
   simp_rw [AddSubgroup.vadd_def, vadd_eq_add, add_comm _ w, ← sub_eq_sub_iff_add_eq_add, ←
-    AddSubgroup.coe_sub] at hvw 
+    AddSubgroup.coe_sub] at hvw
   rw [← hvw, ← inv_smul_smul₀ (two_ne_zero' ℝ) (_ - _), smul_sub, sub_eq_add_neg, smul_add]
   refine' h_conv hw (h_symm _ hv) _ _ _ <;> norm_num
 #align measure_theory.exists_ne_zero_mem_lattice_of_measure_mul_two_pow_lt_measure MeasureTheory.exists_ne_zero_mem_lattice_of_measure_mul_two_pow_lt_measure
Diff
@@ -3,9 +3,9 @@ Copyright (c) 2021 Alex J. Best. All rights reserved.
 Released under Apache 2.0 license as described in the file LICENSE.
 Authors: Alex J. Best
 -/
-import Mathbin.Analysis.Convex.Measure
-import Mathbin.MeasureTheory.Group.FundamentalDomain
-import Mathbin.MeasureTheory.Measure.Lebesgue.EqHaar
+import Analysis.Convex.Measure
+import MeasureTheory.Group.FundamentalDomain
+import MeasureTheory.Measure.Lebesgue.EqHaar
 
 #align_import measure_theory.group.geometry_of_numbers from "leanprover-community/mathlib"@"fd4551cfe4b7484b81c2c9ba3405edae27659676"
 
@@ -66,7 +66,7 @@ theorem exists_pair_mem_lattice_not_disjoint_vadd [AddCommGroup L] [Countable L]
 #align measure_theory.exists_pair_mem_lattice_not_disjoint_vadd MeasureTheory.exists_pair_mem_lattice_not_disjoint_vadd
 -/
 
-/- ./././Mathport/Syntax/Translate/Basic.lean:635:2: warning: expanding binder collection (x «expr ≠ » 0) -/
+/- ./././Mathport/Syntax/Translate/Basic.lean:641:2: warning: expanding binder collection (x «expr ≠ » 0) -/
 #print MeasureTheory.exists_ne_zero_mem_lattice_of_measure_mul_two_pow_lt_measure /-
 /-- The **Minkowksi Convex Body Theorem**. If `s` is a convex symmetric domain of `E` whose volume
 is large enough compared to the covolume of a lattice `L` of `E`, then it contains a non-zero
Diff
@@ -2,16 +2,13 @@
 Copyright (c) 2021 Alex J. Best. All rights reserved.
 Released under Apache 2.0 license as described in the file LICENSE.
 Authors: Alex J. Best
-
-! This file was ported from Lean 3 source module measure_theory.group.geometry_of_numbers
-! leanprover-community/mathlib commit fd4551cfe4b7484b81c2c9ba3405edae27659676
-! Please do not edit these lines, except to modify the commit id
-! if you have ported upstream changes.
 -/
 import Mathbin.Analysis.Convex.Measure
 import Mathbin.MeasureTheory.Group.FundamentalDomain
 import Mathbin.MeasureTheory.Measure.Lebesgue.EqHaar
 
+#align_import measure_theory.group.geometry_of_numbers from "leanprover-community/mathlib"@"fd4551cfe4b7484b81c2c9ba3405edae27659676"
+
 /-!
 # Geometry of numbers
 
@@ -69,7 +66,7 @@ theorem exists_pair_mem_lattice_not_disjoint_vadd [AddCommGroup L] [Countable L]
 #align measure_theory.exists_pair_mem_lattice_not_disjoint_vadd MeasureTheory.exists_pair_mem_lattice_not_disjoint_vadd
 -/
 
-/- ./././Mathport/Syntax/Translate/Basic.lean:638:2: warning: expanding binder collection (x «expr ≠ » 0) -/
+/- ./././Mathport/Syntax/Translate/Basic.lean:635:2: warning: expanding binder collection (x «expr ≠ » 0) -/
 #print MeasureTheory.exists_ne_zero_mem_lattice_of_measure_mul_two_pow_lt_measure /-
 /-- The **Minkowksi Convex Body Theorem**. If `s` is a convex symmetric domain of `E` whose volume
 is large enough compared to the covolume of a lattice `L` of `E`, then it contains a non-zero
Diff
@@ -50,6 +50,7 @@ open scoped Pointwise
 
 variable {E L : Type _} [MeasurableSpace E] {μ : Measure E} {F s : Set E}
 
+#print MeasureTheory.exists_pair_mem_lattice_not_disjoint_vadd /-
 /-- **Blichfeldt's Theorem**. If the volume of the set `s` is larger than the covolume of the
 countable subgroup `L` of `E`, then there exists two distincts points `x, y ∈ L` such that `(x + s)`
 and `(y + s)` are not disjoint. -/
@@ -66,8 +67,10 @@ theorem exists_pair_mem_lattice_not_disjoint_vadd [AddCommGroup L] [Countable L]
               fun _ => (hS.vadd _).inter fund.null_measurable_set).symm).trans_le
       (measure_mono <| Union_subset fun _ => inter_subset_right _ _)
 #align measure_theory.exists_pair_mem_lattice_not_disjoint_vadd MeasureTheory.exists_pair_mem_lattice_not_disjoint_vadd
+-/
 
 /- ./././Mathport/Syntax/Translate/Basic.lean:638:2: warning: expanding binder collection (x «expr ≠ » 0) -/
+#print MeasureTheory.exists_ne_zero_mem_lattice_of_measure_mul_two_pow_lt_measure /-
 /-- The **Minkowksi Convex Body Theorem**. If `s` is a convex symmetric domain of `E` whose volume
 is large enough compared to the covolume of a lattice `L` of `E`, then it contains a non-zero
 lattice point of `L`.  -/
@@ -93,6 +96,7 @@ theorem exists_ne_zero_mem_lattice_of_measure_mul_two_pow_lt_measure [NormedAddC
   rw [← hvw, ← inv_smul_smul₀ (two_ne_zero' ℝ) (_ - _), smul_sub, sub_eq_add_neg, smul_add]
   refine' h_conv hw (h_symm _ hv) _ _ _ <;> norm_num
 #align measure_theory.exists_ne_zero_mem_lattice_of_measure_mul_two_pow_lt_measure MeasureTheory.exists_ne_zero_mem_lattice_of_measure_mul_two_pow_lt_measure
+-/
 
 end MeasureTheory
 
Diff
@@ -4,7 +4,7 @@ Released under Apache 2.0 license as described in the file LICENSE.
 Authors: Alex J. Best
 
 ! This file was ported from Lean 3 source module measure_theory.group.geometry_of_numbers
-! leanprover-community/mathlib commit fd5edc43dc4f10b85abfe544b88f82cf13c5f844
+! leanprover-community/mathlib commit fd4551cfe4b7484b81c2c9ba3405edae27659676
 ! Please do not edit these lines, except to modify the commit id
 ! if you have ported upstream changes.
 -/
@@ -15,6 +15,9 @@ import Mathbin.MeasureTheory.Measure.Lebesgue.EqHaar
 /-!
 # Geometry of numbers
 
+> THIS FILE IS SYNCHRONIZED WITH MATHLIB4.
+> Any changes to this file require a corresponding PR to mathlib4.
+
 In this file we prove some of the fundamental theorems in the geometry of numbers, as studied by
 Hermann Minkowski.
 
Diff
@@ -64,7 +64,7 @@ theorem exists_pair_mem_lattice_not_disjoint_vadd [AddCommGroup L] [Countable L]
       (measure_mono <| Union_subset fun _ => inter_subset_right _ _)
 #align measure_theory.exists_pair_mem_lattice_not_disjoint_vadd MeasureTheory.exists_pair_mem_lattice_not_disjoint_vadd
 
-/- ./././Mathport/Syntax/Translate/Basic.lean:635:2: warning: expanding binder collection (x «expr ≠ » 0) -/
+/- ./././Mathport/Syntax/Translate/Basic.lean:638:2: warning: expanding binder collection (x «expr ≠ » 0) -/
 /-- The **Minkowksi Convex Body Theorem**. If `s` is a convex symmetric domain of `E` whose volume
 is large enough compared to the covolume of a lattice `L` of `E`, then it contains a non-zero
 lattice point of `L`.  -/
Diff
@@ -69,9 +69,10 @@ theorem exists_pair_mem_lattice_not_disjoint_vadd [AddCommGroup L] [Countable L]
 is large enough compared to the covolume of a lattice `L` of `E`, then it contains a non-zero
 lattice point of `L`.  -/
 theorem exists_ne_zero_mem_lattice_of_measure_mul_two_pow_lt_measure [NormedAddCommGroup E]
-    [NormedSpace ℝ E] [BorelSpace E] [FiniteDimensional ℝ E] [AddHaarMeasure μ] {L : AddSubgroup E}
-    [Countable L] (fund : IsAddFundamentalDomain L F μ) (h : μ F * 2 ^ finrank ℝ E < μ s)
-    (h_symm : ∀ x ∈ s, -x ∈ s) (h_conv : Convex ℝ s) : ∃ (x : _) (_ : x ≠ 0), ((x : L) : E) ∈ s :=
+    [NormedSpace ℝ E] [BorelSpace E] [FiniteDimensional ℝ E] [IsAddHaarMeasure μ]
+    {L : AddSubgroup E} [Countable L] (fund : IsAddFundamentalDomain L F μ)
+    (h : μ F * 2 ^ finrank ℝ E < μ s) (h_symm : ∀ x ∈ s, -x ∈ s) (h_conv : Convex ℝ s) :
+    ∃ (x : _) (_ : x ≠ 0), ((x : L) : E) ∈ s :=
   by
   have h_vol : μ F < μ ((2⁻¹ : ℝ) • s) := by
     rwa [add_haar_smul_of_nonneg μ (by norm_num : 0 ≤ (2 : ℝ)⁻¹) s, ←
Diff
@@ -71,7 +71,7 @@ lattice point of `L`.  -/
 theorem exists_ne_zero_mem_lattice_of_measure_mul_two_pow_lt_measure [NormedAddCommGroup E]
     [NormedSpace ℝ E] [BorelSpace E] [FiniteDimensional ℝ E] [AddHaarMeasure μ] {L : AddSubgroup E}
     [Countable L] (fund : IsAddFundamentalDomain L F μ) (h : μ F * 2 ^ finrank ℝ E < μ s)
-    (h_symm : ∀ x ∈ s, -x ∈ s) (h_conv : Convex ℝ s) : ∃ (x : _)(_ : x ≠ 0), ((x : L) : E) ∈ s :=
+    (h_symm : ∀ x ∈ s, -x ∈ s) (h_conv : Convex ℝ s) : ∃ (x : _) (_ : x ≠ 0), ((x : L) : E) ∈ s :=
   by
   have h_vol : μ F < μ ((2⁻¹ : ℝ) • s) := by
     rwa [add_haar_smul_of_nonneg μ (by norm_num : 0 ≤ (2 : ℝ)⁻¹) s, ←
@@ -83,9 +83,9 @@ theorem exists_ne_zero_mem_lattice_of_measure_mul_two_pow_lt_measure [NormedAddC
     exists_pair_mem_lattice_not_disjoint_vadd fund ((h_conv.smul _).NullMeasurableSet _) h_vol
   obtain ⟨_, ⟨v, hv, rfl⟩, w, hw, hvw⟩ := not_disjoint_iff.mp h
   refine' ⟨x - y, sub_ne_zero.2 hxy, _⟩
-  rw [mem_inv_smul_set_iff₀ (two_ne_zero' ℝ)] at hv hw
+  rw [mem_inv_smul_set_iff₀ (two_ne_zero' ℝ)] at hv hw 
   simp_rw [AddSubgroup.vadd_def, vadd_eq_add, add_comm _ w, ← sub_eq_sub_iff_add_eq_add, ←
-    AddSubgroup.coe_sub] at hvw
+    AddSubgroup.coe_sub] at hvw 
   rw [← hvw, ← inv_smul_smul₀ (two_ne_zero' ℝ) (_ - _), smul_sub, sub_eq_add_neg, smul_add]
   refine' h_conv hw (h_symm _ hv) _ _ _ <;> norm_num
 #align measure_theory.exists_ne_zero_mem_lattice_of_measure_mul_two_pow_lt_measure MeasureTheory.exists_ne_zero_mem_lattice_of_measure_mul_two_pow_lt_measure
Diff
@@ -51,7 +51,7 @@ variable {E L : Type _} [MeasurableSpace E] {μ : Measure E} {F s : Set E}
 countable subgroup `L` of `E`, then there exists two distincts points `x, y ∈ L` such that `(x + s)`
 and `(y + s)` are not disjoint. -/
 theorem exists_pair_mem_lattice_not_disjoint_vadd [AddCommGroup L] [Countable L] [AddAction L E]
-    [MeasurableSpace L] [MeasurableVAdd L E] [VaddInvariantMeasure L E μ]
+    [MeasurableSpace L] [MeasurableVAdd L E] [VAddInvariantMeasure L E μ]
     (fund : IsAddFundamentalDomain L F μ) (hS : NullMeasurableSet s μ) (h : μ F < μ s) :
     ∃ x y : L, x ≠ y ∧ ¬Disjoint (x +ᵥ s) (y +ᵥ s) :=
   by
@@ -69,10 +69,9 @@ theorem exists_pair_mem_lattice_not_disjoint_vadd [AddCommGroup L] [Countable L]
 is large enough compared to the covolume of a lattice `L` of `E`, then it contains a non-zero
 lattice point of `L`.  -/
 theorem exists_ne_zero_mem_lattice_of_measure_mul_two_pow_lt_measure [NormedAddCommGroup E]
-    [NormedSpace ℝ E] [BorelSpace E] [FiniteDimensional ℝ E] [IsAddHaarMeasure μ]
-    {L : AddSubgroup E} [Countable L] (fund : IsAddFundamentalDomain L F μ)
-    (h : μ F * 2 ^ finrank ℝ E < μ s) (h_symm : ∀ x ∈ s, -x ∈ s) (h_conv : Convex ℝ s) :
-    ∃ (x : _)(_ : x ≠ 0), ((x : L) : E) ∈ s :=
+    [NormedSpace ℝ E] [BorelSpace E] [FiniteDimensional ℝ E] [AddHaarMeasure μ] {L : AddSubgroup E}
+    [Countable L] (fund : IsAddFundamentalDomain L F μ) (h : μ F * 2 ^ finrank ℝ E < μ s)
+    (h_symm : ∀ x ∈ s, -x ∈ s) (h_conv : Convex ℝ s) : ∃ (x : _)(_ : x ≠ 0), ((x : L) : E) ∈ s :=
   by
   have h_vol : μ F < μ ((2⁻¹ : ℝ) • s) := by
     rwa [add_haar_smul_of_nonneg μ (by norm_num : 0 ≤ (2 : ℝ)⁻¹) s, ←
Diff
@@ -43,7 +43,7 @@ namespace MeasureTheory
 
 open ENNReal FiniteDimensional MeasureTheory MeasureTheory.Measure Set
 
-open Pointwise
+open scoped Pointwise
 
 variable {E L : Type _} [MeasurableSpace E] {μ : Measure E} {F s : Set E}
 
Diff
@@ -4,13 +4,13 @@ Released under Apache 2.0 license as described in the file LICENSE.
 Authors: Alex J. Best
 
 ! This file was ported from Lean 3 source module measure_theory.group.geometry_of_numbers
-! leanprover-community/mathlib commit 02e095b22be8a3731542041cdc1266b7f588377c
+! leanprover-community/mathlib commit fd5edc43dc4f10b85abfe544b88f82cf13c5f844
 ! Please do not edit these lines, except to modify the commit id
 ! if you have ported upstream changes.
 -/
 import Mathbin.Analysis.Convex.Measure
 import Mathbin.MeasureTheory.Group.FundamentalDomain
-import Mathbin.MeasureTheory.Measure.HaarLebesgue
+import Mathbin.MeasureTheory.Measure.Lebesgue.EqHaar
 
 /-!
 # Geometry of numbers
Diff
@@ -51,7 +51,7 @@ variable {E L : Type _} [MeasurableSpace E] {μ : Measure E} {F s : Set E}
 countable subgroup `L` of `E`, then there exists two distincts points `x, y ∈ L` such that `(x + s)`
 and `(y + s)` are not disjoint. -/
 theorem exists_pair_mem_lattice_not_disjoint_vadd [AddCommGroup L] [Countable L] [AddAction L E]
-    [MeasurableSpace L] [HasMeasurableVadd L E] [VaddInvariantMeasure L E μ]
+    [MeasurableSpace L] [MeasurableVAdd L E] [VaddInvariantMeasure L E μ]
     (fund : IsAddFundamentalDomain L F μ) (hS : NullMeasurableSet s μ) (h : μ F < μ s) :
     ∃ x y : L, x ≠ y ∧ ¬Disjoint (x +ᵥ s) (y +ᵥ s) :=
   by
Diff
@@ -59,7 +59,7 @@ theorem exists_pair_mem_lattice_not_disjoint_vadd [AddCommGroup L] [Countable L]
   exact
     ((fund.measure_eq_tsum _).trans
           (measure_Union₀
-              (Pairwise.mono h fun i j hij => (hij.mono inf_le_left inf_le_left).AeDisjoint)
+              (Pairwise.mono h fun i j hij => (hij.mono inf_le_left inf_le_left).AEDisjoint)
               fun _ => (hS.vadd _).inter fund.null_measurable_set).symm).trans_le
       (measure_mono <| Union_subset fun _ => inter_subset_right _ _)
 #align measure_theory.exists_pair_mem_lattice_not_disjoint_vadd MeasureTheory.exists_pair_mem_lattice_not_disjoint_vadd

Changes in mathlib4

mathlib3
mathlib4
feat(Mathlib.Topology.Compactness.Compact): add sInter version of Cantor's intersection theorem (#10956)

The iInter version of Cantor's intersection theorem is already present: IsCompact.nonempty_iInter_of_directed_nonempty_compact_closed. The proof of the added sInter version takes advantage of the iInter version.

Much of the addition due to conversation with Sebastien Gouezel on Zulip.

Open in Gitpod

Diff
@@ -120,7 +120,7 @@ theorem exists_ne_zero_mem_lattice_of_measure_mul_two_pow_le_measure [NormedAddC
     · rw [sdiff_eq_sdiff_iff_inf_eq_inf (z := U).mpr (by simp [Set.inter_comm .. ▸ hU.2, zero_mem])]
       exact AddSubgroup.isClosed_of_discrete.sdiff hU.1
     exact isOpen_inter_eq_singleton_of_mem_discrete (zero_mem L)
-  refine IsCompact.nonempty_iInter_of_sequence_nonempty_compact_closed Z (fun n => ?_)
+  refine IsCompact.nonempty_iInter_of_sequence_nonempty_isCompact_isClosed Z (fun n => ?_)
     (fun n => ?_) ((S 0).isCompact.inter_right h_clos) (fun n => (S n).isClosed.inter h_clos)
   · refine Set.inter_subset_inter_left _ (SetLike.coe_subset_coe.mpr ?_)
     refine ConvexBody.smul_le_of_le K h_zero ?_
refactor: Use p⁻¹ instead of 1 / p in conjugate exponents (#10216)

I am keeping some 1 / p lemmas behind to keep the diff small but the goal is to get rid of them entirely.

Diff
@@ -69,7 +69,7 @@ theorem exists_ne_zero_mem_lattice_of_measure_mul_two_pow_lt_measure [NormedAddC
   have h_vol : μ F < μ ((2⁻¹ : ℝ) • s) := by
     rw [addHaar_smul_of_nonneg μ (by norm_num : 0 ≤ (2 : ℝ)⁻¹) s, ←
       mul_lt_mul_right (pow_ne_zero (finrank ℝ E) (two_ne_zero' _)) (pow_ne_top two_ne_top),
-      mul_right_comm, ofReal_pow (by norm_num : 0 ≤ (2 : ℝ)⁻¹), ← ofReal_inv_of_pos zero_lt_two]
+      mul_right_comm, ofReal_pow (by norm_num : 0 ≤ (2 : ℝ)⁻¹), ofReal_inv_of_pos zero_lt_two]
     norm_num
     rwa [← mul_pow, ENNReal.inv_mul_cancel two_ne_zero two_ne_top, one_pow, one_mul]
   obtain ⟨x, y, hxy, h⟩ :=
feat: The support of f ^ n (#9617)

This involves moving lemmas from Algebra.GroupPower.Ring to Algebra.GroupWithZero.Basic and changing some 0 < n assumptions to n ≠ 0.

From LeanAPAP

Diff
@@ -99,7 +99,7 @@ theorem exists_ne_zero_mem_lattice_of_measure_mul_two_pow_le_measure [NormedAddC
     intro hμ
     suffices μ F = 0 from fund.measure_ne_zero (NeZero.ne μ) this
     rw [hμ, le_zero_iff, mul_eq_zero] at h
-    exact h.resolve_right <| (pow_ne_zero_iff finrank_pos).mpr two_ne_zero
+    exact h.resolve_right <| pow_ne_zero _ two_ne_zero
   have h_nemp : s.Nonempty := nonempty_of_measure_ne_zero h_mes
   let u : ℕ → ℝ≥0 := (exists_seq_strictAnti_tendsto 0).choose
   let K : ConvexBody E := ⟨s, h_conv, h_cpt, h_nemp⟩
chore: tidy various files (#8823)
Diff
@@ -65,7 +65,7 @@ theorem exists_ne_zero_mem_lattice_of_measure_mul_two_pow_lt_measure [NormedAddC
     [NormedSpace ℝ E] [BorelSpace E] [FiniteDimensional ℝ E] [IsAddHaarMeasure μ]
     {L : AddSubgroup E} [Countable L] (fund : IsAddFundamentalDomain L F μ)
     (h_symm : ∀ x ∈ s, -x ∈ s) (h_conv : Convex ℝ s) (h : μ F * 2 ^ finrank ℝ E < μ s) :
-    ∃ (x : _) (_ : x ≠ 0), ((x : L) : E) ∈ s := by
+    ∃ x ≠ 0, ((x : L) : E) ∈ s := by
   have h_vol : μ F < μ ((2⁻¹ : ℝ) • s) := by
     rw [addHaar_smul_of_nonneg μ (by norm_num : 0 ≤ (2 : ℝ)⁻¹) s, ←
       mul_lt_mul_right (pow_ne_zero (finrank ℝ E) (two_ne_zero' _)) (pow_ne_top two_ne_top),
@@ -94,12 +94,12 @@ theorem exists_ne_zero_mem_lattice_of_measure_mul_two_pow_le_measure [NormedAddC
     {L : AddSubgroup E} [Countable L] [DiscreteTopology L] (fund : IsAddFundamentalDomain L F μ)
     (h_symm : ∀ x ∈ s, -x ∈ s) (h_conv : Convex ℝ s) (h_cpt : IsCompact s)
     (h : μ F * 2 ^ finrank ℝ E ≤ μ s) :
-    ∃ (x : _) (_ : x ≠ 0), ((x : L) : E) ∈ s := by
+    ∃ x ≠ 0, ((x : L) : E) ∈ s := by
   have h_mes : μ s ≠ 0 := by
-    by_contra hμ
-    suffices μ F = 0 by exact fund.measure_ne_zero (NeZero.ne μ) this
+    intro hμ
+    suffices μ F = 0 from fund.measure_ne_zero (NeZero.ne μ) this
     rw [hμ, le_zero_iff, mul_eq_zero] at h
-    exact h.resolve_right <| (pow_eq_zero_iff finrank_pos).not.mpr two_ne_zero
+    exact h.resolve_right <| (pow_ne_zero_iff finrank_pos).mpr two_ne_zero
   have h_nemp : s.Nonempty := nonempty_of_measure_ne_zero h_mes
   let u : ℕ → ℝ≥0 := (exists_seq_strictAnti_tendsto 0).choose
   let K : ConvexBody E := ⟨s, h_conv, h_cpt, h_nemp⟩
feat: Minkowski Convex Body Theorem for compact convex body (#8274)
Diff
@@ -3,9 +3,9 @@ Copyright (c) 2021 Alex J. Best. All rights reserved.
 Released under Apache 2.0 license as described in the file LICENSE.
 Authors: Alex J. Best
 -/
+import Mathlib.Analysis.Convex.Body
 import Mathlib.Analysis.Convex.Measure
 import Mathlib.MeasureTheory.Group.FundamentalDomain
-import Mathlib.MeasureTheory.Measure.Lebesgue.EqHaar
 
 #align_import measure_theory.group.geometry_of_numbers from "leanprover-community/mathlib"@"fd5edc43dc4f10b85abfe544b88f82cf13c5f844"
 
@@ -38,9 +38,9 @@ Hermann Minkowski.
 
 namespace MeasureTheory
 
-open ENNReal FiniteDimensional MeasureTheory MeasureTheory.Measure Set
+open ENNReal FiniteDimensional MeasureTheory MeasureTheory.Measure Set Filter
 
-open scoped Pointwise
+open scoped Pointwise NNReal
 
 variable {E L : Type*} [MeasurableSpace E] {μ : Measure E} {F s : Set E}
 
@@ -64,7 +64,7 @@ lattice point of `L`.  -/
 theorem exists_ne_zero_mem_lattice_of_measure_mul_two_pow_lt_measure [NormedAddCommGroup E]
     [NormedSpace ℝ E] [BorelSpace E] [FiniteDimensional ℝ E] [IsAddHaarMeasure μ]
     {L : AddSubgroup E} [Countable L] (fund : IsAddFundamentalDomain L F μ)
-    (h : μ F * 2 ^ finrank ℝ E < μ s) (h_symm : ∀ x ∈ s, -x ∈ s) (h_conv : Convex ℝ s) :
+    (h_symm : ∀ x ∈ s, -x ∈ s) (h_conv : Convex ℝ s) (h : μ F * 2 ^ finrank ℝ E < μ s) :
     ∃ (x : _) (_ : x ≠ 0), ((x : L) : E) ∈ s := by
   have h_vol : μ F < μ ((2⁻¹ : ℝ) • s) := by
     rw [addHaar_smul_of_nonneg μ (by norm_num : 0 ≤ (2 : ℝ)⁻¹) s, ←
@@ -83,4 +83,62 @@ theorem exists_ne_zero_mem_lattice_of_measure_mul_two_pow_lt_measure [NormedAddC
   refine' h_conv hw (h_symm _ hv) _ _ _ <;> norm_num
 #align measure_theory.exists_ne_zero_mem_lattice_of_measure_mul_two_pow_lt_measure MeasureTheory.exists_ne_zero_mem_lattice_of_measure_mul_two_pow_lt_measure
 
+/-- The **Minkowski Convex Body Theorem for compact domain**. If `s` is a convex compact symmetric
+domain of `E` whose volume is large enough compared to the covolume of a lattice `L` of `E`, then it
+contains a non-zero lattice point of `L`. Compared to
+`exists_ne_zero_mem_lattice_of_measure_mul_two_pow_lt_measure`, this version requires in addition
+that `s` is compact and `L` is discrete but provides a weaker inequality rather than a strict
+inequality. -/
+theorem exists_ne_zero_mem_lattice_of_measure_mul_two_pow_le_measure [NormedAddCommGroup E]
+    [NormedSpace ℝ E] [BorelSpace E] [FiniteDimensional ℝ E] [Nontrivial E] [IsAddHaarMeasure μ]
+    {L : AddSubgroup E} [Countable L] [DiscreteTopology L] (fund : IsAddFundamentalDomain L F μ)
+    (h_symm : ∀ x ∈ s, -x ∈ s) (h_conv : Convex ℝ s) (h_cpt : IsCompact s)
+    (h : μ F * 2 ^ finrank ℝ E ≤ μ s) :
+    ∃ (x : _) (_ : x ≠ 0), ((x : L) : E) ∈ s := by
+  have h_mes : μ s ≠ 0 := by
+    by_contra hμ
+    suffices μ F = 0 by exact fund.measure_ne_zero (NeZero.ne μ) this
+    rw [hμ, le_zero_iff, mul_eq_zero] at h
+    exact h.resolve_right <| (pow_eq_zero_iff finrank_pos).not.mpr two_ne_zero
+  have h_nemp : s.Nonempty := nonempty_of_measure_ne_zero h_mes
+  let u : ℕ → ℝ≥0 := (exists_seq_strictAnti_tendsto 0).choose
+  let K : ConvexBody E := ⟨s, h_conv, h_cpt, h_nemp⟩
+  let S : ℕ → ConvexBody E := fun n => (1 + u n) • K
+  let Z : ℕ → Set E := fun n => (S n) ∩ (L \ {0})
+  -- The convex bodies `S n` have volume strictly larger than `μ s` and thus we can apply
+  -- `exists_ne_zero_mem_lattice_of_measure_mul_two_pow_lt_measure` to them and obtain that
+  -- `S n` contains a nonzero point of `L`. Since the intersection of the `S n` is equal to `s`,
+  -- it follows that `s` contains a nonzero point of `L`.
+  have h_zero : 0 ∈ K := K.zero_mem_of_symmetric h_symm
+  suffices Set.Nonempty (⋂ n, Z n) by
+    erw [← Set.iInter_inter, K.iInter_smul_eq_self h_zero] at this
+    · obtain ⟨x, hx⟩ := this
+      exact ⟨⟨x, by aesop⟩, by aesop⟩
+    · exact (exists_seq_strictAnti_tendsto (0:ℝ≥0)).choose_spec.2.2
+  have h_clos : IsClosed ((L : Set E) \ {0}) := by
+    rsuffices ⟨U, hU⟩ : ∃ U : Set E, IsOpen U ∧  U ∩ L = {0}
+    · rw [sdiff_eq_sdiff_iff_inf_eq_inf (z := U).mpr (by simp [Set.inter_comm .. ▸ hU.2, zero_mem])]
+      exact AddSubgroup.isClosed_of_discrete.sdiff hU.1
+    exact isOpen_inter_eq_singleton_of_mem_discrete (zero_mem L)
+  refine IsCompact.nonempty_iInter_of_sequence_nonempty_compact_closed Z (fun n => ?_)
+    (fun n => ?_) ((S 0).isCompact.inter_right h_clos) (fun n => (S n).isClosed.inter h_clos)
+  · refine Set.inter_subset_inter_left _ (SetLike.coe_subset_coe.mpr ?_)
+    refine ConvexBody.smul_le_of_le K h_zero ?_
+    rw [add_le_add_iff_left]
+    exact le_of_lt <| (exists_seq_strictAnti_tendsto (0:ℝ≥0)).choose_spec.1 (Nat.lt.base n)
+  · suffices μ F * 2 ^ finrank ℝ E < μ (S n : Set E) by
+      have h_symm' : ∀ x ∈ S n, -x ∈ S n := by
+        rintro _ ⟨y, hy, rfl⟩
+        exact ⟨-y, h_symm _ hy, by simp⟩
+      obtain ⟨x, hx_nz, hx_mem⟩ := exists_ne_zero_mem_lattice_of_measure_mul_two_pow_lt_measure
+        fund h_symm' (S n).convex this
+      exact ⟨x, hx_mem, by aesop⟩
+    refine lt_of_le_of_lt h ?_
+    rw [ConvexBody.coe_smul', NNReal.smul_def, addHaar_smul_of_nonneg _ (NNReal.coe_nonneg _)]
+    rw [show μ s < _ ↔ 1 * μ s < _ by rw [one_mul]]
+    refine (mul_lt_mul_right h_mes (ne_of_lt h_cpt.measure_lt_top)).mpr ?_
+    rw [ofReal_pow (NNReal.coe_nonneg _)]
+    refine one_lt_pow ?_ (ne_of_gt finrank_pos)
+    simp [(exists_seq_strictAnti_tendsto (0:ℝ≥0)).choose_spec.2.1 n]
+
 end MeasureTheory
chore: banish Type _ and Sort _ (#6499)

We remove all possible occurences of Type _ and Sort _ in favor of Type* and Sort*.

This has nice performance benefits.

Diff
@@ -42,7 +42,7 @@ open ENNReal FiniteDimensional MeasureTheory MeasureTheory.Measure Set
 
 open scoped Pointwise
 
-variable {E L : Type _} [MeasurableSpace E] {μ : Measure E} {F s : Set E}
+variable {E L : Type*} [MeasurableSpace E] {μ : Measure E} {F s : Set E}
 
 /-- **Blichfeldt's Theorem**. If the volume of the set `s` is larger than the covolume of the
 countable subgroup `L` of `E`, then there exist two distinct points `x, y ∈ L` such that `(x + s)`
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,16 +2,13 @@
 Copyright (c) 2021 Alex J. Best. All rights reserved.
 Released under Apache 2.0 license as described in the file LICENSE.
 Authors: Alex J. Best
-
-! This file was ported from Lean 3 source module measure_theory.group.geometry_of_numbers
-! leanprover-community/mathlib commit fd5edc43dc4f10b85abfe544b88f82cf13c5f844
-! Please do not edit these lines, except to modify the commit id
-! if you have ported upstream changes.
 -/
 import Mathlib.Analysis.Convex.Measure
 import Mathlib.MeasureTheory.Group.FundamentalDomain
 import Mathlib.MeasureTheory.Measure.Lebesgue.EqHaar
 
+#align_import measure_theory.group.geometry_of_numbers from "leanprover-community/mathlib"@"fd5edc43dc4f10b85abfe544b88f82cf13c5f844"
+
 /-!
 # Geometry of numbers
 
chore(MeasureTheory): rename add_haar to addHaar (#5811)

This is supposed to mean "an additive Haar measure", not adding something to Haar, so it should be one word and not two.

Diff
@@ -70,7 +70,7 @@ theorem exists_ne_zero_mem_lattice_of_measure_mul_two_pow_lt_measure [NormedAddC
     (h : μ F * 2 ^ finrank ℝ E < μ s) (h_symm : ∀ x ∈ s, -x ∈ s) (h_conv : Convex ℝ s) :
     ∃ (x : _) (_ : x ≠ 0), ((x : L) : E) ∈ s := by
   have h_vol : μ F < μ ((2⁻¹ : ℝ) • s) := by
-    rw [add_haar_smul_of_nonneg μ (by norm_num : 0 ≤ (2 : ℝ)⁻¹) s, ←
+    rw [addHaar_smul_of_nonneg μ (by norm_num : 0 ≤ (2 : ℝ)⁻¹) s, ←
       mul_lt_mul_right (pow_ne_zero (finrank ℝ E) (two_ne_zero' _)) (pow_ne_top two_ne_top),
       mul_right_comm, ofReal_pow (by norm_num : 0 ≤ (2 : ℝ)⁻¹), ← ofReal_inv_of_pos zero_lt_two]
     norm_num
feat: port MeasureTheory.Group.GeometryOfNumbers (#4915)

Dependencies 12 + 1039

1040 files ported (98.9%)
473583 lines ported (98.8%)
Show graph

The unported dependencies are

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