@@ -2,21 +2,25 @@ From mathcomp.ssreflect
2
2
Require Import ssreflect ssrfun ssrbool eqtype ssrnat seq.
3
3
From mathcomp.ssreflect
4
4
Require Import choice fintype div path bigop prime finset.
5
- From mathcomp.fingroup
6
- Require Import fingroup.
7
5
From mathcomp.algebra
8
6
Require Import ssralg finalg.
9
7
10
- Require Import Bvector ZArith Zdigits.
8
+ From mathcomp.fingroup
9
+ Require Import fingroup.
10
+ Require Import commfingroup.
11
+ Require Import serializablecommfingroup.
12
+
13
+ Require Import Cheerios.Cheerios.
14
+
15
+ Require Import Bvector.
16
+ Require Import ZArith.
17
+ Require Import Zdigits.
11
18
12
19
Require Import BBase.
13
20
Require Import BAddMul.
14
-
15
21
Require Import NatPowLt.
16
22
17
- Require Import commfingroup.
18
-
19
- Section BitVectorGroup.
23
+ Section BVectorFinGroup.
20
24
21
25
Variable n : nat.
22
26
231
235
Definition Bvector_finMixin := PcanFinMixin pcancel_Bvector_to_I2n.
232
236
Canonical Bvector_finType := Eval hnf in FinType (Bvector n) Bvector_finMixin.
233
237
Canonical Bvector_finZmodType := Eval hnf in [finZmodType of Bvector n].
238
+
234
239
Canonical Bvector_baseFinGroupType := Eval hnf in [baseFinGroupType of Bvector n for +%R].
235
240
Canonical Bvector_finGroupType := Eval hnf in [finGroupType of Bvector n for +%R].
236
241
@@ -240,7 +245,12 @@ Proof. exact: Bvector_addC. Qed.
240
245
Definition Bvector_commFinGroupMixin := CommFinGroupMixin Bvector_mulgC.
241
246
Canonical Bvector_commFinGroupType := Eval hnf in CommFinGroupType _ Bvector_commFinGroupMixin.
242
247
243
- End BitVectorGroup.
248
+ Definition Bvector_serializableCommFinGroupMixin :=
249
+ @SerializableCommFinGroupMixin Bvector_commFinGroupType _ _ serialize_deserialize_id.
250
+ Canonical Bvector_serializableCommFinGroupType :=
251
+ Eval hnf in SerializableCommFinGroupType _ Bvector_serializableCommFinGroupMixin.
252
+
253
+ End BVectorFinGroup.
244
254
245
255
Section BitVectorMul.
246
256
@@ -277,53 +287,3 @@ Canonical Bvector_comRingType := Eval hnf in ComRingType (Bvector n) (@Bvector_m
277
287
Canonical Bvector_finComRingType := Eval hnf in [finComRingType of Bvector n].
278
288
279
289
End BitVectorRing.
280
-
281
- Require Import serializablecommfingroup.
282
-
283
- Require Import Cheerios.Cheerios.
284
-
285
- Section BitVectorSerialization.
286
-
287
- Variable n : nat.
288
-
289
- Axiom Bvector_serialize : forall (v : Bvector n), IOStreamWriter.t.
290
-
291
- Axiom Bvector_deserialize : ByteListReader.t (Bvector n).
292
-
293
- Axiom Bvector_serialize_deserialize_id :
294
- serialize_deserialize_id_spec Bvector_serialize Bvector_deserialize.
295
-
296
- (*
297
- Definition serialize (v : Bvector n) : list bool :=
298
- Vector.to_list v.
299
-
300
- Fixpoint deserialize_aux k (bs : list bool) : option (Bvector k * list bool) :=
301
- match k, bs with
302
- | 0, bs' => Some (Bnil, bs')
303
- | S k', [::] => None
304
- | S k', (b :: bs')%SEQ =>
305
- match deserialize_aux k' bs' with
306
- | None => None
307
- | Some (v, bs'') => Some (Bcons b k' v, bs'')
308
- end
309
- end.
310
-
311
- Definition deserialize (bs : list bool) : option (Bvector n * list bool) :=
312
- deserialize_aux n bs.
313
-
314
- Lemma serialize_deserialize_id : serialize_deserialize_id_spec serialize deserialize.
315
- Proof.
316
- rewrite /serialize /deserialize /=.
317
- elim => //=.
318
- move => b n' v IH bs.
319
- by rewrite IH.
320
- Qed.
321
- *)
322
-
323
- Definition Bvector_serializableMixin :=
324
- SerializableCommFinGroupMixin Bvector_serialize_deserialize_id.
325
-
326
- Canonical Bvector_serializableCommFinGroupType :=
327
- SerializableCommFinGroupType (Bvector_commFinGroupType n) Bvector_serializableMixin.
328
-
329
- End BitVectorSerialization.
0 commit comments