(** Alignment: [align n amount] returns the smallest multiple of [amount] greater than or equal to [n]. *)
Definition align (n: Z) (amount: Z) :=
((n + amount - 1) / amount) * amount.

(* Specifications: *)
Lemma align_le: forall x y, y > 0 -> x <= align x y.
Lemma align_divides: forall x y, y > 0 -> (y | align x y).
Set Implicit Arguments.
Lemma align_le: forall x y, y > 0 -> x <= align x y.
Lemma align_divides: forall x y, y > 0 -> (y | align x y).
Set Implicit Arguments.