diff options
author | letouzey <letouzey@85f007b7-540e-0410-9357-904b9bb8a0f7> | 2011-07-01 17:38:17 +0000 |
---|---|---|
committer | letouzey <letouzey@85f007b7-540e-0410-9357-904b9bb8a0f7> | 2011-07-01 17:38:17 +0000 |
commit | d2204e78c2d8bfc4f46ba541749b07dedd5e7969 (patch) | |
tree | d2c9de4d986dc2f37744fad6f434ddac1506a8e0 /theories/Numbers/Natural | |
parent | ae95b79d0912a7b1a5370854cb6fb1aadb1db6b2 (diff) |
Cleanup of files related with power over Z.
- Zpow_def, Zpower, Zpow_facts shortened thanks to stuff in BinInt.Z
- The alternative Zpower_alt is now in a separate file Zpow_alt.v,
not loaded by default.
- Some more injection lemmas in Znat (pow, div, mod, quot, rem)
- Btw, added a "square" function in Z, N, Pos, ... (instead of
Zpow_facts.Zsquare).
git-svn-id: svn+ssh://scm.gforge.inria.fr/svn/coq/trunk@14253 85f007b7-540e-0410-9357-904b9bb8a0f7
Diffstat (limited to 'theories/Numbers/Natural')
-rw-r--r-- | theories/Numbers/Natural/Abstract/NAxioms.v | 4 | ||||
-rw-r--r-- | theories/Numbers/Natural/Peano/NPeano.v | 8 | ||||
-rw-r--r-- | theories/Numbers/Natural/SpecViaZ/NSig.v | 2 | ||||
-rw-r--r-- | theories/Numbers/Natural/SpecViaZ/NSigNAxioms.v | 11 |
4 files changed, 20 insertions, 5 deletions
diff --git a/theories/Numbers/Natural/Abstract/NAxioms.v b/theories/Numbers/Natural/Abstract/NAxioms.v index 45a2cf3e1..ca6ccc1bf 100644 --- a/theories/Numbers/Natural/Abstract/NAxioms.v +++ b/theories/Numbers/Natural/Abstract/NAxioms.v @@ -34,11 +34,11 @@ End NDivSpecific. Module Type NAxiomsSig := NAxiomsMiniSig <+ OrderFunctions <+ NZParity.NZParity <+ NZPow.NZPow <+ NZSqrt.NZSqrt <+ NZLog.NZLog2 - <+ NZGcd.NZGcd <+ NZDiv.NZDiv <+ NZBits.NZBits. + <+ NZGcd.NZGcd <+ NZDiv.NZDiv <+ NZBits.NZBits <+ NZSquare. Module Type NAxiomsSig' := NAxiomsMiniSig' <+ OrderFunctions' <+ NZParity.NZParity <+ NZPow.NZPow' <+ NZSqrt.NZSqrt' <+ NZLog.NZLog2 - <+ NZGcd.NZGcd' <+ NZDiv.NZDiv' <+ NZBits.NZBits'. + <+ NZGcd.NZGcd' <+ NZDiv.NZDiv' <+ NZBits.NZBits' <+ NZSquare. (** It could also be interesting to have a constructive recursor function. *) diff --git a/theories/Numbers/Natural/Peano/NPeano.v b/theories/Numbers/Natural/Peano/NPeano.v index b6b26363e..d5df6329a 100644 --- a/theories/Numbers/Natural/Peano/NPeano.v +++ b/theories/Numbers/Natural/Peano/NPeano.v @@ -53,6 +53,11 @@ Proof. reflexivity. Qed. Lemma pow_succ_r : forall a b, 0<=b -> a^(S b) = a * a^b. Proof. reflexivity. Qed. +Definition square n := n * n. + +Lemma square_spec n : square n = n * n. +Proof. reflexivity. Qed. + Definition Even n := exists m, n = 2*m. Definition Odd n := exists m, n = 2*m+1. @@ -737,6 +742,9 @@ Definition pow_succ_r := pow_succ_r. Lemma pow_neg_r : forall a b, b<0 -> a^b = 0. inversion 1. Qed. Definition pow := pow. +Definition square := square. +Definition square_spec := square_spec. + Definition log2_spec := log2_spec. Definition log2_nonpos := log2_nonpos. Definition log2 := log2. diff --git a/theories/Numbers/Natural/SpecViaZ/NSig.v b/theories/Numbers/Natural/SpecViaZ/NSig.v index cfe842b9d..aaf44ca64 100644 --- a/theories/Numbers/Natural/SpecViaZ/NSig.v +++ b/theories/Numbers/Natural/SpecViaZ/NSig.v @@ -83,7 +83,7 @@ Module Type NType. Parameter spec_pred: forall x, [pred x] = Z.max 0 ([x] - 1). Parameter spec_sub: forall x y, [sub x y] = Z.max 0 ([x] - [y]). Parameter spec_mul: forall x y, [mul x y] = [x] * [y]. - Parameter spec_square: forall x, [square x] = [x] * [x]. + Parameter spec_square: forall x, [square x] = [x] * [x]. Parameter spec_pow_pos: forall x n, [pow_pos x n] = [x] ^ Zpos n. Parameter spec_pow_N: forall x n, [pow_N x n] = [x] ^ Z.of_N n. Parameter spec_pow: forall x n, [pow x n] = [x] ^ [n]. diff --git a/theories/Numbers/Natural/SpecViaZ/NSigNAxioms.v b/theories/Numbers/Natural/SpecViaZ/NSigNAxioms.v index adbd8223a..a0ad7643d 100644 --- a/theories/Numbers/Natural/SpecViaZ/NSigNAxioms.v +++ b/theories/Numbers/Natural/SpecViaZ/NSigNAxioms.v @@ -15,8 +15,8 @@ Module NTypeIsNAxioms (Import NN : NType'). Hint Rewrite spec_0 spec_1 spec_2 spec_succ spec_add spec_mul spec_pred spec_sub spec_div spec_modulo spec_gcd spec_compare spec_eqb spec_ltb spec_leb - spec_sqrt spec_log2 spec_max spec_min spec_pow_pos spec_pow_N spec_pow - spec_even spec_odd spec_testbit spec_shiftl spec_shiftr + spec_square spec_sqrt spec_log2 spec_max spec_min spec_pow_pos spec_pow_N + spec_pow spec_even spec_odd spec_testbit spec_shiftl spec_shiftr spec_land spec_lor spec_ldiff spec_lxor spec_div2 spec_of_N : nsimpl. Ltac nsimpl := autorewrite with nsimpl. @@ -256,6 +256,13 @@ Proof. intros. now zify. Qed. +(** Square *) + +Lemma square_spec n : square n == n * n. +Proof. + now zify. +Qed. + (** Sqrt *) Lemma sqrt_spec : forall n, 0<=n -> |