vikraman / 2DTypes

Collaborative work on reversible computing
17 stars 1 forks source link

Fix the problem with termination checker in Diamond #17

Open inexxt opened 3 years ago

inexxt commented 3 years ago

There are three functions marked as non-terminating:

All three of them are of similar nature, and they terminate based on the same reason. Namely, when they are called with an argument l1 : Listℕ, they are calling themselves recursively on l2, which has the property that l1 ≅* l2. Relation ≅* has the property that, if l1 ≅* l2, then l2 is lexicographically smaller than l1.

Thus, we need to:

Hopefully, this can be done in a generic way, to not bother with the details of the functions above (they are quite messy and I can modify them to fit in the generic interface myself).