Documentation

Mathlib.Algebra.Homology.Embedding.Basic

Embeddings of complex shapes #

Given two complex shapes c : ComplexShape ι and c' : ComplexShape ι', an embedding from c to c' (e : c.Embedding c') consists of the data of an injective map f : ι → ι' such that for all i₁ i₂ : ι, c.Rel i₁ i₂ implies c'.Rel (e.f i₁) (e.f i₂). We define a type class e.IsRelIff to express that this implication is an equivalence. Other type classes e.IsTruncLE and e.IsTruncGE are introduced in order to formalize truncation functors.

This notion first appeared in the Liquid Tensor Experiment, and was developed there mostly by Johan Commelin, Adam Topaz and Joël Riou. It shall be used in order to relate the categories CochainComplex C ℕ and ChainComplex C ℕ to CochainComplex C ℤ. It shall also be used in the construction of the canonical t-structure on the derived category of an abelian category (TODO).

Description of the API #

structure ComplexShape.Embedding {ι : Type u_1} {ι' : Type u_2} (c : ComplexShape ι) (c' : ComplexShape ι') :
Type (max u_1 u_2)

An embedding of a complex shape c : ComplexShape ι into a complex shape c' : ComplexShape ι' consists of a injective map f : ι → ι' which satisfies a compatibility with respect to the relations c.Rel and c'.Rel.

  • f : ιι'

    the map between the underlying types of indices

  • injective_f : Function.Injective self.f
  • rel {i₁ i₂ : ι} (h : c.Rel i₁ i₂) : c'.Rel (self.f i₁) (self.f i₂)
Instances For
    def ComplexShape.Embedding.op {ι : Type u_1} {ι' : Type u_2} {c : ComplexShape ι} {c' : ComplexShape ι'} (e : c.Embedding c') :

    The opposite embedding in Embedding c.symm c'.symm of e : Embedding c c'.

    Equations
      Instances For
        @[simp]
        theorem ComplexShape.Embedding.op_f {ι : Type u_1} {ι' : Type u_2} {c : ComplexShape ι} {c' : ComplexShape ι'} (e : c.Embedding c') (a✝ : ι) :
        e.op.f a✝ = e.f a✝
        class ComplexShape.Embedding.IsRelIff {ι : Type u_1} {ι' : Type u_2} {c : ComplexShape ι} {c' : ComplexShape ι'} (e : c.Embedding c') :

        An embedding of complex shapes e satisfies e.IsRelIff if the implication e.rel is an equivalence.

        • rel' (i₁ i₂ : ι) (h : c'.Rel (e.f i₁) (e.f i₂)) : c.Rel i₁ i₂
        Instances
          theorem ComplexShape.Embedding.rel_iff {ι : Type u_1} {ι' : Type u_2} {c : ComplexShape ι} {c' : ComplexShape ι'} (e : c.Embedding c') [e.IsRelIff] (i₁ i₂ : ι) :
          c'.Rel (e.f i₁) (e.f i₂) c.Rel i₁ i₂
          instance ComplexShape.Embedding.instIsRelIffOp {ι : Type u_1} {ι' : Type u_2} {c : ComplexShape ι} {c' : ComplexShape ι'} (e : c.Embedding c') [e.IsRelIff] :
          def ComplexShape.Embedding.mk' {ι : Type u_1} {ι' : Type u_2} (c : ComplexShape ι) (c' : ComplexShape ι') (f : ιι') (hf : Function.Injective f) (iff : ∀ (i₁ i₂ : ι), c.Rel i₁ i₂ c'.Rel (f i₁) (f i₂)) :

          Constructor for embeddings between complex shapes when we have an equivalence ∀ (i₁ i₂ : ι), c.Rel i₁ i₂ ↔ c'.Rel (f i₁) (f i₂).

          Equations
            Instances For
              @[simp]
              theorem ComplexShape.Embedding.mk'_f {ι : Type u_1} {ι' : Type u_2} (c : ComplexShape ι) (c' : ComplexShape ι') (f : ιι') (hf : Function.Injective f) (iff : ∀ (i₁ i₂ : ι), c.Rel i₁ i₂ c'.Rel (f i₁) (f i₂)) (a✝ : ι) :
              (mk' c c' f hf iff).f a✝ = f a✝
              instance ComplexShape.Embedding.instIsRelIffMk' {ι : Type u_1} {ι' : Type u_2} (c : ComplexShape ι) (c' : ComplexShape ι') (f : ιι') (hf : Function.Injective f) (iff : ∀ (i₁ i₂ : ι), c.Rel i₁ i₂ c'.Rel (f i₁) (f i₂)) :
              (mk' c c' f hf iff).IsRelIff
              class ComplexShape.Embedding.IsTruncGE {ι : Type u_1} {ι' : Type u_2} {c : ComplexShape ι} {c' : ComplexShape ι'} (e : c.Embedding c') extends e.IsRelIff :

              The condition that the image of the map e.f of an embedding of complex shapes e : Embedding c c' is stable by c'.next.

              • rel' (i₁ i₂ : ι) (h : c'.Rel (e.f i₁) (e.f i₂)) : c.Rel i₁ i₂
              • mem_next {j : ι} {k' : ι'} (h : c'.Rel (e.f j) k') : (k : ι), e.f k = k'
              Instances
                theorem ComplexShape.Embedding.mem_next {ι : Type u_1} {ι' : Type u_2} {c : ComplexShape ι} {c' : ComplexShape ι'} (e : c.Embedding c') [e.IsTruncGE] {j : ι} {k' : ι'} (h : c'.Rel (e.f j) k') :
                (k : ι), e.f k = k'
                class ComplexShape.Embedding.IsTruncLE {ι : Type u_1} {ι' : Type u_2} {c : ComplexShape ι} {c' : ComplexShape ι'} (e : c.Embedding c') extends e.IsRelIff :

                The condition that the image of the map e.f of an embedding of complex shapes e : Embedding c c' is stable by c'.prev.

                • rel' (i₁ i₂ : ι) (h : c'.Rel (e.f i₁) (e.f i₂)) : c.Rel i₁ i₂
                • mem_prev {i' : ι'} {j : ι} (h : c'.Rel i' (e.f j)) : (i : ι), e.f i = i'
                Instances
                  theorem ComplexShape.Embedding.mem_prev {ι : Type u_1} {ι' : Type u_2} {c : ComplexShape ι} {c' : ComplexShape ι'} (e : c.Embedding c') [e.IsTruncLE] {i' : ι'} {j : ι} (h : c'.Rel i' (e.f j)) :
                  (i : ι), e.f i = i'
                  instance ComplexShape.Embedding.instIsTruncLEOpOfIsTruncGE {ι : Type u_1} {ι' : Type u_2} {c : ComplexShape ι} {c' : ComplexShape ι'} (e : c.Embedding c') [e.IsTruncGE] :
                  instance ComplexShape.Embedding.instIsTruncGEOpOfIsTruncLE {ι : Type u_1} {ι' : Type u_2} {c : ComplexShape ι} {c' : ComplexShape ι'} (e : c.Embedding c') [e.IsTruncLE] :
                  noncomputable def ComplexShape.Embedding.r {ι : Type u_1} {ι' : Type u_2} {c : ComplexShape ι} {c' : ComplexShape ι'} (e : c.Embedding c') (i' : ι') :

                  The map ι' → Option ι which sends e.f i to some i and the other elements to none.

                  Equations
                    Instances For
                      theorem ComplexShape.Embedding.r_eq_some {ι : Type u_1} {ι' : Type u_2} {c : ComplexShape ι} {c' : ComplexShape ι'} (e : c.Embedding c') {i : ι} {i' : ι'} (hi : e.f i = i') :
                      e.r i' = some i
                      theorem ComplexShape.Embedding.r_eq_none {ι : Type u_1} {ι' : Type u_2} {c : ComplexShape ι} {c' : ComplexShape ι'} (e : c.Embedding c') (i' : ι') (hi : ∀ (i : ι), e.f i i') :
                      e.r i' = none
                      @[simp]
                      theorem ComplexShape.Embedding.r_f {ι : Type u_1} {ι' : Type u_2} {c : ComplexShape ι} {c' : ComplexShape ι'} (e : c.Embedding c') (i : ι) :
                      e.r (e.f i) = some i
                      theorem ComplexShape.Embedding.f_eq_of_r_eq_some {ι : Type u_1} {ι' : Type u_2} {c : ComplexShape ι} {c' : ComplexShape ι'} (e : c.Embedding c') {i : ι} {i' : ι'} (hi : e.r i' = some i) :
                      e.f i = i'

                      The embedding from up' a to itself via (· + b).

                      Equations
                        Instances For
                          @[simp]
                          theorem ComplexShape.embeddingUp'Add_f {A : Type u_3} [AddCommSemigroup A] [IsRightCancelAdd A] (a b x✝ : A) :
                          (embeddingUp'Add a b).f x✝ = x✝ + b

                          The embedding from down' a to itself via (· + b).

                          Equations
                            Instances For
                              @[simp]
                              theorem ComplexShape.embeddingDown'Add_f {A : Type u_3} [AddCommSemigroup A] [IsRightCancelAdd A] (a b x✝ : A) :
                              (embeddingDown'Add a b).f x✝ = x✝ + b

                              The obvious embedding from up ℕ to up ℤ.

                              Equations
                                Instances For

                                  The embedding from down ℕ to up ℤ with sends n to -n.

                                  Equations
                                    Instances For

                                      The embedding from up ℕ to up ℤ which sends n : ℕ to p + n.

                                      Equations
                                        Instances For
                                          @[simp]
                                          theorem ComplexShape.embeddingUpIntGE_f (p : ) (n : ) :
                                          (embeddingUpIntGE p).f n = p + n

                                          The embedding from down ℕ to up ℤ which sends n : ℕ to p - n.

                                          Equations
                                            Instances For
                                              @[simp]
                                              theorem ComplexShape.embeddingUpIntLE_f (p : ) (n : ) :
                                              (embeddingUpIntLE p).f n = p - n
                                              @[deprecated ComplexShape.notMem_range_embeddingUpIntLE_iff (since := "2025-05-23")]

                                              Alias of ComplexShape.notMem_range_embeddingUpIntLE_iff.

                                              @[deprecated ComplexShape.notMem_range_embeddingUpIntGE_iff (since := "2025-05-23")]

                                              Alias of ComplexShape.notMem_range_embeddingUpIntGE_iff.