Documentation

TauCeti.KnotTheory.Grid.SimplyBlocked.Basic

The simply blocked grid map #

The unblocked grid complex GC⁻ has one polynomial variable V_c for each O-marking. Blocking the O-marking in a chosen column i means setting V_i = 0. The resulting simply blocked construction keeps the variables indexed by the other columns and counts exactly the empty rectangles which cover neither an X-marking nor the blocked O-marking. This specialization is defined for every grid diagram and every commutative coefficient semiring. For a knot grid over a coefficient semiring of characteristic two, it is the simply blocked differential. Outside characteristic two it is only the unsigned candidate linear map: exactly as for the unblocked differential it specializes, the unsigned rectangle count squares to zero only after a sign assignment, and signs use additive inverses, so the sign-corrected construction needs a commutative coefficient ring. For a multi-component link, the corresponding simply blocked theory instead requires blocking one O-marking on each component.

The coefficients form the polynomial semiring R[V_c | c ≠ i], rather than one carrying a redundant variable known to act by zero. Mathlib's MvPolynomial.killCompl makes the relation to GC⁻ explicit, while simplyBlockedCoefficient_eq_sum identifies the terms that remain after specialization.

Main definitions #

Main results #

References #

The specialization and rectangle formula follow Ozsváth--Stipsicz--Szabó, Grid Homology for Knots and Links, Chapter 4.6.

@[reducible, inline]
abbrev TauCeti.GridChainHat (R : Type u_1) [CommSemiring R] (n : ℕ) (i : Fin n) :
Type u_1

The chain module underlying the one-variable specialization, freely generated by grid states over the polynomial semiring in the columns other than the blocked column i. Its homology, for a knot grid in characteristic two, is the simply blocked grid homology, which is not defined here.

Instances For
    @[reducible, inline]
    noncomputable abbrev TauCeti.simplyBlockedRingHom {n : ℕ} (R : Type u_1) [CommSemiring R] (i : Fin n) :

    Setting the blocked variable V_i to zero, as a ring homomorphism R[V₀, …, V_{n-1}] → R[V_c | c ≠ i]. It is the homomorphism over which TauCeti.simplyBlockedSpecialization is semilinear.

    Instances For
      @[simp]

      The coefficient specialization is MvPolynomial.killCompl.

      The blocked variable specializes to zero.

      Not a simp lemma: TauCeti.simplyBlockedRingHom_apply and MvPolynomial.killCompl_X_of_notMem_range already rewrite the left-hand side to 0.

      Coefficientwise specialization of an unblocked grid chain at V_i = 0.

      This is semilinear over MvPolynomial.killCompl: specializing a polynomial multiple of a chain specializes both the scalar and every coefficient.

      Instances For
        @[simp]

        Specializing a grid chain applies MvPolynomial.killCompl to each coefficient.

        @[simp]

        Specialization sends a single supported coefficient to the single supported specialized coefficient.

        noncomputable def TauCeti.simplyBlockedRenameEquiv {n m : ℕ} (R : Type u_1) [CommSemiring R] (e : Fin n ≃ Fin m) (i : Fin n) :
        MvPolynomial { c : Fin n // c ≠ i } R ≃ₐ[R] MvPolynomial { c : Fin m // c ≠ e i } R

        Renaming the unblocked columns also renames the surviving variables, carrying the blocked column i to e i.

        Instances For

          Renaming the surviving variables and its inverse form a RingHomInvPair, so that maps semilinear along the renaming can be inverted.

          The inverse renaming of the surviving variables and the forward renaming form a RingHomInvPair.

          @[simp]
          theorem TauCeti.simplyBlockedRenameEquiv_X {n m : ℕ} (R : Type u_1) [CommSemiring R] (e : Fin n ≃ Fin m) (i : Fin n) (c : { c : Fin n // c ≠ i }) :

          A surviving variable is renamed by the underlying column equivalence.

          theorem TauCeti.simplyBlockedRingHom_rename {n m : ℕ} (R : Type u_1) [CommSemiring R] (e : Fin n ≃ Fin m) (i : Fin n) (p : MvPolynomial (Fin n) R) :

          Blocking a column and then renaming the surviving variables agrees with renaming all columns first and blocking the image column.

          Specializing linear maps #

          Specialization at V_i = 0 intertwines a linear map of GC⁻ with a linear map of GC^ as soon as it does so on the generators.

          noncomputable def TauCeti.simplyBlockedMap {n : ℕ} (R : Type u_1) [CommSemiring R] (i : Fin n) (f : GridChainMinus R n →ₗ[MvPolynomial (Fin n) R] GridChainMinus R n) :

          The endomorphism of GC^ obtained from an endomorphism f of GC⁻ by setting V_i = 0: it sends each generator to the specialization of its image under f.

          Instances For

            On a generator, the specialized map is the specialization of the original map.

            @[simp]

            The matrix entries of the specialized map are the specialized matrix entries.

            @[simp]
            theorem TauCeti.simplyBlockedMap_apply_apply {n : ℕ} (R : Type u_1) [CommSemiring R] (i : Fin n) (f : GridChainMinus R n →ₗ[MvPolynomial (Fin n) R] GridChainMinus R n) (c : GridChainHat R n i) (y : GridState n) :
            ((simplyBlockedMap R i f) c) y = Finsupp.sum c fun (x : GridState n) (p : MvPolynomial { c : Fin n // c ≠ i } R) => p * (MvPolynomial.killCompl ⋯) ((f (Finsupp.single x 1)) y)

            The specialized map multiplies a chain by the specialized matrix.

            Specialization at V_i = 0 intertwines a map of GC⁻ with its specialization.

            Not a simp lemma: its left-hand side matches every specialized linear-map application, which would bypass the intertwining lemmas of named specialized maps.

            theorem TauCeti.killCompl_monomial_sum_single_one {n : ℕ} (R : Type u_1) [CommSemiring R] (i : Fin n) (s : Finset (Fin n)) :
            (MvPolynomial.killCompl ⋯) ((MvPolynomial.monomial (∑ c ∈ s, Finsupp.single c 1)) 1) = if i ∈ s then 0 else ∏ c ∈ Finset.subtype (fun (x : Fin n) => x ≠ i) s, MvPolynomial.X c

            Setting V_i = 0 in a squarefree monomial discards it if it contains V_i; otherwise it leaves the product of the same variables.

            Specialization as a quotient map #

            The coefficient specialization is surjective.

            Specialization at V_i = 0 is surjective: renaming the surviving variables back is a section of it.

            Multiplication by the blocked variable V_i is injective on the unblocked grid chain module.

            Multiplication by V_i and coefficient specialization form an exact pair.

            The chains killed by specialization at V_i = 0 are exactly the multiples of V_i: together with TauCeti.X_smul_gridChainMinus_injective and TauCeti.simplyBlockedSpecialization_surjective this presents the specialized chain module as the quotient of GC⁻ by a copy of itself.

            @[simp]

            Specialization at V_i = 0 kills multiples of V_i.

            @[simp]

            A rectangle covering the blocked O-marking has weight zero after specialization.

            @[simp]
            theorem TauCeti.GridDiagram.killCompl_OMonomial_eq_prod_of_notMem {n : ℕ} (G : GridDiagram n) (R : Type u_1) [CommSemiring R] {i : Fin n} {r : GridRectangle n} (hi : i ∉ G.OColumns r) :
            (MvPolynomial.killCompl ⋯) (G.OMonomial R r) = ∏ c ∈ Finset.subtype (fun (x : Fin n) => x ≠ i) (G.OColumns r), MvPolynomial.X c

            A rectangle avoiding the blocked O-marking keeps as its weight the product of the variables of the other O-markings it covers.

            The rectangles counted after blocking column i: unblocked rectangles which do not cover the O-marking in column i.

            Instances For
              @[simp]

              Membership in the simply blocked rectangle set is emptiness, X-avoidance, and avoidance of the O-marking in the selected column.

              Simply blocked rectangles are among those counted by the unblocked differential.

              @[simp]

              There are no simply blocked rectangles from a grid state to itself.

              noncomputable def TauCeti.GridDiagram.simplyBlockedCoefficient {n : ℕ} (G : GridDiagram n) (R : Type u_1) [CommSemiring R] (i : Fin n) (x y : GridState n) :
              MvPolynomial { c : Fin n // c ≠ i } R

              The matrix coefficient of the simply blocked map, obtained by specializing the corresponding coefficient of GC⁻.

              Instances For
                theorem TauCeti.GridDiagram.simplyBlockedCoefficient_eq_sum {n : ℕ} (G : GridDiagram n) (R : Type u_1) [CommSemiring R] (i : Fin n) (x y : GridState n) :
                G.simplyBlockedCoefficient R i x y = ∑ r ∈ G.simplyBlockedRectangles i x y, ∏ c ∈ Finset.subtype (fun (x : Fin n) => x ≠ i) (G.OColumns r.toGridRectangle), MvPolynomial.X c

                The simply blocked coefficient is the finite sum over the contributing rectangles. Terms covering the blocked marking disappear; each of the other terms is the product of the variables of the remaining O-markings the rectangle covers.

                @[simp]

                The simply blocked map has no diagonal matrix coefficient.

                noncomputable def TauCeti.GridDiagram.simplyBlockedDifferentialOnGenerator {n : ℕ} (G : GridDiagram n) (R : Type u_1) [CommSemiring R] (i : Fin n) (x : GridState n) :

                The value of the simply blocked map on one grid-state generator.

                Instances For
                  @[simp]

                  The y-coefficient of the simply blocked map on the generator x.

                  The simply blocked map of a generator is supported on its column transpositions.

                  @[simp]

                  Specializing the unblocked differential of a generator gives its simply blocked row.

                  noncomputable def TauCeti.GridDiagram.simplyBlockedDifferential {n : ℕ} (G : GridDiagram n) (R : Type u_1) [CommSemiring R] (i : Fin n) :

                  The linear map obtained from the GC⁻ differential by setting V_i = 0. For a knot grid over a coefficient semiring of characteristic two it is the simply blocked differential; outside characteristic two it is only the unsigned candidate map, since sign correction uses additive inverses and so needs a commutative coefficient ring. A link with multiple components requires one blocked marking on each component instead.

                  Instances For
                    @[simp]

                    The simply blocked map sends a single generator to its rectangle-weight row.

                    The simply blocked map is the finite sum of its generator rows over the support of a chain.

                    @[simp]
                    theorem TauCeti.GridDiagram.simplyBlockedDifferential_apply_apply {n : ℕ} (G : GridDiagram n) (R : Type u_1) [CommSemiring R] (i : Fin n) (c : GridChainHat R n i) (y : GridState n) :
                    ((G.simplyBlockedDifferential R i) c) y = Finsupp.sum c fun (x : GridState n) (a : MvPolynomial { c : Fin n // c ≠ i } R) => a * G.simplyBlockedCoefficient R i x y

                    The coefficient formula for the simply blocked map on an arbitrary chain.

                    @[simp]

                    Coefficientwise specialization intertwines the unblocked and simply blocked maps.