Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Use itree SpecM monad instead of CompM in Heapster #1778

Merged
merged 93 commits into from
Dec 10, 2022
Merged
Changes from 1 commit
Commits
Show all changes
93 commits
Select commit Hold shift + click to select a range
661c442
began defining SpecM in Prelude.sawcore
lag47 Jul 12, 2022
f852a35
added some SpecM definitions
lag47 Jul 19, 2022
cba7658
wrote new interface for SpecM
lag47 Jul 22, 2022
7f1b785
fixed haddock syntax errors
lag47 Jul 29, 2022
b501146
further refactored SpecM
lag47 Aug 5, 2022
6e783f7
partially rewrote saw translation
Aug 16, 2022
92fb1f9
new draft of multiFixS function signature
Aug 17, 2022
1e8e7b3
refactored MultiFixSBodiesS
lag47 Aug 19, 2022
211fac9
implementing SAW functions
lag47 Aug 22, 2022
bed9ee8
updated documentation
lag47 Aug 24, 2022
f0a4895
Merge branch 'master' into heapster-itree
Aug 25, 2022
0e5bd0e
updated the SAW core prelude with the new versions of the SpecM opera…
Aug 26, 2022
be309ca
Added VoidEvRetType for defining the evRetType of a Void to the SAW c…
Aug 26, 2022
8b6a93c
renamed CallS to callS
Aug 31, 2022
f195a8f
added the more general identOpenTerm
Aug 31, 2022
4ecf85d
partially finished changing the translation to generate SpecM computa…
Aug 31, 2022
3eea089
almost done changing the translation to generate SpecM computations i…
Sep 1, 2022
b5eb9f1
got the new translation to SpecM to compile, yay!
Sep 2, 2022
c434a4c
fixed some small bugs in the SAW core translation
Sep 2, 2022
a074cbc
changed more of the CompM operations in the translation to use the co…
Sep 6, 2022
3d90681
fixed the type of errorS
Sep 6, 2022
fbbc4c3
added translations for the SpecM operations
Sep 6, 2022
4e0c3f9
updated sawLet to use sort 1 instead of sort 0
Sep 6, 2022
0b2d854
whoops, updated the SAW translation to use retS instead of returnS
Sep 6, 2022
c5d8962
fixed up references to EnTree specs
Sep 7, 2022
9a596bb
Merge branch 'master' into heapster-itree
Oct 4, 2022
f355421
changed the SpecM monad to be a sort 0 instead of a sort 1
Oct 5, 2022
bebfce2
Merge branch 'master' into heapster-itree
Oct 6, 2022
48f53a5
removed the old LetRecType1 type, and updated LetRecType to reference…
Oct 6, 2022
13d26b9
changed some uses of errorM to errorS; added a workaround for issue #…
Oct 6, 2022
4af67c3
replaced uses of LetRecTypes with List1 LetRecType in the SpecM stuff…
Oct 6, 2022
354f285
Merge branch 'master' into heapster-itree
Oct 6, 2022
a991178
removed workaround for issue #1748
Oct 6, 2022
9b19195
fixed mallocSpec in the linked list example to use a SpecM type
Oct 6, 2022
6ad6fa5
changed the translation of functions to always use the empty FunStack
Oct 8, 2022
fb7e632
whoops, fixed Prelude.EmptyFunStack to the correct Prelude.emptyFunStack
Oct 11, 2022
00e56cb
fixed some examples to use SpecM instead of CompM
Oct 11, 2022
7ed4c4a
fixed the translations of lowned rules to always use the empty FunStack
Oct 11, 2022
49ecbb1
updated all examples to work with the new SpecM monad
Oct 12, 2022
e172e9a
Changed SpecM to take in a single EvType argument instead of two sepa…
Oct 12, 2022
4a07629
added QuantType instances to SAWCoreScaffolding.v
Oct 13, 2022
620c5f8
moved QuantType instances to a new file, SpecMExtra.v; updated the tr…
Oct 13, 2022
bec4e69
updated mbox example to work with the new translation
Oct 13, 2022
085e608
updated examples to use the new VoidEv single argument instead of the…
Oct 13, 2022
eafdee7
updated the Prelude to the new definitions of CallS and MultiFixS
Oct 20, 2022
c269957
Updated to the new version of the CallS and MultiFixS combinators, th…
Oct 21, 2022
c81daf7
added SpecM versions of mapBVVecM and appendCastBVVecM, and updated t…
Nov 3, 2022
da763a5
whoops, forgot to change appendCastBVVecM in one spot in the translation
Nov 3, 2022
54c7e58
whoops, forgot to change mapBVVecM to mapBVVecS
Nov 3, 2022
d973782
first try at entree is_elem_spec_ref
m-yac Nov 8, 2022
ea28b0b
update mbox_proofs header with entrees
m-yac Nov 9, 2022
83f4ddc
Merge branch 'master' into heapster-itree
Nov 11, 2022
91954fc
get mbox_free_chain_spec_ref working
m-yac Nov 16, 2022
409b1bb
prove mbox_concat/mbox_concat_chains_spec_ref
m-yac Nov 17, 2022
5cd47ad
add alternate mbox_concat_chains_spec_ref
m-yac Nov 17, 2022
366c077
add mbox_detach_spec_ref
m-yac Nov 17, 2022
d540e52
add mbox_drop_spec_ref
m-yac Nov 17, 2022
9c609ab
fixed up mbox proofs to work with updated entree-specs automation
Nov 18, 2022
a361a65
Revert "fixed up mbox proofs to work with updated entree-specs automa…
m-yac Nov 18, 2022
3e6e12b
Proofs for mbox_len
RyanGlScott Nov 18, 2022
80f8565
Merge branch 'heapster-itree' of https://github.com/GaloisInc/saw-scr…
m-yac Nov 18, 2022
41e5a5b
update proofs with latest automation
m-yac Nov 18, 2022
bf26c67
Merge branch 'master' into heapster-itree
Nov 18, 2022
aec2ac4
add maybe automation, start on mbox_randomize
m-yac Nov 18, 2022
63b3a79
Make mbox_len_spec_ref* proofs work with latest entree-specs
RyanGlScott Nov 22, 2022
0e1e995
mbox_copy_spec_ref
RyanGlScott Nov 23, 2022
183e923
Another way to prove mbox_copy, beginnings of mbox_copy_chain
RyanGlScott Nov 23, 2022
031d9a4
update proofs with latest ex and shelve automation
m-yac Nov 24, 2022
c1f05e6
Simplify mbox_copy_spec_ref__alt slightly, some progress on mbox_copy…
RyanGlScott Nov 27, 2022
03fb5d0
update mbox auto with change to 999 RelGoal hint
m-yac Nov 28, 2022
7c40584
don't greedily destruct Mboxes for now
m-yac Nov 28, 2022
f73203a
More progress on mbox_copy_chain and mbox_split_at
RyanGlScott Nov 29, 2022
faaa363
add timing commands
m-yac Nov 29, 2022
64b1355
update proofs with less `cbn`s change
m-yac Nov 29, 2022
269f3e5
add sawLet automation
m-yac Nov 29, 2022
aba8237
mbox_split_at_spec_ref is proven!
RyanGlScott Nov 29, 2022
4759cd2
More progress on mbox_copy_chain
RyanGlScott Nov 29, 2022
ab0e39c
use eithers instead of either, update proofs
m-yac Nov 30, 2022
26f44ac
added heapster_set_event_type command, along with the io example to u…
Nov 30, 2022
0e9eed5
Merge branch 'heapster-itree' of github.com:GaloisInc/saw-script into…
Nov 30, 2022
290db7e
Complete proof of mbox_copy_chain
RyanGlScott Nov 30, 2022
e4a40b3
mbox_detach_from_end proofs
RyanGlScott Nov 30, 2022
fac87aa
prove mbox_randomize_spec_ref
m-yac Dec 1, 2022
ac18311
small tweaks to the hello world example
Dec 2, 2022
1a077f4
Merge branch 'heapster-itree' of github.com:GaloisInc/saw-script into…
Dec 2, 2022
c862d47
translateCurryLocalPermImpl: Don't force the use of an EmptyFunStack
RyanGlScott Dec 8, 2022
c2385cc
clean up + update mbox_proofs, linked_list_proofs
m-yac Dec 9, 2022
2f1d08b
get `make` passing (rust typechecking fails)
m-yac Dec 9, 2022
bbac0b2
Merge branch 'master' into heapster-itree
m-yac Dec 9, 2022
eabdf2d
Merge branch 'master' into heapster-itree
RyanGlScott Dec 9, 2022
d2d9f01
Install entree-specs as a Coq dependency
RyanGlScott Dec 9, 2022
b91d94e
update proofs with latest changes to saw-core-coq
m-yac Dec 9, 2022
52eca30
incorperate Haddock suggestions from @RyanGlScott
m-yac Dec 9, 2022
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
got the new translation to SpecM to compile, yay!
Eddy Westbrook committed Sep 2, 2022
commit b5eb9f16ab1ea37f42d6c7bc5e5cf3126c4834f3
18 changes: 18 additions & 0 deletions heapster-saw/src/Verifier/SAW/Heapster/Permissions.hs
Original file line number Diff line number Diff line change
@@ -2543,6 +2543,16 @@ pattern ValPerm_LLVMBlockShape sh <- ValPerm_Conj [Perm_LLVMBlockShape sh]
where
ValPerm_LLVMBlockShape sh = ValPerm_Conj [Perm_LLVMBlockShape sh]

-- | The conjunction of exactly 1 @llvmfunptr@ permission
pattern ValPerm_LLVMFunPtr :: () =>
(a ~ LLVMPointerType w, 1 <= w, KnownNat w) =>
TypeRepr (FunctionHandleType cargs ret) ->
ValuePerm (FunctionHandleType cargs ret) ->
ValuePerm a
pattern ValPerm_LLVMFunPtr tp p <- ValPerm_Conj [Perm_LLVMFunPtr tp p]
where
ValPerm_LLVMFunPtr tp p = ValPerm_Conj [Perm_LLVMFunPtr tp p]

-- | A single @lowned@ permission
pattern ValPerm_LOwned :: () => (a ~ LifetimeType) => [PermExpr LifetimeType] ->
CruCtx ps_in -> CruCtx ps_out ->
@@ -2585,6 +2595,14 @@ pattern ValPerm_Struct ps <- ValPerm_Conj [Perm_Struct ps]
pattern ValPerm_Any :: ValuePerm a
pattern ValPerm_Any = ValPerm_Conj [Perm_Any]

-- | A single function permission
pattern ValPerm_Fun :: () => (a ~ FunctionHandleType cargs ret) =>
FunPerm ghosts (CtxToRList cargs) gouts ret ->
ValuePerm a
pattern ValPerm_Fun fun_perm <- ValPerm_Conj [Perm_Fun fun_perm]
where
ValPerm_Fun fun_perm = ValPerm_Conj [Perm_Fun fun_perm]

pattern ValPerms_Nil :: () => (tps ~ RNil) => ValuePerms tps
pattern ValPerms_Nil = MNil

Loading