Documentation

LeanPool.Nivat.Algebra.Action

Laurent polynomial operators #

This module implements the notation of Section 1.1. Laurent is the rational Laurent ring, act is its forward-shift action, and lineEval substitutes a lattice monomial into an ordinary polynomial.

The principal identities are act_apply, act_mul, act_difference, and act_lineEval_X_pow_sub_one. The theorem finiteRange_act verifies that the class of finite-range rational configurations is closed under every operator.

@[reducible, inline]

Section 1.1 (Notation): the rational Laurent polynomial ring on the full integer lattice.

Equations
Instances For

    Section 1.1 (Notation): a forward lattice translation as a rational linear endomorphism.

    Equations
    Instances For
      @[simp]

      Section 1.1 (Notation): the bundled translation evaluates to the forward shift.

      Section 1.1 (Notation): the additive lattice acts on configurations by commuting forward shifts.

      Equations
      • One or more equations did not get rendered due to their size.
      Instances For

        Section 1.1 (Notation): the algebra homomorphism extending lattice translations to Laurent filters.

        Equations
        Instances For

          Section 1.1 (Notation): the finite Laurent polynomial operator applied to a rational configuration.

          Equations
          Instances For
            theorem Nivat.Algebra.act_apply (f : Laurent) (c : Configuration ℚ) (z : Lattice) :
            act f c z = f.coeff.sum fun (h : Lattice) (a : ℚ) => a * c (z + h)

            Section 1.1 (Notation): the operator is the finite sum of coefficients times forward-shifted values.

            @[simp]

            Section 1.1 (Notation): the zero filter sends every configuration to zero.

            @[simp]

            Section 1.1 (Notation): the constant filter one acts as the identity.

            theorem Nivat.Algebra.act_add (f g : Laurent) (c : Configuration ℚ) :
            act (f + g) c = act f c + act g c

            Section 1.1 (Notation): adding filters adds their outputs.

            theorem Nivat.Algebra.act_mul (f g : Laurent) (c : Configuration ℚ) :
            act (f * g) c = act f (act g c)

            Section 1.1 (Notation): multiplying filters composes their operators.

            theorem Nivat.Algebra.act_sub (f g : Laurent) (c : Configuration ℚ) :
            act (f - g) c = act f c - act g c

            Section 1.1 (Notation): subtracting filters subtracts their outputs.

            theorem Nivat.Algebra.act_neg (f : Laurent) (c : Configuration ℚ) :
            act (-f) c = -act f c

            Section 1.1 (Notation): negating a filter negates its output.

            @[simp]

            Section 1.1 (Notation): every Laurent filter annihilates the zero configuration.

            theorem Nivat.Algebra.act_config_add (f : Laurent) (c d : Configuration ℚ) :
            act f (c + d) = act f c + act f d

            Section 1.1 (Notation): each Laurent operator preserves sums of configurations.

            theorem Nivat.Algebra.act_config_sub (f : Laurent) (c d : Configuration ℚ) :
            act f (c - d) = act f c - act f d

            Section 1.1 (Notation): each Laurent operator preserves differences of configurations.

            theorem Nivat.Algebra.act_config_smul (f : Laurent) (a : ℚ) (c : Configuration ℚ) :
            act f (a • c) = a • act f c

            Section 1.1 (Notation): each Laurent operator commutes with rational scaling of the configuration.

            theorem Nivat.Algebra.act_smul (a : ℚ) (f : Laurent) (c : Configuration ℚ) :
            act (a • f) c = a • act f c

            Section 1.1 (Notation): rational scaling of the filter scales its output.

            @[simp]

            Section 1.1 (Notation): a single supported coefficient acts by scaling a forward shift.

            noncomputable def Nivat.Algebra.monomial (h : Lattice) :

            Section 1.1 (Notation): the lattice monomial with exponent h and coefficient one.

            Equations
            Instances For
              @[simp]

              Section 1.1 (Notation): the zero-exponent monomial is the multiplicative identity.

              @[simp]

              Section 1.1 (Notation): multiplication of lattice monomials adds their exponents.

              @[simp]
              theorem Nivat.Algebra.monomial_pow (h : Lattice) (q : ℕ) :
              monomial h ^ q = monomial (q • h)

              Section 1.1 (Notation): a natural power of a monomial scales its exponent.

              Section 1.1 (Notation): every lattice monomial is a unit, with inverse at the negated exponent.

              Section 1.1 (Notation): a lattice monomial has a nonzero coefficient and is nonzero.

              Section 1.1 (Notation): distinct lattice exponents give distinct monomials.

              Section 1.1 (Notation): a nonzero direction gives a nonzero difference polynomial.

              @[simp]

              Section 1.1 (Notation): a lattice monomial acts by its forward shift.

              Section 1.1 (Notation): the polynomial monomial h - 1 acts by the difference operator in direction h.

              theorem Nivat.Algebra.act_shift (f : Laurent) (h : Lattice) (c : Configuration ℚ) :
              act f (shift h c) = shift h (act f c)

              Section 1.1 (Notation): every Laurent operator commutes with lattice translations.

              Section 1.1 (Notation): every Laurent operator commutes with lattice differences.

              Section 1.1 (Notation): a constant rational configuration has finite range.

              Section 1.1 (Notation): the sum of two finite-range rational configurations has finite range.

              Section 1.1 (Notation): rational scaling preserves finite range.

              Section 1.1 (Notation): the finite sum defining a Laurent operator preserves finite rational range.

              Section 1.1 (Notation): substitute the lattice monomial in direction v for a polynomial variable.

              Equations
              Instances For
                @[simp]

                Section 1.1 (Notation): the polynomial variable evaluates to the monomial in direction v.

                @[simp]

                Section 1.1 (Notation): a constant polynomial evaluates to the corresponding zero-exponent Laurent coefficient.

                theorem Nivat.Algebra.lineEval_dvd (v : Lattice) {f g : Polynomial ℚ} (h : f ∣ g) :
                (lineEval v) f ∣ (lineEval v) g

                Section 1.1 (Notation): substitution along a lattice direction preserves polynomial divisibility.

                @[simp]

                Section 1.1 (Notation): a power of the polynomial variable evaluates to a scaled lattice exponent.

                Section 1.1 (Notation): the period polynomial evaluates to the difference polynomial in direction q • v.

                Section 1.1 (Notation): the evaluated period polynomial acts as the difference in direction q • v.