(** 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).
Lemma align_le: forall x y, y > 0 -> x <= align x y.
Lemma align_divides: forall x y, y > 0 -> (y | align x y).