Only recur for comparing in Glue if φ breaks down#6013
Only recur for comparing in Glue if φ breaks down#6013plt-amy merged 2 commits intoagda:masterfrom plt-amy:aliao/conversion-check-glue-loop
Conversation
|
@plt-amy : This is off-topic, but I couldn't find your email-address (and I do not twitter). I see that you have genuine interest in Cubical Agda. We are currently lacking an active maintainer, since the original author Andrea @Saizan is occupied by his new job and can only occasionally give some direction. If you are happy with that, you can get commit-rights and thus extra responsibility and look after Cubical Agda a bit. |
|
I was actually thinking of asking whether I could take over stewardship of the cubical bits 😅 I've been discussing possible improvements with Anders @mortberg and trading implementation ideas with the cooltt folks (@jonsterling et al). (edit: my email is |
This is excellent news! Welcome to the team! |
This is great news! @plt-amy Don't hesitate to @ me here or request a review from me. I'm not actively following the Agda Github as I haven't figured out a way to filter out the cubical parts that I'm mainly interested in... So unless I'm explicitly notified it's very likely that I miss something |
Fixes #5955. I added some comments to the code explaining the change. The problem was that, when comparing terms at type
Glue φ T, the conversion checker would try to decompose φ into faces, and recursively compare each face under the resulting substitutions (this iscompareTermOnFace/forallFaceMaps).But some expressions are indecomposable, e.g.
φ i, and in that case,compareTermOnFacewould try comparingm, nat type(Glue φ T)[idS].. i.e., exactly the situation we started in. Not good for termination!