ruc-ai4math/mathlib_handler_benchmark_410 huggingface dataset:
-- Nat.ceil_add_nat
theorem ceil_add_nat (ha : 0 ≤ a) (n : ℕ) : ⌈a + n⌉₊ = ⌈a⌉₊ + n 
Arguments: {α : Type u_2} [LinearOrderedSemiring α] [FloorSemiring α] {a : α} (ha : 0 ≤ a) (n : ℕ)
Goal: ⌈a + ↑n⌉₊ = ⌈a⌉₊ + n
-- Nat.ceil_add_one
theorem ceil_add_one (ha : 0 ≤ a) : ⌈a + 1⌉₊ = ⌈a⌉₊ + 1 
Arguments: {α : Type u_2} [LinearOrderedSemiring α] [FloorSemiring α] {a : α} (ha : 0 ≤ a)
Goal: ⌈a + 1⌉₊ = ⌈a⌉₊ + 1
-- Nat.ceil_add_ofNat
theorem ceil_add_ofNat (ha : 0 ≤ a) (n : ℕ) [n.AtLeastTwo] :
    ⌈a + (no_index (OfNat.ofNat n))⌉₊ = ⌈a⌉₊ + OfNat.ofNat n 
Arguments: {α : Type u_2} [LinearOrderedSemiring α] [FloorSemiring α] {a : α} (ha : 0 ≤ a) (n : ℕ) [n.AtLeastTwo]
Goal: ⌈a + OfNat.ofNat n⌉₊ = ⌈a⌉₊ + OfNat.ofNat n
-- Nat.ceil_lt_add_one
theorem ceil_lt_add_one (ha : 0 ≤ a) : (⌈a⌉₊ : α) < a + 1 
Arguments: {α : Type u_2} [LinearOrderedSemiring α] [FloorSemiring α] {a : α} (ha : 0 ≤ a)
Goal: ↑⌈a⌉₊ < a + 1
-- Nat.ceil_add_le
theorem ceil_add_le (a b : α) : ⌈a + b⌉₊ ≤ ⌈a⌉₊ + ⌈b⌉₊ 
Arguments: {α : Type u_2} [LinearOrderedSemiring α] [FloorSemiring α] (a b : α)
Goal: ⌈a + b⌉₊ ≤ ⌈a⌉₊ + ⌈b⌉₊
-- Nat.sub_one_lt_floor
theorem sub_one_lt_floor (a : α) : a - 1 < ⌊a⌋₊ 
Arguments: {α : Type u_2} [LinearOrderedRing α] [FloorSemiring α] (a : α)
Goal: a - 1 < ↑⌊a⌋₊
-- Nat.floor_div_nat
theorem floor_div_nat (a : α) (n : ℕ) : ⌊a / n⌋₊ = ⌊a⌋₊ / n 
Arguments: {α : Type u_2} [LinearOrderedSemifield α] [FloorSemiring α] (a : α) (n : ℕ)
Goal: ⌊a / ↑n⌋₊ = ⌊a⌋₊ / n
-- Nat.floor_div_ofNat
theorem floor_div_ofNat (a : α) (n : ℕ) [n.AtLeastTwo] :
    ⌊a / (no_index (OfNat.ofNat n))⌋₊ = ⌊a⌋₊ / OfNat.ofNat n 
Arguments: {α : Type u_2} [LinearOrderedSemifield α] [FloorSemiring α] (a : α) (n : ℕ) [n.AtLeastTwo]
Goal: ⌊a / OfNat.ofNat n⌋₊ = ⌊a⌋₊ / OfNat.ofNat n
-- Nat.floor_div_eq_div
theorem floor_div_eq_div (m n : ℕ) : ⌊(m : α) / n⌋₊ = m / n 
Arguments: {α : Type u_2} [LinearOrderedSemifield α] [FloorSemiring α] (m n : ℕ)
Goal: ⌊↑m / ↑n⌋₊ = m / n
-- subsingleton_floorSemiring
theorem subsingleton_floorSemiring {α} [LinearOrderedSemiring α] :
    Subsingleton (FloorSemiring α) 
Arguments: {α : Type u_4} [LinearOrderedSemiring α]
Goal: Subsingleton (FloorSemiring α)
-- FloorRing.gc_ceil_coe
class FloorRing (α) [LinearOrderedRing α] where
    floor : α → ℤ
    ceil : α → ℤ
    gc_coe_floor : GaloisConnection (↑) floor
    gc_ceil_coe : GaloisConnection ceil (↑)
Arguments: {α : Type u_4} [LinearOrderedRing α] [self : FloorRing α]
Goal: GaloisConnection FloorRing.ceil Int.cast
-- FloorRing.gc_coe_floor
class FloorRing (α) [LinearOrderedRing α] where
    floor : α → ℤ
    ceil : α → ℤ
    gc_coe_floor : GaloisConnection (↑) floor
    gc_ceil_coe : GaloisConnection ceil (↑)
Arguments: {α : Type u_4} [LinearOrderedRing α] [self : FloorRing α]
Goal: GaloisConnection Int.cast FloorRing.floor
-- Int.floor_int
@[simp]
theorem floor_int : (Int.floor : ℤ → ℤ) = id 
Goal: Int.floor = id
-- Int.ceil_int
@[simp]
theorem ceil_int : (Int.ceil : ℤ → ℤ) = id 
Goal: Int.ceil = id
-- Int.fract_int
@[simp]
theorem fract_int : (Int.fract : ℤ → ℤ) = 0 
Goal: Int.fract = 0
-- Int.floorRing_floor_eq
@[simp]
theorem floorRing_floor_eq : @FloorRing.floor = @Int.floor 
Goal: @FloorRing.floor = @Int.floor
-- Int.floorRing_ceil_eq
@[simp]
theorem floorRing_ceil_eq : @FloorRing.ceil = @Int.ceil 
Goal: @FloorRing.ceil = @Int.ceil
-- Int.gc_coe_floor
theorem gc_coe_floor : GaloisConnection ((↑) : ℤ → α) floor 
Arguments: {α : Type u_2} [LinearOrderedRing α] [FloorRing α]
Goal: GaloisConnection Int.cast Int.floor
-- Int.le_floor
theorem le_floor : z ≤ ⌊a⌋ ↔ (z : α) ≤ a 
Arguments: {α : Type u_2} [LinearOrderedRing α] [FloorRing α] {z : ℤ} {a : α}
Goal: z ≤ ⌊a⌋ ↔ ↑z ≤ a
-- Int.floor_lt
theorem floor_lt : ⌊a⌋ < z ↔ a < z 
Arguments: {α : Type u_2} [LinearOrderedRing α] [FloorRing α] {z : ℤ} {a : α}
Goal: ⌊a⌋ < z ↔ a < ↑z
-- Int.floor_le
theorem floor_le (a : α) : (⌊a⌋ : α) ≤ a 
Arguments: {α : Type u_2} [LinearOrderedRing α] [FloorRing α] (a : α)
Goal: ↑⌊a⌋ ≤ a
-- Int.floor_nonneg
theorem floor_nonneg : 0 ≤ ⌊a⌋ ↔ 0 ≤ a 
Arguments: {α : Type u_2} [LinearOrderedRing α] [FloorRing α] {a : α}
Goal: 0 ≤ ⌊a⌋ ↔ 0 ≤ a
-- Int.floor_le_sub_one_iff
@[simp]
theorem floor_le_sub_one_iff : ⌊a⌋ ≤ z - 1 ↔ a < z 
Arguments: {α : Type u_2} [LinearOrderedRing α] [FloorRing α] {z : ℤ} {a : α}
Goal: ⌊a⌋ ≤ z - 1 ↔ a < ↑z
-- Int.floor_le_neg_one_iff
@[simp]
theorem floor_le_neg_one_iff : ⌊a⌋ ≤ -1 ↔ a < 0 
Arguments: {α : Type u_2} [LinearOrderedRing α] [FloorRing α] {a : α}
Goal: ⌊a⌋ ≤ -1 ↔ a < 0
-- Int.floor_nonpos
theorem floor_nonpos (ha : a ≤ 0) : ⌊a⌋ ≤ 0 
Arguments: {α : Type u_2} [LinearOrderedRing α] [FloorRing α] {a : α} (ha : a ≤ 0)
Goal: ⌊a⌋ ≤ 0
-- Int.lt_succ_floor
theorem lt_succ_floor (a : α) : a < ⌊a⌋.succ 
Arguments: {α : Type u_2} [LinearOrderedRing α] [FloorRing α] (a : α)
Goal: a < ↑⌊a⌋.succ
-- Int.lt_floor_add_one
@[simp]
theorem lt_floor_add_one (a : α) : a < ⌊a⌋ + 1 
Arguments: {α : Type u_2} [LinearOrderedRing α] [FloorRing α] (a : α)
Goal: a < ↑⌊a⌋ + 1
-- Int.sub_one_lt_floor
@[simp]
theorem sub_one_lt_floor (a : α) : a - 1 < ⌊a⌋ 
Arguments: {α : Type u_2} [LinearOrderedRing α] [FloorRing α] (a : α)
Goal: a - 1 < ↑⌊a⌋
-- Int.floor_intCast
@[simp]
theorem floor_intCast (z : ℤ) : ⌊(z : α)⌋ = z 
Arguments: {α : Type u_2} [LinearOrderedRing α] [FloorRing α] (z : ℤ)
Goal: ⌊↑z⌋ = z
-- Int.floor_natCast
@[simp]
theorem floor_natCast (n : ℕ) : ⌊(n : α)⌋ = n 
Arguments: {α : Type u_2} [LinearOrderedRing α] [FloorRing α] (n : ℕ)
Goal: ⌊↑n⌋ = ↑n
-- Int.floor_zero
@[simp]
theorem floor_zero : ⌊(0 : α)⌋ = 0 
Arguments: {α : Type u_2} [LinearOrderedRing α] [FloorRing α]
Goal: ⌊0⌋ = 0
-- Int.floor_one
@[simp]
theorem floor_one : ⌊(1 : α)⌋ = 1 
Arguments: {α : Type u_2} [LinearOrderedRing α] [FloorRing α]
Goal: ⌊1⌋ = 1
-- Int.floor_ofNat
@[simp] theorem floor_ofNat (n : ℕ) [n.AtLeastTwo] : ⌊(no_index (OfNat.ofNat n : α))⌋ = n 
Arguments: {α : Type u_2} [LinearOrderedRing α] [FloorRing α] (n : ℕ) [n.AtLeastTwo]
Goal: ⌊OfNat.ofNat n⌋ = ↑n
-- Int.floor_mono
@[mono]
theorem floor_mono : Monotone (floor : α → ℤ) 
Arguments: {α : Type u_2} [LinearOrderedRing α] [FloorRing α]
Goal: Monotone Int.floor
-- Int.floor_le_floor
@[gcongr]
theorem floor_le_floor : ∀ x y : α, x ≤ y → ⌊x⌋ ≤ ⌊y⌋ 
Arguments: {α : Type u_2} [LinearOrderedRing α] [FloorRing α] (x y : α)
Goal: x ≤ y → ⌊x⌋ ≤ ⌊y⌋
-- Int.floor_pos
theorem floor_pos : 0 < ⌊a⌋ ↔ 1 ≤ a 
Arguments: {α : Type u_2} [LinearOrderedRing α] [FloorRing α] {a : α}
Goal: 0 < ⌊a⌋ ↔ 1 ≤ a
-- Int.floor_add_int
@[simp]
theorem floor_add_int (a : α) (z : ℤ) : ⌊a + z⌋ = ⌊a⌋ + z 
Arguments: {α : Type u_2} [LinearOrderedRing α] [FloorRing α] (a : α) (z : ℤ)
Goal: ⌊a + ↑z⌋ = ⌊a⌋ + z
-- Int.floor_add_one
@[simp]
theorem floor_add_one (a : α) : ⌊a + 1⌋ = ⌊a⌋ + 1 
Arguments: {α : Type u_2} [LinearOrderedRing α] [FloorRing α] (a : α)
Goal: ⌊a + 1⌋ = ⌊a⌋ + 1
-- Int.le_floor_add
theorem le_floor_add (a b : α) : ⌊a⌋ + ⌊b⌋ ≤ ⌊a + b⌋ 
Arguments: {α : Type u_2} [LinearOrderedRing α] [FloorRing α] (a b : α)
Goal: ⌊a⌋ + ⌊b⌋ ≤ ⌊a + b⌋
-- Int.le_floor_add_floor
theorem le_floor_add_floor (a b : α) : ⌊a + b⌋ - 1 ≤ ⌊a⌋ + ⌊b⌋ 
Arguments: {α : Type u_2} [LinearOrderedRing α] [FloorRing α] (a b : α)
Goal: ⌊a + b⌋ - 1 ≤ ⌊a⌋ + ⌊b⌋
-- Int.floor_int_add
@[simp]
theorem floor_int_add (z : ℤ) (a : α) : ⌊↑z + a⌋ = z + ⌊a⌋ 
Arguments: {α : Type u_2} [LinearOrderedRing α] [FloorRing α] (z : ℤ) (a : α)
Goal: ⌊↑z + a⌋ = z + ⌊a⌋
-- Int.floor_add_nat
@[simp]
theorem floor_add_nat (a : α) (n : ℕ) : ⌊a + n⌋ = ⌊a⌋ + n 
Arguments: {α : Type u_2} [LinearOrderedRing α] [FloorRing α] (a : α) (n : ℕ)
Goal: ⌊a + ↑n⌋ = ⌊a⌋ + ↑n
-- Int.floor_add_ofNat
@[simp]
theorem floor_add_ofNat (a : α) (n : ℕ) [n.AtLeastTwo] :
    ⌊a + (no_index (OfNat.ofNat n))⌋ = ⌊a⌋ + OfNat.ofNat n 
Arguments: {α : Type u_2} [LinearOrderedRing α] [FloorRing α] (a : α) (n : ℕ) [n.AtLeastTwo]
Goal: ⌊a + OfNat.ofNat n⌋ = ⌊a⌋ + OfNat.ofNat n
-- Int.floor_nat_add
@[simp]
theorem floor_nat_add (n : ℕ) (a : α) : ⌊↑n + a⌋ = n + ⌊a⌋ 
Arguments: {α : Type u_2} [LinearOrderedRing α] [FloorRing α] (n : ℕ) (a : α)
Goal: ⌊↑n + a⌋ = ↑n + ⌊a⌋
-- Int.floor_ofNat_add
@[simp]
theorem floor_ofNat_add (n : ℕ) [n.AtLeastTwo] (a : α) :
    ⌊(no_index (OfNat.ofNat n)) + a⌋ = OfNat.ofNat n + ⌊a⌋ 
Arguments: {α : Type u_2} [LinearOrderedRing α] [FloorRing α] (n : ℕ) [n.AtLeastTwo] (a : α)
Goal: ⌊OfNat.ofNat n + a⌋ = OfNat.ofNat n + ⌊a⌋
-- Int.floor_sub_int
@[simp]
theorem floor_sub_int (a : α) (z : ℤ) : ⌊a - z⌋ = ⌊a⌋ - z 
Arguments: {α : Type u_2} [LinearOrderedRing α] [FloorRing α] (a : α) (z : ℤ)
Goal: ⌊a - ↑z⌋ = ⌊a⌋ - z
-- Int.floor_sub_nat
@[simp]
theorem floor_sub_nat (a : α) (n : ℕ) : ⌊a - n⌋ = ⌊a⌋ - n 
Arguments: {α : Type u_2} [LinearOrderedRing α] [FloorRing α] (a : α) (n : ℕ)
Goal: ⌊a - ↑n⌋ = ⌊a⌋ - ↑n
-- Int.floor_sub_one
@[simp] theorem floor_sub_one (a : α) : ⌊a - 1⌋ = ⌊a⌋ - 1 
Arguments: {α : Type u_2} [LinearOrderedRing α] [FloorRing α] (a : α)
Goal: ⌊a - 1⌋ = ⌊a⌋ - 1
-- Int.floor_sub_ofNat
@[simp]
theorem floor_sub_ofNat (a : α) (n : ℕ) [n.AtLeastTwo] :
    ⌊a - (no_index (OfNat.ofNat n))⌋ = ⌊a⌋ - OfNat.ofNat n 
Arguments: {α : Type u_2} [LinearOrderedRing α] [FloorRing α] (a : α) (n : ℕ) [n.AtLeastTwo]
Goal: ⌊a - OfNat.ofNat n⌋ = ⌊a⌋ - OfNat.ofNat n
-- Int.abs_sub_lt_one_of_floor_eq_floor
theorem abs_sub_lt_one_of_floor_eq_floor {α : Type*} [LinearOrderedCommRing α] [FloorRing α]
    {a b : α} (h : ⌊a⌋ = ⌊b⌋) : |a - b| < 1 
Arguments: {α : Type u_4} [LinearOrderedCommRing α] [FloorRing α] {a b : α} (h : ⌊a⌋ = ⌊b⌋)
Goal: |a - b| < 1
-- Int.floor_eq_iff
theorem floor_eq_iff : ⌊a⌋ = z ↔ ↑z ≤ a ∧ a < z + 1 
Arguments: {α : Type u_2} [LinearOrderedRing α] [FloorRing α] {z : ℤ} {a : α}
Goal: ⌊a⌋ = z ↔ ↑z ≤ a ∧ a < ↑z + 1
-- Int.floor_eq_zero_iff
@[simp]
theorem floor_eq_zero_iff : ⌊a⌋ = 0 ↔ a ∈ Ico (0 : α) 1 
Arguments: {α : Type u_2} [LinearOrderedRing α] [FloorRing α] {a : α}
Goal: ⌊a⌋ = 0 ↔ a ∈ Set.Ico 0 1
-- Int.floor_eq_on_Ico
theorem floor_eq_on_Ico (n : ℤ) : ∀ a ∈ Set.Ico (n : α) (n + 1), ⌊a⌋ = n 
Arguments: {α : Type u_2} [LinearOrderedRing α] [FloorRing α] (n : ℤ) (a : α)
Goal: a ∈ Set.Ico (↑n) (↑n + 1) → ⌊a⌋ = n
-- Int.floor_eq_on_Ico'
theorem floor_eq_on_Ico' (n : ℤ) : ∀ a ∈ Set.Ico (n : α) (n + 1), (⌊a⌋ : α) = n 
Arguments: {α : Type u_2} [LinearOrderedRing α] [FloorRing α] (n : ℤ) (a : α)
Goal: a ∈ Set.Ico (↑n) (↑n + 1) → ↑⌊a⌋ = ↑n
-- Int.preimage_floor_singleton
@[simp]
theorem preimage_floor_singleton (m : ℤ) : (floor : α → ℤ) ⁻¹' {m} = Ico (m : α) (m + 1) 
Arguments: {α : Type u_2} [LinearOrderedRing α] [FloorRing α] (m : ℤ)
Goal: Int.floor ⁻¹' {m} = Set.Ico (↑m) (↑m + 1)
-- Int.self_sub_floor
@[simp]
theorem self_sub_floor (a : α) : a - ⌊a⌋ = fract a 
Arguments: {α : Type u_2} [LinearOrderedRing α] [FloorRing α] (a : α)
Goal: a - ↑⌊a⌋ = Int.fract a
-- Int.floor_add_fract
@[simp]
theorem floor_add_fract (a : α) : (⌊a⌋ : α) + fract a = a 
Arguments: {α : Type u_2} [LinearOrderedRing α] [FloorRing α] (a : α)
Goal: ↑⌊a⌋ + Int.fract a = a
-- Int.fract_add_floor
@[simp]
theorem fract_add_floor (a : α) : fract a + ⌊a⌋ = a 
Arguments: {α : Type u_2} [LinearOrderedRing α] [FloorRing α] (a : α)
Goal: Int.fract a + ↑⌊a⌋ = a
-- Int.fract_add_int
@[simp]
theorem fract_add_int (a : α) (m : ℤ) : fract (a + m) = fract a 
Arguments: {α : Type u_2} [LinearOrderedRing α] [FloorRing α] (a : α) (m : ℤ)
Goal: Int.fract (a + ↑m) = Int.fract a
-- Int.fract_add_nat
@[simp]
theorem fract_add_nat (a : α) (m : ℕ) : fract (a + m) = fract a 
Arguments: {α : Type u_2} [LinearOrderedRing α] [FloorRing α] (a : α) (m : ℕ)
Goal: Int.fract (a + ↑m) = Int.fract a
-- Int.fract_add_one
@[simp]
theorem fract_add_one (a : α) : fract (a + 1) = fract a 
Arguments: {α : Type u_2} [LinearOrderedRing α] [FloorRing α] (a : α)
Goal: Int.fract (a + 1) = Int.fract a
-- Int.fract_add_ofNat
@[simp]
theorem fract_add_ofNat (a : α) (n : ℕ) [n.AtLeastTwo] :
    fract (a + (no_index (OfNat.ofNat n))) = fract a 
Arguments: {α : Type u_2} [LinearOrderedRing α] [FloorRing α] (a : α) (n : ℕ) [n.AtLeastTwo]
Goal: Int.fract (a + OfNat.ofNat n) = Int.fract a
-- Int.fract_int_add
@[simp]
theorem fract_int_add (m : ℤ) (a : α) : fract (↑m + a) = fract a 
Arguments: {α : Type u_2} [LinearOrderedRing α] [FloorRing α] (m : ℤ) (a : α)
Goal: Int.fract (↑m + a) = Int.fract a
-- Int.fract_nat_add
@[simp]
theorem fract_nat_add (n : ℕ) (a : α) : fract (↑n + a) = fract a 
Arguments: {α : Type u_2} [LinearOrderedRing α] [FloorRing α] (n : ℕ) (a : α)
Goal: Int.fract (↑n + a) = Int.fract a
-- Int.fract_one_add
@[simp]
theorem fract_one_add (a : α) : fract (1 + a) = fract a 
Arguments: {α : Type u_2} [LinearOrderedRing α] [FloorRing α] (a : α)
Goal: Int.fract (1 + a) = Int.fract a
-- Int.fract_ofNat_add
@[simp]
theorem fract_ofNat_add (n : ℕ) [n.AtLeastTwo] (a : α) :
    fract ((no_index (OfNat.ofNat n)) + a) = fract a 
Arguments: {α : Type u_2} [LinearOrderedRing α] [FloorRing α] (n : ℕ) [n.AtLeastTwo] (a : α)
Goal: Int.fract (OfNat.ofNat n + a) = Int.fract a
-- Int.fract_sub_int
@[simp]
theorem fract_sub_int (a : α) (m : ℤ) : fract (a - m) = fract a 
Arguments: {α : Type u_2} [LinearOrderedRing α] [FloorRing α] (a : α) (m : ℤ)
Goal: Int.fract (a - ↑m) = Int.fract a
-- Int.fract_sub_nat
@[simp]
theorem fract_sub_nat (a : α) (n : ℕ) : fract (a - n) = fract a 
Arguments: {α : Type u_2} [LinearOrderedRing α] [FloorRing α] (a : α) (n : ℕ)
Goal: Int.fract (a - ↑n) = Int.fract a
-- Int.fract_sub_one
@[simp]
theorem fract_sub_one (a : α) : fract (a - 1) = fract a 
Arguments: {α : Type u_2} [LinearOrderedRing α] [FloorRing α] (a : α)
Goal: Int.fract (a - 1) = Int.fract a
-- Int.fract_sub_ofNat
@[simp]
theorem fract_sub_ofNat (a : α) (n : ℕ) [n.AtLeastTwo] :
    fract (a - (no_index (OfNat.ofNat n))) = fract a 
Arguments: {α : Type u_2} [LinearOrderedRing α] [FloorRing α] (a : α) (n : ℕ) [n.AtLeastTwo]
Goal: Int.fract (a - OfNat.ofNat n) = Int.fract a
-- Int.fract_add_le
theorem fract_add_le (a b : α) : fract (a + b) ≤ fract a + fract b 
Arguments: {α : Type u_2} [LinearOrderedRing α] [FloorRing α] (a b : α)
Goal: Int.fract (a + b) ≤ Int.fract a + Int.fract b
-- Int.fract_add_fract_le
theorem fract_add_fract_le (a b : α) : fract a + fract b ≤ fract (a + b) + 1 
Arguments: {α : Type u_2} [LinearOrderedRing α] [FloorRing α] (a b : α)
Goal: Int.fract a + Int.fract b ≤ Int.fract (a + b) + 1
-- Int.self_sub_fract
@[simp]
theorem self_sub_fract (a : α) : a - fract a = ⌊a⌋ 
Arguments: {α : Type u_2} [LinearOrderedRing α] [FloorRing α] (a : α)
Goal: a - Int.fract a = ↑⌊a⌋
-- Int.fract_sub_self
@[simp]
theorem fract_sub_self (a : α) : fract a - a = -⌊a⌋ 
Arguments: {α : Type u_2} [LinearOrderedRing α] [FloorRing α] (a : α)
Goal: Int.fract a - a = -↑⌊a⌋
-- Int.fract_nonneg
@[simp]
theorem fract_nonneg (a : α) : 0 ≤ fract a 
Arguments: {α : Type u_2} [LinearOrderedRing α] [FloorRing α] (a : α)
Goal: 0 ≤ Int.fract a
-- Int.fract_pos
lemma fract_pos : 0 < fract a ↔ a ≠ ⌊a⌋ 
Arguments: {α : Type u_2} [LinearOrderedRing α] [FloorRing α] {a : α}
Goal: 0 < Int.fract a ↔ a ≠ ↑⌊a⌋
-- Int.fract_lt_one
theorem fract_lt_one (a : α) : fract a < 1 
Arguments: {α : Type u_2} [LinearOrderedRing α] [FloorRing α] (a : α)
Goal: Int.fract a < 1
-- Int.fract_zero
@[simp]
theorem fract_zero : fract (0 : α) = 0 
Arguments: {α : Type u_2} [LinearOrderedRing α] [FloorRing α]
Goal: Int.fract 0 = 0
-- Int.fract_one
@[simp]
theorem fract_one : fract (1 : α) = 0 
Arguments: {α : Type u_2} [LinearOrderedRing α] [FloorRing α]
Goal: Int.fract 1 = 0
-- Int.abs_fract
theorem abs_fract : |fract a| = fract a 
Arguments: {α : Type u_2} [LinearOrderedRing α] [FloorRing α] {a : α}
Goal: |Int.fract a| = Int.fract a
-- Int.abs_one_sub_fract
@[simp]
theorem abs_one_sub_fract : |1 - fract a| = 1 - fract a 
Arguments: {α : Type u_2} [LinearOrderedRing α] [FloorRing α] {a : α}
Goal: |1 - Int.fract a| = 1 - Int.fract a
-- Int.fract_intCast
@[simp]
theorem fract_intCast (z : ℤ) : fract (z : α) = 0 
Arguments: {α : Type u_2} [LinearOrderedRing α] [FloorRing α] (z : ℤ)
Goal: Int.fract ↑z = 0
-- Int.fract_natCast
@[simp]
theorem fract_natCast (n : ℕ) : fract (n : α) = 0 
Arguments: {α : Type u_2} [LinearOrderedRing α] [FloorRing α] (n : ℕ)
Goal: Int.fract ↑n = 0
-- Int.fract_ofNat
@[simp]
theorem fract_ofNat (n : ℕ) [n.AtLeastTwo] :
    fract ((no_index (OfNat.ofNat n)) : α) = 0 
Arguments: {α : Type u_2} [LinearOrderedRing α] [FloorRing α] (n : ℕ) [n.AtLeastTwo]
Goal: Int.fract (OfNat.ofNat n) = 0
-- Int.fract_floor
theorem fract_floor (a : α) : fract (⌊a⌋ : α) = 0 
Arguments: {α : Type u_2} [LinearOrderedRing α] [FloorRing α] (a : α)
Goal: Int.fract ↑⌊a⌋ = 0
-- Int.floor_fract
@[simp]
theorem floor_fract (a : α) : ⌊fract a⌋ = 0 
Arguments: {α : Type u_2} [LinearOrderedRing α] [FloorRing α] (a : α)
Goal: ⌊Int.fract a⌋ = 0
-- Int.fract_eq_iff
theorem fract_eq_iff {a b : α} : fract a = b ↔ 0 ≤ b ∧ b < 1 ∧ ∃ z : ℤ, a - b = z 
Arguments: {α : Type u_2} [LinearOrderedRing α] [FloorRing α] {a b : α}
Goal: Int.fract a = b ↔ 0 ≤ b ∧ b < 1 ∧ ∃ z, a - b = ↑z
-- Int.fract_eq_fract
theorem fract_eq_fract {a b : α} : fract a = fract b ↔ ∃ z : ℤ, a - b = z 
Arguments: {α : Type u_2} [LinearOrderedRing α] [FloorRing α] {a b : α}
Goal: Int.fract a = Int.fract b ↔ ∃ z, a - b = ↑z
-- Int.fract_eq_self
@[simp]
theorem fract_eq_self {a : α} : fract a = a ↔ 0 ≤ a ∧ a < 1 
Arguments: {α : Type u_2} [LinearOrderedRing α] [FloorRing α] {a : α}
Goal: Int.fract a = a ↔ 0 ≤ a ∧ a < 1
-- Int.fract_fract
@[simp]
theorem fract_fract (a : α) : fract (fract a) = fract a 
Arguments: {α : Type u_2} [LinearOrderedRing α] [FloorRing α] (a : α)
Goal: Int.fract (Int.fract a) = Int.fract a
-- Int.fract_add
theorem fract_add (a b : α) : ∃ z : ℤ, fract (a + b) - fract a - fract b = z 
Arguments: {α : Type u_2} [LinearOrderedRing α] [FloorRing α] (a b : α)
Goal: ∃ z, Int.fract (a + b) - Int.fract a - Int.fract b = ↑z
-- Int.fract_neg
theorem fract_neg {x : α} (hx : fract x ≠ 0) : fract (-x) = 1 - fract x 
Arguments: {α : Type u_2} [LinearOrderedRing α] [FloorRing α] {x : α} (hx : Int.fract x ≠ 0)
Goal: Int.fract (-x) = 1 - Int.fract x
-- Int.fract_neg_eq_zero
@[simp]
theorem fract_neg_eq_zero {x : α} : fract (-x) = 0 ↔ fract x = 0 
Arguments: {α : Type u_2} [LinearOrderedRing α] [FloorRing α] {x : α}
Goal: Int.fract (-x) = 0 ↔ Int.fract x = 0
-- Int.fract_mul_nat
theorem fract_mul_nat (a : α) (b : ℕ) : ∃ z : ℤ, fract a * b - fract (a * b) = z 
Arguments: {α : Type u_2} [LinearOrderedRing α] [FloorRing α] (a : α) (b : ℕ)
Goal: ∃ z, Int.fract a * ↑b - Int.fract (a * ↑b) = ↑z
-- Int.preimage_fract
theorem preimage_fract (s : Set α) :
    fract ⁻¹' s = ⋃ m : ℤ, (fun x => x - (m : α)) ⁻¹' (s ∩ Ico (0 : α) 1) 
Arguments: {α : Type u_2} [LinearOrderedRing α] [FloorRing α] (s : Set α)
Goal: Int.fract ⁻¹' s = ⋃ m, (fun x => x - ↑m) ⁻¹' (s ∩ Set.Ico 0 1)
-- Int.image_fract
theorem image_fract (s : Set α) : fract '' s = ⋃ m : ℤ, (fun x : α => x - m) '' s ∩ Ico 0 1 
Arguments: {α : Type u_2} [LinearOrderedRing α] [FloorRing α] (s : Set α)
Goal: Int.fract '' s = ⋃ m, (fun x => x - ↑m) '' s ∩ Set.Ico 0 1
-- Int.fract_div_mul_self_mem_Ico
theorem fract_div_mul_self_mem_Ico (a b : k) (ha : 0 < a) : fract (b / a) * a ∈ Ico 0 a 
Arguments: {k : Type u_4} [LinearOrderedField k] [FloorRing k] (a b : k) (ha : 0 < a)
Goal: Int.fract (b / a) * a ∈ Set.Ico 0 a
-- Int.fract_div_mul_self_add_zsmul_eq
theorem fract_div_mul_self_add_zsmul_eq (a b : k) (ha : a ≠ 0) :
    fract (b / a) * a + ⌊b / a⌋ • a = b 
Arguments: {k : Type u_4} [LinearOrderedField k] [FloorRing k] (a b : k) (ha : a ≠ 0)
Goal: Int.fract (b / a) * a + ⌊b / a⌋ • a = b
-- Int.sub_floor_div_mul_nonneg
theorem sub_floor_div_mul_nonneg (a : k) (hb : 0 < b) : 0 ≤ a - ⌊a / b⌋ * b 
Arguments: {k : Type u_4} [LinearOrderedField k] [FloorRing k] {b : k} (a : k) (hb : 0 < b)
Goal: 0 ≤ a - ↑⌊a / b⌋ * b
-- Int.sub_floor_div_mul_lt
theorem sub_floor_div_mul_lt (a : k) (hb : 0 < b) : a - ⌊a / b⌋ * b < b 
Arguments: {k : Type u_4} [LinearOrderedField k] [FloorRing k] {b : k} (a : k) (hb : 0 < b)
Goal: a - ↑⌊a / b⌋ * b < b
-- Int.fract_div_natCast_eq_div_natCast_mod
theorem fract_div_natCast_eq_div_natCast_mod {m n : ℕ} : fract ((m : k) / n) = ↑(m % n) / n 
Arguments: {k : Type u_4} [LinearOrderedField k] [FloorRing k] {m n : ℕ}
Goal: Int.fract (↑m / ↑n) = ↑(m % n) / ↑n
-- Int.fract_div_intCast_eq_div_intCast_mod
theorem fract_div_intCast_eq_div_intCast_mod {m : ℤ} {n : ℕ} :
    fract ((m : k) / n) = ↑(m % n) / n 
Arguments: {k : Type u_4} [LinearOrderedField k] [FloorRing k] {m : ℤ} {n : ℕ}
Goal: Int.fract (↑m / ↑n) = ↑(m % ↑n) / ↑n
-- Int.gc_ceil_coe
theorem gc_ceil_coe : GaloisConnection ceil ((↑) : ℤ → α) 
Arguments: {α : Type u_2} [LinearOrderedRing α] [FloorRing α]
Goal: GaloisConnection Int.ceil Int.cast
-- Int.ceil_le
theorem ceil_le : ⌈a⌉ ≤ z ↔ a ≤ z 
Arguments: {α : Type u_2} [LinearOrderedRing α] [FloorRing α] {z : ℤ} {a : α}
Goal: ⌈a⌉ ≤ z ↔ a ≤ ↑z
-- Int.floor_neg
theorem floor_neg : ⌊-a⌋ = -⌈a⌉ 
Arguments: {α : Type u_2} [LinearOrderedRing α] [FloorRing α] {a : α}
Goal: ⌊-a⌋ = -⌈a⌉
-- Int.ceil_neg
theorem ceil_neg : ⌈-a⌉ = -⌊a⌋ 
Arguments: {α : Type u_2} [LinearOrderedRing α] [FloorRing α] {a : α}
Goal: ⌈-a⌉ = -⌊a⌋
-- Int.lt_ceil
theorem lt_ceil : z < ⌈a⌉ ↔ (z : α) < a 
Arguments: {α : Type u_2} [LinearOrderedRing α] [FloorRing α] {z : ℤ} {a : α}
Goal: z < ⌈a⌉ ↔ ↑z < a
-- Int.add_one_le_ceil_iff
@[simp]
theorem add_one_le_ceil_iff : z + 1 ≤ ⌈a⌉ ↔ (z : α) < a 
Arguments: {α : Type u_2} [LinearOrderedRing α] [FloorRing α] {z : ℤ} {a : α}
Goal: z + 1 ≤ ⌈a⌉ ↔ ↑z < a
-- Int.one_le_ceil_iff
@[simp]
theorem one_le_ceil_iff : 1 ≤ ⌈a⌉ ↔ 0 < a 
Arguments: {α : Type u_2} [LinearOrderedRing α] [FloorRing α] {a : α}
Goal: 1 ≤ ⌈a⌉ ↔ 0 < a
-- Int.ceil_le_floor_add_one
theorem ceil_le_floor_add_one (a : α) : ⌈a⌉ ≤ ⌊a⌋ + 1 
Arguments: {α : Type u_2} [LinearOrderedRing α] [FloorRing α] (a : α)
Goal: ⌈a⌉ ≤ ⌊a⌋ + 1
-- Int.le_ceil
theorem le_ceil (a : α) : a ≤ ⌈a⌉ 
Arguments: {α : Type u_2} [LinearOrderedRing α] [FloorRing α] (a : α)
Goal: a ≤ ↑⌈a⌉
-- Int.ceil_intCast
@[simp]
theorem ceil_intCast (z : ℤ) : ⌈(z : α)⌉ = z 
Arguments: {α : Type u_2} [LinearOrderedRing α] [FloorRing α] (z : ℤ)
Goal: ⌈↑z⌉ = z
-- Int.ceil_natCast
@[simp]
theorem ceil_natCast (n : ℕ) : ⌈(n : α)⌉ = n 
Arguments: {α : Type u_2} [LinearOrderedRing α] [FloorRing α] (n : ℕ)
Goal: ⌈↑n⌉ = ↑n
-- Int.ceil_ofNat
@[simp]
theorem ceil_ofNat (n : ℕ) [n.AtLeastTwo] : ⌈(no_index (OfNat.ofNat n : α))⌉ = n 
Arguments: {α : Type u_2} [LinearOrderedRing α] [FloorRing α] (n : ℕ) [n.AtLeastTwo]
Goal: ⌈OfNat.ofNat n⌉ = ↑n
-- Int.ceil_mono
theorem ceil_mono : Monotone (ceil : α → ℤ) 
Arguments: {α : Type u_2} [LinearOrderedRing α] [FloorRing α]
Goal: Monotone Int.ceil
-- Int.ceil_le_ceil
@[gcongr]
theorem ceil_le_ceil : ∀ x y : α, x ≤ y → ⌈x⌉ ≤ ⌈y⌉ 
Arguments: {α : Type u_2} [LinearOrderedRing α] [FloorRing α] (x y : α)
Goal: x ≤ y → ⌈x⌉ ≤ ⌈y⌉
-- Int.ceil_add_int
@[simp]
theorem ceil_add_int (a : α) (z : ℤ) : ⌈a + z⌉ = ⌈a⌉ + z 
Arguments: {α : Type u_2} [LinearOrderedRing α] [FloorRing α] (a : α) (z : ℤ)
Goal: ⌈a + ↑z⌉ = ⌈a⌉ + z
-- Int.ceil_add_nat
@[simp]
theorem ceil_add_nat (a : α) (n : ℕ) : ⌈a + n⌉ = ⌈a⌉ + n 
Arguments: {α : Type u_2} [LinearOrderedRing α] [FloorRing α] (a : α) (n : ℕ)
Goal: ⌈a + ↑n⌉ = ⌈a⌉ + ↑n
-- Int.ceil_add_one
@[simp]
theorem ceil_add_one (a : α) : ⌈a + 1⌉ = ⌈a⌉ + 1 
Arguments: {α : Type u_2} [LinearOrderedRing α] [FloorRing α] (a : α)
Goal: ⌈a + 1⌉ = ⌈a⌉ + 1
-- Int.ceil_add_ofNat
@[simp]
theorem ceil_add_ofNat (a : α) (n : ℕ) [n.AtLeastTwo] :
    ⌈a + (no_index (OfNat.ofNat n))⌉ = ⌈a⌉ + OfNat.ofNat n 
Arguments: {α : Type u_2} [LinearOrderedRing α] [FloorRing α] (a : α) (n : ℕ) [n.AtLeastTwo]
Goal: ⌈a + OfNat.ofNat n⌉ = ⌈a⌉ + OfNat.ofNat n
-- Int.ceil_sub_int
@[simp]
theorem ceil_sub_int (a : α) (z : ℤ) : ⌈a - z⌉ = ⌈a⌉ - z 
Arguments: {α : Type u_2} [LinearOrderedRing α] [FloorRing α] (a : α) (z : ℤ)
Goal: ⌈a - ↑z⌉ = ⌈a⌉ - z
-- Int.ceil_sub_nat
@[simp]
theorem ceil_sub_nat (a : α) (n : ℕ) : ⌈a - n⌉ = ⌈a⌉ - n 
Arguments: {α : Type u_2} [LinearOrderedRing α] [FloorRing α] (a : α) (n : ℕ)
Goal: ⌈a - ↑n⌉ = ⌈a⌉ - ↑n
-- Int.ceil_sub_one
@[simp]
theorem ceil_sub_one (a : α) : ⌈a - 1⌉ = ⌈a⌉ - 1 
Arguments: {α : Type u_2} [LinearOrderedRing α] [FloorRing α] (a : α)
Goal: ⌈a - 1⌉ = ⌈a⌉ - 1
-- Int.ceil_sub_ofNat
@[simp]
theorem ceil_sub_ofNat (a : α) (n : ℕ) [n.AtLeastTwo] :
    ⌈a - (no_index (OfNat.ofNat n))⌉ = ⌈a⌉ - OfNat.ofNat n 
Arguments: {α : Type u_2} [LinearOrderedRing α] [FloorRing α] (a : α) (n : ℕ) [n.AtLeastTwo]
Goal: ⌈a - OfNat.ofNat n⌉ = ⌈a⌉ - OfNat.ofNat n