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

Allowing for an heterogeneous relation on labels #4

Open
YaZko opened this issue Feb 12, 2022 · 4 comments
Open

Allowing for an heterogeneous relation on labels #4

YaZko opened this issue Feb 12, 2022 · 4 comments
Assignees
Labels
enhancement New feature or request

Comments

@YaZko
Copy link
Contributor

YaZko commented Feb 12, 2022

The current notion of bisimulation we use requires the computations to share the same signature of effects, and the same return type. This is reflected by the fact that the bisimulation checks that the challenges in the bisimulation game request to expose the same label, up-to coq's eq.

Relaxing this constraint on the return type is necessary to recover eutt's flexibility, but @nchappe has already a use case where he needs the additional flexibility to relate syntactically distinct events.

It should be slightly verbose but relatively straightforward to expand the current definition without breaking the current theory. Extending the theory should not be too bad, but a bit more work.

@YaZko YaZko added the enhancement New feature or request label Feb 12, 2022
@YaZko YaZko assigned YaZko and unassigned YaZko Feb 12, 2022
@YaZko
Copy link
Contributor Author

YaZko commented Feb 12, 2022

There appears to be a bug in the coinduction library that needs to be fixed before going forward with this issue: the coinduction tactic seems to fail its reification when the greatest fixed point is an heterogeneous relation (see damien-pous/coinduction#5).

@elefthei
Copy link
Collaborator

I also have a use case for this feature -- making a note here for posterity :)

@YaZko
Copy link
Contributor Author

YaZko commented Mar 25, 2022

I was planning on getting started on this Today, but got sidetracked slightly and am a bit hesitant as to what is the best pragmatic path.

As mentioned above, the necessary extension has been only recently added to the coinduction library. Damien went even further today by supporting not only heterogeneous relations (the only thing we need) but also heterogeneous dependent relations. However this complicates the unification problems that arise during typeclass resolution of setoid rewrites, and it has broken some of our code.

So I am basically hesitating between:

  • First thinking hard as to how to improve rewriting in general (this latest extension straight up makes some rewrites loops, but they were already slower than they should before)
  • Or starting to implement the heterogeneous bisimulation by pinning against a564ba8d6ef590e6f717f412c8954b3bb948ac5c (a.k.a. before the dependent generalization)

If I understand correctly the lack of this feature is straight up blocking for you @elefthei ? It's gonna soon be for @nchappe so the latter should probably be started now.

@elefthei
Copy link
Collaborator

I got unblocked! With a post-processing hack which is ugly but works for now :)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request
Projects
None yet
Development

No branches or pull requests

2 participants