Как доказать, что «3 - простое число» в ассистенте доказательства Изабель? - PullRequest
0 голосов
/ 17 декабря 2018

Для доказательства, над которым я работаю в Изабель, мне нужны факты, что 3 и 5 - простые числа.Какой самый простой способ установить это?

1 Ответ

0 голосов
/ 18 декабря 2018

Существуют простые правила, которые позволяют упрощающему делать это автоматически:

lemma "prime (5 :: nat)"
  by simp

Для больших чисел (например, 137) это займет несколько секунд, а для гораздо больших чисел этополностью непригоден для использования.

Вы также можете использовать eval вместо simp, который проходит через оракула оценки Изабель для оценки утверждения внутри стандарта ML, а затем переосмысливает результат как теорему в Изабель.В зависимости от того, кого вы спрашиваете, это может показаться немного менее заслуживающим доверия, чем simp.

Наконец, есть запись о Сертификатах Pratt в Архив формальных доказательств также предоставляет метод проверки под названием pratt, который может автоматически доказать простоту числа с помощью сертификатов Pratt.Это немного более эффективно, чем использование simp, но все же не подходит для действительно больших чисел.

В любом случае, для небольших чисел, таких как 5 и 7, by simp - это путь.

Обратите внимание, что вы должны указать тип, то есть prime (5 :: nat) или prime (7 :: int).Если вы просто напишите prime 5, тип, который выводится для 5, является слишком общим.Например, prime (5 :: real) - это , а не true, поскольку поля не содержат простых чисел.

...