Documentation

Mathlib.Tactic.NormNum.Basic

norm_num basic plugins #

This file adds norm_num plugins for

See other files in this directory for many more plugins.

Constructors and constants #

The norm_num extension which identifies the expression Zero.zero, returning 0.

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

    The norm_num extension which identifies the expression One.one, returning 1.

    Equations
    • One or more equations did not get rendered due to their size.
    Instances For
      theorem Mathlib.Meta.NormNum.isNat_ofNat (α : Type u_1) [AddMonoidWithOne α] {a : α} {n : ℕ} (h : ↑n = a) :

      The norm_num extension which identifies an expression OfNat.ofNat n, returning n.

      Instances For

        The norm_num extension which identifies the constructor application Int.ofNat n such that norm_num successfully recognizes n, returning n.

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

          Casts #

          The norm_num extension which identifies an expression Nat.cast n, returning n.

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

            The norm_num extension which identifies an expression Int.cast n, returning n.

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

              Arithmetic #

              theorem Mathlib.Meta.NormNum.isNat_add {α : Type u_1} [AddMonoidWithOne α] {f : α → α → α} {a : α} {b : α} {a' : ℕ} {b' : ℕ} {c : ℕ} :
              f = HAdd.hAdd → Mathlib.Meta.NormNum.IsNat a a' → Mathlib.Meta.NormNum.IsNat b b' → Nat.add a' b' = c → Mathlib.Meta.NormNum.IsNat (f a b) c
              theorem Mathlib.Meta.NormNum.isInt_add {α : Type u_1} [Ring α] {f : α → α → α} {a : α} {b : α} {a' : ℤ} {b' : ℤ} {c : ℤ} :
              f = HAdd.hAdd → Mathlib.Meta.NormNum.IsInt a a' → Mathlib.Meta.NormNum.IsInt b b' → Int.add a' b' = c → Mathlib.Meta.NormNum.IsInt (f a b) c
              def Mathlib.Meta.NormNum.invertibleOfMul {α : Type u_1} [Semiring α] (k : ℕ) (b : α) (a : α) [Invertible a] :
              a = ↑k * b → Invertible b

              If b divides a and a is invertible, then b is invertible.

              Equations
              • One or more equations did not get rendered due to their size.
              Instances For
                def Mathlib.Meta.NormNum.invertibleOfMul' {α : Type u_1} [Semiring α] {a : ℕ} {k : ℕ} {b : ℕ} [Invertible ↑a] (h : a = k * b) :

                If b divides a and a is invertible, then b is invertible.

                Equations
                Instances For
                  theorem Mathlib.Meta.NormNum.isRat_add {α : Type u_1} [Ring α] {f : α → α → α} {a : α} {b : α} {na : ℤ} {nb : ℤ} {nc : ℤ} {da : ℕ} {db : ℕ} {dc : ℕ} {k : ℕ} :
                  f = HAdd.hAdd → Mathlib.Meta.NormNum.IsRat a na da → Mathlib.Meta.NormNum.IsRat b nb db → Int.add (Int.mul na ↑db) (Int.mul nb ↑da) = Int.mul (↑k) nc → Nat.mul da db = Nat.mul k dc → Mathlib.Meta.NormNum.IsRat (f a b) nc dc
                  Equations

                  The norm_num extension which identifies expressions of the form a + b, such that norm_num successfully recognises both a and b.

                  Equations
                  • One or more equations did not get rendered due to their size.
                  Instances For
                    def Mathlib.Meta.NormNum.evalAdd.core {u : Lean.Level} {α : Q(Type u)} (e : Q(«$α»)) (f : Q(«$α» → «$α» → «$α»)) (a : Q(«$α»)) (b : Q(«$α»)) (ra : Mathlib.Meta.NormNum.Result a) (rb : Mathlib.Meta.NormNum.Result b) :

                    Main part of evalAdd.

                    Equations
                    • One or more equations did not get rendered due to their size.
                    Instances For
                      def Mathlib.Meta.NormNum.evalAdd.core.intArm {u : Lean.Level} {α : Q(Type u)} (e : Q(«$α»)) (f : Q(«$α» → «$α» → «$α»)) (a : Q(«$α»)) (b : Q(«$α»)) (ra : Mathlib.Meta.NormNum.Result a) (rb : Mathlib.Meta.NormNum.Result b) (rα : Q(Ring «$α»)) :
                      Equations
                      • One or more equations did not get rendered due to their size.
                      Instances For
                        def Mathlib.Meta.NormNum.evalAdd.core.ratArm {u : Lean.Level} {α : Q(Type u)} (e : Q(«$α»)) (f : Q(«$α» → «$α» → «$α»)) (a : Q(«$α»)) (b : Q(«$α»)) (ra : Mathlib.Meta.NormNum.Result a) (rb : Mathlib.Meta.NormNum.Result b) (dα : Q(DivisionRing «$α»)) :
                        Equations
                        • One or more equations did not get rendered due to their size.
                        Instances For
                          theorem Mathlib.Meta.NormNum.isInt_neg {α : Type u_1} [Ring α] {f : α → α} {a : α} {a' : ℤ} {b : ℤ} :
                          f = Neg.neg → Mathlib.Meta.NormNum.IsInt a a' → Int.neg a' = b → Mathlib.Meta.NormNum.IsInt (-a) b
                          theorem Mathlib.Meta.NormNum.isRat_neg {α : Type u_1} [Ring α] {f : α → α} {a : α} {n : ℤ} {n' : ℤ} {d : ℕ} :
                          f = Neg.neg → Mathlib.Meta.NormNum.IsRat a n d → Int.neg n = n' → Mathlib.Meta.NormNum.IsRat (-a) n' d

                          The norm_num extension which identifies expressions of the form -a, such that norm_num successfully recognises a.

                          Equations
                          • One or more equations did not get rendered due to their size.
                          Instances For
                            def Mathlib.Meta.NormNum.evalNeg.core {u : Lean.Level} {α : Q(Type u)} (e : Q(«$α»)) (f : Q(«$α» → «$α»)) (a : Q(«$α»)) (ra : Mathlib.Meta.NormNum.Result a) (rα : Q(Ring «$α»)) :

                            Main part of evalNeg.

                            Equations
                            • One or more equations did not get rendered due to their size.
                            Instances For
                              theorem Mathlib.Meta.NormNum.isInt_sub {α : Type u_1} [Ring α] {f : α → α → α} {a : α} {b : α} {a' : ℤ} {b' : ℤ} {c : ℤ} :
                              f = HSub.hSub → Mathlib.Meta.NormNum.IsInt a a' → Mathlib.Meta.NormNum.IsInt b b' → Int.sub a' b' = c → Mathlib.Meta.NormNum.IsInt (f a b) c
                              theorem Mathlib.Meta.NormNum.isRat_sub {α : Type u_1} [Ring α] {f : α → α → α} {a : α} {b : α} {na : ℤ} {nb : ℤ} {nc : ℤ} {da : ℕ} {db : ℕ} {dc : ℕ} {k : ℕ} (hf : f = HSub.hSub) (ra : Mathlib.Meta.NormNum.IsRat a na da) (rb : Mathlib.Meta.NormNum.IsRat b nb db) (h₁ : Int.sub (Int.mul na ↑db) (Int.mul nb ↑da) = Int.mul (↑k) nc) (h₂ : Nat.mul da db = Nat.mul k dc) :

                              The norm_num extension which identifies expressions of the form a - b in a ring, such that norm_num successfully recognises both a and b.

                              Equations
                              • One or more equations did not get rendered due to their size.
                              Instances For
                                def Mathlib.Meta.NormNum.evalSub.core {u : Lean.Level} {α : Q(Type u)} (e : Q(«$α»)) (f : Q(«$α» → «$α» → «$α»)) (a : Q(«$α»)) (b : Q(«$α»)) (rα : Q(Ring «$α»)) (ra : Mathlib.Meta.NormNum.Result a) (rb : Mathlib.Meta.NormNum.Result b) :

                                Main part of evalAdd.

                                Equations
                                • One or more equations did not get rendered due to their size.
                                Instances For
                                  theorem Mathlib.Meta.NormNum.isNat_mul {α : Type u_1} [Semiring α] {f : α → α → α} {a : α} {b : α} {a' : ℕ} {b' : ℕ} {c : ℕ} :
                                  f = HMul.hMul → Mathlib.Meta.NormNum.IsNat a a' → Mathlib.Meta.NormNum.IsNat b b' → Nat.mul a' b' = c → Mathlib.Meta.NormNum.IsNat (a * b) c
                                  theorem Mathlib.Meta.NormNum.isInt_mul {α : Type u_1} [Ring α] {f : α → α → α} {a : α} {b : α} {a' : ℤ} {b' : ℤ} {c : ℤ} :
                                  f = HMul.hMul → Mathlib.Meta.NormNum.IsInt a a' → Mathlib.Meta.NormNum.IsInt b b' → Int.mul a' b' = c → Mathlib.Meta.NormNum.IsInt (a * b) c
                                  theorem Mathlib.Meta.NormNum.isRat_mul {α : Type u_1} [Ring α] {f : α → α → α} {a : α} {b : α} {na : ℤ} {nb : ℤ} {nc : ℤ} {da : ℕ} {db : ℕ} {dc : ℕ} {k : ℕ} :
                                  f = HMul.hMul → Mathlib.Meta.NormNum.IsRat a na da → Mathlib.Meta.NormNum.IsRat b nb db → Int.mul na nb = Int.mul (↑k) nc → Nat.mul da db = Nat.mul k dc → Mathlib.Meta.NormNum.IsRat (f a b) nc dc

                                  The norm_num extension which identifies expressions of the form a * b, such that norm_num successfully recognises both a and b.

                                  Equations
                                  • One or more equations did not get rendered due to their size.
                                  Instances For
                                    def Mathlib.Meta.NormNum.evalMul.core {u : Lean.Level} {α : Q(Type u)} (e : Q(«$α»)) (f : Q(«$α» → «$α» → «$α»)) (a : Q(«$α»)) (b : Q(«$α»)) (sα : Q(Semiring «$α»)) (ra : Mathlib.Meta.NormNum.Result a) (rb : Mathlib.Meta.NormNum.Result b) :

                                    Main part of evalMul.

                                    Equations
                                    • One or more equations did not get rendered due to their size.
                                    Instances For
                                      def Mathlib.Meta.NormNum.evalMul.core.intArm {u : Lean.Level} {α : Q(Type u)} (e : Q(«$α»)) (f : Q(«$α» → «$α» → «$α»)) (a : Q(«$α»)) (b : Q(«$α»)) (sα : Q(Semiring «$α»)) (ra : Mathlib.Meta.NormNum.Result a) (rb : Mathlib.Meta.NormNum.Result b) (rα : Q(Ring «$α»)) :
                                      Equations
                                      • One or more equations did not get rendered due to their size.
                                      Instances For
                                        def Mathlib.Meta.NormNum.evalMul.core.ratArm {u : Lean.Level} {α : Q(Type u)} (e : Q(«$α»)) (f : Q(«$α» → «$α» → «$α»)) (a : Q(«$α»)) (b : Q(«$α»)) (sα : Q(Semiring «$α»)) (ra : Mathlib.Meta.NormNum.Result a) (rb : Mathlib.Meta.NormNum.Result b) (dα : Q(DivisionRing «$α»)) :
                                        Equations
                                        • One or more equations did not get rendered due to their size.
                                        Instances For
                                          theorem Mathlib.Meta.NormNum.isRat_div {α : Type u_1} [DivisionRing α] {a : α} {b : α} {cn : ℤ} {cd : ℕ} :

                                          Helper function to synthesize a typed DivisionRing α expression.

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

                                            The norm_num extension which identifies expressions of the form a / b, such that norm_num successfully recognises both a and b.

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

                                              Logic #

                                              The norm_num extension which identifies expressions of the form ¬a, such that norm_num successfully recognises a.

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

                                                (In)equalities #

                                                theorem Mathlib.Meta.NormNum.isInt_eq_true {α : Type u_1} [Ring α] {a : α} {b : α} {z : ℤ} :
                                                theorem Mathlib.Meta.NormNum.isRat_eq_true {α : Type u_1} [Ring α] {a : α} {b : α} {n : ℤ} {d : ℕ} :
                                                theorem Mathlib.Meta.NormNum.eq_of_true {a : Prop} {b : Prop} (ha : a) (hb : b) :
                                                a = b
                                                theorem Mathlib.Meta.NormNum.ne_of_false_of_true {a : Prop} {b : Prop} (ha : ¬a) (hb : b) :
                                                a ≠ b
                                                theorem Mathlib.Meta.NormNum.ne_of_true_of_false {a : Prop} {b : Prop} (ha : a) (hb : ¬b) :
                                                a ≠ b
                                                theorem Mathlib.Meta.NormNum.eq_of_false {a : Prop} {b : Prop} (ha : ¬a) (hb : ¬b) :
                                                a = b

                                                Nat operations #

                                                The norm_num extension which identifies expressions of the form Nat.succ a, such that norm_num successfully recognises a.

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

                                                  The norm_num extension which identifies expressions of the form Nat.sub a b, such that norm_num successfully recognises both a and b.

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

                                                    The norm_num extension which identifies expressions of the form Nat.mod a b, such that norm_num successfully recognises both a and b.

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

                                                      The norm_num extension which identifies expressions of the form Nat.div a b, such that norm_num successfully recognises both a and b.

                                                      Equations
                                                      • One or more equations did not get rendered due to their size.
                                                      Instances For
                                                        theorem Mathlib.Meta.NormNum.isNat_dvd_true {a : ℕ} {b : ℕ} {a' : ℕ} {b' : ℕ} :

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

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