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
                    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
                      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
                        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
                          theorem Mathlib.Meta.NormNum.isRat_div {α : Type u_1} [DivisionRing α] {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.

                          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