DeepSpecDB
DeepSpecDB copied to clipboard
issue tracker for the trie verification
The current proof for the trie-over-btree has some major holes unfilled. I feel obliged to list them here so whoever takes over them can have a better understanding of the status.
What's done?
An end-to-end correctness (modulo a few minor holes) about put, get, and simple usage of cursors was proved.
What's still a problem?
- [ ] a better invariant about the
bordernodeis necessary: current invariant does not rule out usage of prefix links of abordernodewhile its prefix isn't entirely zeros. - [ ] One of the links in
bordernodecan either point to a trie or an arbitrary user-appointed value. The types in C and related funspecs/proofs need changes to support the behavior. - [ ] Current model about the
cursorandkeymight not strong enough to prove the desired properties of maps (the definition inmodel/BTreesModule.vand the adapted version inverif/trie/functional/cursored_kv.v). I have no clear idea about which part should be improved, though. - [ ] The current definitions of
get_keyandget_valueinverif/trie/functional/cursored_kv.vmake refinement relationship with C code difficult to prove:get_valuecan be implemented cheaply in constant time by access the leaf node whileget_keyrequires traverse of the entire cursor. It should be better if these are defined by properties withgetrather than functions callingget. - [ ] The proofs about
bordernodeare broken (I shall fix it).