Skip to content

Conversation

@keyboardDrummer
Copy link
Owner

@keyboardDrummer keyboardDrummer commented Jan 16, 2026

Depends on strata-org#308

Changes

  1. Translates Laurel procedures to Core functions when possible (expression body and no contract)
  2. Translates Laurel procedure contracts to Core procedure contracts
  3. Implement Laurel's field access operator for mutable field
  4. Support both types of return value syntax in Laurel
  5. Some support for parsing composite type definitions in Laurel
  6. Identify which Laurel procedures read or mutate the heap, and introduce the Heap as an in or out parameter accordingly

Testing

  • For 1-2, add T5_ProcedureCallsBoogie.lean
  • For 3-5, turn on T1_MutableFields.lean

"

#guard_msgs(drop info, error) in
#eval! testInputWithOffset "T5_ProcedureCallsBoogie" program 20 processLaurelFile

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Should this be Core?

- It has no precondition (or just `true`)
- It has exactly one output parameter (the return type)
-/
def canBeBoogieFunction (proc : Procedure) : Bool :=

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Should this be core?

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.

5 participants