Documentation

HexMvPolyMathlib.Recursive

@[simp]

Inserting the main-variable exponent corresponds to adding its Mathlib single term to the shifted remaining exponents.

noncomputable def HexMvPolyMathlib.recursiveMap {n : } {R : Type u} {cmp' : Hex.Mono nHex.Mono nOrdering} [Std.TransCmp cmp'] [Std.LawfulEqCmp cmp'] [CommSemiring R] [DecidableEq R] (q : Hex.DensePoly (Hex.MvPoly n R cmp')) :

Send the executable recursive view through the two exact representation bridges, obtaining a Mathlib polynomial over Mathlib multivariate polynomials.

Equations
Instances For
    @[simp]

    The executable recursive view agrees exactly with Mathlib's MvPolynomial.finSuccEquiv.

    The composite comparison map for the recursive view is injective.

    @[simp]

    The comparison map preserves zero.

    @[simp]

    The comparison map preserves one.

    @[simp]

    The comparison map preserves addition.

    @[simp]

    The comparison map preserves multiplication.

    @[simp]
    theorem HexMvPolyMathlib.toUnivariate_zero {n : } {R : Type u} {cmp : Hex.Mono (n + 1)Hex.Mono (n + 1)Ordering} {cmp' : Hex.Mono nHex.Mono nOrdering} [Std.TransCmp cmp] [Std.LawfulEqCmp cmp] [Std.TransCmp cmp'] [Std.LawfulEqCmp cmp'] [CommSemiring R] [DecidableEq R] :

    The recursive view preserves zero.

    @[simp]
    theorem HexMvPolyMathlib.toUnivariate_one {n : } {R : Type u} {cmp : Hex.Mono (n + 1)Hex.Mono (n + 1)Ordering} {cmp' : Hex.Mono nHex.Mono nOrdering} [Std.TransCmp cmp] [Std.LawfulEqCmp cmp] [Std.TransCmp cmp'] [Std.LawfulEqCmp cmp'] [CommSemiring R] [DecidableEq R] :

    The recursive view preserves one.

    @[simp]
    theorem HexMvPolyMathlib.toUnivariate_add {n : } {R : Type u} {cmp : Hex.Mono (n + 1)Hex.Mono (n + 1)Ordering} {cmp' : Hex.Mono nHex.Mono nOrdering} [Std.TransCmp cmp] [Std.LawfulEqCmp cmp] [Std.TransCmp cmp'] [Std.LawfulEqCmp cmp'] [CommSemiring R] [DecidableEq R] (p q : Hex.MvPoly (n + 1) R cmp) :

    The recursive view preserves addition.

    @[simp]
    theorem HexMvPolyMathlib.toUnivariate_mul {n : } {R : Type u} {cmp : Hex.Mono (n + 1)Hex.Mono (n + 1)Ordering} {cmp' : Hex.Mono nHex.Mono nOrdering} [Std.TransCmp cmp] [Std.LawfulEqCmp cmp] [Std.TransCmp cmp'] [Std.LawfulEqCmp cmp'] [CommSemiring R] [DecidableEq R] (p q : Hex.MvPoly (n + 1) R cmp) :

    The recursive view preserves multiplication.

    def HexMvPolyMathlib.finSuccEquiv {n : } {R : Type u} {cmp : Hex.Mono (n + 1)Hex.Mono (n + 1)Ordering} [Std.TransCmp cmp] [Std.LawfulEqCmp cmp] [CommSemiring R] [DecidableEq R] (cmp' : Hex.Mono nHex.Mono nOrdering) [Std.TransCmp cmp'] [Std.LawfulEqCmp cmp'] :
    Hex.MvPoly (n + 1) R cmp ≃+* Hex.DensePoly (Hex.MvPoly n R cmp')

    The executable recursive view at the first variable, packaged as a ring equivalence.

    Equations
    Instances For
      @[simp]
      theorem HexMvPolyMathlib.finSuccEquiv_apply {n : } {R : Type u} {cmp : Hex.Mono (n + 1)Hex.Mono (n + 1)Ordering} {cmp' : Hex.Mono nHex.Mono nOrdering} [Std.TransCmp cmp] [Std.LawfulEqCmp cmp] [Std.TransCmp cmp'] [Std.LawfulEqCmp cmp'] [CommSemiring R] [DecidableEq R] (p : Hex.MvPoly (n + 1) R cmp) :

      The finite-successor ring equivalence applies as the recursive view.

      @[simp]
      theorem HexMvPolyMathlib.finSuccEquiv_symm_apply {n : } {R : Type u} {cmp : Hex.Mono (n + 1)Hex.Mono (n + 1)Ordering} {cmp' : Hex.Mono nHex.Mono nOrdering} [Std.TransCmp cmp] [Std.LawfulEqCmp cmp] [Std.TransCmp cmp'] [Std.LawfulEqCmp cmp'] [CommSemiring R] [DecidableEq R] (q : Hex.DensePoly (Hex.MvPoly n R cmp')) :

      The inverse finite-successor ring equivalence applies as recursive-view reassembly.

      noncomputable def HexMvPolyMathlib.isEmptyRingEquiv {R : Type u} {cmp0 : Hex.Mono 0Hex.Mono 0Ordering} [Std.TransCmp cmp0] [Std.LawfulEqCmp cmp0] [CommSemiring R] [DecidableEq R] :
      Hex.MvPoly 0 R cmp0 ≃+* R

      Arity zero has only the constant monomial.

      Equations
      Instances For
        @[simp]

        The zero-variable equivalence reads the constant coefficient.

        @[simp]

        The inverse zero-variable equivalence builds a constant polynomial.

        noncomputable def HexMvPolyMathlib.oneVarEquiv {R : Type u} {cmp1 : Hex.Mono 1Hex.Mono 1Ordering} [Std.TransCmp cmp1] [Std.LawfulEqCmp cmp1] [CommSemiring R] [DecidableEq R] :

        A one-variable executable multivariate polynomial is a dense univariate polynomial.

        Equations
        Instances For
          @[simp]

          The one-variable equivalence applies as the recursive view with constant coefficient polynomials identified with coefficients.

          @[simp]

          The inverse one-variable equivalence reassembles a dense polynomial.