Skip to content

Commit

Permalink
aparse_nlist_aparse_list_with_implies
Browse files Browse the repository at this point in the history
  • Loading branch information
tahina-pro committed Oct 6, 2023
1 parent 09a6298 commit d921c56
Showing 1 changed file with 26 additions and 0 deletions.
26 changes: 26 additions & 0 deletions src/lowparse/LowParse.SteelST.VCList.fst
Original file line number Diff line number Diff line change
Expand Up @@ -46,6 +46,32 @@ let aparse_list_aparse_nlist
parse_list_parse_nlist p (AP.contents_of b);
intro_aparse _ a

let aparse_nlist_aparse_list_with_implies
(#opened: _)
(#k: parser_kind)
(#t: Type)
(p: parser k t)
(n: nat)
(#va: v (parse_nlist_kind n k) (nlist n t))
(a: byte_array)
: STGhost (v parse_list_kind (list t)) opened
(aparse (parse_nlist n p) a va)
(fun va' -> aparse (parse_list p) a va' `star` (aparse (parse_list p) a va' `implies_` aparse (parse_nlist n p) a va))
(k.parser_kind_low > 0)
(fun va' ->
va'.contents == (va.contents <: list t)
)
= let va' = aparse_nlist_aparse_list p n a in
intro_implies
(aparse (parse_list p) a va')
(aparse (parse_nlist n p) a va)
emp
(fun _ ->
let _ = aparse_list_aparse_nlist p n a in
vpattern_rewrite (aparse (parse_nlist n p) a) va
);
va'

let intro_nlist_nil
(#opened: _)
(#k: parser_kind)
Expand Down

0 comments on commit d921c56

Please sign in to comment.