aboutsummaryrefslogtreecommitdiff
path: root/src/Util/QUtil.v
diff options
context:
space:
mode:
authorGravatar Andres Erbsen <andreser@mit.edu>2017-06-21 15:02:36 -0400
committerGravatar Andres Erbsen <andreser@mit.edu>2017-06-21 15:03:39 -0400
commitb8f07f2bb73ea9691c642fd9b32d623bda9b6780 (patch)
tree4c07572b09020060c93389bfb807f91bb3d53b08 /src/Util/QUtil.v
parentac478e7dc72df91dd51586c345ac4c329f644b14 (diff)
src/Demo.v: a 200-line introduction to BaseSystem ideas
Diffstat (limited to 'src/Util/QUtil.v')
-rw-r--r--src/Util/QUtil.v19
1 files changed, 19 insertions, 0 deletions
diff --git a/src/Util/QUtil.v b/src/Util/QUtil.v
new file mode 100644
index 000000000..453cad308
--- /dev/null
+++ b/src/Util/QUtil.v
@@ -0,0 +1,19 @@
+Require Import Coq.ZArith.ZArith Coq.QArith.QArith QArith.Qround.
+
+Local Open Scope Z_scope.
+
+Lemma pow_ceil_mul_nat_nonzero b f
+ (b_nz:b <> 0)
+ (f_pos:(0 <= f)%Q)
+ : forall i, b^Qceiling (f * inject_Z (Z.of_nat i)) <> 0.
+Proof.
+ intros.
+ eapply Z.pow_nonzero; try omega.
+ rewrite Zle_Qle.
+ eapply Qle_trans; [|eapply Qle_ceiling].
+ eapply Qle_trans; [|eapply (Qmult_le_compat_r 0)]; trivial.
+ cbv; discriminate.
+ apply (Qle_trans _ (inject_Z 0)); [eapply Qle_refl|].
+ rewrite <-Zle_Qle.
+ eapply Zle_0_nat.
+Qed. \ No newline at end of file