【发布时间】:2018-04-25 21:31:33
【问题描述】:
在 Isabelle 形式化中,我用二元谓词表示关系。我想让运算符使用这种表示来执行典型的关系运算,例如合成和反转。
文档“What's in Main”只提到了这样的运算符,用于表示成对的集合。 Relation 理论在一开始就说,“关系——作为成对的集合和二元谓词”。但是,我在这个理论中找不到对二元谓词表示的太多支持。我只找到了几个带有神秘pred_set_conv 属性的引理。
是否广泛支持由二元谓词表示的关系?特别是,是否定义了通用关系操作的运算符?这些东西记录在哪里?
【问题讨论】:
-
为什么不直接定义自己的合成和反转(以及其他需要的操作)?这似乎很容易。我知道,这可能就像重新发明轮子(如果已经存在合适的关系理论/库),但在这种情况下,“轮子”似乎是一个非常简单的轮子,并且您可以独立于外部库/理论。
-
或者您是否需要关于这些操作的复杂引理或定理,您宁愿从库/理论中重用而不是证明自己?
-
我不想使用我自己的定义,因为这会使代码不规范,因此不太容易理解。我不认为独立于外部理论很重要。事实上,我通常认为重新发明轮子会更糟。在这种特殊情况下,它甚至不依赖于某些第三方库,而是依赖于核心库,它应该是相当知名、稳定和持久的。
标签: isabelle