plfa.github.io icon indicating copy to clipboard operation
plfa.github.io copied to clipboard

Exercise _† not doable

Open PiotrJander opened this issue 6 years ago • 2 comments

The statement in question is not (quite) provable.

Firstly, we are asked to formalise the translation _†. As a total function, _† must have a case for each constructor of the source language, for example, it would map S.zerotoT.zero.

But now we have that S.zero † ≡ T.zero but we don't have S.zero † ~ T.zero because the irrelevant constructors are omitted from the _~_ relation on purpose.

What would work is the following:

†≡→~ : ∀ {Γ A}
    → (M : Γ S.⊢ A)
    → {N : Γ T.⊢ A}
    → SimulationRelevant M
    → M † ≡ N
      ------------
    → M ~ N

where SimulationRelevant is a predicate on source terms which excludes the irrelevant constructors.

Let me know if this makes sense, and if so, I am happy to make a pull request.

PiotrJander avatar Feb 01 '19 15:02 PiotrJander

Good point. Probably a better way forward is to change the problem to just show that M ~ N implies M † ≡ N.

wadler avatar Feb 01 '19 19:02 wadler

#551 may be relevant.

capn-freako avatar Jan 02 '21 00:01 capn-freako