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).
TODO #
Define the following:
- the extension functor
e.extendFunctor C : HomologicalComplex C c ⥤ HomologicalComplex C c'
(extending by the zero object outside of the image ofe.f
); - assuming
e.IsRelIff
, the restriction functore.restrictionFunctor C : HomologicalComplex C c' ⥤ HomologicalComplex C c
; - the stupid truncation functor
e.stupidTruncFunctor C : HomologicalComplex C c' ⥤ HomologicalComplex C c'
which is the composition of the two previous functors. - assuming
e.IsTruncGE
, truncation functorse.truncGE'Functor C : HomologicalComplex C c' ⥤ HomologicalComplex C c
ande.truncGEFunctor C : HomologicalComplex C c' ⥤ HomologicalComplex C c'
, and a natural transformatione.πTruncGENatTrans : 𝟭 _ ⟶ e.truncGEFunctor C
which is a quasi-isomorphism in degrees in the image ofe.f
; - assuming
e.IsTruncLE
, truncation functorse.truncLE'Functor C : HomologicalComplex C c' ⥤ HomologicalComplex C c
ande.truncLEFunctor C : HomologicalComplex C c' ⥤ HomologicalComplex C c'
, and a natural transformatione.ιTruncLENatTrans : e.truncGEFunctor C ⟶ 𝟭 _
which is a quasi-isomorphism in degrees in the image ofe.f
;
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₂ : ι}, c.Rel i₁ i₂ → c'.Rel (self.f i₁) (self.f i₂)
Instances For
The opposite embedding in Embedding c.symm c'.symm
of e : Embedding c c'
.
Equations
- e.op = { f := e.f, injective_f := ⋯, rel := ⋯ }
Instances For
An embedding of complex shapes e
satisfies e.IsRelIff
if the implication
e.rel
is an equivalence.
- rel' : ∀ (i₁ i₂ : ι), c'.Rel (e.f i₁) (e.f i₂) → c.Rel i₁ i₂
Instances
Constructor for embeddings between complex shapes when we have an equivalence
∀ (i₁ i₂ : ι), c.Rel i₁ i₂ ↔ c'.Rel (f i₁) (f i₂)
.
Equations
- ComplexShape.Embedding.mk' c c' f hf iff = { f := f, injective_f := hf, rel := ⋯ }
Instances For
Equations
- ⋯ = ⋯
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₂ : ι), c'.Rel (e.f i₁) (e.f i₂) → c.Rel i₁ i₂
- mem_next : ∀ {j : ι} {k' : ι'}, c'.Rel (e.f j) k' → ∃ (k : ι), e.f k = k'
Instances
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₂ : ι), c'.Rel (e.f i₁) (e.f i₂) → c.Rel i₁ i₂
- mem_prev : ∀ {i' : ι'} {j : ι}, c'.Rel i' (e.f j) → ∃ (i : ι), e.f i = i'
Instances
The map ι' → Option ι
which sends e.f i
to some i
and the other elements to none
.
Instances For
The obvious embedding from up ℕ
to up ℤ
.
Equations
Instances For
Equations
Equations
The embedding from down ℕ
to up ℤ
with sends n
to -n
.
Equations
- One or more equations did not get rendered due to their size.
Instances For
The embedding from up ℕ
to up ℤ
which sends n : ℕ
to p + n
.
Equations
- ComplexShape.embeddingUpIntGE p = ComplexShape.Embedding.mk' (ComplexShape.up ℕ) (ComplexShape.up ℤ) (fun (n : ℕ) => p + ↑n) ⋯ ⋯
Instances For
Equations
- ⋯ = ⋯
Equations
- ⋯ = ⋯
The embedding from down ℕ
to up ℤ
which sends n : ℕ
to p - n
.
Equations
- ComplexShape.embeddingUpIntLE p = ComplexShape.Embedding.mk' (ComplexShape.down ℕ) (ComplexShape.up ℤ) (fun (n : ℕ) => p - ↑n) ⋯ ⋯
Instances For
Equations
- ⋯ = ⋯
Equations
- ⋯ = ⋯