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

trying to merge egraph-less parts from egraphs branch #284

Merged
merged 78 commits into from
Oct 8, 2022

Conversation

samuelgruetter
Copy link
Contributor

No description provided.

to egg, which manages to simplify the goal to True
and feed some examples to cvc5
defining disjoint union (du) in terms of disjointb instead of
dput and map.fold, which makes associativity much simpler to prove
which splits off an address range from a record
but casting from `interp_type tp1` to `interp_type tp1'` where
tp1 and tp1' only differ in presence flags seems cumbersome
using Inductive presence{P: Type} := PPresent | PAbsent | PPartial(p: P)

However, this creates redundant respresentations for all-present and
all-absent (they could also be represented as PPartial), and after merging
a piece back into a record, we'd have to simplify all-present PPartials into
PPresent, and after removing all fields of a record, also simplify all-absent
PPartials into PAbsent, so it seems better to record presence information
only at the leaves.
define type_presence_sub, wip new split_off_from_type
but no generic rep appearing in sepclauses, because that would
have to be used very pervasively in all lemmas, so array lemmmas
would all be stated in terms of rep instead of array, and unfolding/
folding rep also is a bit more complicated
(needed inside sepapps, because there are no addresses there)
rewrite in type of mem_hyp does not work if there is also a
proj_mem of this hyp, which basically always exists
creating an evar for the frame, but instead implicitly instantiate
the frame with
(wand calleePost callerPost)
which can be thought of as
"callerPost minus calleePost"

which solves the problem that variables introduced during cancellation
are not in the evar context of the frame evar.
instead of having to restate all function specs using wand
Quite lightweight because it does not include the wand+ramification
trick (which is done at the end of cancellation)
@samuelgruetter samuelgruetter merged commit 07f30f3 into master Oct 8, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant