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

Make equivalence work with receive #28

Open
3 tasks
jeltsch opened this issue Mar 22, 2022 · 0 comments
Open
3 tasks

Make equivalence work with receive #28

jeltsch opened this issue Mar 22, 2022 · 0 comments

Comments

@jeltsch
Copy link
Contributor

jeltsch commented Mar 22, 2022

Currently, equivalence is not configured to perform rewriting under receive. The reason is that receive is not compatible with bisimilarity, but only quasi-compatible. However, by resolving input-output-hk/equivalence-reasoner#60, rewriting under receive becomes possible.

We shall configure the equivalence reasoner such that it performs rewriting also under receive. For that, we shall do the following:

  • Add the following quasi-compatibility rule, with the compatibility attribute assigned to it, to the synchronous_transition_system locale:

    lemma receive_quasi_compatibility_rule [compatibility]:
      shows "A ▹ x. 𝒫 x ∼ A ▹ x. canonical (∼)⇧♯ 𝒫 x"
  • Add the following compatibility-phase simplification rule:

    lemma receive_continuation_equivalence_class_lifting [compatibility_simplification]:
      shows "[𝒫]⇘K⇧♯⇙ = {𝒬. ∀n X. receive_follow_up 𝒬 n X ∈ [receive_follow_up 𝒫 n X]⇘K⇙}"
  • Add an assignment of the compatibility_simplification attribute to the receive_follow_up_after lemmas

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

1 participant