我正在尝试将模式输入到Isabelle中,但是当我将范围限制或域限制添加到它不想解析的定理证明器中时。我在LaTeX中有以下架构:
\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}
将此输入Isabelle时,我得到以下内容:
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.....
我只是不明白如何在Isabelle中添加范围限制。
答案 0 :(得分:1)
您的输入存在多个问题。
您在表达式中使用的⊳
符号
(rented ⊳ {t})
与任何运算符都没有关联,因此无法对其进行解析。我不太确定它应该是什么意思。从规范的高级概念中我猜测了所有出租特定标题的人#34;。这可以通过集合理解最容易地表达出来:
{p. (p, t) ∈ rented}
您将有界通用量词转换为包含连词的量词。这可能不是您想要的,因为它表示&#34;对于所有t
,t
的范围为rented
和其他内容&#34 ;。伊莎贝尔有限量词的符号。
∀t ∈ Range rented. ...
您正尝试将stockLevel
用作功能,但并非如此。从你的LaTeX输入我收集到它应该是一个部分功能。伊莎贝尔称这些为map
。适当的类型是:
TITLE ⇀ nat
注意&#34;鱼叉&#34;符号而不是功能箭头。地图的域功能称为dom
。第二个区域设置假设可以表示为:
Range rented ⊆ dom stockLevel
鉴于此,您可以将stockLevel
用作TITLE
到nat option
的函数。