Documentation

Mathlib.Data.ZMod.ValMinAbs

Absolute value in ZMod n #

def ZMod.valMinAbs {n : ℕ} :
ZMod n → ℤ

Returns the integer in the same equivalence class as x that is closest to 0.

The result will be in the interval (-n/2, n/2].

Equations
Instances For
    @[simp]
    theorem ZMod.valMinAbs_def_pos {n : ℕ} [NeZero n] (x : ZMod n) :
    x.valMinAbs = if x.val ≤ n / 2 then ↑x.val else ↑x.val - ↑n
    @[simp]
    theorem ZMod.coe_valMinAbs {n : ℕ} (x : ZMod n) :
    ↑x.valMinAbs = x
    @[simp]
    theorem ZMod.valMinAbs_inj {n : ℕ} {a b : ZMod n} :
    theorem ZMod.valMinAbs_nonneg_iff {n : ℕ} [NeZero n] (x : ZMod n) :
    0 ≤ x.valMinAbs ↔ x.val ≤ n / 2
    theorem ZMod.valMinAbs_mul_two_eq_iff {n : ℕ} (a : ZMod n) :
    a.valMinAbs * 2 = ↑n ↔ 2 * a.val = n
    theorem ZMod.valMinAbs_mem_Ioc {n : ℕ} [NeZero n] (x : ZMod n) :
    x.valMinAbs * 2 ∈ Set.Ioc (-↑n) ↑n
    theorem ZMod.valMinAbs_spec {n : ℕ} [NeZero n] (x : ZMod n) (y : ℤ) :
    x.valMinAbs = y ↔ x = ↑y ∧ y * 2 ∈ Set.Ioc (-↑n) ↑n
    @[simp]
    theorem ZMod.valMinAbs_zero (n : ℕ) :
    @[simp]
    theorem ZMod.valMinAbs_eq_zero {n : ℕ} (x : ZMod n) :
    x.valMinAbs = 0 ↔ x = 0
    theorem ZMod.valMinAbs_neg_of_ne_half {n : ℕ} {a : ZMod n} (ha : 2 * a.val ≠ n) :
    theorem ZMod.val_eq_ite_valMinAbs {n : ℕ} [NeZero n] (a : ZMod n) :
    ↑a.val = a.valMinAbs + ↑(if a.val ≤ n / 2 then 0 else n)
    theorem ZMod.prime_ne_zero (p q : ℕ) [hp : Fact (Nat.Prime p)] [hq : Fact (Nat.Prime q)] (hpq : p ≠ q) :
    ↑q ≠ 0
    theorem ZMod.valMinAbs_natAbs_eq_min {n : ℕ} [hpos : NeZero n] (a : ZMod n) :
    theorem ZMod.valMinAbs_natCast_of_le_half {n a : ℕ} (ha : a ≤ n / 2) :
    (↑a).valMinAbs = ↑a
    theorem ZMod.valMinAbs_natCast_of_half_lt {n a : ℕ} (ha : n / 2 < a) (ha' : a < n) :
    (↑a).valMinAbs = ↑a - ↑n
    @[simp]
    theorem ZMod.valMinAbs_natCast_eq_self {n a : ℕ} [NeZero n] :
    (↑a).valMinAbs = ↑a ↔ a ≤ n / 2