如何解决Coq中的从属函数
我对Coq并不陌生,希望我的问题不太基本。我只是想知道如何在Coq中定义依赖函数。例如,如何定义布尔函数,将true传递给true并将false传递给自然数7?我假设可以使用通常的(f x)表示法将依存函数f应用于输入x。
解决方法
要在Coq中定义从属函数,请在指定类型时参考该参数。在您的示例中,您使用一个布尔值,我们将其称为echo ${b/$c/$d}
,返回类型为echo "$e" | sed -e "s/_/ /g"
(或b
)。
在代码中,如下所示:
match b with true => bool | false => nat end
在这里弄清楚if b then bool else nat
构造的类型还有一些魔术,如果您提供更多的类型注释,它看起来像
Definition foo (b : bool)
: match b with true => bool | false => nat end
:= match b with true => true | false => 7 end.
Compute foo true. (* = true *)
Compute foo false. (* = 7 *)
在这里,由于match构造可以根据match
的值(可以是任意术语,而不仅仅是变量)而具有不同的类型,因此我们使用注释Definition foo'
: forall b : bool,match b return Set with true => bool | false => nat end
:= fun b : bool =>
match b as b'
return match b' return Set with true => bool | false => nat end
with true => true | false => 7 end.
来赋予{{ 1}},然后根据b
的值指定匹配的类型。
但是,特别是在匹配变量时,Coq常常可以自己找出as b' return ...
注释。
您可以找到有关匹配结构here,in the reference manual
的一些文档版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。