Documentation

Mathlib.Tactic.NormNum.Pow

norm_num plugin for ^. #

structure Mathlib.Meta.NormNum.IsNatPowT (p : Prop) (a : ) (b : ) (c : ) :
  • run' : pNat.pow a b = c

    Unfolds the assertion.

This is an opaque wrapper around Nat.pow to prevent lean from unfolding the definition of Nat.pow on numerals. The arbitrary precondition p is actually a formula of the form Nat.pow a' b' = c' but we usually don't care to unfold this proposition so we just carry a reference to it.

Instances For
    theorem Mathlib.Meta.NormNum.IsNatPowT.trans {p : Prop} {a : } {b : } {c : } {b' : } {c' : } (h1 : Mathlib.Meta.NormNum.IsNatPowT p a b c) (h2 : Mathlib.Meta.NormNum.IsNatPowT (Nat.pow a b = c) a b' c') :

    This is the key to making the proof proceed as a balanced tree of applications instead of a linear sequence. It is just modus ponens after unwrapping the definitions.

    theorem Mathlib.Meta.NormNum.intPow_ofNat {a : } {b : } {c : } (h1 : Nat.pow a b = c) :
    theorem Mathlib.Meta.NormNum.intPow_negOfNat_bit0 {a : } {b' : } {c' : } {b : } {c : } (h1 : Nat.pow a b' = c') (hb : 2 * b' = b) (hc : c' * c' = c) :
    theorem Mathlib.Meta.NormNum.intPow_negOfNat_bit1 {a : } {b' : } {c' : } {b : } {c : } (h1 : Nat.pow a b' = c') (hb : 2 * b' + 1 = b) (hc : c' * (c' * a) = c) :
    theorem Mathlib.Meta.NormNum.isNat_pow {α : Type u_1} [Semiring α] {f : αα} {a : α} {b : } {a' : } {b' : } {c : } :
    f = HPow.hPowMathlib.Meta.NormNum.IsNat a a'Mathlib.Meta.NormNum.IsNat b b'Nat.pow a' b' = cMathlib.Meta.NormNum.IsNat (f a b) c
    theorem Mathlib.Meta.NormNum.isInt_pow {α : Type u_1} [Ring α] {f : αα} {a : α} {b : } {a' : } {b' : } {c : } :
    f = HPow.hPowMathlib.Meta.NormNum.IsInt a a'Mathlib.Meta.NormNum.IsNat b b'Int.pow a' b' = cMathlib.Meta.NormNum.IsInt (f a b) c
    theorem Mathlib.Meta.NormNum.isRat_pow {α : Type u_1} [Ring α] {f : αα} {a : α} {an : } {cn : } {ad : } {b : } {b' : } {cd : } :
    f = HPow.hPowMathlib.Meta.NormNum.IsRat a an adMathlib.Meta.NormNum.IsNat b b'Int.pow an b' = cnNat.pow ad b' = cdMathlib.Meta.NormNum.IsRat (f a b) cn cd

    The norm_num extension which identifies expressions of the form a ^ b, such that norm_num successfully recognises both a and b, with b : ℕ.

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