Skip to content

Commit c0aab14

Browse files
committed
chore: update F*
1 parent 288bf74 commit c0aab14

6 files changed

Lines changed: 177 additions & 133 deletions

flake.lock

Lines changed: 3 additions & 3 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/Comparse.Tactic.GenerateIsWellFormedLemma.fst

Lines changed: 23 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -13,12 +13,15 @@ let mk_lemma_type_ensures bi ps_term pre_term x_term ctors =
1313
let (ctor_name, ctor_type) = c in
1414
let binders, _ = collect_arr_bs ctor_type in
1515
let branch_pattern =
16-
Pat_Cons (pack_fv ctor_name) None (
17-
Tactics.Util.map (fun b ->
18-
let b_view = inspect_binder b in
19-
(Pat_Var (bv_of_binder b) (seal (type_of_binder b)), not (Q_Explicit? b_view.binder_qual))
20-
) binders
21-
)
16+
Pat_Cons {
17+
head = (pack_fv ctor_name);
18+
univs = None;
19+
subpats = (
20+
Tactics.Util.map (fun (b:binder) ->
21+
(Pat_Var { v = b; sort = (seal b.sort); }, not (Q_Explicit? b.qual))
22+
) binders
23+
);
24+
}
2225
in
2326
if GenerateParser.is_open_ctor c then
2427
(branch_pattern, (`True))
@@ -54,15 +57,15 @@ let mk_lemma_type opt_concrete_bi type_unapplied params ctors =
5457
let (bi, parser_params) = GenerateParser.get_bytes_impl_and_parser_params opt_concrete_bi params in
5558
let (bytes_term, bytes_like_term) = bi in
5659
let (ps_term, _) = GenerateParser.parser_from_type bi type_applied in
57-
let pre_bv = fresh_bv_named "pre" in
58-
let pre_term = pack (Tv_Var pre_bv) in
59-
let x_bv = fresh_bv_named "x" in
60-
let x_term = pack (Tv_Var x_bv) in
60+
let pre_binder = fresh_binder_named "pre" (`bytes_compatible_pre (`#bytes_term) #(`#bytes_like_term)) in
61+
let pre_term = pack (Tv_Var pre_binder) in
62+
let x_binder = fresh_binder_named "x" type_applied in
63+
let x_term = pack (Tv_Var x_binder) in
6164
let lemma_requires = (`True) in
6265
let lemma_ensures = mk_lemma_type_ensures bi ps_term pre_term x_term ctors in
6366
let lemma_smtpat = mk_lemma_type_smtpat ps_term pre_term x_term in
6467
let eff = pack_comp (C_Lemma lemma_requires (`(fun () -> (`#lemma_ensures))) (`([smt_pat (`#lemma_smtpat)]))) in
65-
mk_arr (parser_params @ [mk_binder pre_bv (`bytes_compatible_pre (`#bytes_term) #(`#bytes_like_term)); mk_binder x_bv type_applied]) eff
68+
mk_arr (parser_params @ [pre_binder; x_binder]) eff
6669

6770
val apply_propositional_extensionality: p1:prop -> p2:prop -> squash (p1 <==> p2) -> squash (p1 == p2)
6871
let apply_propositional_extensionality p1 p2 _ = FStar.PropositionalExtensionality.apply p1 p2
@@ -98,10 +101,10 @@ let simplify_is_well_formed_lemma () =
98101
smt ()
99102
else (
100103
//Remove garbage from environment
101-
Tactics.Util.iter (fun b ->
102-
try clear b
103-
with _ -> ()
104-
) (binders_of_env (cur_env()));
104+
//Tactics.Util.iter (fun b ->
105+
// try clear b
106+
// with _ -> ()
107+
//) (binders_of_env (cur_env()));
105108

106109
//Retrieve the parser and value to unfold / destruct
107110
let (ps_term, x_term) =
@@ -190,12 +193,12 @@ let gen_is_well_formed_lemma_def type_fv =
190193
in
191194
let opt_concrete_bi = GenerateParser.get_optional_concrete_bytes_impl type_declaration in
192195
match inspect_sigelt type_declaration with
193-
| Sg_Inductive name [] params typ constructors -> (
196+
| Sg_Inductive {nm = name; univs = []; params; typ; ctors = constructors;} -> (
194197
let lemma_type = mk_lemma_type opt_concrete_bi type_fv params constructors in
195198
let lemma_val = mk_lemma_val lemma_type in
196199
(lemma_type, lemma_val)
197200
)
198-
| Sg_Inductive _ _ _ _ _ -> fail "gen_is_well_formed_lemma_def: higher order types are not supported"
201+
| Sg_Inductive _ -> fail "gen_is_well_formed_lemma_def: higher order types are not supported"
199202
| _ -> fail "gen_is_well_formed_lemma_def: only inductives are supported"
200203

201204
val gen_is_well_formed_lemma: term -> Tac decls
@@ -204,10 +207,10 @@ let gen_is_well_formed_lemma type_fv =
204207
let lemma_name = List.Tot.snoc (moduleof (top_env ()), "ps_" ^ (last type_name) ^ "_is_well_formed") in
205208
let (lemma_type, lemma_val) = gen_is_well_formed_lemma_def type_fv in
206209
//dump (term_to_string lemma_type);
207-
let lemma_letbinding = pack_lb ({
210+
let lemma_letbinding = {
208211
lb_fv = pack_fv lemma_name;
209212
lb_us = [];
210213
lb_typ = lemma_type;
211214
lb_def = lemma_val;
212-
}) in
213-
[pack_sigelt (Sg_Let false [lemma_letbinding])]
215+
} in
216+
[pack_sigelt (Sg_Let {isrec = false; lbs = [lemma_letbinding];})]

src/Comparse.Tactic.GenerateLengthLemma.fst

Lines changed: 21 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -23,12 +23,15 @@ let mk_lemma_type_ensures bi ps_term x_term ctors =
2323
let (ctor_name, ctor_type) = c in
2424
let binders, _ = collect_arr_bs ctor_type in
2525
let branch_pattern =
26-
Pat_Cons (pack_fv ctor_name) None (
27-
Tactics.Util.map (fun b ->
28-
let b_view = inspect_binder b in
29-
(Pat_Var (bv_of_binder b) (seal (type_of_binder b)), not (Q_Explicit? b_view.binder_qual))
30-
) binders
31-
)
26+
Pat_Cons {
27+
head = (pack_fv ctor_name);
28+
univs = None;
29+
subpats = (
30+
Tactics.Util.map (fun (b: binder) ->
31+
(Pat_Var { v = b; sort = (seal b.sort); }, not (Q_Explicit? b.qual))
32+
) binders
33+
);
34+
}
3235
in
3336
let term_to_length (ps_t:term) (t:term) =
3437
(`(prefixes_length (Mkparser_serializer_prefix?.serialize (`#ps_t) (`#t))))
@@ -73,13 +76,13 @@ let mk_lemma_type opt_concrete_bi type_unapplied params ctors =
7376
let (bi, parser_params) = GenerateParser.get_bytes_impl_and_parser_params opt_concrete_bi params in
7477
let (bytes_term, bytes_like_term) = bi in
7578
let (ps_term, _) = GenerateParser.parser_from_type bi type_applied in
76-
let x_bv = fresh_bv_named "x" in
77-
let x_term = pack (Tv_Var x_bv) in
79+
let x_binder = fresh_binder_named "x" type_applied in
80+
let x_term = pack (Tv_Var x_binder) in
7881
let lemma_requires = (`True) in
7982
let lemma_ensures = mk_lemma_type_ensures bi ps_term x_term ctors in
8083
let lemma_smtpat = mk_lemma_type_smtpat ps_term x_term in
8184
let eff = pack_comp (C_Lemma lemma_requires (`(fun () -> (`#lemma_ensures))) (`([smt_pat (`#lemma_smtpat)]))) in
82-
mk_arr (parser_params @ [mk_binder x_bv type_applied]) eff
85+
mk_arr (parser_params @ [x_binder]) eff
8386

8487
val my_isomorphism_length_with_id:
8588
#bytes:Type0 -> {| bytes_like bytes |} -> #a:Type -> #b:Type ->
@@ -113,10 +116,10 @@ let simplify_length_lemma () =
113116
smt ()
114117
else (
115118
//Remove garbage from environment
116-
Tactics.Util.iter (fun b ->
117-
try clear b
118-
with _ -> ()
119-
) (binders_of_env (cur_env()));
119+
//Tactics.Util.iter (fun b ->
120+
// try clear b
121+
// with _ -> ()
122+
//) (binders_of_env (cur_env()));
120123

121124
//Retrieve the parser and value to unfold / destruct
122125
let (ps_term, x_term) =
@@ -213,12 +216,12 @@ let gen_length_lemma_def type_fv =
213216
in
214217
let opt_concrete_bi = GenerateParser.get_optional_concrete_bytes_impl type_declaration in
215218
match inspect_sigelt type_declaration with
216-
| Sg_Inductive name [] params typ constructors -> (
219+
| Sg_Inductive { nm = name; univs = []; params; typ; ctors = constructors} -> (
217220
let lemma_type = mk_lemma_type opt_concrete_bi type_fv params constructors in
218221
let lemma_val = mk_lemma_val lemma_type in
219222
(lemma_type, lemma_val)
220223
)
221-
| Sg_Inductive _ _ _ _ _ -> fail "gen_length_lemma_def: higher order types are not supported"
224+
| Sg_Inductive _ -> fail "gen_length_lemma_def: higher order types are not supported"
222225
| _ -> fail "gen_length_lemma_def: only inductives are supported"
223226

224227
val gen_length_lemma: term -> Tac decls
@@ -227,10 +230,10 @@ let gen_length_lemma type_fv =
227230
let lemma_name = List.Tot.snoc (moduleof (top_env ()), "ps_" ^ (last type_name) ^ "_length") in
228231
let (lemma_type, lemma_val) = gen_length_lemma_def type_fv in
229232
//dump (term_to_string lemma_type);
230-
let lemma_letbinding = pack_lb ({
233+
let lemma_letbinding = {
231234
lb_fv = pack_fv lemma_name;
232235
lb_us = [];
233236
lb_typ = lemma_type;
234237
lb_def = lemma_val;
235-
}) in
236-
[pack_sigelt (Sg_Let false [lemma_letbinding])]
238+
} in
239+
[pack_sigelt (Sg_Let { isrec = false; lbs = [lemma_letbinding]; })]

0 commit comments

Comments
 (0)