Предположим, что мы определим функцию
f : N \to N
f 0 = 0
f (s n) = f (n/2) -- this / operator is implemented as floored division.
Агда будет рисовать f в лососе, потому что он не может определить, меньше ли n/2, чем n. Я не знаю, как сказать, что Агда прекратил проверку. Я вижу, что в стандартной библиотеке у них есть разделение на две части на 2 и доказательство того, что n/2 < п. Тем не менее, я до сих пор не понимаю, как заставить средство проверки терминалов понять, что рекурсия выполнена на меньшей подзадаче.