mathlib3 documentation

data.nat.size

THIS FILE IS SYNCHRONIZED WITH MATHLIB4. Any changes to this file require a corresponding PR to mathlib4. Lemmas about size.

shiftl and shiftr #

theorem nat.shiftl_eq_mul_pow (m n : ) :
m.shiftl n = m * 2 ^ n
theorem nat.shiftl'_tt_eq_mul_pow (m n : ) :
nat.shiftl' bool.tt m n + 1 = (m + 1) * 2 ^ n
theorem nat.one_shiftl (n : ) :
1.shiftl n = 2 ^ n
@[simp]
theorem nat.zero_shiftl (n : ) :
0.shiftl n = 0
theorem nat.shiftr_eq_div_pow (m n : ) :
m.shiftr n = m / 2 ^ n
@[simp]
theorem nat.zero_shiftr (n : ) :
0.shiftr n = 0
theorem nat.shiftl'_ne_zero_left (b : bool) {m : } (h : m 0) (n : ) :
theorem nat.shiftl'_tt_ne_zero (m : ) {n : } (h : n 0) :

size #

@[simp]
theorem nat.size_zero  :
0.size = 0
@[simp]
theorem nat.size_bit {b : bool} {n : } (h : nat.bit b n 0) :
@[simp]
theorem nat.size_bit0 {n : } (h : n 0) :
@[simp]
theorem nat.size_bit1 (n : ) :
@[simp]
theorem nat.size_one  :
1.size = 1
@[simp]
theorem nat.size_shiftl' {b : bool} {m n : } (h : nat.shiftl' b m n 0) :
(nat.shiftl' b m n).size = m.size + n
@[simp]
theorem nat.size_shiftl {m : } (h : m 0) (n : ) :
(m.shiftl n).size = m.size + n
theorem nat.lt_size_self (n : ) :
n < 2 ^ n.size
theorem nat.size_le {m n : } :
m.size n m < 2 ^ n
theorem nat.lt_size {m n : } :
m < n.size 2 ^ m n
theorem nat.size_pos {n : } :
0 < n.size 0 < n
theorem nat.size_eq_zero {n : } :
n.size = 0 n = 0
theorem nat.size_pow {n : } :
(2 ^ n).size = n + 1
theorem nat.size_le_size {m n : } (h : m n) :