Documentation

PFR.Tactic.RPowSimp

The read-only state of the RPowRing monad.

Instances For

    Configuration for ring_nf.

    Instances For

      Function elaborating RingNF.Config.

      Equations
      • One or more equations did not get rendered due to their size.
      Instances For
        @[reducible, inline]

        The monad for RingNF contains, in addition to the AtomM state, a simp context for the main traversal and a simp function (which has another simp context) to simplify normalized polynomials.

        Equations
        Instances For

          A monomial, which is a product of powers of ExBase expressions, terminated by a (nonzero) constant coefficient.

          • atom: (x : Q()) → Mathlib.Tactic.RPowRing.ExBase x

            A coefficient value, which must not be 0. e is a raw rat cast. If value is not an integer, then hyp should be a proof of (value.den : α) ≠ 0.

          • pow: (x : Q()) → Q(0 < «$x»)(e : Q()) → Mathlib.Tactic.RPowRing.ExBase q(«$x» ^ «$e»)

            A product x ^ e * b is a monomial if b is a monomial. Here x is an ExBase and e is an ExBase representing a monomial expression in (it is a monomial instead of a polynomial because we eagerly normalize x ^ (a + b) = x ^ a * x ^ b.)

          Instances For

            A monomial, which is a product of powers of ExBase expressions, terminated by a (nonzero) constant coefficient.

            Instances For

              Embed an exponent (an ExBase, ExProd pair) as an ExProd by multiplying by 1.

              Equations
              Instances For
                @[reducible, inline]
                abbrev Mathlib.Tactic.RPowRing.Result (E : Q()Type) (e : Q()) :
                Equations
                Instances For
                  theorem Mathlib.Tactic.RPowRing.atom_pf' {a : } {a' : } (p : a = a') :
                  a = a * 1
                  theorem Mathlib.Tactic.RPowRing.atom_pow_pf' {a : } {a' : } (p : a = a') :
                  a = a ^ 1 * 1

                  Evaluates an atom, an expression where ring can find no additional structure.

                  • a = a ^ 1 * 1 + 0
                  Equations
                  • One or more equations did not get rendered due to their size.
                  Instances For
                    theorem Mathlib.Tactic.RPowRing.mul_pf_left {a₂ : } {b : } {c : } (a₁ : ) :
                    a₂ * b = ca₁ * a₂ * b = a₁ * c
                    theorem Mathlib.Tactic.RPowRing.mul_pf_right {a : } {b₂ : } {c : } (b₁ : ) :
                    a * b₂ = ca * (b₁ * b₂) = b₁ * c
                    theorem Mathlib.Tactic.RPowRing.mul_pp_pf_overlap {a₂ : } {b₂ : } {c : } {x : } (ea : ) (eb : ) (h : 0 < x) :
                    a₂ * b₂ = cx ^ ea * a₂ * (x ^ eb * b₂) = x ^ (ea + eb) * c

                    Multiplies two monomials va, vb together to get a normalized result monomial.

                    • x * y = (x * y) (for x, y coefficients)
                    • x * (b₁ * b₂) = b₁ * (b₂ * x) (for x coefficient)
                    • (a₁ * a₂) * y = a₁ * (a₂ * y) (for y coefficient)
                    • (x ^ ea * a₂) * (x ^ eb * b₂) = x ^ (ea + eb) * (a₂ * b₂) (if ea and eb are identical except coefficient)
                    • (a₁ * a₂) * (b₁ * b₂) = a₁ * (a₂ * (b₁ * b₂)) (if a₁.lt b₁)
                    • (a₁ * a₂) * (b₁ * b₂) = b₁ * ((a₁ * a₂) * b₂) (if not a₁.lt b₁)
                    theorem Mathlib.Tactic.RPowRing.pow_pos {a : } {b : } {e : } (ha : 0 < a) (hb : 0 < b) :
                    0 < a ^ e * b
                    theorem Mathlib.Tactic.RPowRing.pow_pf {a : } {b : } {b' : } {e₁ : } {e₂ : } (ha : 0 < a) (hb : 0 < b) :
                    b ^ e₂ = b'(a ^ e₁ * b) ^ e₂ = a ^ (e₁ * e₂) * b'
                    Equations
                    Instances For
                      theorem Mathlib.Tactic.RPowRing.pow_congr {a : } {a' : } {b : } {c : } :
                      a = a'a' ^ b = ca ^ b = c
                      theorem Mathlib.Tactic.RPowRing.inv_congr {a : } {a' : } {b : } :
                      a = a'a' ^ (-1) = ba⁻¹ = b
                      theorem Mathlib.Tactic.RPowRing.npow_congr {a : } {a' : } {c : } {b : } :
                      a = a'a' ^ b = cMonoid.npow b a = c
                      Equations
                      • One or more equations did not get rendered due to their size.
                      Instances For

                        Runs a tactic in the RingNF.M monad, given initial data:

                        • s: a reference to the mutable state of ring, for persisting across calls. This ensures that atom ordering is used consistently.
                        • cfg: the configuration options
                        • x: the tactic to run
                        Equations
                        • One or more equations did not get rendered due to their size.
                        Instances For

                          Use rpow_ring to rewrite the main goal.

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

                            Use rpow_ring to rewrite hypothesis h.

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

                              Simplification tactic for expressions in the language of commutative (semi)rings, which rewrites all ring expressions into a normal form.

                              • rpow_ring! will use a more aggressive reducibility setting to identify atoms.
                              • rpow_ring (config := cfg) allows for additional configuration:
                                • red: the reducibility setting (overridden by !)
                                • recursive: if true, rpow_ring will also recurse into atoms
                              • rpow_ring works as both a tactic and a conv tactic. In tactic mode, rpow_ring at h can be used to rewrite in a hypothesis.
                              Equations
                              • One or more equations did not get rendered due to their size.
                              Instances For

                                Simplification tactic for expressions in the language of commutative (semi)rings, which rewrites all ring expressions into a normal form.

                                • rpow_ring! will use a more aggressive reducibility setting to identify atoms.
                                • rpow_ring (config := cfg) allows for additional configuration:
                                  • red: the reducibility setting (overridden by !)
                                  • recursive: if true, rpow_ring will also recurse into atoms
                                • rpow_ring works as both a tactic and a conv tactic. In tactic mode, rpow_ring at h can be used to rewrite in a hypothesis.
                                Equations
                                • One or more equations did not get rendered due to their size.
                                Instances For

                                  Simplification tactic for expressions in the language of commutative (semi)rings, which rewrites all ring expressions into a normal form.

                                  • rpow_ring! will use a more aggressive reducibility setting to identify atoms.
                                  • rpow_ring (config := cfg) allows for additional configuration:
                                    • red: the reducibility setting (overridden by !)
                                    • recursive: if true, rpow_ring will also recurse into atoms
                                  • rpow_ring works as both a tactic and a conv tactic. In tactic mode, rpow_ring at h can be used to rewrite in a hypothesis.
                                  Equations
                                  • One or more equations did not get rendered due to their size.
                                  Instances For

                                    Elaborator for the rpow_ring tactic.

                                    Equations
                                    • One or more equations did not get rendered due to their size.
                                    Instances For
                                      theorem Real.pow_neg (a : ) (b : ) (h : 0 a) :
                                      a ^ (-b) = a⁻¹ ^ b
                                      theorem Real.inv_rpow' {x : } (hx : 0 x) (y : ) :
                                      x⁻¹ ^ y = x ^ (-y)
                                      theorem Real.rpow_inv {x : } (hx : 0 x) (y : ) :
                                      (x ^ y)⁻¹ = x ^ (-y)
                                      theorem Mathlib.Tactic.RPowRing.fix_cast₃ {n : } [n.AtLeastTwo] :
                                      n = n
                                      Equations
                                      • One or more equations did not get rendered due to their size.
                                      Instances For