Я пытаюсь реализовать зависимый тип оценщика STLC в Coq, используя Program Fixpoint
.Поскольку в языке нет оператора с фиксированной запятой, я думаю, что оценщик должен завершиться, хотя условие завершения не является структурным.слишком много переменных одновременно, и сопоставление с образцом слишком вложенное.
Если бы это было просто Fixpoint
, я мог бы просто реализовать тело, используя тактику, но при использовании Program Fixpoint
или Function
, Я просто не могу.Есть ли какая-нибудь хитрость для построения тела с использованием тактики в этом случае?
Я застрял в самом конце: https://gist.github.com/HuStmpHrrr/0d92e646916ae9ec7ced3ff21724ba2d