English
For a ∈ ZMod n with n > 1, if a.val^m < n, then (a^m).val = a.val^m; that is, the power operation is realized by ordinary exponentiation until the result would wrap around modulo n.
Русский
Пусть a ∈ ZMod n с n > 1; если a.val^m < n, тогда (a^m).val = a.val^m; операция возведения в степень совпадает с обычной до тех пор, пока результат не превысит n.
LaTeX
$$$ (a^m).val = a.val^m \quad\text{ if } a.val^m < n $$$
Lean4
theorem val_sub {n : ℕ} [NeZero n] {a b : ZMod n} (h : b.val ≤ a.val) : (a - b).val = a.val - b.val :=
by
by_cases hb : b = 0
· cases hb; simp
· have : NeZero b := ⟨hb⟩
rw [sub_eq_add_neg, val_add, val_neg_of_ne_zero, ← Nat.add_sub_assoc (le_of_lt (val_lt _)), add_comm,
Nat.add_sub_assoc h, Nat.add_mod_left]
apply Nat.mod_eq_of_lt (tsub_lt_of_lt (val_lt _))