@JonasAlaif and I have been working on a new inhaling expression. The purpose of this new expression is that we want to temporarily inhale some assertion to check facts that are inaccessible in the current state. An example of this is a magic wand, where we don't hold its LHS and where we want to check a property in the snapshot of this magic wand.
For example, we can use this expression to define the snapshot of a wand as follows:
The syntax is as follows: inhaling (<assertion>) in <expression>
assertion must be in parenthesis because of a conflict with the in keyword used for sets. This has been discussed for the applying expression in #216.
expression must be pure.
This PR extends Silver to parse this new expression and adds some test files to check the expected behavior. There is also an implementation for Silicon in viperproject/silicon#848.
@JonasAlaif and I have been working on a new inhaling expression. The purpose of this new expression is that we want to temporarily inhale some assertion to check facts that are inaccessible in the current state. An example of this is a magic wand, where we don't hold its LHS and where we want to check a property in the snapshot of this magic wand.
For example, we can use this expression to define the snapshot of a wand as follows:
The syntax is as follows:
inhaling (<assertion>) in <expression>
assertion
must be in parenthesis because of a conflict with thein
keyword used for sets. This has been discussed for the applying expression in #216.expression
must be pure.This PR extends Silver to parse this new expression and adds some test files to check the expected behavior. There is also an implementation for Silicon in viperproject/silicon#848.