魔法与

使用时具有中间结果上的构造到模式匹配匹配的术语是从目标类型中抽象出来的,也可能是从以前的参数类型中抽象出的。这使得只需遵循相同的递归模式就可以证明由定义的函数的属性。

一个例子

过滤器:{A:Set}->(A->Bool)->列表A->List A过滤器p[]=[]使用px过滤p(x::xs)…|true=x::filter p xs…|false=筛选pxs模块证明{A:Set}(P:List A->Set),其中证明:(p:A->Bool)(xs:List A)->p(filter pxs)证明p[]=?0用px证明p(x::xs)…|true=?1…|false=?2

具有在里面证明目标是P(过滤器P(x::xs))减少到P(过滤器P(x::xs)|P x)。在执行具有,第x页是从目标类型中抽象出来的,所以在这两个分支中?1:P(过滤器P(x::xs)|真)减少到P(x::过滤器pxs)?2:P(过滤器P(x::xs)|false)减少到P(过滤器pxs).

有关完整示例,请参见测试/成功/过滤器.agda.

页面上次修改时间:2007年10月16日上午09:43
技术支持私人维基