proposition: Lemma r_square_lt n : (0 <= [r_square n] < [M])%Z.
proof: Proof. unfold r_square. rewrite num_to_Z; auto with zarith. apply Z_mod_lt; auto with zarith. apply Z.lt_gt; apply M_pos. case (Z_mod_lt (Zpower_nat wB n * Zpower_nat wB n) [M]); auto with zarith. apply Z.lt_gt; apply M_pos. Qed.
imports: List ZArith Znumtheory Uint63 Cyclic63