Skip to content
Snippets Groups Projects

Add monadic `;;` and change level of the do-notation to 100

Merged Robbert Krebbers requested to merge do_level into master

While trying to port some of the IPM tactics from Ltac to Mtac2 (formerly MetaCoq) I ran into the issue that _ ;; _ was used at a different level in both Iris and Mtac2, making it impossible to combine both projects. The current levels are as follows:

_ ;; _ _ <- _; _
std++ not present 65
Iris's heap_lang 100 not present
Mtac2 81 81

As you can see, the levels are all different!

Some notes:

  • I think _ ;; _ and _ <- _; _ should be at the same level.

  • The notation _ ;; _ is not present in stdpp, but it should be there:

Notation "x ;; z" := (x ≫= λ _, z).
  • If we currently add this notation, using the same level as _ <- _; _, namely 65, it will currently Iris.

This MR changes the level of _ <- _; _ in std++ into 100, which is consistent with Iris. When we accept this MR, a one line fix for Iris is needed.

The main consequence of this MR is how these notations will interact with equality. Consider:

m1 = m2 ;; m3

Should that be parsed as:

  1. (m1 = m2) ;; m3 (now)
  2. m1 = (m2 ;; m3) (before)

I'd say that when the notation is used for an imperative programming language, like Iris's heap_lang, it should definitely be (1). However, in the case of monadic code, (1) makes very little sense (at least for equality, but maybe it makes sense for other relations), as it will never type check.

Note that many other relations like setoid equality and inequality of numbers are also at level 70.

Edited by Robbert Krebbers

Merge request reports

Approval is optional

Merged by avatar (Jun 5, 2025 9:19am UTC)

Merge details

  • Changes merged into master with 08a3c7a8.
  • Deleted the source branch.

Pipeline #4961 passed

Pipeline passed for 08a3c7a8 on master

Activity

Filter activity
  • Approvals
  • Assignees & reviewers
  • Comments (from bots)
  • Comments (from users)
  • Commits & branches
  • Edits
  • Labels
  • Lock status
  • Mentions
  • Merge request status
  • Tracking
Please register or sign in to reply
Loading