Function 柯克:“功能。。。用`语法
似乎,作为w/Function 柯克:“功能。。。用`语法,function,syntax,definition,coq,Function,Syntax,Definition,Coq,似乎,作为w/归纳的和固定点,您可以使用相互定义函数。您能给出语法和/或示例吗?我到处都找不到任何东西。我想这与Fixpoint (在这上面也找不到任何东西)。一个非工作(但一半编译——最后两行以红色突出显示)示例: 好吧,我想我终于明白你的问题了 确实有一种方法可以相互定义多个固定点。在变体部分有(轻微)记录 类似地,有一种方法可以相互定义几个归纳的类型(文档化) 有一种方法可以相互定义几个。但是,请注意手册中关于此功能的备注: 函数结构还具有和扩展,用于定义相互递归的定义。但是,此功能不适用
归纳的
和固定点
,您可以使用相互定义函数
。您能给出语法和/或示例吗?我到处都找不到任何东西。我想这与Fixpoint
(在这上面也找不到任何东西)。一个非工作(但一半编译——最后两行以红色突出显示)示例:
好吧,我想我终于明白你的问题了 确实有一种方法可以相互定义多个
固定点
。在变体部分有(轻微)记录
类似地,有一种方法可以相互定义几个归纳的类型(文档化)
有一种方法可以相互定义几个。但是,请注意手册中关于此功能的备注:
函数
结构还具有和
扩展,用于定义相互递归的定义。但是,此功能不适用于非结构化递归函数
在半工作示例中出现的错误与语法无关,也与函数无关。。。具有
功能。错误在于您只能对归纳类型使用模式匹配,而分支必须以构造函数开头。在您的示例中,ARG
不是归纳类型,Inf
不是构造函数。我不能真正“纠正”你的例子,因为我真的不明白你想表达什么。这个例子就是为了这个问题吗?在这种情况下,您将其精简为太少
PS:我想知道你是否在尝试(同时定义递归函数和归纳类型)。如果是这样的话,那就没有运气了:Coq还没有这个功能。我完全不清楚你在问什么。另外:如果行以红色突出显示,您如何说您的示例正在编译。恰恰相反!最后,不要使用“w/”或类似的缩写。你有一个正确的观点:我更正为“半编译”。编译器有几个过程。如果一条线高亮显示为红色,则其中一些是成功的。试着删除一个结束
,看看发生了什么我必须考虑如何解决这个问题。有很多问题,其中一些我解决了(有有趣的结果(一个异常,不少)),但。。。
Variable ARG:Type.
Variable phy inf phyinf: ARG.
Function Phy (x:ARG): ARG := match x with Inf x => phyinf | _ => phy end
with Inf (x:ARG): ARG := match x with Phy x => phyinf | _ => inf end. (*Error: Unknown constructor: Inf.*)