Lemmas on Nat.floor and Nat.ceil for semirings #
This file contains basic results on the natural-valued floor and ceiling functions.
TODO #
LinearOrder can be relaxed to PartialOrder 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 : ℕ} (h : ⌊a⌋₊ < n) :
theorem Nat.lt_one_of_floor_lt_one {R : Type u_1} [Semiring R] [LinearOrder R] [FloorSemiring R] {a : R} (h : ⌊a⌋₊ < 1) :
theorem Nat.lt_floor_add_one {R : Type u_1} [Semiring R] [LinearOrder R] [FloorSemiring R] (a : R) :
@[simp]
@[simp]
@[simp]
@[simp]
theorem Nat.floor_ofNat {R : Type u_1} [Semiring R] [LinearOrder R] [FloorSemiring R] (n : ℕ) [n.AtLeastTwo] :
theorem Nat.floor_of_nonpos {R : Type u_1} [Semiring R] [LinearOrder R] [FloorSemiring R] {a : R} (ha : a ≤ 0) :
theorem Nat.floor_le_floor {R : Type u_1} [Semiring R] [LinearOrder R] [FloorSemiring R] {a b : R} (hab : a ≤ b) :
theorem Nat.le_floor_iff' {R : Type u_1} [Semiring R] [LinearOrder R] [FloorSemiring R] {a : R} {n : ℕ} (hn : n ≠ 0) :
@[simp]
theorem Nat.one_le_floor_iff {R : Type u_1} [Semiring R] [LinearOrder R] [FloorSemiring R] (x : R) :
theorem Nat.floor_lt' {R : Type u_1} [Semiring R] [LinearOrder R] [FloorSemiring R] {a : R} {n : ℕ} (hn : n ≠ 0) :
theorem Nat.pos_of_floor_pos {R : Type u_1} [Semiring R] [LinearOrder R] [FloorSemiring R] {a : R} (h : 0 < ⌊a⌋₊) :
theorem Nat.lt_of_lt_floor {R : Type u_1} [Semiring R] [LinearOrder R] [FloorSemiring R] {a : R} {n : ℕ} (h : n < ⌊a⌋₊) :
theorem Nat.floor_le_of_le {R : Type u_1} [Semiring R] [LinearOrder R] [FloorSemiring R] {a : R} {n : ℕ} (h : a ≤ ↑n) :
theorem Nat.floor_le_one_of_le_one {R : Type u_1} [Semiring R] [LinearOrder R] [FloorSemiring R] {a : R} (h : a ≤ 1) :
@[simp]
theorem Nat.floor_eq_on_Ico {R : Type u_1} [Semiring R] [LinearOrder R] [FloorSemiring R] (n : ℕ) (a : R) :
theorem Nat.floor_eq_on_Ico' {R : Type u_1} [Semiring R] [LinearOrder R] [FloorSemiring R] (n : ℕ) (a : R) :
@[simp]
theorem Nat.preimage_floor_of_ne_zero {R : Type u_1} [Semiring R] [LinearOrder R] [FloorSemiring R] {n : ℕ} (hn : n ≠ 0) :
theorem Nat.mul_cast_floor_div_cancel {R : Type u_1} [Semiring R] [LinearOrder R] [FloorSemiring R] [IsOrderedAddMonoid R] [AddLeftStrictMono R] {n : ℕ} (hn : n ≠ 0) (a : R) :
theorem Nat.cast_mul_floor_div_cancel {R : Type u_1} [Semiring R] [LinearOrder R] [FloorSemiring R] [IsOrderedAddMonoid R] [AddLeftStrictMono R] {n : ℕ} (hn : n ≠ 0) (a : R) :
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] (a : R) :
@[simp]
theorem Nat.ceil_intCast {R : Type u_2} [Ring R] [LinearOrder R] [IsOrderedAddMonoid R] [FloorSemiring R] (z : ℤ) :
@[simp]
@[simp]
@[simp]
@[simp]
theorem Nat.ceil_ofNat {R : Type u_1} [Semiring R] [LinearOrder R] [FloorSemiring R] (n : ℕ) [n.AtLeastTwo] :
theorem Nat.lt_of_ceil_lt {R : Type u_1} [Semiring R] [LinearOrder R] [FloorSemiring R] {a : R} {n : ℕ} (h : ⌈a⌉₊ < n) :
theorem Nat.le_of_ceil_le {R : Type u_1} [Semiring R] [LinearOrder R] [FloorSemiring R] {a : R} {n : ℕ} (h : ⌈a⌉₊ ≤ n) :
theorem Nat.floor_lt_ceil_of_lt_of_pos {R : Type u_1} [Semiring R] [LinearOrder R] [FloorSemiring 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} [IsOrderedAddMonoid R] [AddLeftStrictMono R] (ha : 0 ≤ a) (n : ℕ) :
theorem Nat.floor_add_one {R : Type u_1} [Semiring R] [LinearOrder R] [FloorSemiring R] {a : R} [IsOrderedAddMonoid R] [AddLeftStrictMono R] (ha : 0 ≤ a) :
theorem Nat.floor_add_ofNat {R : Type u_1} [Semiring R] [LinearOrder R] [FloorSemiring R] {a : R} [IsOrderedAddMonoid R] [AddLeftStrictMono R] (ha : 0 ≤ a) (n : ℕ) [n.AtLeastTwo] :
@[simp]
theorem Nat.floor_sub_natCast {R : Type u_1} [Semiring R] [LinearOrder R] [FloorSemiring R] [IsOrderedAddMonoid R] [AddLeftStrictMono R] [AddLeftReflectLE R] [Sub R] [OrderedSub R] [ExistsAddOfLE R] (a : R) (n : ℕ) :
@[simp]
theorem Nat.floor_sub_one {R : Type u_1} [Semiring R] [LinearOrder R] [FloorSemiring R] [IsOrderedAddMonoid R] [AddLeftStrictMono R] [AddLeftReflectLE 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] [IsOrderedAddMonoid R] [AddLeftStrictMono R] [AddLeftReflectLE 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} [IsOrderedAddMonoid R] [AddLeftStrictMono R] (ha : 0 ≤ a) (n : ℕ) :
theorem Nat.ceil_add_one {R : Type u_1} [Semiring R] [LinearOrder R] [FloorSemiring R] {a : R} [IsOrderedAddMonoid R] [AddLeftStrictMono R] (ha : 0 ≤ a) :
theorem Nat.ceil_add_ofNat {R : Type u_1} [Semiring R] [LinearOrder R] [FloorSemiring R] {a : R} [IsOrderedAddMonoid R] [AddLeftStrictMono 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} [IsOrderedAddMonoid R] [AddLeftStrictMono R] (ha : 0 ≤ a) :
theorem Nat.ceil_add_le {R : Type u_1} [Semiring R] [LinearOrder R] [FloorSemiring R] [IsOrderedAddMonoid R] (a b : R) :
@[simp]
theorem Nat.ceil_sub_natCast {R : Type u_1} [Semiring R] [LinearOrder R] [FloorSemiring R] [IsOrderedAddMonoid R] [AddLeftStrictMono R] [AddLeftReflectLE 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] [IsOrderedAddMonoid R] [AddLeftStrictMono R] [AddLeftReflectLE 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] [IsOrderedAddMonoid R] [AddLeftStrictMono R] [AddLeftReflectLE 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] [IsOrderedAddMonoid R] [FloorSemiring R] (a : R) :
theorem Nat.self_sub_floor_lt_one {R : Type u_1} [Ring R] [LinearOrder R] [IsOrderedAddMonoid R] [FloorSemiring R] (a : R) :
theorem Nat.zero_le_self_sub_floor {R : Type u_1} [Ring R] [LinearOrder R] [IsOrderedAddMonoid R] [FloorSemiring R] {a : R} (ha : 0 ≤ a) :
theorem Nat.abs_sub_floor_le {R : Type u_1} [Ring R] [LinearOrder R] [IsOrderedAddMonoid R] [FloorSemiring R] {a : R} (ha : 0 ≤ a) :
theorem Nat.abs_floor_sub_le {R : Type u_1} [Ring R] [LinearOrder R] [IsOrderedAddMonoid R] [FloorSemiring R] {a : R} (ha : 0 ≤ a) :
theorem Nat.abs_sub_ceil_le {R : Type u_1} [Ring R] [LinearOrder R] [IsOrderedAddMonoid R] [FloorSemiring R] {a : R} (ha : 0 ≤ a) :
theorem Nat.abs_ceil_sub_le {R : Type u_1} [Ring R] [LinearOrder R] [IsOrderedAddMonoid 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_2} [Semiring S] [LinearOrder S] [FloorSemiring S] {b : 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_2} [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_2} [Semiring S] [LinearOrder S] [FloorSemiring S] {F : Type u_3} [FunLike F R S] [RingHomClass F R 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_2} [Semiring S] [LinearOrder S] [FloorSemiring S] {F : Type u_3} [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.