Меньше, чем функция
Я прохожу курс обучения "Логические основы". Решение проблемы:
Имея меньшую или равную функцию:
Fixpoint leb (n m : nat) : bool :=
match n with
| O => true
| S n' =>
match m with
| O => false
| S m' => leb n' m'
end
end.
создать функцию "меньше":
Definition blt_nat (n m : nat) : bool
(* REPLACE THIS LINE WITH ":= _your_definition_ ." *). Admitted.
Насколько я понимаю, это должно работать так:
if (n == m)
return false
else
return (leb n m)
Я создал это:
Definition blt_nat (n m : nat) : bool
match n with
| m => false
| _ => leb n m
end.
Но это не работает - выводит: "Ошибка: это предложение является избыточным". для линии:
| _ => leb n m
Пожалуйста помоги.
1 ответ
Решение
Используя match ... with...end
мы можем просто проверить конструкторы определенного типа данных и выяснить, как он построен на основе своих конструкторов. Таким образом, вы не можете сопоставить тип данных nat с другим типом данных nat. Вы можете найти другие примеры здесь.
Definition blt_nat (n m : nat) : bool :=
match m with
| 0 => false
| S m' => leb n m'
end.