Сделать автоматическое доказательство завершения использования другой размер функции

Я написал функцию нестандартного размера size2 для моего типа данных. Используя эту функцию, я могу вручную доказать завершение своей функции:

termination 
apply (relation "measure (λ(a,b,c). size2 c)")
apply auto
done

Есть ли способ сделать fun использовать мою функцию альтернативного размера для автоматического подтверждения завершения?

1 ответ

Решение

Функция f можно зарегистрировать как функцию измерения для средства проверки завершения, объявив лемму is_measure f с атрибутом measure_function, В вашем случае это выглядит следующим образом.

lemma is_measure_size2 [measure_function]: "is_measure size2" ..

Затем, lexicographic_order, который fun использует и size_change пытаться size2, тоже.

Другие вопросы по тегам