Skip to content

Commit d5b9300

Browse files
committed
adapt to latest cheerios and verdi-cheerios
1 parent 9f21973 commit d5b9300

5 files changed

+49
-139
lines changed

configure

+1
Original file line numberDiff line numberDiff line change
@@ -7,4 +7,5 @@ DEPS=(StructTact Verdi InfSeqExt VerdiCheerios Cheerios)
77
DIRS=(lib systems extraction/aggregation/coq extraction/aggregation-dynamic/coq extraction/tree/coq extraction/tree-dynamic/coq extraction/zaggregation-dynamic/coq)
88
CANARIES=("mathcomp.ssreflect.ssreflect" "Verdi Aggregation requires mathcomp to be installed" "StructTact.StructTactics" "Build StructTact before building Verdi Aggregation" "Verdi.Verdi" "Build Verdi before building Verdi Aggregation" "AAC_tactics.AAC" "Verdi Aggregation requires AAC Tactics to be installed" "InfSeqExt.infseq" "Build InfSeqExt before building Verdi Aggregation" "VerdiCheerios.SerializedParams" "Build Verdi Cheerios before building Verdi Aggregation")
99
Verdi_DIRS=(core lib systems extraction)
10+
Cheerios_DIRS=(core extraction)
1011
source script/coqproject.sh

lib/BAddGroup.v

+11-1
Original file line numberDiff line numberDiff line change
@@ -279,12 +279,21 @@ Canonical Bvector_finComRingType := Eval hnf in [finComRingType of Bvector n].
279279
End BitVectorRing.
280280

281281
Require Import serializablecommfingroup.
282+
282283
Require Import Cheerios.Cheerios.
283284

284285
Section BitVectorSerialization.
285286

286287
Variable n : nat.
287288

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+
(*
288297
Definition serialize (v : Bvector n) : list bool :=
289298
Vector.to_list v.
290299
@@ -309,9 +318,10 @@ elim => //=.
309318
move => b n' v IH bs.
310319
by rewrite IH.
311320
Qed.
321+
*)
312322

313323
Definition Bvector_serializableMixin :=
314-
SerializableCommFinGroupMixin serialize_deserialize_id.
324+
SerializableCommFinGroupMixin Bvector_serialize_deserialize_id.
315325

316326
Canonical Bvector_serializableCommFinGroupType :=
317327
SerializableCommFinGroupType (Bvector_commFinGroupType n) Bvector_serializableMixin.

lib/serializablecommfingroup.v

+7-14
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ From mathcomp
22
Require Import ssreflect ssrfun fingroup.
33

44
Require Import commfingroup.
5+
56
Require Import Cheerios.Cheerios.
67

78
Set Implicit Arguments.
@@ -13,8 +14,8 @@ Import GroupScope.
1314
Module SerializableCommFinGroup.
1415

1516
Structure mixin_of (gT : commFinGroupType) := Mixin {
16-
serialize : gT -> list bool ;
17-
deserialize : list bool -> option (gT * list bool) ;
17+
serialize : gT -> IOStreamWriter.t ;
18+
deserialize : ByteListReader.t gT ;
1819
_ : serialize_deserialize_id_spec serialize deserialize
1920
}.
2021

@@ -37,26 +38,18 @@ End Exports.
3738
End SerializableCommFinGroup.
3839
Export SerializableCommFinGroup.Exports.
3940

40-
Section SerializeOps.
41-
42-
Variable T : serializableCommFinGroupType.
43-
44-
Definition serializeg := SerializableCommFinGroup.serialize T.
45-
Definition deserializeg := SerializableCommFinGroup.deserialize T.
46-
47-
End SerializeOps.
48-
4941
Section SerializerDefs.
5042

5143
Variable T : serializableCommFinGroupType.
5244

53-
Lemma serializeg_deserializeg_id : serialize_deserialize_id_spec (@serializeg T) (@deserializeg T).
45+
Lemma serializeg_deserializeg_id :
46+
serialize_deserialize_id_spec (SerializableCommFinGroup.serialize T) (SerializableCommFinGroup.deserialize T).
5447
Proof. by case: T => ? []. Qed.
5548

5649
Global Instance FinGroupSerializer : Serializer T :=
5750
{
58-
serialize := @serializeg T ;
59-
deserialize := @deserializeg T ;
51+
serialize := SerializableCommFinGroup.serialize T ;
52+
deserialize := SerializableCommFinGroup.deserialize T ;
6053
serialize_deserialize_id := serializeg_deserializeg_id
6154
}.
6255

systems/AggregationDynamicCorrect.v

+2-3
Original file line numberDiff line numberDiff line change
@@ -12,11 +12,12 @@ Require Import AggregatorDynamic.
1212
Require Import AggregationDynamic.
1313
Require Import FailureRecorderDynamicCorrect.
1414

15+
Require Import FunctionalExtensionality.
1516
Require Import Sumbool.
1617
Require Import Orders.
18+
Require Import Sorting.Permutation.
1719
Require Import MSetFacts.
1820
Require Import MSetProperties.
19-
Require Import Sorting.Permutation.
2021
Require FMapFacts.
2122

2223
Require Import mathcomp.ssreflect.ssreflect.
@@ -3696,8 +3697,6 @@ end; simpl in *.
36963697
by rewrite collate_neq.
36973698
Qed.
36983699

3699-
Require Import FunctionalExtensionality.
3700-
37013700
Lemma sum_fail_map_incoming_collate_ls_filter_rel_not_in_eq :
37023701
forall l ns h f adj map,
37033702
~ In h ns ->

systems/TreeAggregationDynamicSerialized.v

+28-121
Original file line numberDiff line numberDiff line change
@@ -17,8 +17,7 @@ Require Import serializablecommfingroup.
1717
Require Import TreeAggregationDynamic.
1818

1919
Require Import Cheerios.Cheerios.
20-
21-
Require Import VerdiCheerios.SerializedParams.
20+
Require Import VerdiCheerios.SerializedMsgParams.
2221

2322
Import DeserializerNotations.
2423

@@ -47,25 +46,26 @@ Import TANS.
4746

4847
Import fingroup.GroupScope.
4948

50-
Definition option_lv_serialize (lvo : option lv) : list bool :=
49+
(*
50+
Definition option_lv_serialize (lvo : option lv) :=
5151
match lvo with
52-
| None => [false]
53-
| Some lv => [true] ++ serialize lv
52+
| None => serialize x00
53+
| Some lv => Serializer.append (serialize x01) (serialize lv)
5454
end.
5555
56-
Definition option_lv_deserialize : deserializer (option lv) :=
56+
Definition option_lv_deserialize : Deserializer.t (option lv) :=
5757
tag <- deserialize ;;
5858
match tag with
59-
| false => ret None
60-
| true => Some <$> deserialize
59+
| x00 => Deserializer.ret None
60+
| x01 => Some <$> deserialize
61+
| _ => Deserializer.error
6162
end.
6263
6364
Lemma option_lv_serialize_deserialize_id :
6465
serialize_deserialize_id_spec option_lv_serialize option_lv_deserialize.
6566
Proof.
6667
rewrite /option_lv_serialize /option_lv_deserialize.
67-
case; serialize_deserialize_id_crush.
68-
by rewrite /= nat_serialize_deserialize_id.
68+
case; repeat (cheerios_crush; simpl).
6969
Qed.
7070
7171
Instance option_lv_Serialize : Serializer (option lv) :=
@@ -74,42 +74,38 @@ Instance option_lv_Serialize : Serializer (option lv) :=
7474
deserialize := option_lv_deserialize ;
7575
serialize_deserialize_id := option_lv_serialize_deserialize_id
7676
}.
77+
*)
7778

78-
Definition Msg_serialize (msg: Msg) : list bool :=
79+
Definition Msg_serialize (msg: Msg) :=
7980
match msg with
8081
| Aggregate m =>
81-
[false; false] ++ serialize m
82-
| Fail =>
83-
[false; true]
82+
IOStreamWriter.append (fun _ => serialize x00) (fun _ => serialize m)
83+
| Fail => serialize x01
8484
| Level lvo =>
85-
[true; false] ++ serialize lvo
86-
| New =>
87-
[true; true]
85+
IOStreamWriter.append (fun _ => serialize x02) (fun _ => serialize lvo)
86+
| New => serialize x03
8887
end.
8988

90-
Definition Msg_deserialize : deserializer Msg :=
91-
tag1 <- deserialize ;;
92-
tag2 <- deserialize ;;
93-
match tag1, tag2 with
94-
| false, false =>
89+
Definition Msg_deserialize : ByteListReader.t Msg :=
90+
tag <- deserialize ;;
91+
match tag with
92+
| x00 =>
9593
m <- deserialize ;;
96-
ret (Aggregate m)
97-
| false, true =>
98-
ret Fail
99-
| true, false =>
94+
ByteListReader.ret (Aggregate m)
95+
| x01 => ByteListReader.ret Fail
96+
| x02 =>
10097
lvo <- deserialize ;;
101-
ret (Level lvo)
102-
| true, true =>
103-
ret New
98+
ByteListReader.ret (Level lvo)
99+
| x03 => ByteListReader.ret New
100+
| _ => ByteListReader.error
104101
end.
105102

106103
Lemma Msg_serialize_deserialize_id :
107104
serialize_deserialize_id_spec Msg_serialize Msg_deserialize.
108105
Proof.
109106
rewrite /Msg_serialize /Msg_deserialize.
110-
case; serialize_deserialize_id_crush.
111-
- by rewrite /= serializeg_deserializeg_id.
112-
- by rewrite /= option_lv_serialize_deserialize_id.
107+
case; repeat (cheerios_crush; simpl).
108+
by rewrite serializeg_deserializeg_id; cheerios_crush.
113109
Qed.
114110

115111
Instance Msg_Serializer : Serializer Msg :=
@@ -119,95 +115,6 @@ Instance Msg_Serializer : Serializer Msg :=
119115
serialize_deserialize_id := Msg_serialize_deserialize_id
120116
}.
121117

122-
Definition Input_serialize (inp : Input) : list bool :=
123-
match inp with
124-
| Local m =>
125-
[false; false; false] ++ serialize m
126-
| SendAggregate =>
127-
[false; false; true]
128-
| AggregateRequest s =>
129-
[false; true; false] ++ serialize s
130-
| LevelRequest s =>
131-
[false; true; true] ++ serialize s
132-
| Broadcast =>
133-
[true; false; false]
134-
end.
135-
136-
Definition Input_deserialize : deserializer Input :=
137-
tag1 <- deserialize ;;
138-
tag2 <- deserialize ;;
139-
tag3 <- deserialize ;;
140-
match tag1, tag2, tag3 with
141-
| false, false, false =>
142-
m <- deserialize ;;
143-
ret (Local m)
144-
| false, false, true =>
145-
ret SendAggregate
146-
| false, true, false =>
147-
s <- deserialize ;;
148-
ret (AggregateRequest s)
149-
| false, true, true =>
150-
s <- deserialize ;;
151-
ret (LevelRequest s)
152-
| true, false, false =>
153-
ret Broadcast
154-
| _, _, _ => fail
155-
end.
156-
157-
Lemma Input_serialize_deserialize_id :
158-
serialize_deserialize_id_spec Input_serialize Input_deserialize.
159-
Proof.
160-
rewrite /Input_serialize /Input_deserialize.
161-
case; serialize_deserialize_id_crush.
162-
- by rewrite /= serializeg_deserializeg_id.
163-
- by rewrite /= string_serialize_deserialize_id.
164-
- by rewrite /= string_serialize_deserialize_id.
165-
Qed.
166-
167-
Instance Input_Serializer : Serializer Input :=
168-
{
169-
serialize := Input_serialize ;
170-
deserialize := Input_deserialize ;
171-
serialize_deserialize_id := Input_serialize_deserialize_id
172-
}.
173-
174-
Definition Output_serialize (out : Output) : list bool :=
175-
match out with
176-
| AggregateResponse s m =>
177-
[false] ++ serialize s ++ serialize m
178-
| LevelResponse s lvo =>
179-
[true] ++ serialize s ++ serialize lvo
180-
end.
181-
182-
Definition Output_deserialize : deserializer Output :=
183-
tag <- deserialize ;;
184-
match tag with
185-
| false =>
186-
s <- deserialize ;;
187-
m <- deserialize ;;
188-
ret (AggregateResponse s m)
189-
| true =>
190-
s <- deserialize ;;
191-
lvo <- deserialize ;;
192-
ret (LevelResponse s lvo)
193-
end.
194-
195-
Lemma Output_serialize_deserialize_id :
196-
serialize_deserialize_id_spec Output_serialize Output_deserialize.
197-
Proof.
198-
rewrite /Output_serialize /Output_deserialize.
199-
case; serialize_deserialize_id_crush.
200-
- by rewrite /= string_serialize_deserialize_id serializeg_deserializeg_id.
201-
- by rewrite /= string_serialize_deserialize_id option_lv_serialize_deserialize_id.
202-
Qed.
203-
204-
Instance Output_Serializer : Serializer Output :=
205-
{
206-
serialize := Output_serialize ;
207-
deserialize := Output_deserialize ;
208-
serialize_deserialize_id := Output_serialize_deserialize_id
209-
}.
210-
211118
Definition TreeAggregation_SerializedBaseParams :=
212119
serialized_base_params.
213120

0 commit comments

Comments
 (0)