Documentation

Mathlib.Analysis.AperiodicOrder.Delone.Basic

Delone sets #

A Delone set D βŠ† X in a metric space is a set which is both:

The DeloneSet structure stores the set together with explicit radii witnessing these properties. The definitions use metric entourages so that the theory fits naturally into the uniformity framework.

Delone sets appear in discrete geometry, crystallography, aperiodic order, and tiling theory.

Main definitions #

Basic properties #

Implementation notes #

structure Delone.DeloneSet (X : Type u_3) [MetricSpace X] :
Type u_3

A Delone set consists of a set together with explicit radii witnessing uniform discreteness and relative denseness.

Instances For
    theorem Delone.DeloneSet.ext {X : Type u_3} {inst✝ : MetricSpace X} {x y : DeloneSet X} (carrier : x.carrier = y.carrier) (packingRadius : x.packingRadius = y.packingRadius) (coveringRadius : x.coveringRadius = y.coveringRadius) :
    x = y
    def Delone.DeloneSet.toSet {X : Type u_1} [MetricSpace X] (D : DeloneSet X) :
    Set X

    The underlying set of points of a Delone set.

    Equations
      Instances For
        @[simp]
        theorem Delone.DeloneSet.mem_coe {X : Type u_1} [MetricSpace X] {D : DeloneSet X} {x : X} :
        x ∈ ↑D ↔ x ∈ D
        def Delone.DeloneSet.copy {X : Type u_1} [MetricSpace X] (D : DeloneSet X) (carrier : Set X) (packingRadius coveringRadius : NNReal) (h_carrier : carrier = D.carrier) (h_packing : packingRadius = D.packingRadius) (h_covering : coveringRadius = D.coveringRadius) :

        Copy of a Delone set with new fields equal to the old ones. Useful to fix definitional equalities.

        Equations
          Instances For
            theorem Delone.DeloneSet.copy_eq {X : Type u_1} [MetricSpace X] (D : DeloneSet X) (carrier : Set X) (packingRadius coveringRadius : NNReal) (h_carrier : carrier = D.carrier) (h_packing : packingRadius = D.packingRadius) (h_covering : coveringRadius = D.coveringRadius) :
            D.copy carrier packingRadius coveringRadius h_carrier h_packing h_covering = D
            theorem Delone.DeloneSet.packingRadius_lt_dist_of_mem_ne {X : Type u_1} [MetricSpace X] (D : DeloneSet X) {x y : X} (hx : x ∈ D) (hy : y ∈ D) (hne : x β‰  y) :
            ↑D.packingRadius < dist x y
            theorem Delone.DeloneSet.eq_of_mem_ball {X : Type u_1} [MetricSpace X] (D : DeloneSet X) {r : NNReal} (hr : r ≀ D.packingRadius / 2) {x y z : X} (hx : x ∈ D) (hy : y ∈ D) (hxz : x ∈ Metric.ball z ↑r) (hyz : y ∈ Metric.ball z ↑r) :
            x = y
            theorem Delone.DeloneSet.subset_ball_singleton {X : Type u_1} [MetricSpace X] (D : DeloneSet X) :
            βˆƒ r > 0, βˆ€ {x y z : X}, x ∈ D β†’ y ∈ D β†’ x ∈ Metric.ball z r β†’ y ∈ Metric.ball z r β†’ x = y

            There exists a radius r > 0 such that any ball of radius r centered at a point of D contains at most one point of D.

            noncomputable def Delone.DeloneSet.mapBilipschitz {X : Type u_1} {Y : Type u_2} [MetricSpace X] [MetricSpace Y] (f : X ≃ Y) (K₁ Kβ‚‚ : NNReal) (hK₁ : 0 < K₁) (hKβ‚‚ : 0 < Kβ‚‚) (hf₁ : AntilipschitzWith K₁ ⇑f) (hfβ‚‚ : LipschitzWith Kβ‚‚ ⇑f) (D : DeloneSet X) :

            Bilipschitz maps send Delone sets to Delone sets.

            Equations
              Instances For
                @[simp]
                theorem Delone.DeloneSet.mapBilipschitz_carrier {X : Type u_1} {Y : Type u_2} [MetricSpace X] [MetricSpace Y] (f : X ≃ Y) (K₁ Kβ‚‚ : NNReal) (hK₁ : 0 < K₁) (hKβ‚‚ : 0 < Kβ‚‚) (hf₁ : AntilipschitzWith K₁ ⇑f) (hfβ‚‚ : LipschitzWith Kβ‚‚ ⇑f) (D : DeloneSet X) :
                (mapBilipschitz f K₁ Kβ‚‚ hK₁ hKβ‚‚ hf₁ hfβ‚‚ D).carrier = ⇑f '' D.carrier
                @[simp]
                theorem Delone.DeloneSet.mapBilipschitz_packingRadius {X : Type u_1} {Y : Type u_2} [MetricSpace X] [MetricSpace Y] (f : X ≃ Y) (K₁ Kβ‚‚ : NNReal) (hK₁ : 0 < K₁) (hKβ‚‚ : 0 < Kβ‚‚) (hf₁ : AntilipschitzWith K₁ ⇑f) (hfβ‚‚ : LipschitzWith Kβ‚‚ ⇑f) (D : DeloneSet X) :
                (mapBilipschitz f K₁ Kβ‚‚ hK₁ hKβ‚‚ hf₁ hfβ‚‚ D).packingRadius = D.packingRadius / K₁
                @[simp]
                theorem Delone.DeloneSet.mapBilipschitz_coveringRadius {X : Type u_1} {Y : Type u_2} [MetricSpace X] [MetricSpace Y] (f : X ≃ Y) (K₁ Kβ‚‚ : NNReal) (hK₁ : 0 < K₁) (hKβ‚‚ : 0 < Kβ‚‚) (hf₁ : AntilipschitzWith K₁ ⇑f) (hfβ‚‚ : LipschitzWith Kβ‚‚ ⇑f) (D : DeloneSet X) :
                (mapBilipschitz f K₁ Kβ‚‚ hK₁ hKβ‚‚ hf₁ hfβ‚‚ D).coveringRadius = Kβ‚‚ * D.coveringRadius
                @[simp]
                theorem Delone.DeloneSet.mapBilipschitz_refl {X : Type u_1} [MetricSpace X] (D : DeloneSet X) (hK1 hK2 : 0 < 1) (hA : AntilipschitzWith 1 ⇑(Equiv.refl X)) (hL : LipschitzWith 1 ⇑(Equiv.refl X)) :
                mapBilipschitz (Equiv.refl X) 1 1 hK1 hK2 hA hL D = D
                theorem Delone.DeloneSet.mapBilipschitz_trans {X : Type u_1} {Y : Type u_2} [MetricSpace X] [MetricSpace Y] {Z : Type u_3} [MetricSpace Z] (D : DeloneSet X) (f : X ≃ Y) (g : Y ≃ Z) (K₁f Kβ‚‚f K₁g Kβ‚‚g : NNReal) (hf₁_pos : 0 < K₁f) (hfβ‚‚_pos : 0 < Kβ‚‚f) (hg₁_pos : 0 < K₁g) (hgβ‚‚_pos : 0 < Kβ‚‚g) (hf_anti : AntilipschitzWith K₁f ⇑f) (hf_lip : LipschitzWith Kβ‚‚f ⇑f) (hg_anti : AntilipschitzWith K₁g ⇑g) (hg_lip : LipschitzWith Kβ‚‚g ⇑g) :
                mapBilipschitz g K₁g Kβ‚‚g hg₁_pos hgβ‚‚_pos hg_anti hg_lip (mapBilipschitz f K₁f Kβ‚‚f hf₁_pos hfβ‚‚_pos hf_anti hf_lip D) = mapBilipschitz (f.trans g) (K₁f * K₁g) (Kβ‚‚g * Kβ‚‚f) β‹― β‹― β‹― β‹― D
                noncomputable def Delone.DeloneSet.mapIsometry {X : Type u_1} {Y : Type u_2} [MetricSpace X] [MetricSpace Y] (f : X ≃ᡒ Y) :

                The image of a Delone set under an isometry. This is a specialization of DeloneSet.mapBilipschitz where the packing and covering radii are preserved because the Lipschitz constants are both 1.

                Equations
                  Instances For