diff options
author | jadep <jade.philipoom@gmail.com> | 2017-06-08 18:07:15 -0400 |
---|---|---|
committer | jadep <jade.philipoom@gmail.com> | 2017-06-08 18:07:15 -0400 |
commit | 05c63d76aab155c5f57779ef1fcdb984bc5120bf (patch) | |
tree | df45e809cdbb79b6c13a36caa499ae312a89d568 /src/Arithmetic/Saturated.v | |
parent | 727c2902f1ec078c2359c1690125ae5a5d0e40e4 (diff) |
add zero (as per #157)
Diffstat (limited to 'src/Arithmetic/Saturated.v')
-rw-r--r-- | src/Arithmetic/Saturated.v | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/src/Arithmetic/Saturated.v b/src/Arithmetic/Saturated.v index f4f17dcee..ea44d6c3d 100644 --- a/src/Arithmetic/Saturated.v +++ b/src/Arithmetic/Saturated.v @@ -599,6 +599,8 @@ Section API. Definition length : T -> nat := @length Z. + Definition zero (n:nat) : T := to_list _ (B.Positional.zeros n). + Definition divmod (p : T) : T * Z := (List.tl p, List.hd 0 p). @@ -620,6 +622,18 @@ Section API. Definition eval (p : T) : Z := B.Positional.eval weight (Tuple.from_list (Datatypes.length p) p (eq_refl _)). + Lemma eval_zero n : eval (zero n) = 0. + Proof. + cbv [eval zero]. rewrite <-from_list_default_eq with (d:=0). + erewrite length_to_list, from_list_default_eq, from_list_to_list. + autorewrite with push_basesystem_eval. + reflexivity. + Unshelve. distr_length. + Qed. + + Lemma length_zero n : length (zero n) = n. + Proof. cbv [eval zero]. apply length_to_list. Qed. + Lemma eval_add_nz p q : max (Datatypes.length p) (Datatypes.length q) <> 0%nat -> eval (fst (add p q)) = eval p + eval q - snd (add p q) * weight (Datatypes.length (fst (add p q))). |