Isabelle对二进制谓词表示的关系有什么支持?

Isabelle对二进制谓词表示的关系有什么支持?,isabelle,Isabelle,在Isabelle形式化中,我用二元谓词表示关系。我想让操作符使用这种表示来执行典型的关系操作,如合成和反转 文档“What's in Main”只提到了用成对集表示的运算符。关系理论一开始就说,“关系——作为成对集和二进制谓词”。然而,在这个理论中,我找不到对二进制谓词表示的太多支持。我只找到了几个具有神秘属性的引理 对二进制谓词表示的关系有广泛的支持吗?特别是,是否定义了公共关系操作的运算符?这些东西记录在哪里?对成对关系集的支持比二进制谓词稍微好一点,但有很多是可用的。然而,许多关系操作是

在Isabelle形式化中,我用二元谓词表示关系。我想让操作符使用这种表示来执行典型的关系操作,如合成和反转

文档“What's in Main”只提到了用成对集表示的运算符。
关系
理论一开始就说,“关系——作为成对集和二进制谓词”。然而,在这个理论中,我找不到对二进制谓词表示的太多支持。我只找到了几个具有神秘属性的引理


对二进制谓词表示的关系有广泛的支持吗?特别是,是否定义了公共关系操作的运算符?这些东西记录在哪里?

对成对关系集的支持比二进制谓词稍微好一点,但有很多是可用的。然而,许多关系操作是函数和谓词上更一般操作的实例,或者它们确实是使用
pred\u set\u conv
获得的。因此,它们可能很难找到。使用
find_定理
命令或面板查找引理。以下是通常操作的简要总结:

  • 组合:
    relcompp
    (中缀
    OO
  • 反向:
    conversep
    (表示法
    \\\\
  • (自反)传递闭包:
    tranclp
    rtranclp
  • 交叉点:
    inf
  • 联合体:
    sup

  • 包含:
    op为什么不定义自己的合成和反转(以及其他需要的操作)?这似乎很容易。我知道,这可能类似于重新发明轮子(如果已经存在适合的关系理论/库),但在这种情况下,“轮子”似乎是一个非常简单的轮子,你从外部库/理论中获得了独立性。或者你是否需要关于这些操作的复杂引理或定理,你更愿意从库/理论中重用它们,而不是证明自己?我不想使用我自己的定义,因为这会使代码不规范,因此不容易理解。我不认为独立于外部理论是非常重要的;事实上,我通常认为重新发明车轮会更糟。在这种情况下,它甚至不依赖于某些第三方库,而是依赖于核心库,核心库应该是相当知名、稳定和持久的。非常感谢。这已经非常有用了。你能详细说明一下pred\u set\u conv
    吗?通过搜索标准库源代码,我了解到连接归纳谓词和归纳集的是HOL的一些核心属性。然而,《伊莎贝尔/国际会计准则专家组参考手册》中没有对此进行记录。这个谓词是关于什么的?它记录在哪里?交集和并集也有问题。
    inf
    sup
    函数似乎不适用于二进制谓词(类型为
    'a的谓词)⇒ 'B⇒ bool
    ),仅适用于一元数。伊莎贝尔抱怨那种类型
    'b⇒ bool
    不是半晶格类型。此外,Isabelle不接受符号
    用于
    inf
    sup
    ,尽管此符号用于
    HOL.Relation
    。这是为什么?我将
    \
    更正为
    \
    。然而,已经有两位同行评论员拒绝了这一更正。原因?“这篇编辑偏离了文章的初衷。即使是必须做出重大修改的编辑也应该努力维护文章所有者的目标。”不用说,从他们的个人资料来看,这些评论员似乎对伊莎贝尔一无所知。我猜他们甚至不知道一个
    \
    是一个符号的表示,而目前符号
    \
    根本不存在。亲爱的其他评论员,请首先查看Isabelle库的源代码,如果你知道如何找到它,并意识到
    conversep
    的符号使用
    \
    ,不是
    \
    。我或多或少能够解决
    inf
    sup
    的问题。二进制谓词的问题只有在
    value
    之后才会出现。在引理语句中,一切正常。符号
    HOL库时,可以使用code>。Lattice\u语法
    。奇怪的是,在
    HOL.Relation
    中成功地使用了这种语法,尽管这种理论没有导入
    HOL Library.Lattice\u语法。