Metric space gluing
Gluing two metric spaces along a common subset. Formally, we are given
Φ
γ ---> α
|
|Ψ
v
β
where hΦ : isometry Φ
and hΨ : isometry Ψ
.
We want to complete the square by a space glue_space hΦ hΨ
and two isometries
to_glue_l hΦ hΨ
and to_glue_r hΦ hΨ
that make the square commute.
We start by defining a predistance on the disjoint union α ⊕ β
, for which
points Φ p
and Ψ p
are at distance 0. The (quotient) metric space associated
to this predistance is the desired space.
This is an instance of a more general construction, where Φ
and Ψ
do not have to be isometries,
but the distances in the image almost coincide, up to 2ε
say. Then one can almost glue the two
spaces so that the images of a point under Φ
and Ψ
are ε-close. If ε > 0
, this yields a
metric space structure on α ⊕ β
, without the need to take a quotient. In particular, when
α
and β
are inhabited, this gives a natural metric space structure on α ⊕ β
, where the basepoints
are at distance 1, say, and the distances between other points are obtained by going through the
two basepoints.
We also define the inductive limit of metric spaces. Given
f 0 f 1 f 2 f 3
X 0 -----> X 1 -----> X 2 -----> X 3 -----> ...
where the X n
are metric spaces and f n
isometric embeddings, we define the inductive
limit of the X n
, also known as the increasing union of the X n
in this context, if we
identify X n
and X (n+1)
through f n
. This is a metric space in which all X n
embed
isometrically and in a way compatible with f n
.
Define a predistance on α ⊕ β, for which Φ p and Ψ p are at distance ε
Equations
- metric.glue_dist Φ Ψ ε (sum.inr x) (sum.inr y) = has_dist.dist x y
- metric.glue_dist Φ Ψ ε (sum.inr x) (sum.inl y) = (⨅ (p : γ), has_dist.dist y (Φ p) + has_dist.dist x (Ψ p)) + ε
- metric.glue_dist Φ Ψ ε (sum.inl x) (sum.inr y) = (⨅ (p : γ), has_dist.dist x (Φ p) + has_dist.dist y (Ψ p)) + ε
- metric.glue_dist Φ Ψ ε (sum.inl x) (sum.inl y) = has_dist.dist x y
Given two maps Φ and Ψ intro metric spaces α and β such that the distances between Φ p and Φ q, and between Ψ p and Ψ q, coincide up to 2 ε where ε > 0, one can almost glue the two spaces α and β along the images of Φ and Ψ, so that Φ p and Ψ p are at distance ε.
Equations
- metric.glue_metric_approx Φ Ψ ε ε0 H = {to_has_dist := {dist := metric.glue_dist Φ Ψ ε}, dist_self := _, eq_of_dist_eq_zero := _, dist_comm := _, dist_triangle := _, edist := λ (x y : α ⊕ β), ennreal.of_real (metric.glue_dist Φ Ψ ε x y), edist_dist := _, to_uniform_space := uniform_space_of_dist (metric.glue_dist Φ Ψ ε) _ _ _, uniformity_dist := _}
Equations
- metric.sum.dist (sum.inr b) (sum.inr b') = has_dist.dist b b'
- metric.sum.dist (sum.inr b) (sum.inl a) = has_dist.dist b (inhabited.default β) + 1 + has_dist.dist (inhabited.default α) a
- metric.sum.dist (sum.inl a) (sum.inr b) = has_dist.dist a (inhabited.default α) + 1 + has_dist.dist (inhabited.default β) b
- metric.sum.dist (sum.inl a) (sum.inl a') = has_dist.dist a a'
The distance on the disjoint union indeed defines a metric space. All the distance properties follow from our choice of the distance. The harder work is to show that the uniform structure defined by the distance coincides with the disjoint union uniform structure.
Equations
- metric.metric_space_sum = {to_has_dist := {dist := metric.sum.dist _inst_4}, dist_self := _, eq_of_dist_eq_zero := _, dist_comm := _, dist_triangle := _, edist := λ (x y : α ⊕ β), ennreal.of_real (metric.sum.dist x y), edist_dist := _, to_uniform_space := sum.uniform_space metric_space.to_uniform_space', uniformity_dist := _}
The left injection of a space in a disjoint union in an isometry
The right injection of a space in a disjoint union in an isometry
Equations
- metric.glue_premetric hΦ hΨ = {to_has_dist := {dist := metric.glue_dist Φ Ψ 0}, dist_self := _, dist_comm := _, dist_triangle := _}
Equations
- metric.glue_space hΦ hΨ = premetric.metric_quot (α ⊕ β)
Equations
Equations
- metric.to_glue_l hΦ hΨ x = let _inst : premetric_space (α ⊕ β) := metric.glue_premetric hΦ hΨ in ⟦sum.inl x⟧
Equations
- metric.to_glue_r hΦ hΨ y = let _inst : premetric_space (α ⊕ β) := metric.glue_premetric hΦ hΨ in ⟦sum.inr y⟧
Equations
- metric.inhabited_left hΦ hΨ = {default := metric.to_glue_l hΦ hΨ (inhabited.default α)}
Equations
- metric.inhabited_right hΦ hΨ = {default := metric.to_glue_r hΦ hΨ (inhabited.default β)}
Predistance on the disjoint union Σn, X n.
Equations
- metric.inductive_limit_dist f x y = has_dist.dist (nat.le_rec_on _ f x.snd) (nat.le_rec_on _ f y.snd)
The predistance on the disjoint union Σn, X n can be computed in any X k for large enough k.
Premetric space structure on Σn, X n.
Equations
- metric.inductive_premetric I = {to_has_dist := {dist := metric.inductive_limit_dist f}, dist_self := _, dist_comm := _, dist_triangle := _}
The type giving the inductive limit in a metric space context.
Equations
- metric.inductive_limit I = premetric.metric_quot (Σ (n : ℕ), X n)
Metric space structure on the inductive limit.
Mapping each X n
to the inductive limit.
Equations
- metric.to_inductive_limit I n x = let _inst : premetric_space (Σ (n : ℕ), X n) := metric.inductive_premetric I in ⟦⟨n, x⟩⟧
Equations
- metric.inhabited I = {default := metric.to_inductive_limit I 0 (inhabited.default (X 0))}
The map to_inductive_limit n
mapping X n
to the inductive limit is an isometry.
The maps to_inductive_limit n
are compatible with the maps f n
.