proposition: Lemma log2_up_lt_cancel : forall a b, log2_up a < log2_up b -> a < b.
proof: Proof. intros a b H. destruct (le_gt_cases b 1) as [Hb|Hb]. - rewrite (log2_up_eqn0 b) in H; trivial. generalize (log2_up_nonneg a); order. - destruct (le_gt_cases a 1) as [Ha|Ha]. + order. + rewrite 2 log2_up_eqn in H; try order. rewrite <- succ_lt_mono in H. apply log2_lt_cancel, succ_lt_mono in H. rewrite 2 lt_succ_pred with 1 in H; order. Qed.
imports: NZAxioms NZMulOrder NZPow