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
@[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
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