Isabelle/HOL: первые шаги

Isabelle/HOL – это среда для формальных доказательств. Чтобы начать, достаточно скачать Isabelle с официального сайта isabelle.in.tum.de и запустить IDE на базе jEdit. После запуска в jEdit можно создать новый файл-«теорию» с расширением .thy. Например, Hello.thy и вставим в него:

theory Hello imports Main begin end

Имя теории (Hello) должно совпадать с именем файла. Строка imports Main подключает стандартную библиотеку HOL(в целом подключаем ее всегда). Begin и end это операторы начала и окончания нашей теории(кто работал с паскалем - тот поймет).

Константы и функции

Внутри теории можно задавать константы и функции. Например, определим числовую константу:

definition x :: nat where "x = 5"

Здесь x – константа типа nat (натуральное число) со значением 5. Показать вычисление помогает команда value:

value "x + 2"

Аналогично можно определить функцию. Ключевое слово fun служит для задания (возможно рекурсивной) функции. Например:

fun double :: "nat ⇒ nat" where "double n = n + n"

эта функция возвращает удвоенное значение аргумента. Тогда команда

value "double 3" покажет 6. После определения Isabelle автоматически проверит, что функция корректно типизирована и «структурно сходится».

Типы данных и выражения

Isabelle/HOL имеет несколько встроенных типов: nat – натуральные числа, задаются конструкторами 0 и Suc (так что 0, Suc 0, Suc (Suc 0) и т.д.) int – целые числа (включая отрицательные). bool – булевы значения с двумя константами True и False string – строки символов (по сути списки символов).

С этими типами можно работать просто. Например, условное выражение:

value "if (2 < (5::nat)) then 1 else 0"

покажет 1, потому что 2 < 5 истинно. С булевыми значениями можно строить and, or и так далее. Со строками тоже нетрудно: их можно конкатенировать через @. Например,

value ""foo" @ "bar""

выдаст строку "foobar".

Базовый синтаксис и работа с базовыми операциями довольно простые, самые приколы начнутся позже, когда потребуется работать с доказательствами, леммами, развертками, ну и лямбдами. Но обо всем этом позже.

Isabelle/HOL: первые шаги
Isabelle/HOL – это среда для формальных доказательств. Чтобы начать, достаточно скачать Isabelle с официального сайта isabelle.in.tum.de и запустить IDE на базе jEdit | Сетка — социальная сеть от hh.ru