Basic facts about morphisms between biproducts in preadditive categories.
- In any category (with zero morphisms), if
biprod.map f g
is an isomorphism, then bothf
andg
are isomorphisms.
The remaining lemmas hold in any preadditive category.
If
f
is a morphismX₁ ⊞ X₂ ⟶ Y₁ ⊞ Y₂
whoseX₁ ⟶ Y₁
entry is an isomorphism, then we can construct isomorphismsL : X₁ ⊞ X₂ ≅ X₁ ⊞ X₂
andR : Y₁ ⊞ Y₂ ≅ Y₁ ⊞ Y₂
so thatL.hom ≫ g ≫ R.hom
is diagonal (withX₁ ⟶ Y₁
component stillf
), via Gaussian elimination.As a corollary of the previous two facts, if we have an isomorphism
X₁ ⊞ X₂ ≅ Y₁ ⊞ Y₂
whoseX₁ ⟶ Y₁
entry is an isomorphism, we can construct an isomorphismX₂ ≅ Y₂
.If
f : W ⊞ X ⟶ Y ⊞ Z
is an isomorphism, either𝟙 W = 0
, or at least one of the component mapsW ⟶ Y
andW ⟶ Z
is nonzero.If
f : ⨁ S ⟶ ⨁ T
is an isomorphism, then every column (corresponding to a nonzero summand in the domain) has some nonzero matrix entry.
If
(f 0)
(0 g)
is invertible, then f
is invertible.
If
(f 0)
(0 g)
is invertible, then g
is invertible.
Equations
The "matrix" morphism X₁ ⊞ X₂ ⟶ Y₁ ⊞ Y₂
with specified components.
Equations
- category_theory.biprod.of_components f₁₁ f₁₂ f₂₁ f₂₂ = category_theory.limits.biprod.fst ≫ f₁₁ ≫ category_theory.limits.biprod.inl + category_theory.limits.biprod.fst ≫ f₁₂ ≫ category_theory.limits.biprod.inr + category_theory.limits.biprod.snd ≫ f₂₁ ≫ category_theory.limits.biprod.inl + category_theory.limits.biprod.snd ≫ f₂₂ ≫ category_theory.limits.biprod.inr
The unipotent upper triangular matrix
(1 r)
(0 1)
as an isomorphism.
Equations
- category_theory.biprod.unipotent_upper r = {hom := category_theory.biprod.of_components (𝟙 X₁) r 0 (𝟙 X₂), inv := category_theory.biprod.of_components (𝟙 X₁) (-r) 0 (𝟙 X₂), hom_inv_id' := _, inv_hom_id' := _}
The unipotent lower triangular matrix
(1 0)
(r 1)
as an isomorphism.
Equations
- category_theory.biprod.unipotent_lower r = {hom := category_theory.biprod.of_components (𝟙 X₁) 0 r (𝟙 X₂), inv := category_theory.biprod.of_components (𝟙 X₁) 0 (-r) (𝟙 X₂), hom_inv_id' := _, inv_hom_id' := _}
If f
is a morphism X₁ ⊞ X₂ ⟶ Y₁ ⊞ Y₂
whose X₁ ⟶ Y₁
entry is an isomorphism,
then we can construct isomorphisms L : X₁ ⊞ X₂ ≅ X₁ ⊞ X₂
and R : Y₁ ⊞ Y₂ ≅ Y₁ ⊞ Y₂
so that L.hom ≫ g ≫ R.hom
is diagonal (with X₁ ⟶ Y₁
component still f
),
via Gaussian elimination.
(This is the version of biprod.gaussian
written in terms of components.)
Equations
- category_theory.biprod.gaussian' f₁₁ f₁₂ f₂₁ f₂₂ = ⟨category_theory.biprod.unipotent_lower (-f₂₁ ≫ category_theory.is_iso.inv f₁₁), ⟨category_theory.biprod.unipotent_upper (-category_theory.is_iso.inv f₁₁ ≫ f₁₂), ⟨f₂₂ - f₂₁ ≫ category_theory.is_iso.inv f₁₁ ≫ f₁₂, _⟩⟩⟩
If f
is a morphism X₁ ⊞ X₂ ⟶ Y₁ ⊞ Y₂
whose X₁ ⟶ Y₁
entry is an isomorphism,
then we can construct isomorphisms L : X₁ ⊞ X₂ ≅ X₁ ⊞ X₂
and R : Y₁ ⊞ Y₂ ≅ Y₁ ⊞ Y₂
so that L.hom ≫ g ≫ R.hom
is diagonal (with X₁ ⟶ Y₁
component still f
),
via Gaussian elimination.
Equations
- category_theory.biprod.gaussian f = let this : Σ' (L : X₁ ⊞ X₂ ≅ X₁ ⊞ X₂) (R : Y₁ ⊞ Y₂ ≅ Y₁ ⊞ Y₂) (g₂₂ : X₂ ⟶ Y₂), L.hom ≫ category_theory.biprod.of_components (category_theory.limits.biprod.inl ≫ f ≫ category_theory.limits.biprod.fst) (category_theory.limits.biprod.inl ≫ f ≫ category_theory.limits.biprod.snd) (category_theory.limits.biprod.inr ≫ f ≫ category_theory.limits.biprod.fst) (category_theory.limits.biprod.inr ≫ f ≫ category_theory.limits.biprod.snd) ≫ R.hom = category_theory.limits.biprod.map (category_theory.limits.biprod.inl ≫ f ≫ category_theory.limits.biprod.fst) g₂₂ := category_theory.biprod.gaussian' (category_theory.limits.biprod.inl ≫ f ≫ category_theory.limits.biprod.fst) (category_theory.limits.biprod.inl ≫ f ≫ category_theory.limits.biprod.snd) (category_theory.limits.biprod.inr ≫ f ≫ category_theory.limits.biprod.fst) (category_theory.limits.biprod.inr ≫ f ≫ category_theory.limits.biprod.snd) in _.mp this
If X₁ ⊞ X₂ ≅ Y₁ ⊞ Y₂
via a two-by-two matrix whose X₁ ⟶ Y₁
entry is an isomorphism,
then we can construct an isomorphism X₂ ≅ Y₂
, via Gaussian elimination.
Equations
- category_theory.biprod.iso_elim' f₁₁ f₁₂ f₂₁ f₂₂ = (category_theory.biprod.gaussian' f₁₁ f₁₂ f₂₁ f₂₂).cases_on (λ (L : X₁ ⊞ X₂ ≅ X₁ ⊞ X₂) (snd : Σ' (R : Y₁ ⊞ Y₂ ≅ Y₁ ⊞ Y₂) (g₂₂ : X₂ ⟶ Y₂), L.hom ≫ category_theory.biprod.of_components f₁₁ f₁₂ f₂₁ f₂₂ ≫ R.hom = category_theory.limits.biprod.map f₁₁ g₂₂), snd.cases_on (λ (R : Y₁ ⊞ Y₂ ≅ Y₁ ⊞ Y₂) (snd_snd : Σ' (g₂₂ : X₂ ⟶ Y₂), L.hom ≫ category_theory.biprod.of_components f₁₁ f₁₂ f₂₁ f₂₂ ≫ R.hom = category_theory.limits.biprod.map f₁₁ g₂₂), snd_snd.cases_on (λ (g : X₂ ⟶ Y₂) (w : L.hom ≫ category_theory.biprod.of_components f₁₁ f₁₂ f₂₁ f₂₂ ≫ R.hom = category_theory.limits.biprod.map f₁₁ g), let _inst : category_theory.is_iso (category_theory.limits.biprod.map f₁₁ g) := _.mpr category_theory.is_iso.comp_is_iso, _inst_6 : category_theory.is_iso g := category_theory.is_iso_right_of_is_iso_biprod_map f₁₁ g in category_theory.as_iso g)))
If f
is an isomorphism X₁ ⊞ X₂ ≅ Y₁ ⊞ Y₂
whose X₁ ⟶ Y₁
entry is an isomorphism,
then we can construct an isomorphism X₂ ≅ Y₂
, via Gaussian elimination.
Equations
- category_theory.biprod.iso_elim f = let _inst : category_theory.is_iso (category_theory.biprod.of_components (category_theory.limits.biprod.inl ≫ f.hom ≫ category_theory.limits.biprod.fst) (category_theory.limits.biprod.inl ≫ f.hom ≫ category_theory.limits.biprod.snd) (category_theory.limits.biprod.inr ≫ f.hom ≫ category_theory.limits.biprod.fst) (category_theory.limits.biprod.inr ≫ f.hom ≫ category_theory.limits.biprod.snd)) := _.mpr (category_theory.is_iso.of_iso f) in category_theory.biprod.iso_elim' (category_theory.limits.biprod.inl ≫ f.hom ≫ category_theory.limits.biprod.fst) (category_theory.limits.biprod.inl ≫ f.hom ≫ category_theory.limits.biprod.snd) (category_theory.limits.biprod.inr ≫ f.hom ≫ category_theory.limits.biprod.fst) (category_theory.limits.biprod.inr ≫ f.hom ≫ category_theory.limits.biprod.snd)
If f : ⨁ S ⟶ ⨁ T
is an isomorphism, and s
is a non-trivial summand of the source,
then there is some t
in the target so that the s, t
matrix entry of f
is nonzero.