У меня есть следующий код в Isabelle:Нетипизированные набор операций в Isabelle
typedecl type1
typedecl type2
consts
A::"type1 set"
B::"type2 set"
Когда я хочу использовать операцию объединения с А и В, как показано ниже:
axiomatization where
c0: "A ∩ B = {}"
Так как A и B является множества разных типов, я получаю ошибку столкновение типов, что имеет смысл!
Мне интересно, есть ли какие-либо аналоги для операций с множеством, которые они неявно рассматривают свои операнды как чистые множества (т. Е. Игнорируют их типы), поэтому становится возможным что-то вроде A ∩ 'B (∩' - это операция, аналогичная операции выше смысл).
PS: Другим обходным способом является литье типа, которое я написал в качестве отдельного вопроса here, чтобы лучше организовать мои вопросы.
Благодаря
Спасибо, пожалуйста, дайте мне несколько советов, как я могу переключиться на Isabelle/ZF? Я использую JEdit с установленной isabelle, и я импортирую основную теорию в свой файл. Является ли синтаксис Isabelle/ZF отличным от Isabelle/HOL? Я был бы признателен за немного больше объяснений. – qartal
Чтобы переключиться на логику ZF, выберите логические изображения ZF на панели теории и перезапустите. Заметим, что ZF полностью не пересекается с HOL, т. Е. Ни одно из определений в HOL не доступно как таковое в ZF. Кроме того, ZF использует другой синтаксис. Файл ROOT в '$ ISABELLE_HOME/src/ZF' содержит некоторые ссылки на литературу по логике ZF. –
Я бы рассмотрел переход на Isabelle/ZF как теоретический. В отличие от Isabelle/HOL, его библиотека и инструменты не были разработаны за последние 20 лет. Внимательно взглянув на ваше приложение, вы должны найти способы работы с системой типа HOL. – Makarius