Documentation

TauCeti.Algebra.Homology.ReidemeisterTorsion.Basic

The torsion of a based chain complex over a field #

Let C be a ℤ-graded chain complex of vector spaces over a field F, with an ordered basis c i : Basis (Fin (n i)) F (C.X i) in each degree. Write Bⱼ ⊆ Cⱼ for the space of boundaries, the image of d : Cⱼ₊₁ → Cⱼ. When C is acyclic, every sequence

0 → Bⱼ₊₁ → Cⱼ₊₁ → Bⱼ → 0

is short exact, so a basis bⱼ₊₁ of Bⱼ₊₁, a basis bⱼ of Bⱼ and lifts sⱼ of bⱼ through d give an ordered basis (bⱼ₊₁, sⱼ) of Cⱼ₊₁. The bracket [bⱼ₊₁ sⱼ / cⱼ₊₁] is its determinant with respect to cⱼ₊₁ (HomologicalComplex.torsionBracket), and the torsion of C is the alternating product

τ(C) = ∏ⱼ [bⱼ₊₁ sⱼ / cⱼ₊₁] ^ ((-1) ^ j),

so that the bracket in degree i carries the exponent (-1) ^ (i + 1). With this convention a complex concentrated in degrees 1 and 0 has torsion the inverse of the determinant of its differential (HomologicalComplex.reidemeisterTorsion_eq_det_zpow); for instance multiplication by a ≠ 0 on F, from degree 1 to degree 0, has torsion a⁻¹. The torsion of a complex that is not acyclic is defined to be 0 (HomologicalComplex.reidemeisterTorsion), and so is that of an unbounded complex, for which the alternating product is not defined.

For a bounded complex the alternating product does not depend on the boundary bases nor on the lifts (HomologicalComplex.reidemeisterTorsion_eq_finprod): changing the lifts does not change any bracket, and changing bⱼ multiplies the brackets in degrees j + 1 and j by the same determinant, which enters with opposite exponents. The torsion of a bounded complex vanishes exactly when the complex is not acyclic (HomologicalComplex.reidemeisterTorsion_eq_zero_iff).

Replacing the chain bases c i by c' i multiplies the torsion by ∏ᵢ [c'ᵢ / cᵢ] ^ ((-1) ^ i), where [c'ᵢ / cᵢ] is the determinant of c' i with respect to c i (HomologicalComplex.reidemeisterTorsion_eq_mul_finprod_det). In particular reordering the chain bases multiplies the torsion by the signs of the permutations, and rescaling the basis vectors by units multiplies it by the alternating product of their products.

The torsion is invariant under isomorphisms of based complexes: transporting the bases of C along an isomorphism e : C ≅ D gives D the same torsion (HomologicalComplex.reidemeisterTorsion_map). Combined with the basis-change formula, if Aᵢ is the matrix of eᵢ in given bases of Cᵢ and Dᵢ, then τ(C) = τ(D) · ∏ᵢ det (Aᵢ) ^ ((-1) ^ i) (HomologicalComplex.reidemeisterTorsion_eq_mul_finprod_det_toMatrix). This is the formula τ(A⁻¹ d A) = τ(d) · ∏ᵢ det (Aᵢ) ^ ((-1) ^ i) for a differential d conjugated by degreewise automorphisms Aᵢ.

The torsion is multiplicative in short exact sequences (HomologicalComplex.reidemeisterTorsion_eq_mul_of_shortExact): if 0 → C₁ → C₂ → C₃ → 0 is a short exact sequence of chain complexes with C₁ and C₃ acyclic, and the bases of C₂ are the images of the bases of C₁ followed by lifts of the bases of C₃, then τ(C₂) = ε · τ(C₁) · τ(C₃), where ε = ∏ⱼ (-1) ^ (dim B₃,ⱼ₊₁ · dim B₁,ⱼ) is the sign of the exchange of the boundaries of C₃ in degree j + 1 with the lifts of the boundaries of C₁ in degree j. To prove it, the boundaries of C₂ in each degree are given the basis made of the boundaries of C₁ followed by lifts of the boundaries of C₃, using that the boundaries form a short exact sequence 0 → B₁,ⱼ → B₂,ⱼ → B₃,ⱼ → 0 when C₃ is acyclic.

When the short exact sequence splits, no acyclicity is needed (HomologicalComplex.reidemeisterTorsion_eq_mul_of_splitting): the homology of C₁ and C₃ is a retract of that of C₂ (CategoryTheory.ShortComplex.Splitting.acyclic_X₁, CategoryTheory.ShortComplex.Splitting.acyclic_X₃), so C₂ is acyclic exactly when C₁ and C₃ are, and otherwise both sides are 0. In particular the torsion of a direct sum C₁ ⊞ C₃, based in each degree by the basis of C₁ followed by the basis of C₃ (HomologicalComplex.biprodXBasis), is ε · τ(C₁) · τ(C₃) with the same sign (HomologicalComplex.reidemeisterTorsion_biprod), since the biproduct is the middle term of the split short exact sequence 0 → C₁ → C₁ ⊞ C₃ → C₃ → 0.

The torsion is compatible with scalar extension along a homomorphism of fields φ : F →+* K (HomologicalComplex.map_reidemeisterTorsion): if D is a complex over K with bases e i in which the matrices of the differentials are the images under φ of those of C in the bases c i, then τ(D) = φ(τ(C)). The ranks of the differentials do not change under φ, so D is acyclic exactly when C is (HomologicalComplex.acyclic_iff_of_toMatrix_eq), and the brackets of D are computed from the images of the boundary bases and lifts of C under the semilinear map Module.Basis.semilinearMap φ (c i) (e i), whose determinants are the images under φ of those in C. Thus the torsion of a based complex over a ring with several residue or fraction fields can be compared componentwise along the field homomorphisms between them.

Main declarations #

References #

theorem HomologicalComplex.eq_add_of_exactAt {F : Type u_1} [Field F] {C : ChainComplex (ModuleCat F) ℤ} {n : ℤ → ℕ} (c : (i : ℤ) → Module.Basis (Fin (n i)) F ↑(C.X i)) {j : ℤ} (h : ExactAt C (j + 1)) {p q : ℕ} (b₁ : Module.Basis (Fin p) F ↥(ModuleCat.Hom.hom (C.d (j + 1 + 1) (j + 1))).range) (b₀ : Module.Basis (Fin q) F ↥(ModuleCat.Hom.hom (C.d (j + 1) j)).range) :
n (j + 1) = p + q

In a degree j + 1 where C is exact, the dimension n (j + 1) of Cⱼ₊₁ is the sum of the dimensions p and q of the boundaries Bⱼ₊₁ and Bⱼ.

noncomputable def HomologicalComplex.torsionBracket {F : Type u_1} [Field F] {C : ChainComplex (ModuleCat F) ℤ} {n : ℤ → ℕ} (c : (i : ℤ) → Module.Basis (Fin (n i)) F ↑(C.X i)) {j : ℤ} (h : ExactAt C (j + 1)) {p q : ℕ} (b₁ : Module.Basis (Fin p) F ↥(ModuleCat.Hom.hom (C.d (j + 1 + 1) (j + 1))).range) (b₀ : Module.Basis (Fin q) F ↥(ModuleCat.Hom.hom (C.d (j + 1) j)).range) (s : Fin q → ↑(C.X (j + 1))) (hs : ∀ (k : Fin q), (ModuleCat.Hom.hom (C.d (j + 1) j)) (s k) = ↑(b₀ k)) :
F

The bracket [b₁ s / cⱼ₊₁]: the determinant, with respect to the basis c (j + 1) of Cⱼ₊₁, of the family made of a basis b₁ of the boundaries Bⱼ₊₁ ⊆ Cⱼ₊₁ followed by lifts s of a basis b₀ of the boundaries Bⱼ ⊆ Cⱼ.

Instances For
    theorem HomologicalComplex.torsionBracket_eq_det_append {F : Type u_1} [Field F] {C : ChainComplex (ModuleCat F) ℤ} {n : ℤ → ℕ} (c : (i : ℤ) → Module.Basis (Fin (n i)) F ↑(C.X i)) {j : ℤ} (h : ExactAt C (j + 1)) {p q : ℕ} (b₁ : Module.Basis (Fin p) F ↥(ModuleCat.Hom.hom (C.d (j + 1 + 1) (j + 1))).range) (b₀ : Module.Basis (Fin q) F ↥(ModuleCat.Hom.hom (C.d (j + 1) j)).range) (s : Fin q → ↑(C.X (j + 1))) (hs : ∀ (k : Fin q), (ModuleCat.Hom.hom (C.d (j + 1) j)) (s k) = ↑(b₀ k)) (hn : n (j + 1) = p + q) :
    torsionBracket c h b₁ b₀ s hs = (c (j + 1)).det (Fin.append (fun (k : Fin p) => ↑(b₁ k)) s ∘ Fin.cast hn)

    The bracket [b₁ s / cⱼ₊₁] is the determinant, with respect to the basis c (j + 1) of Cⱼ₊₁, of the family (b₁, s) obtained by appending the lifts s to the basis b₁ of the boundaries Bⱼ₊₁.

    theorem HomologicalComplex.torsionBracket_eq_mul {F : Type u_1} [Field F] {C : ChainComplex (ModuleCat F) ℤ} {n : ℤ → ℕ} (c : (i : ℤ) → Module.Basis (Fin (n i)) F ↑(C.X i)) {j : ℤ} (h : ExactAt C (j + 1)) {p q : ℕ} (b₁ : Module.Basis (Fin p) F ↥(ModuleCat.Hom.hom (C.d (j + 1 + 1) (j + 1))).range) (b₀ : Module.Basis (Fin q) F ↥(ModuleCat.Hom.hom (C.d (j + 1) j)).range) (s : Fin q → ↑(C.X (j + 1))) (hs : ∀ (k : Fin q), (ModuleCat.Hom.hom (C.d (j + 1) j)) (s k) = ↑(b₀ k)) (b₁' : Module.Basis (Fin p) F ↥(ModuleCat.Hom.hom (C.d (j + 1 + 1) (j + 1))).range) (b₀' : Module.Basis (Fin q) F ↥(ModuleCat.Hom.hom (C.d (j + 1) j)).range) (s' : Fin q → ↑(C.X (j + 1))) (hs' : ∀ (k : Fin q), (ModuleCat.Hom.hom (C.d (j + 1) j)) (s' k) = ↑(b₀' k)) :
    torsionBracket c h b₁' b₀' s' hs' = torsionBracket c h b₁ b₀ s hs * (b₁.det ⇑b₁' * b₀.det ⇑b₀')

    Replacing the boundary bases and the lifts in a bracket multiplies it by the determinants of the new boundary bases with respect to the old ones; in particular the bracket does not depend on the lifts.

    theorem HomologicalComplex.torsionBracket_eq_det_mul {F : Type u_1} [Field F] {C : ChainComplex (ModuleCat F) ℤ} {n : ℤ → ℕ} (c : (i : ℤ) → Module.Basis (Fin (n i)) F ↑(C.X i)) {j : ℤ} (h : ExactAt C (j + 1)) {p q : ℕ} (b₁ : Module.Basis (Fin p) F ↥(ModuleCat.Hom.hom (C.d (j + 1 + 1) (j + 1))).range) (b₀ : Module.Basis (Fin q) F ↥(ModuleCat.Hom.hom (C.d (j + 1) j)).range) (s : Fin q → ↑(C.X (j + 1))) (hs : ∀ (k : Fin q), (ModuleCat.Hom.hom (C.d (j + 1) j)) (s k) = ↑(b₀ k)) (c' : (i : ℤ) → Module.Basis (Fin (n i)) F ↑(C.X i)) :
    torsionBracket c' h b₁ b₀ s hs = (c' (j + 1)).det ⇑(c (j + 1)) * torsionBracket c h b₁ b₀ s hs

    Replacing the basis c (j + 1) of Cⱼ₊₁ by c' (j + 1) multiplies a bracket by the determinant of c (j + 1) with respect to c' (j + 1).

    theorem HomologicalComplex.torsionBracket_ne_zero {F : Type u_1} [Field F] {C : ChainComplex (ModuleCat F) ℤ} {n : ℤ → ℕ} (c : (i : ℤ) → Module.Basis (Fin (n i)) F ↑(C.X i)) {j : ℤ} (h : ExactAt C (j + 1)) {p q : ℕ} (b₁ : Module.Basis (Fin p) F ↥(ModuleCat.Hom.hom (C.d (j + 1 + 1) (j + 1))).range) (b₀ : Module.Basis (Fin q) F ↥(ModuleCat.Hom.hom (C.d (j + 1) j)).range) (s : Fin q → ↑(C.X (j + 1))) (hs : ∀ (k : Fin q), (ModuleCat.Hom.hom (C.d (j + 1) j)) (s k) = ↑(b₀ k)) :
    torsionBracket c h b₁ b₀ s hs ≠ 0

    A bracket is nonzero.

    @[simp]
    theorem HomologicalComplex.torsionBracket_eq_one {F : Type u_1} [Field F] {C : ChainComplex (ModuleCat F) ℤ} {n : ℤ → ℕ} (c : (i : ℤ) → Module.Basis (Fin (n i)) F ↑(C.X i)) {j : ℤ} (h : ExactAt C (j + 1)) {p q : ℕ} (b₁ : Module.Basis (Fin p) F ↥(ModuleCat.Hom.hom (C.d (j + 1 + 1) (j + 1))).range) (b₀ : Module.Basis (Fin q) F ↥(ModuleCat.Hom.hom (C.d (j + 1) j)).range) (s : Fin q → ↑(C.X (j + 1))) (hs : ∀ (k : Fin q), (ModuleCat.Hom.hom (C.d (j + 1) j)) (s k) = ↑(b₀ k)) (hn : n (j + 1) = 0) :
    torsionBracket c h b₁ b₀ s hs = 1

    The bracket in a degree where the complex vanishes is 1.

    theorem HomologicalComplex.torsionBracket_eq_det_left {F : Type u_1} [Field F] {C : ChainComplex (ModuleCat F) ℤ} {n : ℤ → ℕ} (c : (i : ℤ) → Module.Basis (Fin (n i)) F ↑(C.X i)) {j : ℤ} (h : ExactAt C (j + 1)) {p q : ℕ} (b₁ : Module.Basis (Fin p) F ↥(ModuleCat.Hom.hom (C.d (j + 1 + 1) (j + 1))).range) (b₀ : Module.Basis (Fin q) F ↥(ModuleCat.Hom.hom (C.d (j + 1) j)).range) (s : Fin q → ↑(C.X (j + 1))) (hs : ∀ (k : Fin q), (ModuleCat.Hom.hom (C.d (j + 1) j)) (s k) = ↑(b₀ k)) (hp : n (j + 1) = p) :
    torsionBracket c h b₁ b₀ s hs = (c (j + 1)).det fun (k : Fin (n (j + 1))) => ↑(b₁ (Fin.cast hp k))

    In a degree j + 1 where the boundaries Bⱼ₊₁ fill Cⱼ₊₁ (that is, Bⱼ = 0, as the dimension n (j + 1) is p), the bracket is the determinant of the basis b₁ of Bⱼ₊₁.

    theorem HomologicalComplex.torsionBracket_eq_det_right {F : Type u_1} [Field F] {C : ChainComplex (ModuleCat F) ℤ} {n : ℤ → ℕ} (c : (i : ℤ) → Module.Basis (Fin (n i)) F ↑(C.X i)) {j : ℤ} (h : ExactAt C (j + 1)) {p q : ℕ} (b₁ : Module.Basis (Fin p) F ↥(ModuleCat.Hom.hom (C.d (j + 1 + 1) (j + 1))).range) (b₀ : Module.Basis (Fin q) F ↥(ModuleCat.Hom.hom (C.d (j + 1) j)).range) (s : Fin q → ↑(C.X (j + 1))) (hs : ∀ (k : Fin q), (ModuleCat.Hom.hom (C.d (j + 1) j)) (s k) = ↑(b₀ k)) (hq : n (j + 1) = q) :
    torsionBracket c h b₁ b₀ s hs = (c (j + 1)).det (s ∘ Fin.cast hq)

    In a degree j + 1 where Cⱼ₊₁ has no nonzero boundaries (that is, Bⱼ₊₁ = 0, as the dimension n (j + 1) is q), the bracket is the determinant of the lifts s of the basis b₀ of Bⱼ.

    noncomputable def HomologicalComplex.chosenBoundaryBasis {F : Type u_1} [Field F] (C : ChainComplex (ModuleCat F) ℤ) {n : ℤ → ℕ} (c : (i : ℤ) → Module.Basis (Fin (n i)) F ↑(C.X i)) (j : ℤ) :
    Module.Basis (Fin (Module.finrank F ↥(ModuleCat.Hom.hom (C.d (j + 1) j)).range)) F ↥(ModuleCat.Hom.hom (C.d (j + 1) j)).range

    The basis Module.finBasis of the boundaries Bⱼ, used to define the torsions of a based complex.

    Instances For
      noncomputable def HomologicalComplex.chosenBoundaryLift {F : Type u_1} [Field F] (C : ChainComplex (ModuleCat F) ℤ) {n : ℤ → ℕ} (c : (i : ℤ) → Module.Basis (Fin (n i)) F ↑(C.X i)) (j : ℤ) (k : Fin (Module.finrank F ↥(ModuleCat.Hom.hom (C.d (j + 1) j)).range)) :
      ↑(C.X (j + 1))

      Lifts of chosenBoundaryBasis C c j through the differential, chosen by Function.surjInv.

      Instances For
        @[simp]
        theorem HomologicalComplex.chosenBoundaryLift_spec {F : Type u_1} [Field F] (C : ChainComplex (ModuleCat F) ℤ) {n : ℤ → ℕ} (c : (i : ℤ) → Module.Basis (Fin (n i)) F ↑(C.X i)) (j : ℤ) (k : Fin (Module.finrank F ↥(ModuleCat.Hom.hom (C.d (j + 1) j)).range)) :
        (ModuleCat.Hom.hom (C.d (j + 1) j)) (chosenBoundaryLift C c j k) = ↑((chosenBoundaryBasis C c j) k)

        The lifts chosenBoundaryLift C c j are mapped by the differential to the basis chosenBoundaryBasis C c j.

        noncomputable def HomologicalComplex.reidemeisterTorsion {F : Type u_1} [Field F] (C : ChainComplex (ModuleCat F) ℤ) {n : ℤ → ℕ} (c : (i : ℤ) → Module.Basis (Fin (n i)) F ↑(C.X i)) :
        F

        The torsion of a chain complex of vector spaces with ordered bases c i of each C.X i: the alternating product ∏ⱼ [bⱼ₊₁ sⱼ / cⱼ₊₁] ^ ((-1) ^ j) of the brackets when C is acyclic and bounded (only finitely many n i are nonzero), for a choice of bases bⱼ of the boundaries and lifts sⱼ of bⱼ, and 0 otherwise. The product does not depend on these choices (reidemeisterTorsion_eq_finprod).

        Instances For
          @[simp]
          theorem HomologicalComplex.reidemeisterTorsion_of_not_acyclic {F : Type u_1} [Field F] (C : ChainComplex (ModuleCat F) ℤ) {n : ℤ → ℕ} (c : (i : ℤ) → Module.Basis (Fin (n i)) F ↑(C.X i)) (h : ¬Acyclic C) :

          The torsion of a complex that is not acyclic is 0.

          @[simp]
          theorem HomologicalComplex.reidemeisterTorsion_of_not_finite {F : Type u_1} [Field F] (C : ChainComplex (ModuleCat F) ℤ) {n : ℤ → ℕ} (c : (i : ℤ) → Module.Basis (Fin (n i)) F ↑(C.X i)) (hn : ¬{i : ℤ | n i ≠ 0}.Finite) :

          The torsion of an unbounded complex, one with infinitely many nonzero n i, is 0.

          theorem HomologicalComplex.reidemeisterTorsion_ne_zero {F : Type u_1} [Field F] (C : ChainComplex (ModuleCat F) ℤ) {n : ℤ → ℕ} (c : (i : ℤ) → Module.Basis (Fin (n i)) F ↑(C.X i)) (hn : {i : ℤ | n i ≠ 0}.Finite) (h : Acyclic C) :

          The torsion of a bounded acyclic complex is nonzero.

          theorem HomologicalComplex.reidemeisterTorsion_eq_zero_iff {F : Type u_1} [Field F] (C : ChainComplex (ModuleCat F) ℤ) {n : ℤ → ℕ} (c : (i : ℤ) → Module.Basis (Fin (n i)) F ↑(C.X i)) (hn : {i : ℤ | n i ≠ 0}.Finite) :

          The torsion of a bounded based complex vanishes if and only if the complex is not acyclic.

          theorem HomologicalComplex.hasFiniteMulSupport_det_range_d {F : Type u_1} [Field F] (C : ChainComplex (ModuleCat F) ℤ) {n : ℤ → ℕ} (c : (i : ℤ) → Module.Basis (Fin (n i)) F ↑(C.X i)) (hn : {i : ℤ | n i ≠ 0}.Finite) {r : ℤ → ℕ} (b b' : (j : ℤ) → Module.Basis (Fin (r j)) F ↥(ModuleCat.Hom.hom (C.d (j + 1) j)).range) :
          Function.HasFiniteMulSupport fun (j : ℤ) => (b j).det ⇑(b' j)

          For a bounded complex, the determinants of one family of bases of the boundaries with respect to another have finite multiplicative support: they are 1 where the complex vanishes.

          theorem HomologicalComplex.hasFiniteMulSupport_torsionBracket {F : Type u_1} [Field F] {C : ChainComplex (ModuleCat F) ℤ} {n : ℤ → ℕ} {c : (i : ℤ) → Module.Basis (Fin (n i)) F ↑(C.X i)} (hn : {i : ℤ | n i ≠ 0}.Finite) (h : Acyclic C) (b : (j : ℤ) → Module.Basis (Fin (Module.finrank F ↥(ModuleCat.Hom.hom (C.d (j + 1) j)).range)) F ↥(ModuleCat.Hom.hom (C.d (j + 1) j)).range) (s : (j : ℤ) → Fin (Module.finrank F ↥(ModuleCat.Hom.hom (C.d (j + 1) j)).range) → ↑(C.X (j + 1))) (hs : ∀ (j : ℤ) (k : Fin (Module.finrank F ↥(ModuleCat.Hom.hom (C.d (j + 1) j)).range)), (ModuleCat.Hom.hom (C.d (j + 1) j)) (s j k) = ↑((b j) k)) :
          Function.HasFiniteMulSupport fun (j : ℤ) => torsionBracket c ⋯ (b (j + 1)) (b j) (s j) ⋯ ^ ↑j.negOnePow

          For a bounded complex, the alternating brackets have finite multiplicative support.

          theorem HomologicalComplex.reidemeisterTorsion_eq_finprod {F : Type u_1} [Field F] {C : ChainComplex (ModuleCat F) ℤ} {n : ℤ → ℕ} {c : (i : ℤ) → Module.Basis (Fin (n i)) F ↑(C.X i)} (hn : {i : ℤ | n i ≠ 0}.Finite) (h : Acyclic C) {r : ℤ → ℕ} (b : (j : ℤ) → Module.Basis (Fin (r j)) F ↥(ModuleCat.Hom.hom (C.d (j + 1) j)).range) (s : (j : ℤ) → Fin (r j) → ↑(C.X (j + 1))) (hs : ∀ (j : ℤ) (k : Fin (r j)), (ModuleCat.Hom.hom (C.d (j + 1) j)) (s j k) = ↑((b j) k)) :
          reidemeisterTorsion C c = ∏ᶠ (j : ℤ), torsionBracket c ⋯ (b (j + 1)) (b j) (s j) ⋯ ^ ↑j.negOnePow

          For a bounded acyclic complex, the torsion is the alternating product ∏ⱼ [bⱼ₊₁ sⱼ / cⱼ₊₁] ^ ((-1) ^ j) of the brackets, for any bases bⱼ of the boundaries and any lifts sⱼ of bⱼ; the bases bⱼ may be indexed by any Fin (r j).

          theorem HomologicalComplex.reidemeisterTorsion_eq_mul_finprod_det {F : Type u_1} [Field F] (C : ChainComplex (ModuleCat F) ℤ) {n : ℤ → ℕ} (c c' : (i : ℤ) → Module.Basis (Fin (n i)) F ↑(C.X i)) :
          reidemeisterTorsion C c' = reidemeisterTorsion C c * ∏ᶠ (i : ℤ), (c i).det ⇑(c' i) ^ ↑i.negOnePow

          The basis-change formula for the torsion: replacing the bases c i of C by c' i multiplies the torsion by ∏ᵢ [c'ᵢ / cᵢ] ^ ((-1) ^ i), where [c'ᵢ / cᵢ] is the determinant of c' i with respect to c i. This holds for every complex, both sides being 0 when C is not acyclic or is unbounded.

          theorem HomologicalComplex.reidemeisterTorsion_reindex {F : Type u_1} [Field F] (C : ChainComplex (ModuleCat F) ℤ) {n : ℤ → ℕ} (c : (i : ℤ) → Module.Basis (Fin (n i)) F ↑(C.X i)) (σ : (i : ℤ) → Equiv.Perm (Fin (n i))) :
          (reidemeisterTorsion C fun (i : ℤ) => (c i).reindex (σ i)) = reidemeisterTorsion C c * ∏ᶠ (i : ℤ), ↑↑(Equiv.Perm.sign (σ i))

          Reordering the bases c i of C by permutations σ i multiplies the torsion by the product of the signs of the σ i.

          theorem HomologicalComplex.reidemeisterTorsion_unitsSMul {F : Type u_1} [Field F] (C : ChainComplex (ModuleCat F) ℤ) {n : ℤ → ℕ} (c : (i : ℤ) → Module.Basis (Fin (n i)) F ↑(C.X i)) (w : (i : ℤ) → Fin (n i) → Fˣ) :
          (reidemeisterTorsion C fun (i : ℤ) => (c i).unitsSMul (w i)) = reidemeisterTorsion C c * ∏ᶠ (i : ℤ), (∏ k : Fin (n i), ↑(w i k)) ^ ↑i.negOnePow

          Rescaling the vectors of the bases c i of C by units w i k multiplies the torsion by ∏ᵢ (∏ₖ w i k) ^ ((-1) ^ i).

          theorem HomologicalComplex.card_eq_card_of_concentrated {F : Type u_1} [Field F] {C : ChainComplex (ModuleCat F) ℤ} {n : ℤ → ℕ} (c : (i : ℤ) → Module.Basis (Fin (n i)) F ↑(C.X i)) {j : ℤ} (h : Acyclic C) (hn : ∀ (i : ℤ), i ≠ j + 1 → i ≠ j + 1 + 1 → n i = 0) :
          n (j + 1) = n (j + 1 + 1)

          An acyclic complex concentrated in degrees j + 1 and j + 2 has bases of the same size in both degrees, as its differential Cⱼ₊₂ → Cⱼ₊₁ is then an isomorphism.

          theorem HomologicalComplex.reidemeisterTorsion_eq_det_zpow {F : Type u_1} [Field F] {C : ChainComplex (ModuleCat F) ℤ} {n : ℤ → ℕ} {c : (i : ℤ) → Module.Basis (Fin (n i)) F ↑(C.X i)} {j : ℤ} (h : Acyclic C) (hn : ∀ (i : ℤ), i ≠ j + 1 → i ≠ j + 1 + 1 → n i = 0) :
          reidemeisterTorsion C c = ((c (j + 1)).det fun (k : Fin (n (j + 1))) => (ModuleCat.Hom.hom (C.d (j + 1 + 1) (j + 1))) ((c (j + 1 + 1)) (Fin.cast ⋯ k))) ^ ↑j.negOnePow

          The torsion of an acyclic complex concentrated in two consecutive degrees j + 1 and j + 2 is det (d) ^ ((-1) ^ j), where det (d) is the determinant of the differential Cⱼ₊₂ → Cⱼ₊₁ in the bases c (j + 2) and c (j + 1). For j = -1 this is the normalization of the torsion: a complex concentrated in degrees 1 and 0 has torsion det (d)⁻¹, so that multiplication by a ≠ 0 on F, from degree 1 to degree 0, has torsion a⁻¹.

          Multiplicativity in short exact sequences #

          theorem HomologicalComplex.reidemeisterTorsion_eq_mul_of_shortExact {F : Type u_1} [Field F] {S : CategoryTheory.ShortComplex (ChainComplex (ModuleCat F) ℤ)} (hS : S.ShortExact) (h₁ : Acyclic S.X₁) (h₃ : Acyclic S.X₃) {n₁ n₃ : ℤ → ℕ} (c₁ : (i : ℤ) → Module.Basis (Fin (n₁ i)) F ↑(S.X₁.X i)) (c₃ : (i : ℤ) → Module.Basis (Fin (n₃ i)) F ↑(S.X₃.X i)) (c₂ : (i : ℤ) → Module.Basis (Fin (n₁ i + n₃ i)) F ↑(S.X₂.X i)) (hc₁ : ∀ (i : ℤ) (k : Fin (n₁ i)), (c₂ i) (Fin.castAdd (n₃ i) k) = (ModuleCat.Hom.hom (S.f.f i)) ((c₁ i) k)) (hc₃ : ∀ (i : ℤ) (k : Fin (n₃ i)), (ModuleCat.Hom.hom (S.g.f i)) ((c₂ i) (Fin.natAdd (n₁ i) k)) = (c₃ i) k) :

          Multiplicativity of the torsion. Let 0 → C₁ → C₂ → C₃ → 0 be a short exact sequence of chain complexes of vector spaces, with C₁ and C₃ acyclic, and with compatible bases: the basis c₂ i of C₂ᵢ is the image of the basis c₁ i of C₁ᵢ followed by lifts of the basis c₃ i of C₃ᵢ. Then τ(C₂) = ε · τ(C₁) · τ(C₃), with the sign ε = ∏ⱼ (-1) ^ (dim B₃,ⱼ₊₁ · dim B₁,ⱼ) given by the dimensions of the boundaries Bₖ,ⱼ ⊆ Cₖ,ⱼ. This also holds when the complexes are unbounded, both sides being 0.

          Split short exact sequences and direct sums #

          theorem HomologicalComplex.reidemeisterTorsion_eq_mul_of_splitting {F : Type u_1} [Field F] {S : CategoryTheory.ShortComplex (ChainComplex (ModuleCat F) ℤ)} (σ : S.Splitting) {n₁ n₃ : ℤ → ℕ} (c₁ : (i : ℤ) → Module.Basis (Fin (n₁ i)) F ↑(S.X₁.X i)) (c₃ : (i : ℤ) → Module.Basis (Fin (n₃ i)) F ↑(S.X₃.X i)) (c₂ : (i : ℤ) → Module.Basis (Fin (n₁ i + n₃ i)) F ↑(S.X₂.X i)) (hc₁ : ∀ (i : ℤ) (k : Fin (n₁ i)), (c₂ i) (Fin.castAdd (n₃ i) k) = (ModuleCat.Hom.hom (S.f.f i)) ((c₁ i) k)) (hc₃ : ∀ (i : ℤ) (k : Fin (n₃ i)), (ModuleCat.Hom.hom (S.g.f i)) ((c₂ i) (Fin.natAdd (n₁ i) k)) = (c₃ i) k) :

          Torsion of a split short exact sequence. Let 0 → C₁ → C₂ → C₃ → 0 be a split short exact sequence of chain complexes of vector spaces, with compatible bases: the basis c₂ i of C₂ᵢ is the image of the basis c₁ i of C₁ᵢ followed by lifts of the basis c₃ i of C₃ᵢ. Then τ(C₂) = ε · τ(C₁) · τ(C₃), with the sign ε = ∏ⱼ (-1) ^ (dim B₃,ⱼ₊₁ · dim B₁,ⱼ) given by the dimensions of the boundaries Bₖ,ⱼ ⊆ Cₖ,ⱼ. This holds for all complexes: when C₁ or C₃ is not acyclic, neither is C₂, and both sides are 0.

          theorem HomologicalComplex.reidemeisterTorsion_biprod {F : Type u_1} [Field F] {C₁ C₃ : ChainComplex (ModuleCat F) ℤ} {n₁ n₃ : ℤ → ℕ} (c₁ : (i : ℤ) → Module.Basis (Fin (n₁ i)) F ↑(C₁.X i)) (c₃ : (i : ℤ) → Module.Basis (Fin (n₃ i)) F ↑(C₃.X i)) :
          (reidemeisterTorsion (C₁ ⊞ C₃) fun (i : ℤ) => (biprodXBasis (c₁ i) (c₃ i)).reindex finSumFinEquiv) = (∏ᶠ (j : ℤ), (-1) ^ (Module.finrank F ↥(ModuleCat.Hom.hom (C₃.d (j + 1 + 1) (j + 1))).range * Module.finrank F ↥(ModuleCat.Hom.hom (C₁.d (j + 1) j)).range)) * (reidemeisterTorsion C₁ c₁ * reidemeisterTorsion C₃ c₃)

          Torsion of a direct sum. The torsion of the biproduct C₁ ⊞ C₃ of two based complexes, based in each degree by the basis of C₁ followed by the basis of C₃, is τ(C₁ ⊞ C₃) = ε · τ(C₁) · τ(C₃), with the sign ε = ∏ⱼ (-1) ^ (dim B₃,ⱼ₊₁ · dim B₁,ⱼ) given by the dimensions of the boundaries Bₖ,ⱼ ⊆ Cₖ,ⱼ. This holds for all complexes: C₁ ⊞ C₃ is acyclic exactly when C₁ and C₃ both are, and both sides are 0 otherwise.

          Scalar extension along a homomorphism of fields #

          theorem HomologicalComplex.map_reidemeisterTorsion {F : Type u_1} [Field F] {C : ChainComplex (ModuleCat F) ℤ} {n : ℤ → ℕ} {c : (i : ℤ) → Module.Basis (Fin (n i)) F ↑(C.X i)} {K : Type u_2} [Field K] (φ : F →+* K) {D : ChainComplex (ModuleCat K) ℤ} {e : (i : ℤ) → Module.Basis (Fin (n i)) K ↑(D.X i)} (hd : ∀ (i : ℤ), (LinearMap.toMatrix (e (i + 1)) (e i)) (ModuleCat.Hom.hom (D.d (i + 1) i)) = ((LinearMap.toMatrix (c (i + 1)) (c i)) (ModuleCat.Hom.hom (C.d (i + 1) i))).map ⇑φ) :

          Scalar extension of the torsion. Let φ : F →+* K be a homomorphism of fields, and let D be a complex of vector spaces over K with bases e i in which the matrices of the differentials are the images under φ of the matrices of the differentials of C in the bases c i; that is, (D, e) is the scalar extension of (C, c) along φ. Then the torsion of D is the image under φ of the torsion of C. This holds for every complex: D is acyclic exactly when C is, and both torsions are 0 otherwise.

          theorem HomologicalComplex.reidemeisterTorsion_map {F : Type u_1} [Field F] {C : ChainComplex (ModuleCat F) ℤ} {n : ℤ → ℕ} (c : (i : ℤ) → Module.Basis (Fin (n i)) F ↑(C.X i)) {D : ChainComplex (ModuleCat F) ℤ} (e : C ≅ D) :

          The torsion is invariant under isomorphisms of based complexes: transporting the bases c i of C along an isomorphism e : C ≅ D gives bases of D for which D has the same torsion as C.

          theorem HomologicalComplex.reidemeisterTorsion_eq_mul_finprod_det_toMatrix {F : Type u_1} [Field F] {C : ChainComplex (ModuleCat F) ℤ} {n : ℤ → ℕ} (c : (i : ℤ) → Module.Basis (Fin (n i)) F ↑(C.X i)) {D : ChainComplex (ModuleCat F) ℤ} (e : C ≅ D) (c' : (i : ℤ) → Module.Basis (Fin (n i)) F ↑(D.X i)) :

          The torsion under an isomorphism e : C ≅ D of complexes with bases c i and c' i: if Aᵢ is the matrix of eᵢ : Cᵢ → Dᵢ in the bases c i and c' i, then τ(C, c) = τ(D, c') · ∏ᵢ det (Aᵢ) ^ ((-1) ^ i). When C and D have the same chain spaces and bases, the differential of C is the conjugate A⁻¹ d A of the differential d of D by the degreewise automorphisms Aᵢ, and this is the formula τ(A⁻¹ d A) = τ(d) · ∏ᵢ det (Aᵢ) ^ ((-1) ^ i).