Documentation

Mathlib.Topology.MetricSpace.Similarity

Similarities #

This file defines Similar, i.e., the equivalence between indexed sets of points in a metric space where all corresponding pairwise distances have the same ratio. The motivating example is triangles in the plane.

Implementation notes #

For more details see the Zulip discussion.

Notation #

Let P₁ and P₂ be metric spaces, let ι be an index set, and let v₁ : ι → P₁ and v₂ : ι → P₂ be indexed families of points.

def Similar {ι : Type u_1} {P₁ : Type u_3} {P₂ : Type u_4} [PseudoEMetricSpace P₁] [PseudoEMetricSpace P₂] (v₁ : ιP₁) (v₂ : ιP₂) :

Similarity between indexed sets of vertices v₁ and v₂. Use open scoped Similar to access the v₁ ∼ v₂ notation.

Equations
Instances For

    Similarity between indexed sets of vertices v₁ and v₂. Use open scoped Similar to access the v₁ ∼ v₂ notation.

    Equations
    Instances For
      theorem similar_iff_exists_edist_eq {ι : Type u_1} {P₁ : Type u_3} {P₂ : Type u_4} {v₁ : ιP₁} {v₂ : ιP₂} [PseudoEMetricSpace P₁] [PseudoEMetricSpace P₂] :
      Similar v₁ v₂ ∃ (r : NNReal), r 0 ∀ (i₁ i₂ : ι), edist (v₁ i₁) (v₁ i₂) = r * edist (v₂ i₁) (v₂ i₂)

      Similarity holds if and only if all extended distances are proportional.

      theorem similar_iff_exists_pairwise_edist_eq {ι : Type u_1} {P₁ : Type u_3} {P₂ : Type u_4} {v₁ : ιP₁} {v₂ : ιP₂} [PseudoEMetricSpace P₁] [PseudoEMetricSpace P₂] :
      Similar v₁ v₂ ∃ (r : NNReal), r 0 Pairwise fun (i₁ i₂ : ι) => edist (v₁ i₁) (v₁ i₂) = r * edist (v₂ i₁) (v₂ i₂)

      Similarity holds if and only if all extended distances between points with different indices are proportional.

      theorem Congruent.similar {ι : Type u_1} {P₁ : Type u_3} {P₂ : Type u_4} [PseudoEMetricSpace P₁] [PseudoEMetricSpace P₂] {v₁ : ιP₁} {v₂ : ιP₂} (h : Congruent v₁ v₂) :
      Similar v₁ v₂
      theorem Similar.exists_edist_eq {ι : Type u_1} {P₁ : Type u_3} {P₂ : Type u_4} {v₁ : ιP₁} {v₂ : ιP₂} [PseudoEMetricSpace P₁] [PseudoEMetricSpace P₂] :
      Similar v₁ v₂∃ (r : NNReal), r 0 ∀ (i₁ i₂ : ι), edist (v₁ i₁) (v₁ i₂) = r * edist (v₂ i₁) (v₂ i₂)

      A similarity scales extended distance. Forward direction of similar_iff_exists_edist_eq.

      theorem Similar.of_exists_edist_eq {ι : Type u_1} {P₁ : Type u_3} {P₂ : Type u_4} {v₁ : ιP₁} {v₂ : ιP₂} [PseudoEMetricSpace P₁] [PseudoEMetricSpace P₂] :
      (∃ (r : NNReal), r 0 ∀ (i₁ i₂ : ι), edist (v₁ i₁) (v₁ i₂) = r * edist (v₂ i₁) (v₂ i₂))Similar v₁ v₂

      Similarity follows from scaled extended distance. Backward direction of similar_iff_exists_edist_eq.

      theorem Similar.exists_pairwise_edist_eq {ι : Type u_1} {P₁ : Type u_3} {P₂ : Type u_4} {v₁ : ιP₁} {v₂ : ιP₂} [PseudoEMetricSpace P₁] [PseudoEMetricSpace P₂] :
      Similar v₁ v₂∃ (r : NNReal), r 0 Pairwise fun (i₁ i₂ : ι) => edist (v₁ i₁) (v₁ i₂) = r * edist (v₂ i₁) (v₂ i₂)

      A similarity pairwise scales extended distance. Forward direction of similar_iff_exists_pairwise_edist_eq.

      theorem Similar.of_exists_pairwise_edist_eq {ι : Type u_1} {P₁ : Type u_3} {P₂ : Type u_4} {v₁ : ιP₁} {v₂ : ιP₂} [PseudoEMetricSpace P₁] [PseudoEMetricSpace P₂] :
      (∃ (r : NNReal), r 0 Pairwise fun (i₁ i₂ : ι) => edist (v₁ i₁) (v₁ i₂) = r * edist (v₂ i₁) (v₂ i₂))Similar v₁ v₂

      Similarity follows from pairwise scaled extended distance. Backward direction of similar_iff_exists_pairwise_edist_eq.

      theorem Similar.refl {ι : Type u_1} {P₁ : Type u_3} [PseudoEMetricSpace P₁] (v₁ : ιP₁) :
      Similar v₁ v₁
      theorem Similar.symm {ι : Type u_1} {P₁ : Type u_3} {P₂ : Type u_4} {v₁ : ιP₁} {v₂ : ιP₂} [PseudoEMetricSpace P₁] [PseudoEMetricSpace P₂] (h : Similar v₁ v₂) :
      Similar v₂ v₁
      theorem similar_comm {ι : Type u_1} {P₁ : Type u_3} {P₂ : Type u_4} {v₁ : ιP₁} {v₂ : ιP₂} [PseudoEMetricSpace P₁] [PseudoEMetricSpace P₂] :
      Similar v₁ v₂ Similar v₂ v₁
      theorem Similar.trans {ι : Type u_1} {P₁ : Type u_3} {P₂ : Type u_4} {P₃ : Type u_5} {v₁ : ιP₁} {v₂ : ιP₂} {v₃ : ιP₃} [PseudoEMetricSpace P₁] [PseudoEMetricSpace P₂] [PseudoEMetricSpace P₃] (h₁ : Similar v₁ v₂) (h₂ : Similar v₂ v₃) :
      Similar v₁ v₃
      theorem Similar.index_map {ι : Type u_1} {ι' : Type u_2} {P₁ : Type u_3} {P₂ : Type u_4} {v₁ : ιP₁} {v₂ : ιP₂} [PseudoEMetricSpace P₁] [PseudoEMetricSpace P₂] (h : Similar v₁ v₂) (f : ι'ι) :
      Similar (v₁ f) (v₂ f)

      Change the index set ι to an index ι' that maps to ι.

      @[simp]
      theorem Similar.index_equiv {ι : Type u_1} {ι' : Type u_2} {P₁ : Type u_3} {P₂ : Type u_4} [PseudoEMetricSpace P₁] [PseudoEMetricSpace P₂] (f : ι' ι) (v₁ : ιP₁) (v₂ : ιP₂) :
      Similar (v₁ f) (v₂ f) Similar v₁ v₂

      Change between equivalent index sets ι and ι'.

      theorem similar_iff_exists_nndist_eq {ι : Type u_1} {P₁ : Type u_3} {P₂ : Type u_4} {v₁ : ιP₁} {v₂ : ιP₂} [PseudoMetricSpace P₁] [PseudoMetricSpace P₂] :
      Similar v₁ v₂ ∃ (r : NNReal), r 0 ∀ (i₁ i₂ : ι), nndist (v₁ i₁) (v₁ i₂) = r * nndist (v₂ i₁) (v₂ i₂)

      Similarity holds if and only if all non-negative distances are proportional.

      theorem similar_iff_exists_pairwise_nndist_eq {ι : Type u_1} {P₁ : Type u_3} {P₂ : Type u_4} {v₁ : ιP₁} {v₂ : ιP₂} [PseudoMetricSpace P₁] [PseudoMetricSpace P₂] :
      Similar v₁ v₂ ∃ (r : NNReal), r 0 Pairwise fun (i₁ i₂ : ι) => nndist (v₁ i₁) (v₁ i₂) = r * nndist (v₂ i₁) (v₂ i₂)

      Similarity holds if and only if all non-negative distances between points with different indices are proportional.

      theorem similar_iff_exists_dist_eq {ι : Type u_1} {P₁ : Type u_3} {P₂ : Type u_4} {v₁ : ιP₁} {v₂ : ιP₂} [PseudoMetricSpace P₁] [PseudoMetricSpace P₂] :
      Similar v₁ v₂ ∃ (r : NNReal), r 0 ∀ (i₁ i₂ : ι), dist (v₁ i₁) (v₁ i₂) = r * dist (v₂ i₁) (v₂ i₂)

      Similarity holds if and only if all distances are proportional.

      theorem similar_iff_exists_pairwise_dist_eq {ι : Type u_1} {P₁ : Type u_3} {P₂ : Type u_4} {v₁ : ιP₁} {v₂ : ιP₂} [PseudoMetricSpace P₁] [PseudoMetricSpace P₂] :
      Similar v₁ v₂ ∃ (r : NNReal), r 0 Pairwise fun (i₁ i₂ : ι) => dist (v₁ i₁) (v₁ i₂) = r * dist (v₂ i₁) (v₂ i₂)

      Similarity holds if and only if all distances between points with different indices are proportional.

      theorem Similar.exists_nndist_eq {ι : Type u_1} {P₁ : Type u_3} {P₂ : Type u_4} {v₁ : ιP₁} {v₂ : ιP₂} [PseudoMetricSpace P₁] [PseudoMetricSpace P₂] :
      Similar v₁ v₂∃ (r : NNReal), r 0 ∀ (i₁ i₂ : ι), nndist (v₁ i₁) (v₁ i₂) = r * nndist (v₂ i₁) (v₂ i₂)

      A similarity scales non-negative distance. Forward direction of similar_iff_exists_nndist_eq.

      theorem Similar.of_exists_nndist_eq {ι : Type u_1} {P₁ : Type u_3} {P₂ : Type u_4} {v₁ : ιP₁} {v₂ : ιP₂} [PseudoMetricSpace P₁] [PseudoMetricSpace P₂] :
      (∃ (r : NNReal), r 0 ∀ (i₁ i₂ : ι), nndist (v₁ i₁) (v₁ i₂) = r * nndist (v₂ i₁) (v₂ i₂))Similar v₁ v₂

      Similarity follows from scaled non-negative distance. Backward direction of similar_iff_exists_nndist_eq.

      theorem Similar.exists_dist_eq {ι : Type u_1} {P₁ : Type u_3} {P₂ : Type u_4} {v₁ : ιP₁} {v₂ : ιP₂} [PseudoMetricSpace P₁] [PseudoMetricSpace P₂] :
      Similar v₁ v₂∃ (r : NNReal), r 0 ∀ (i₁ i₂ : ι), dist (v₁ i₁) (v₁ i₂) = r * dist (v₂ i₁) (v₂ i₂)

      A similarity scales distance. Forward direction of similar_iff_exists_dist_eq.

      theorem Similar.of_exists_dist_eq {ι : Type u_1} {P₁ : Type u_3} {P₂ : Type u_4} {v₁ : ιP₁} {v₂ : ιP₂} [PseudoMetricSpace P₁] [PseudoMetricSpace P₂] :
      (∃ (r : NNReal), r 0 ∀ (i₁ i₂ : ι), dist (v₁ i₁) (v₁ i₂) = r * dist (v₂ i₁) (v₂ i₂))Similar v₁ v₂

      Similarity follows from scaled distance. Backward direction of similar_iff_exists_dist_eq.

      theorem Similar.exists_pairwise_nndist_eq {ι : Type u_1} {P₁ : Type u_3} {P₂ : Type u_4} {v₁ : ιP₁} {v₂ : ιP₂} [PseudoMetricSpace P₁] [PseudoMetricSpace P₂] :
      Similar v₁ v₂∃ (r : NNReal), r 0 Pairwise fun (i₁ i₂ : ι) => nndist (v₁ i₁) (v₁ i₂) = r * nndist (v₂ i₁) (v₂ i₂)

      A similarity pairwise scales non-negative distance. Forward direction of similar_iff_exists_pairwise_nndist_eq.

      theorem Similar.of_exists_pairwise_nndist_eq {ι : Type u_1} {P₁ : Type u_3} {P₂ : Type u_4} {v₁ : ιP₁} {v₂ : ιP₂} [PseudoMetricSpace P₁] [PseudoMetricSpace P₂] :
      (∃ (r : NNReal), r 0 Pairwise fun (i₁ i₂ : ι) => nndist (v₁ i₁) (v₁ i₂) = r * nndist (v₂ i₁) (v₂ i₂))Similar v₁ v₂

      Similarity follows from pairwise scaled non-negative distance. Backward direction of similar_iff_exists_pairwise_nndist_eq.

      theorem Similar.exists_pairwise_dist_eq {ι : Type u_1} {P₁ : Type u_3} {P₂ : Type u_4} {v₁ : ιP₁} {v₂ : ιP₂} [PseudoMetricSpace P₁] [PseudoMetricSpace P₂] :
      Similar v₁ v₂∃ (r : NNReal), r 0 Pairwise fun (i₁ i₂ : ι) => dist (v₁ i₁) (v₁ i₂) = r * dist (v₂ i₁) (v₂ i₂)

      A similarity pairwise scales distance. Forward direction of similar_iff_exists_pairwise_dist_eq.

      theorem Similar.of_exists_pairwise_dist_eq {ι : Type u_1} {P₁ : Type u_3} {P₂ : Type u_4} {v₁ : ιP₁} {v₂ : ιP₂} [PseudoMetricSpace P₁] [PseudoMetricSpace P₂] :
      (∃ (r : NNReal), r 0 Pairwise fun (i₁ i₂ : ι) => dist (v₁ i₁) (v₁ i₂) = r * dist (v₂ i₁) (v₂ i₂))Similar v₁ v₂

      Similarity follows from pairwise scaled distance. Backward direction of similar_iff_exists_pairwise_dist_eq.