Preds are just Core preds with ✨flavour✨#382
Merged
Merged
Conversation
Signed-off-by: Sacha Ayoun <[email protected]>
NatKarmios
force-pushed
the
predicates-as-core
branch
from
July 1, 2026 12:05
075d441 to
5d8aae9
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Based on #380, look only at the last commit if you're reviewing this before we merge the others.
The core of this PR is this diff:
type atom = TypeDef__.assertion_atom = | Emp (** Empty heap *) - | Pred of string * Expr.t list * Expr.t list (** Predicates *) | Pure of Expr.t (** Pure formula *) | Types of (Expr.t * Type.t) list (** Typing assertion *) | CorePred of string * Expr.t list * Expr.t list (** Core assertion *) | Wand of { lhs : string * Expr.t list; rhs : string * Expr.t list } (** Magic wand of the form [P(...) -* Q(...)] *)Instead, predicates are now represented as core predicates that start with a magic string
GILLIAN_USER_PRED__pred_name.This does not change the instantiations of Gillian (except for compiling user-defined predicates which do that compilation correctly). Similarly, the GIL parser still parses and produces the old version of the code.