Я пытаюсь ввести схему в Изабель, однако, когда я добавляю ограничение диапазона или ограничение домена в теоретическую проверку, он не хочет анализировать. У меня есть следующие схемы в LaTeX:ограничение диапазона/ограничение домена в Isabelle
\begin{schema}{VideoShop}
members: \power PERSON \\
rented: PERSON \rel TITLE \\
stockLevel: TITLE \pfun \nat
\where
\dom rented \subseteq members \\
\ran rented \subseteq \dom stockLevel \\
\forall t: \ran rented @ \# (rented \rres \{t\}) \leq stockLevel~t
\end{schema}
При вводе этого в Изабеллу, я получаю следующее:
locale videoshop =
fixes members :: "PERSON set"
and rented :: "(PERSON * TITLE) set"
and stockLevel :: "(TITLE * nat) set"
assumes "Domain rented \<subseteq> members"
and "Range rented \<subseteq> Domain stockLevel"
and "(\<forall> t. (t \<in> Range rented) \<and> (card (rented \<rhd> {t}) \<le> stockLevel t))"
begin
.....
все эти разборов для последнего выражения, кроме \<forall> t.....
Я просто не понять, как добавить ограничение диапазона в Изабель.
Спасибо, это очень помогло. Каков синтаксис, чтобы получить опцию nat для shareLevel? Я изменил выражение \ на "(\ t \ Диапазон арендованной карты ({p. (P, t) \ rented}) <(stockLevel t))", но это столкновение типов с (stockLevel t) –
lburski
'stockLevel t' дает вам опцию nat. Чтобы преобразовать это в 'nat', вы можете использовать функцию' the': '(stockLevel t)'. – larsrh
Еще один быстрый вопрос, скажем, я хотел обновить stockLevel, поэтому у меня было выражение stockLevel '= stockLevel \ cup (t \ mapsto n). Как я напишу это в синтаксисе Isabelle, я посмотрел на функцию maps_add, но я не совсем понял, и я не знаю, что мне нужно. @larsrh – lburski