File: Mathlib/Algebra/Homology/Embedding/Basic.lean

full_name: ComplexShape.Embedding.rel
code: /-- An embedding of a complex shape `c : ComplexShape ι` into a complex shape
`c' : ComplexShape ι'` consists of a injective map `f : ι → ι'` which satisfies
a compatiblity with respect to the relations `c.Rel` and `c'.Rel`. -/
structure Embedding where
  /-- the map between the underlying types of indices -/
  f : ι → ι'
  injective_f : Function.Injective f
  rel {i₁ i₂ : ι} (h : c.Rel i₁ i₂) : c'.Rel (f i₁) (f i₂)
goal: c'.Rel (self.f i₁) (self.f i₂)

full_name: ComplexShape.Embedding.injective_f
code: /-- An embedding of a complex shape `c : ComplexShape ι` into a complex shape
`c' : ComplexShape ι'` consists of a injective map `f : ι → ι'` which satisfies
a compatiblity with respect to the relations `c.Rel` and `c'.Rel`. -/
structure Embedding where
  /-- the map between the underlying types of indices -/
  f : ι → ι'
  injective_f : Function.Injective f
  rel {i₁ i₂ : ι} (h : c.Rel i₁ i₂) : c'.Rel (f i₁) (f i₂)
goal: Function.Injective self.f

full_name: ComplexShape.Embedding
code: /-- An embedding of a complex shape `c : ComplexShape ι` into a complex shape
`c' : ComplexShape ι'` consists of a injective map `f : ι → ι'` which satisfies
a compatiblity with respect to the relations `c.Rel` and `c'.Rel`. -/
structure Embedding where
  /-- the map between the underlying types of indices -/
  f : ι → ι'
  injective_f : Function.Injective f
  rel {i₁ i₂ : ι} (h : c.Rel i₁ i₂) : c'.Rel (f i₁) (f i₂)
goal: Type (max u_1 u_2)

full_name: ComplexShape.Embedding.f
code: /-- An embedding of a complex shape `c : ComplexShape ι` into a complex shape
`c' : ComplexShape ι'` consists of a injective map `f : ι → ι'` which satisfies
a compatiblity with respect to the relations `c.Rel` and `c'.Rel`. -/
structure Embedding where
  /-- the map between the underlying types of indices -/
  f : ι → ι'
  injective_f : Function.Injective f
  rel {i₁ i₂ : ι} (h : c.Rel i₁ i₂) : c'.Rel (f i₁) (f i₂)
goal: ι → ι'

full_name: ComplexShape.Embedding.op
code: /-- The opposite embedding in `Embedding c.symm c'.symm` of `e : Embedding c c'`. -/
@[simps]
def op : Embedding c.symm c'.symm 
goal: c.symm.Embedding c'.symm

full_name: ComplexShape.Embedding.op_f
code: /-- The opposite embedding in `Embedding c.symm c'.symm` of `e : Embedding c c'`. -/
@[simps]
def op : Embedding c.symm c'.symm 
goal: ∀ (a : ι), e.op.f a = e.f a

full_name: ComplexShape.Embedding.IsRelIff
code: /-- An embedding of complex shapes `e` satisfies `e.IsRelIff` if the implication
`e.rel` is an equivalence. -/
class IsRelIff : Prop where
  rel' (i₁ i₂ : ι) (h : c'.Rel (e.f i₁) (e.f i₂)) : c.Rel i₁ i₂
goal: Prop

full_name: ComplexShape.Embedding.IsRelIff.rel'
code: /-- An embedding of complex shapes `e` satisfies `e.IsRelIff` if the implication
`e.rel` is an equivalence. -/
class IsRelIff : Prop where
  rel' (i₁ i₂ : ι) (h : c'.Rel (e.f i₁) (e.f i₂)) : c.Rel i₁ i₂
goal: c.Rel i₁ i₂

full_name: ComplexShape.Embedding.rel_iff
code: lemma rel_iff [e.IsRelIff] (i₁ i₂ : ι) : c'.Rel (e.f i₁) (e.f i₂) ↔ c.Rel i₁ i₂ 
goal: c'.Rel (e.f i₁) (e.f i₂) ↔ c.Rel i₁ i₂

full_name: ComplexShape.Embedding.mk'_f
code: /-- Constructor for embeddings between complex shapes when we have an equivalence
`∀ (i₁ i₂ : ι), c.Rel i₁ i₂ ↔ c'.Rel (f i₁) (f i₂)`. -/
@[simps]
def mk' : Embedding c c' 
goal: ∀ (a : ι), (ComplexShape.Embedding.mk' c c' f hf iff).f a = f a

full_name: ComplexShape.Embedding.mk'
code: /-- Constructor for embeddings between complex shapes when we have an equivalence
`∀ (i₁ i₂ : ι), c.Rel i₁ i₂ ↔ c'.Rel (f i₁) (f i₂)`. -/
@[simps]
def mk' : Embedding c c' 
goal: c.Embedding c'

full_name: ComplexShape.Embedding.instIsRelIffMk'
code: instance : (mk' c c' f hf iff).IsRelIff 
goal: (ComplexShape.Embedding.mk' c c' f hf iff).IsRelIff

full_name: ComplexShape.Embedding.IsTruncGE
code: /-- 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`. -/
class IsTruncGE extends e.IsRelIff : Prop where
  mem_next {j : ι} {k' : ι'} (h : c'.Rel (e.f j) k') :
    ∃ k, e.f k = k'
goal: Prop

full_name: ComplexShape.Embedding.IsTruncGE.mem_next
code: /-- 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`. -/
class IsTruncGE extends e.IsRelIff : Prop where
  mem_next {j : ι} {k' : ι'} (h : c'.Rel (e.f j) k') :
    ∃ k, e.f k = k'
goal: ∃ k, e.f k = k'

full_name: ComplexShape.Embedding.mem_next
code: lemma mem_next [e.IsTruncGE] {j : ι} {k' : ι'} (h : c'.Rel (e.f j) k') : ∃ k, e.f k = k' 
goal: ∃ k, e.f k = k'

full_name: ComplexShape.Embedding.IsTruncLE.mem_prev
code: /-- 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`. -/
class IsTruncLE extends e.IsRelIff : Prop where
  mem_prev {i' : ι'} {j : ι} (h : c'.Rel i' (e.f j)) :
    ∃ i, e.f i = i'
goal: ∃ i, e.f i = i'

full_name: ComplexShape.Embedding.IsTruncLE
code: /-- 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`. -/
class IsTruncLE extends e.IsRelIff : Prop where
  mem_prev {i' : ι'} {j : ι} (h : c'.Rel i' (e.f j)) :
    ∃ i, e.f i = i'
goal: Prop

full_name: ComplexShape.Embedding.mem_prev
code: lemma mem_prev [e.IsTruncLE] {i' : ι'} {j : ι} (h : c'.Rel i' (e.f j)) : ∃ i, e.f i = i' 
goal: ∃ i, e.f i = i'

full_name: ComplexShape.Embedding.r
code: /-- The map `ι' → Option ι` which sends `e.f i` to `some i` and the other elements to `none`. -/
noncomputable def r (i' : ι') : Option ι 
goal: Option ι

full_name: ComplexShape.Embedding.r_eq_some
code: lemma r_eq_some {i : ι} {i' : ι'} (hi : e.f i = i') :
    e.r i' = some i 
goal: e.r i' = some i

full_name: ComplexShape.Embedding.r_eq_none
code: lemma r_eq_none (i' : ι') (hi : ∀ i, e.f i ≠ i') :
    e.r i' = none 
goal: e.r i' = none

full_name: ComplexShape.Embedding.r_f
code: @[simp] lemma r_f (i : ι) : e.r (e.f i) = some i 
goal: e.r (e.f i) = some i

full_name: ComplexShape.Embedding.f_eq_of_r_eq_some
code: lemma f_eq_of_r_eq_some {i : ι} {i' : ι'} (hi : e.r i' = some i) :
    e.f i = i' 
goal: e.f i = i'

full_name: ComplexShape.embeddingUpNat
code: /-- The obvious embedding from `up ℕ` to `up ℤ`. -/
@[simps!]
def embeddingUpNat : Embedding (up ℕ) (up ℤ) 
goal: (ComplexShape.up ℕ).Embedding (ComplexShape.up ℤ)

full_name: ComplexShape.embeddingUpNat_f
code: /-- The obvious embedding from `up ℕ` to `up ℤ`. -/
@[simps!]
def embeddingUpNat : Embedding (up ℕ) (up ℤ) 
goal: ComplexShape.embeddingUpNat.f n = ↑n

full_name: ComplexShape.instIsRelIffNatIntEmbeddingUpNat
code: instance : embeddingUpNat.IsRelIff 
goal: ComplexShape.embeddingUpNat.IsRelIff

full_name: ComplexShape.instIsTruncGENatIntEmbeddingUpNat
code: instance : embeddingUpNat.IsTruncGE 
goal: ComplexShape.embeddingUpNat.IsTruncGE

full_name: ComplexShape.embeddingDownNat
code: /-- The embedding from `down ℕ` to `up ℤ` with sends `n` to `-n`. -/
@[simps!]
def embeddingDownNat : Embedding (down ℕ) (up ℤ) 
goal: (ComplexShape.down ℕ).Embedding (ComplexShape.up ℤ)

full_name: ComplexShape.embeddingDownNat_f
code: /-- The embedding from `down ℕ` to `up ℤ` with sends `n` to `-n`. -/
@[simps!]
def embeddingDownNat : Embedding (down ℕ) (up ℤ) 
goal: ComplexShape.embeddingDownNat.f n = -↑n

full_name: ComplexShape.instIsRelIffNatIntEmbeddingDownNat
code: instance : embeddingDownNat.IsRelIff 
goal: ComplexShape.embeddingDownNat.IsRelIff

full_name: ComplexShape.instIsTruncLENatIntEmbeddingDownNat
code: instance : embeddingDownNat.IsTruncLE 
goal: ComplexShape.embeddingDownNat.IsTruncLE

full_name: ComplexShape.embeddingUpIntGE
code: /-- The embedding from `up ℕ` to `up ℤ` which sends `n : ℕ` to `p + n`. -/
@[simps!]
def embeddingUpIntGE : Embedding (up ℕ) (up ℤ) 
goal: (ComplexShape.up ℕ).Embedding (ComplexShape.up ℤ)

full_name: ComplexShape.embeddingUpIntGE_f
code: /-- The embedding from `up ℕ` to `up ℤ` which sends `n : ℕ` to `p + n`. -/
@[simps!]
def embeddingUpIntGE : Embedding (up ℕ) (up ℤ) 
goal: (ComplexShape.embeddingUpIntGE p).f n = p + ↑n

full_name: ComplexShape.instIsRelIffNatIntEmbeddingUpIntGE
code: instance : (embeddingUpIntGE p).IsRelIff 
goal: (ComplexShape.embeddingUpIntGE p).IsRelIff

full_name: ComplexShape.instIsTruncGENatIntEmbeddingUpIntGE
code: instance : (embeddingUpIntGE p).IsTruncGE 
goal: (ComplexShape.embeddingUpIntGE p).IsTruncGE

full_name: ComplexShape.embeddingUpIntLE_f
code: /-- The embedding from `down ℕ` to `up ℤ` which sends `n : ℕ` to `p - n`. -/
@[simps!]
def embeddingUpIntLE : Embedding (down ℕ) (up ℤ) 
goal: (ComplexShape.embeddingUpIntLE p).f n = p - ↑n

full_name: ComplexShape.embeddingUpIntLE
code: /-- The embedding from `down ℕ` to `up ℤ` which sends `n : ℕ` to `p - n`. -/
@[simps!]
def embeddingUpIntLE : Embedding (down ℕ) (up ℤ) 
goal: (ComplexShape.down ℕ).Embedding (ComplexShape.up ℤ)

full_name: ComplexShape.instIsRelIffNatIntEmbeddingUpIntLE
code: instance : (embeddingUpIntLE p).IsRelIff 
goal: (ComplexShape.embeddingUpIntLE p).IsRelIff

full_name: ComplexShape.instIsTruncLENatIntEmbeddingUpIntLE
code: instance : (embeddingUpIntLE p).IsTruncLE 
goal: (ComplexShape.embeddingUpIntLE p).IsTruncLE