【发布时间】:2019-02-03 20:47:55
【问题描述】:
假设我对关系的自反和传递闭包有以下定义,其中关系由二元谓词表示:
inductive
closure :: "(['a, 'a] ⇒ bool) ⇒ (['a, 'a] ⇒ bool)"
for ℛ (infix "→" 50)
where
gen:
"x → y ⟹ closure (→) x y" |
refl:
"closure (→) x x" |
trans:
"⟦closure (→) x y; closure (→) y z⟧ ⟹ closure (→) x z"
我想为closure 的应用程序提供更好的语法。假设我希望能够为closure (→) x y 写x *(→)* y。问题是这个符号中的参数顺序与函数closure的参数顺序不匹配。
我认为使用\<index> 可能会有所帮助。不幸的是,Isabelle/Isar Reference Manual 中的\<index> 的文档非常简洁,我无法真正理解它。我用\<index> 玩了一下,但没有找到任何可行的解决方案。
让我感到困惑的是,从我收到的一些错误消息来看,\<index> 显然被翻译成⇘some_index⇙。我尝试使用⇘ℛ⇙ 标记基本关系应该去的位置,但这也不起作用。
【问题讨论】: