gpt4 book ai didi

types - 什么是 Isabelle/HOL 亚型?哪些 Isar 命令产生子类型?

转载 作者:行者123 更新时间:2023-12-04 07:04:17 32 4
gpt4 key购买 nike

我想了解 Isabelle/HOL 亚型。我在对最后一个 SO 问题的部分回答中解释了为什么它对我很重要:

Trying to Treat Type Classes and Sub-types Like Sets and Subsets

基本上,我只有一种类型,所以如果我可以通过子类型来利用 HOL 类型的力量,这可能对我有用。

我已经在 Isabelle 文档、Web 和 Isabelle 邮件列表中进行了搜索。使用了“子类型”这个词,虽然不多,但它似乎不是 Isabelle 词汇中的一个非常重要的部分。

部分原因是,我只想知道如何正确使用“子类型”这个词。我不想在 Isabelle 中将某些不是子类型的东西称为子类型。

根据 Wiki,子类型是特定于语言的:

https://en.wikipedia.org/wiki/Subtyping

重要的最后一部分;请命令

有人能给我一份创建 Isar 子类型的 Isar 命令列表吗?我正在调查 typedef ,如上面链接的问题所述。我倾向于称之为子类型,但是 isar-ref.pdf解释命令时不使用“子类型”。

如果还有其他方法可以创建 Isabelle/HOL 子类型,我想知道。

最佳答案

Isabelle/HOL 没有可替代性意义上的亚型。这意味着如果您需要类型为 a 的值,那么您必须提供类型为 a 的值- 你无法与不同类型的人相处b .特别是,Isabelle 没有子类型的概念,其中子类型的值满足某些附加属性。

有一些方法可以模拟子类型的某些方面,这就是使用子类型概念的地方:

  • 类型参数的替换有时允许您创建子类型的错觉。 record包使用它来扩展记录,以便可以使用扩展记录 q代替非扩展记录 r .在内部,q 的附加字段被填充到 r 泛化的附加类型参数中的记录类型。从技术上讲,不存在子类型多态性;因此,扩展记录的顺序很重要。
  • typedef介绍一种新型 t其类型 Universe 是某个现有 HOL 类型的值的非空子集 a .有时,这被称为 ta 的子类型,但你没有可替代性。您总是必须明确提及嵌入态射 Rep_t当您想使用 t 的值时作为 a 之一.是否使用 typedef 定义类型并不重要或者通过其他方式,任何内射函数都可以作为这种强制。
  • 强制子类型,如 Isabelle Reference Manual (section 12.4) 中所述使 Isabelle 自动推断并插入此类强制。这仅适用于类型和子类型是没有参数的类型构造函数。
    使用 declare [[coercion_enabled]]启用强制子类型并使用 declare [[coercion Rep_t]] 注册您的强制函数.
    因此,您不必自己插入嵌入函数。
  • 关于types - 什么是 Isabelle/HOL 亚型?哪些 Isar 命令产生子类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16231071/

    32 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com