Documentation

Init.Data.Nat.Basic

@[specialize]
def Nat.foldAux {α : Type u} (f : Natαα) (s : Nat) :
Natαα
Equations
@[inline]
def Nat.fold {α : Type u} (f : Natαα) (n : Nat) (init : α) :
α
Equations
@[inline]
def Nat.foldRev {α : Type u} (f : Natαα) (n : Nat) (init : α) :
α
Equations
@[specialize]
def Nat.foldRev.loop {α : Type u} (f : Natαα) :
Natαα
Equations
@[specialize]
def Nat.anyAux (f : NatBool) (s : Nat) :
NatBool
Equations
@[inline]
def Nat.any (f : NatBool) (n : Nat) :
Equations
@[inline]
def Nat.all (f : NatBool) (n : Nat) :
Equations
@[inline]
def Nat.repeat {α : Type u} (f : αα) (n : Nat) (a : α) :
α
Equations
@[specialize]
def Nat.repeat.loop {α : Type u} (f : αα) :
Natαα
Equations
@[simp]
theorem Nat.zero_eq :
@[simp]
theorem Nat.add_eq {x : Nat} {y : Nat} :
Nat.add x y = x + y
@[simp]
theorem Nat.mul_eq {x : Nat} {y : Nat} :
Nat.mul x y = x * y
@[simp]
theorem Nat.lt_eq {x : Nat} {y : Nat} :
Nat.lt x y = (x < y)
@[simp]
theorem Nat.le_eq {x : Nat} {y : Nat} :
Nat.le x y = (x y)
@[simp]
theorem Nat.zero_add (n : Nat) :
0 + n = n
theorem Nat.succ_add (n : Nat) (m : Nat) :
Nat.succ n + m = Nat.succ (n + m)
theorem Nat.add_succ (n : Nat) (m : Nat) :
n + Nat.succ m = Nat.succ (n + m)
theorem Nat.add_one (n : Nat) :
n + 1 = Nat.succ n
theorem Nat.succ_eq_add_one (n : Nat) :
Nat.succ n = n + 1
theorem Nat.add_comm (n : Nat) (m : Nat) :
n + m = m + n
theorem Nat.add_assoc (n : Nat) (m : Nat) (k : Nat) :
n + m + k = n + (m + k)
theorem Nat.add_left_comm (n : Nat) (m : Nat) (k : Nat) :
n + (m + k) = m + (n + k)
theorem Nat.add_right_comm (n : Nat) (m : Nat) (k : Nat) :
n + m + k = n + k + m
theorem Nat.add_left_cancel {n : Nat} {m : Nat} {k : Nat} :
n + m = n + km = k
theorem Nat.add_right_cancel {n : Nat} {m : Nat} {k : Nat} (h : n + m = k + m) :
n = k
@[simp]
theorem Nat.mul_zero (n : Nat) :
n * 0 = 0
theorem Nat.mul_succ (n : Nat) (m : Nat) :
n * Nat.succ m = n * m + n
@[simp]
theorem Nat.zero_mul (n : Nat) :
0 * n = 0
theorem Nat.succ_mul (n : Nat) (m : Nat) :
Nat.succ n * m = n * m + m
theorem Nat.mul_comm (n : Nat) (m : Nat) :
n * m = m * n
@[simp]
theorem Nat.mul_one (n : Nat) :
n * 1 = n
@[simp]
theorem Nat.one_mul (n : Nat) :
1 * n = n
theorem Nat.left_distrib (n : Nat) (m : Nat) (k : Nat) :
n * (m + k) = n * m + n * k
theorem Nat.right_distrib (n : Nat) (m : Nat) (k : Nat) :
(n + m) * k = n * k + m * k
theorem Nat.mul_add (n : Nat) (m : Nat) (k : Nat) :
n * (m + k) = n * m + n * k
theorem Nat.add_mul (n : Nat) (m : Nat) (k : Nat) :
(n + m) * k = n * k + m * k
theorem Nat.mul_assoc (n : Nat) (m : Nat) (k : Nat) :
n * m * k = n * (m * k)
theorem Nat.mul_left_comm (n : Nat) (m : Nat) (k : Nat) :
n * (m * k) = m * (n * k)
theorem Nat.succ_lt_succ {n : Nat} {m : Nat} :
n < mNat.succ n < Nat.succ m
theorem Nat.lt_succ_of_le {n : Nat} {m : Nat} :
n mn < Nat.succ m
@[simp]
theorem Nat.sub_zero (n : Nat) :
n - 0 = n
theorem Nat.succ_sub_succ_eq_sub (n : Nat) (m : Nat) :
theorem Nat.pred_le (n : Nat) :
theorem Nat.pred_lt {n : Nat} :
n 0Nat.pred n < n
theorem Nat.sub_le (n : Nat) (m : Nat) :
n - m n
theorem Nat.sub_lt {n : Nat} {m : Nat} :
0 < n0 < mn - m < n
theorem Nat.sub_succ (n : Nat) (m : Nat) :
n - Nat.succ m = Nat.pred (n - m)
theorem Nat.succ_sub_succ (n : Nat) (m : Nat) :
theorem Nat.sub_self (n : Nat) :
n - n = 0
theorem Nat.lt_of_lt_of_le {n : Nat} {m : Nat} {k : Nat} :
n < mm kn < k
theorem Nat.lt_of_lt_of_eq {n : Nat} {m : Nat} {k : Nat} :
n < mm = kn < k
instance Nat.instTransNatLtInstLTNat :
Trans (fun a a_1 => a < a_1) (fun a a_1 => a < a_1) fun a a_1 => a < a_1
Equations
instance Nat.instTransNatLeInstLENat :
Trans (fun a a_1 => a a_1) (fun a a_1 => a a_1) fun a a_1 => a a_1
Equations
instance Nat.instTransNatLtInstLTNatLeInstLENat :
Trans (fun a a_1 => a < a_1) (fun a a_1 => a a_1) fun a a_1 => a < a_1
Equations
instance Nat.instTransNatLeInstLENatLtInstLTNat :
Trans (fun a a_1 => a a_1) (fun a a_1 => a < a_1) fun a a_1 => a < a_1
Equations
theorem Nat.le_of_eq {n : Nat} {m : Nat} (p : n = m) :
n m
theorem Nat.le_of_succ_le {n : Nat} {m : Nat} (h : Nat.succ n m) :
n m
theorem Nat.le_of_lt {n : Nat} {m : Nat} (h : n < m) :
n m
noncomputable def Nat.lt.step {n : Nat} {m : Nat} :
n < mn < Nat.succ m
Equations
theorem Nat.eq_zero_or_pos (n : Nat) :
n = 0 n > 0
noncomputable def Nat.lt.base (n : Nat) :
Equations
theorem Nat.lt_succ_self (n : Nat) :
theorem Nat.le_total (m : Nat) (n : Nat) :
m n n m
theorem Nat.lt_of_le_and_ne {m : Nat} {n : Nat} (h₁ : m n) (h₂ : m n) :
m < n
theorem Nat.eq_zero_of_le_zero {n : Nat} (h : n 0) :
n = 0
theorem Nat.lt_of_succ_lt {n : Nat} {m : Nat} :
Nat.succ n < mn < m
theorem Nat.lt_of_succ_lt_succ {n : Nat} {m : Nat} :
Nat.succ n < Nat.succ mn < m
theorem Nat.lt_of_succ_le {n : Nat} {m : Nat} (h : Nat.succ n m) :
n < m
theorem Nat.succ_le_of_lt {n : Nat} {m : Nat} (h : n < m) :
theorem Nat.zero_lt_of_lt {a : Nat} {b : Nat} :
a < b0 < b
theorem Nat.le_or_eq_or_le_succ {m : Nat} {n : Nat} (h : m Nat.succ n) :
m n m = Nat.succ n
theorem Nat.le_add_right (n : Nat) (k : Nat) :
n n + k
theorem Nat.le_add_left (n : Nat) (m : Nat) :
n m + n
theorem Nat.le.dest {n : Nat} {m : Nat} :
n m∃ k, n + k = m
theorem Nat.le.intro {n : Nat} {m : Nat} {k : Nat} (h : n + k = m) :
n m
theorem Nat.not_le_of_gt {n : Nat} {m : Nat} (h : n > m) :
¬n m
theorem Nat.gt_of_not_le {n : Nat} {m : Nat} (h : ¬n m) :
n > m
theorem Nat.add_le_add_left {n : Nat} {m : Nat} (h : n m) (k : Nat) :
k + n k + m
theorem Nat.add_le_add_right {n : Nat} {m : Nat} (h : n m) (k : Nat) :
n + k m + k
theorem Nat.add_lt_add_left {n : Nat} {m : Nat} (h : n < m) (k : Nat) :
k + n < k + m
theorem Nat.add_lt_add_right {n : Nat} {m : Nat} (h : n < m) (k : Nat) :
n + k < m + k
theorem Nat.zero_lt_one :
0 < 1
theorem Nat.add_le_add {a : Nat} {b : Nat} {c : Nat} {d : Nat} (h₁ : a b) (h₂ : c d) :
a + c b + d
theorem Nat.add_lt_add {a : Nat} {b : Nat} {c : Nat} {d : Nat} (h₁ : a < b) (h₂ : c < d) :
a + c < b + d
theorem Nat.one_ne_zero :
1 0
theorem Nat.zero_ne_one :
0 1
theorem Nat.succ_ne_zero (n : Nat) :
theorem Nat.mul_le_mul_left {n : Nat} {m : Nat} (k : Nat) (h : n m) :
k * n k * m
theorem Nat.mul_le_mul_right {n : Nat} {m : Nat} (k : Nat) (h : n m) :
n * k m * k
theorem Nat.mul_le_mul {n₁ : Nat} {m₁ : Nat} {n₂ : Nat} {m₂ : Nat} (h₁ : n₁ n₂) (h₂ : m₁ m₂) :
n₁ * m₁ n₂ * m₂
theorem Nat.mul_lt_mul_of_pos_left {n : Nat} {m : Nat} {k : Nat} (h : n < m) (hk : k > 0) :
k * n < k * m
theorem Nat.mul_lt_mul_of_pos_right {n : Nat} {m : Nat} {k : Nat} (h : n < m) (hk : k > 0) :
n * k < m * k
theorem Nat.mul_pos {n : Nat} {m : Nat} (ha : n > 0) (hb : m > 0) :
n * m > 0
theorem Nat.pow_succ (n : Nat) (m : Nat) :
n ^ Nat.succ m = n ^ m * n
theorem Nat.pow_zero (n : Nat) :
n ^ 0 = 1
theorem Nat.pow_le_pow_of_le_left {n : Nat} {m : Nat} (h : n m) (i : Nat) :
n ^ i m ^ i
theorem Nat.pow_le_pow_of_le_right {n : Nat} (hx : n > 0) {i : Nat} {j : Nat} :
i jn ^ i n ^ j
theorem Nat.pos_pow_of_pos {n : Nat} (m : Nat) (h : 0 < n) :
0 < n ^ m
def Nat.min (n : Nat) (m : Nat) :
Equations
def Nat.max (n : Nat) (m : Nat) :
Equations
theorem Nat.not_eq_zero_of_lt {b : Nat} {a : Nat} (h : b < a) :
a 0
theorem Nat.pred_lt' {n : Nat} {m : Nat} (h : m < n) :
theorem Nat.add_sub_self_left (a : Nat) (b : Nat) :
a + b - a = b
theorem Nat.add_sub_self_right (a : Nat) (b : Nat) :
a + b - b = a
theorem Nat.sub_le_succ_sub (a : Nat) (i : Nat) :
a - i Nat.succ a - i
theorem Nat.zero_lt_sub_of_lt {i : Nat} {a : Nat} (h : i < a) :
0 < a - i
theorem Nat.sub_succ_lt_self (a : Nat) (i : Nat) (h : i < a) :
a - (i + 1) < a - i
@[inline]
def Prod.foldI {α : Type u} (f : Natαα) (i : Nat × Nat) (a : α) :
α
Equations
@[inline]
def Prod.anyI (f : NatBool) (i : Nat × Nat) :
Equations
@[inline]
def Prod.allI (f : NatBool) (i : Nat × Nat) :
Equations