Lemmas on Nat.floor
and Nat.ceil
for semirings #
This file contains basic results on the natural-valued floor and ceiling functions.
TODO #
LinearOrderedSemiring
can be relaxed to OrderedSemiring
in many lemmas.
Tags #
rounding, floor, ceil
theorem
Nat.floor_lt
{R : Type u_1}
[Semiring R]
[LinearOrder R]
[FloorSemiring R]
{a : R}
{n : ℕ}
(ha : 0 ≤ a)
:
theorem
Nat.floor_lt_one
{R : Type u_1}
[Semiring R]
[LinearOrder R]
[FloorSemiring R]
{a : R}
(ha : 0 ≤ a)
:
theorem
Nat.floor_le
{R : Type u_1}
[Semiring R]
[LinearOrder R]
[FloorSemiring R]
{a : R}
(ha : 0 ≤ a)
:
theorem
Nat.lt_of_floor_lt
{R : Type u_1}
[Semiring R]
[LinearOrder R]
[FloorSemiring R]
{a : R}
{n : ℕ}
[IsStrictOrderedRing R]
(h : ⌊a⌋₊ < n)
:
theorem
Nat.lt_one_of_floor_lt_one
{R : Type u_1}
[Semiring R]
[LinearOrder R]
[FloorSemiring R]
{a : R}
[IsStrictOrderedRing R]
(h : ⌊a⌋₊ < 1)
:
theorem
Nat.lt_succ_floor
{R : Type u_1}
[Semiring R]
[LinearOrder R]
[FloorSemiring R]
[IsStrictOrderedRing R]
(a : R)
:
theorem
Nat.lt_floor_add_one
{R : Type u_1}
[Semiring R]
[LinearOrder R]
[FloorSemiring R]
[IsStrictOrderedRing R]
(a : R)
:
@[simp]
theorem
Nat.floor_natCast
{R : Type u_1}
[Semiring R]
[LinearOrder R]
[FloorSemiring R]
[IsStrictOrderedRing R]
(n : ℕ)
:
@[simp]
theorem
Nat.floor_zero
{R : Type u_1}
[Semiring R]
[LinearOrder R]
[FloorSemiring R]
[IsStrictOrderedRing R]
:
@[simp]
theorem
Nat.floor_one
{R : Type u_1}
[Semiring R]
[LinearOrder R]
[FloorSemiring R]
[IsStrictOrderedRing R]
:
@[simp]
theorem
Nat.floor_ofNat
{R : Type u_1}
[Semiring R]
[LinearOrder R]
[FloorSemiring R]
[IsStrictOrderedRing R]
(n : ℕ)
[n.AtLeastTwo]
:
theorem
Nat.floor_of_nonpos
{R : Type u_1}
[Semiring R]
[LinearOrder R]
[FloorSemiring R]
{a : R}
[IsStrictOrderedRing R]
(ha : a ≤ 0)
:
theorem
Nat.floor_mono
{R : Type u_1}
[Semiring R]
[LinearOrder R]
[FloorSemiring R]
[IsStrictOrderedRing R]
:
theorem
Nat.floor_le_floor
{R : Type u_1}
[Semiring R]
[LinearOrder R]
[FloorSemiring R]
{a b : R}
[IsStrictOrderedRing R]
(hab : a ≤ b)
:
theorem
Nat.le_floor_iff'
{R : Type u_1}
[Semiring R]
[LinearOrder R]
[FloorSemiring R]
{a : R}
{n : ℕ}
[IsStrictOrderedRing R]
(hn : n ≠ 0)
:
@[simp]
theorem
Nat.one_le_floor_iff
{R : Type u_1}
[Semiring R]
[LinearOrder R]
[FloorSemiring R]
[IsStrictOrderedRing R]
(x : R)
:
theorem
Nat.floor_lt'
{R : Type u_1}
[Semiring R]
[LinearOrder R]
[FloorSemiring R]
{a : R}
{n : ℕ}
[IsStrictOrderedRing R]
(hn : n ≠ 0)
:
theorem
Nat.floor_pos
{R : Type u_1}
[Semiring R]
[LinearOrder R]
[FloorSemiring R]
{a : R}
[IsStrictOrderedRing R]
:
theorem
Nat.pos_of_floor_pos
{R : Type u_1}
[Semiring R]
[LinearOrder R]
[FloorSemiring R]
{a : R}
[IsStrictOrderedRing R]
(h : 0 < ⌊a⌋₊)
:
theorem
Nat.lt_of_lt_floor
{R : Type u_1}
[Semiring R]
[LinearOrder R]
[FloorSemiring R]
{a : R}
{n : ℕ}
[IsStrictOrderedRing R]
(h : n < ⌊a⌋₊)
:
theorem
Nat.floor_le_of_le
{R : Type u_1}
[Semiring R]
[LinearOrder R]
[FloorSemiring R]
{a : R}
{n : ℕ}
[IsStrictOrderedRing R]
(h : a ≤ ↑n)
:
theorem
Nat.floor_le_one_of_le_one
{R : Type u_1}
[Semiring R]
[LinearOrder R]
[FloorSemiring R]
{a : R}
[IsStrictOrderedRing R]
(h : a ≤ 1)
:
@[simp]
theorem
Nat.floor_eq_zero
{R : Type u_1}
[Semiring R]
[LinearOrder R]
[FloorSemiring R]
{a : R}
[IsStrictOrderedRing R]
:
theorem
Nat.floor_eq_iff'
{R : Type u_1}
[Semiring R]
[LinearOrder R]
[FloorSemiring R]
{a : R}
{n : ℕ}
[IsStrictOrderedRing R]
(hn : n ≠ 0)
:
theorem
Nat.floor_eq_on_Ico
{R : Type u_1}
[Semiring R]
[LinearOrder R]
[FloorSemiring R]
[IsStrictOrderedRing R]
(n : ℕ)
(a : R)
:
theorem
Nat.floor_eq_on_Ico'
{R : Type u_1}
[Semiring R]
[LinearOrder R]
[FloorSemiring R]
[IsStrictOrderedRing R]
(n : ℕ)
(a : R)
:
@[simp]
theorem
Nat.preimage_floor_zero
{R : Type u_1}
[Semiring R]
[LinearOrder R]
[FloorSemiring R]
[IsStrictOrderedRing R]
:
theorem
Nat.preimage_floor_of_ne_zero
{R : Type u_1}
[Semiring R]
[LinearOrder R]
[FloorSemiring R]
[IsStrictOrderedRing R]
{n : ℕ}
(hn : n ≠ 0)
:
Ceil #
theorem
Nat.add_one_le_ceil_iff
{R : Type u_1}
[Semiring R]
[LinearOrder R]
[FloorSemiring R]
{a : R}
{n : ℕ}
:
@[simp]
theorem
Nat.ceil_le_ceil
{R : Type u_1}
[Semiring R]
[LinearOrder R]
[FloorSemiring R]
{a b : R}
(hab : a ≤ b)
:
@[simp]
@[simp]
theorem
Nat.preimage_ceil_of_ne_zero
{R : Type u_1}
[Semiring R]
[LinearOrder R]
[FloorSemiring R]
{n : ℕ}
(hn : n ≠ 0)
:
theorem
Nat.ceil_le_floor_add_one
{R : Type u_1}
[Semiring R]
[LinearOrder R]
[FloorSemiring R]
[IsStrictOrderedRing R]
(a : R)
:
@[simp]
theorem
Nat.ceil_intCast
{R : Type u_3}
[Ring R]
[LinearOrder R]
[IsStrictOrderedRing R]
[FloorSemiring R]
(z : ℤ)
:
@[simp]
theorem
Nat.ceil_natCast
{R : Type u_1}
[Semiring R]
[LinearOrder R]
[FloorSemiring R]
[IsStrictOrderedRing R]
(n : ℕ)
:
@[simp]
theorem
Nat.ceil_zero
{R : Type u_1}
[Semiring R]
[LinearOrder R]
[FloorSemiring R]
[IsStrictOrderedRing R]
:
@[simp]
theorem
Nat.ceil_one
{R : Type u_1}
[Semiring R]
[LinearOrder R]
[FloorSemiring R]
[IsStrictOrderedRing R]
:
@[simp]
theorem
Nat.ceil_ofNat
{R : Type u_1}
[Semiring R]
[LinearOrder R]
[FloorSemiring R]
[IsStrictOrderedRing R]
(n : ℕ)
[n.AtLeastTwo]
:
theorem
Nat.lt_of_ceil_lt
{R : Type u_1}
[Semiring R]
[LinearOrder R]
[FloorSemiring R]
{a : R}
{n : ℕ}
[IsStrictOrderedRing R]
(h : ⌈a⌉₊ < n)
:
theorem
Nat.le_of_ceil_le
{R : Type u_1}
[Semiring R]
[LinearOrder R]
[FloorSemiring R]
{a : R}
{n : ℕ}
[IsStrictOrderedRing R]
(h : ⌈a⌉₊ ≤ n)
:
theorem
Nat.floor_le_ceil
{R : Type u_1}
[Semiring R]
[LinearOrder R]
[FloorSemiring R]
[IsStrictOrderedRing R]
(a : R)
:
theorem
Nat.floor_lt_ceil_of_lt_of_pos
{R : Type u_1}
[Semiring R]
[LinearOrder R]
[FloorSemiring R]
[IsStrictOrderedRing R]
{a b : R}
(h : a < b)
(h' : 0 < b)
:
Intervals #
@[simp]
@[simp]
theorem
Nat.preimage_Ioi
{R : Type u_1}
[Semiring R]
[LinearOrder R]
[FloorSemiring R]
{a : R}
(ha : 0 ≤ a)
:
@[simp]
@[simp]
@[simp]
theorem
Nat.preimage_Iic
{R : Type u_1}
[Semiring R]
[LinearOrder R]
[FloorSemiring R]
{a : R}
(ha : 0 ≤ a)
:
theorem
Nat.floor_add_natCast
{R : Type u_1}
[Semiring R]
[LinearOrder R]
[FloorSemiring R]
{a : R}
[IsStrictOrderedRing R]
(ha : 0 ≤ a)
(n : ℕ)
:
@[deprecated Nat.floor_add_natCast (since := "2025-04-01")]
theorem
Nat.floor_add_nat
{R : Type u_1}
[Semiring R]
[LinearOrder R]
[FloorSemiring R]
{a : R}
[IsStrictOrderedRing R]
(ha : 0 ≤ a)
(n : ℕ)
:
Alias of Nat.floor_add_natCast
.
theorem
Nat.floor_add_one
{R : Type u_1}
[Semiring R]
[LinearOrder R]
[FloorSemiring R]
{a : R}
[IsStrictOrderedRing R]
(ha : 0 ≤ a)
:
theorem
Nat.floor_add_ofNat
{R : Type u_1}
[Semiring R]
[LinearOrder R]
[FloorSemiring R]
{a : R}
[IsStrictOrderedRing R]
(ha : 0 ≤ a)
(n : ℕ)
[n.AtLeastTwo]
:
@[simp]
theorem
Nat.floor_sub_natCast
{R : Type u_1}
[Semiring R]
[LinearOrder R]
[FloorSemiring R]
[IsStrictOrderedRing R]
[Sub R]
[OrderedSub R]
[ExistsAddOfLE R]
(a : R)
(n : ℕ)
:
@[deprecated Nat.floor_sub_natCast (since := "2025-04-01")]
theorem
Nat.floor_sub_nat
{R : Type u_1}
[Semiring R]
[LinearOrder R]
[FloorSemiring R]
[IsStrictOrderedRing R]
[Sub R]
[OrderedSub R]
[ExistsAddOfLE R]
(a : R)
(n : ℕ)
:
Alias of Nat.floor_sub_natCast
.
@[simp]
theorem
Nat.floor_sub_one
{R : Type u_1}
[Semiring R]
[LinearOrder R]
[FloorSemiring R]
[IsStrictOrderedRing R]
[Sub R]
[OrderedSub R]
[ExistsAddOfLE R]
(a : R)
:
@[simp]
theorem
Nat.floor_sub_ofNat
{R : Type u_1}
[Semiring R]
[LinearOrder R]
[FloorSemiring R]
[IsStrictOrderedRing R]
[Sub R]
[OrderedSub R]
[ExistsAddOfLE R]
(a : R)
(n : ℕ)
[n.AtLeastTwo]
:
theorem
Nat.ceil_add_natCast
{R : Type u_1}
[Semiring R]
[LinearOrder R]
[FloorSemiring R]
{a : R}
[IsStrictOrderedRing R]
(ha : 0 ≤ a)
(n : ℕ)
:
@[deprecated Nat.ceil_add_natCast (since := "2025-04-01")]
theorem
Nat.ceil_add_nat
{R : Type u_1}
[Semiring R]
[LinearOrder R]
[FloorSemiring R]
{a : R}
[IsStrictOrderedRing R]
(ha : 0 ≤ a)
(n : ℕ)
:
Alias of Nat.ceil_add_natCast
.
theorem
Nat.ceil_add_one
{R : Type u_1}
[Semiring R]
[LinearOrder R]
[FloorSemiring R]
{a : R}
[IsStrictOrderedRing R]
(ha : 0 ≤ a)
:
theorem
Nat.ceil_add_ofNat
{R : Type u_1}
[Semiring R]
[LinearOrder R]
[FloorSemiring R]
{a : R}
[IsStrictOrderedRing R]
(ha : 0 ≤ a)
(n : ℕ)
[n.AtLeastTwo]
:
theorem
Nat.ceil_lt_add_one
{R : Type u_1}
[Semiring R]
[LinearOrder R]
[FloorSemiring R]
{a : R}
[IsStrictOrderedRing R]
(ha : 0 ≤ a)
:
theorem
Nat.ceil_add_le
{R : Type u_1}
[Semiring R]
[LinearOrder R]
[FloorSemiring R]
[IsStrictOrderedRing R]
(a b : R)
:
@[simp]
theorem
Nat.ceil_sub_natCast
{R : Type u_1}
[Semiring R]
[LinearOrder R]
[FloorSemiring R]
[IsStrictOrderedRing R]
[Sub R]
[OrderedSub R]
[ExistsAddOfLE R]
(a : R)
(n : ℕ)
:
@[simp]
theorem
Nat.ceil_sub_one
{R : Type u_1}
[Semiring R]
[LinearOrder R]
[FloorSemiring R]
[IsStrictOrderedRing R]
[Sub R]
[OrderedSub R]
[ExistsAddOfLE R]
(a : R)
:
@[simp]
theorem
Nat.ceil_sub_ofNat
{R : Type u_1}
[Semiring R]
[LinearOrder R]
[FloorSemiring R]
[IsStrictOrderedRing R]
[Sub R]
[OrderedSub R]
[ExistsAddOfLE R]
(a : R)
(n : ℕ)
[n.AtLeastTwo]
:
theorem
Nat.sub_one_lt_floor
{R : Type u_1}
[Ring R]
[LinearOrder R]
[IsStrictOrderedRing R]
[FloorSemiring R]
(a : R)
:
theorem
Nat.abs_sub_floor_le
{R : Type u_1}
[Ring R]
[LinearOrder R]
[IsStrictOrderedRing R]
[FloorSemiring R]
{a : R}
(ha : 0 ≤ a)
:
theorem
Nat.abs_floor_sub_le
{R : Type u_1}
[Ring R]
[LinearOrder R]
[IsStrictOrderedRing R]
[FloorSemiring R]
{a : R}
(ha : 0 ≤ a)
:
theorem
Nat.abs_sub_ceil_le
{R : Type u_1}
[Ring R]
[LinearOrder R]
[IsStrictOrderedRing R]
[FloorSemiring R]
{a : R}
(ha : 0 ≤ a)
:
theorem
Nat.abs_ceil_sub_le
{R : Type u_1}
[Ring R]
[LinearOrder R]
[IsStrictOrderedRing R]
[FloorSemiring R]
{a : R}
(ha : 0 ≤ a)
:
theorem
Nat.floor_congr
{R : Type u_1}
[Semiring R]
[LinearOrder R]
[FloorSemiring R]
{a : R}
{S : Type u_3}
[Semiring S]
[LinearOrder S]
[FloorSemiring S]
{b : S}
[IsStrictOrderedRing R]
[IsStrictOrderedRing S]
(h : ∀ (n : ℕ), ↑n ≤ a ↔ ↑n ≤ b)
:
theorem
Nat.ceil_congr
{R : Type u_1}
[Semiring R]
[LinearOrder R]
[FloorSemiring R]
{a : R}
{S : Type u_3}
[Semiring S]
[LinearOrder S]
[FloorSemiring S]
{b : S}
(h : ∀ (n : ℕ), a ≤ ↑n ↔ b ≤ ↑n)
:
theorem
Nat.map_floor
{R : Type u_1}
[Semiring R]
[LinearOrder R]
[FloorSemiring R]
{S : Type u_3}
[Semiring S]
[LinearOrder S]
[FloorSemiring S]
{F : Type u_4}
[FunLike F R S]
[RingHomClass F R S]
[IsStrictOrderedRing R]
[IsStrictOrderedRing S]
(f : F)
(hf : StrictMono ⇑f)
(a : R)
:
theorem
Nat.map_ceil
{R : Type u_1}
[Semiring R]
[LinearOrder R]
[FloorSemiring R]
{S : Type u_3}
[Semiring S]
[LinearOrder S]
[FloorSemiring S]
{F : Type u_4}
[FunLike F R S]
[RingHomClass F R S]
(f : F)
(hf : StrictMono ⇑f)
(a : R)
:
There exists at most one FloorSemiring
structure on a linear ordered semiring.