Documentation

Mathlib.Tactic.ComputeAsymptotics.Multiseries.Monomial.Basic

Computing limits of monomials #

In this file we define the Monomial structure, representing monomials in a basis, i.e. coef * b₁ ^ e₁ * ... * bₙ ^ eₙ where [b₁, ..., bₙ] is a well-formed basis.

In the tactic implementation, we use Monomial to connect multiseries with real functions. In this file we show how to find a limit of Monomial and how to asymptotically compare two Monomials.

Main definitions #

Structure for representing monomials with coefficients.

  • coef :

    Real coefficient of the monomial.

  • Unit part of the monomial.

Instances For

    Function corresponding to a monomial.

    Equations
    Instances For

      Logarithm of function represented by a monomial, i.e. m[0] * log basis[0] + ... + m[n] * log basis[n].

      Equations
      Instances For
        @[simp]
        theorem Tactic.ComputeAsymptotics.UnitMonomial.toFun_cons (exp : ) (tl : UnitMonomial) (basis_hd : ) (basis_tl : Basis) :
        toFun (exp :: tl) (basis_hd :: basis_tl) = basis_hd ^ exp * tl.toFun basis_tl
        @[simp]
        theorem Tactic.ComputeAsymptotics.UnitMonomial.toLogFun_cons (exp : ) (tl : UnitMonomial) (basis_hd : ) (basis_tl : Basis) :
        toLogFun (exp :: tl) (basis_hd :: basis_tl) = exp Real.log basis_hd + tl.toLogFun basis_tl

        Multiplication of unit monomials.

        Equations
        Instances For

          Inversion of a unit monomial.

          Equations
          Instances For
            theorem Tactic.ComputeAsymptotics.UnitMonomial.mul_toFun {m1 m2 : UnitMonomial} {basis : Basis} (h_basis : WellFormedBasis basis) (h_length : List.length m1 = List.length m2) :
            (m1.mul m2).toFun basis =ᶠ[Filter.atTop] m1.toFun basis * m2.toFun basis
            noncomputable def Tactic.ComputeAsymptotics.Monomial.toFun (t : Monomial) (basis : Basis) :

            Converts t : Monomial to real function represented by the corresponding monomial, i.e. t.coef * basis[0]^t.exps[0] * basis[1]^t.exps[1] * .... It is always assumed that t.exps.length = basis.length, but some theorems below do not require this assumption.

            Equations
            Instances For
              @[simp]
              theorem Tactic.ComputeAsymptotics.Monomial.nil_toFun {coef : } {basis : Basis} :
              { coef := coef, unit := [] }.toFun basis = fun (x : ) => coef
              @[simp]
              theorem Tactic.ComputeAsymptotics.Monomial.cons_toFun {coef exp : } {m : UnitMonomial} {basis_hd : } {basis_tl : Basis} :
              { coef := coef, unit := exp :: m }.toFun (basis_hd :: basis_tl) = basis_hd ^ exp * { coef := coef, unit := m }.toFun basis_tl
              theorem Tactic.ComputeAsymptotics.Monomial.zero_coef_toFun {t : Monomial} (basis : Basis) (h_coef : t.coef = 0) :
              t.toFun basis = 0

              If t.coef = 0, then t.toFun is zero.

              theorem Tactic.ComputeAsymptotics.Monomial.zero_coef_toFun' (basis : Basis) (exps : List ) :
              { coef := 0, unit := exps }.toFun basis = 0

              If t.coef = 0, then t.toFun is zero.

              Negation of a monomial.

              Equations
              Instances For

                Multiplication of monomials.

                Equations
                Instances For

                  Scales a monomial by a real factor c.

                  Equations
                  Instances For

                    Inversion operation for monomials.

                    Equations
                    Instances For

                      Flipping the sign of coef flips the sign of toFun. The theorem is stated in this form, because it allows one to rewrite the t.toFun basis expression. It is used below in cases where we want to reduce the case of t.coef < 0 to t.coef > 0.

                      theorem Tactic.ComputeAsymptotics.Monomial.mul_toFun {t1 t2 : Monomial} {basis : Basis} (h_basis : WellFormedBasis basis) (h_length : List.length t1.unit = List.length t2.unit) :
                      (t1.mul t2).toFun basis =ᶠ[Filter.atTop] t1.toFun basis * t2.toFun basis
                      theorem Tactic.ComputeAsymptotics.Monomial.smul_toFun {t : Monomial} {basis : Basis} (c : ) :
                      (t.smul c).toFun basis = c t.toFun basis