Documentation

CompPoly.Multivariate.CMvMonomial

Computable monomials #

Monomials of the form X₀ᵃ * X₁ᵇ * ... * Xₖᶻ. These are represented as vectors of natural numbers, where each element corresponds to the exponent of a variable.

Main definitions #

Monomial in n variables.

  • #v[e₀, e₁, e₂] denotes X₀^e₀ * X₁^e₁ * X₂^e₂
Equations
Instances For
    Equations
    • One or more equations did not get rendered due to their size.
    Instances For
      Equations
      • One or more equations did not get rendered due to their size.
      theorem CPoly.CMvMonomial.ext {n : } {m₁ m₂ : CMvMonomial n} (h : ∀ (i : ) (x : i < n), m₁[i] = m₂[i]) :
      m₁ = m₂
      theorem CPoly.CMvMonomial.ext_iff {n : } {m₁ m₂ : CMvMonomial n} :
      m₁ = m₂ ∀ (i : ) (x : i < n), m₁[i] = m₂[i]
      def CPoly.CMvMonomial.extend {n : } (n' : ) (m : CMvMonomial n) :

      Extend a monomial to a larger number of variables by padding with zeros.

      Equations
      Instances For

        The total degree of a monomial (sum of all exponents).

        Equations
        Instances For
          def CPoly.CMvMonomial.degreeOf {n : } (m : CMvMonomial n) (i : Fin n) :

          The degree of the $i$-th variable in the monomial.

          Equations
          Instances For

            The zero monomial (all exponents are zero).

            Equations
            Instances For

              Monomial multiplication (adds exponents element-wise).

              Equations
              Instances For
                @[simp]
                theorem CPoly.CMvMonomial.add_zero {n : } {m : CMvMonomial n} :
                m + 0 = m
                def CPoly.CMvMonomial.divides {n : } (m₁ m₂ : CMvMonomial n) :

                Check if $m_1$ divides $m_2$ (true if all exponents of $m_1$ are $\le$ those of $m_2$).

                Equations
                Instances For
                  Equations
                  def CPoly.CMvMonomial.div {n : } (m₁ m₂ : CMvMonomial n) :

                  The monomial division $m_1 / m_2$ (subtracts exponents element-wise).

                  The result makes sense assuming m₂ | m₁.

                  Equations
                  Instances For

                    Convert a CMvMonomial to a Finsupp.

                    Equations
                    Instances For
                      Equations
                      Instances For
                        @[simp]
                        theorem CPoly.CMvMonomial.map_mul {n : } {m₁ m₂ : Multiplicative (Fin n →₀ )} :
                        ofFinsupp (m₁ * m₂) = ofFinsupp m₁ + ofFinsupp m₂
                        @[reducible, inline]
                        abbrev CPoly.MonoR (n : ) (R : Type) :
                        Equations
                        Instances For
                          instance CPoly.MonoR.instRepr {n : } {R : Type} [Repr R] :
                          Repr (MonoR n R)
                          Equations
                          def CPoly.MonoR.C {n : } {R : Type} (c : R) :
                          MonoR n R
                          Equations
                          Instances For
                            def CPoly.MonoR.divides {n : } {R : Type} [CommSemiring R] [HMod R R R] [BEq R] (t₁ t₂ : MonoR n R) :
                            Equations
                            Instances For
                              instance CPoly.MonoR.instDvd {n : } {R : Type} [CommSemiring R] [HMod R R R] [BEq R] :
                              Dvd (MonoR n R)
                              Equations
                              instance CPoly.MonoR.instDecidableDvd {n : } {R : Type} [CommSemiring R] [HMod R R R] [BEq R] {t₁ t₂ : MonoR n R} :
                              Decidable (t₁ t₂)
                              Equations
                              def CPoly.MonoR.evalMonomial {R : Type} {n : } [CommSemiring R] :
                              (Fin nR)CMvMonomial nR
                              Equations
                              Instances For