Я пытаюсь формализовать серию доказательств о топологии из книги [1] в Изабель.
Я хочу закодировать идею, что топологическое пространство (X, T) состоит из набора X «точек» (элементов некоторого произвольного типа 'a) и набора подмножеств X, называемых T, таких, что :
- A1. если элемент p находится в X, то существует по крайней мере один набор N в T, который также содержит p.
- A2. если множества U и V находятся в T, и если p∈ (U∩V), то они должны существовать в множестве N в T, где N⊆ (U∩V) и x∈N. (Если два набора пересекаются, то должна быть окрестность, которая покрывает пересечение.).
В настоящее время у меня есть следующее определение:
class topspace =
fixes X :: "'a set"
fixes T :: "('a set) set"
assumes A1: "p∈X ≡ ∃N∈T. p∈N"
assumes A2: "U∈T ∧ V∈T ∧ x∈(U∩V) ⟹ ∃N∈T. x∈N ∧ N⊆(U∩V)"
begin
(* ... *)
end
Пока все хорошо. Я могу добавлять различные определения и доказывать различные леммы и теоремы о гипотетических topspace
случаях.
Но как мне создать его? Если только я неправильно истолковываю вещи, примеры, которые я до сих пор видел для ключевых слов instance
и instantiate
, похоже, были посвящены объявлению того, что один конкретный абстрактный класс (или тип, или локаль) является экземпляром другого.
Как мне сказать Изабель, что конкретная пара наборов (например, X={1::int, 2, 3}
, T={X,{}}
) образует topspace
?
Аналогично, как я могу использовать свое определение, чтобы доказать, что X={1::int, 2, 3}, T={}
не соответствует требованиям?
Наконец, когда я показываю, что конкретный конкретный объект X соответствует определению topspace
, как я могу сказать Изабель, чтобы теперь использовать все определения и теоремы, которые я доказал о topspace
, при доказательстве X
Кстати, я использую class
, потому что я не знаю ничего лучше. Если это не подходящий инструмент для работы, я с удовольствием сделаю что-нибудь еще.
[1]: Мост к углубленной математике Деннис Сентильес