使用Function时不允许部分应用

时间:2015-06-05 14:32:59

标签: coq

我收到以下错误消息:

"failure in proveterminate Error: Partial application of function convert_btree_to_tree in its body is not allowed while using Function"

来自下面的Coq脚本,但我不知道出了什么问题。谁能给我一些建议?

Function convert_btree_to_tree (t: btree (non_terminal' non_terminal terminal) terminal) {measure (fun t => bheight _ _ t)}: 
tree (non_terminal' non_terminal terminal) terminal:=
let tl:= decompose t in
let ttl:= map convert_btree_to_tree tl in
let ttl':= convert_list_tree_to_tree_list ttl in
match broot _ _ t with
| inl n => node _ _ n ttl'
| inr t => node_t _ _ t
end.

有关功能的文档在参考手册中非常有限,是否有人知道更完整和详细的参考,如果可能,还有评论和示例?

1 个答案:

答案 0 :(得分:0)

我对Function了解不多,但在match中,您会返回nodenode_t。由于你没有给出定义,我不知道这两个构造函数是否来自同一类型,但我认为你有一个拼写错误,第二个案例应该返回node t _ _ t

在马库斯的反馈后编辑: node_ttree的构造函数,签名为terminal -> tree:如果foo类型为terminal,则node_t foo属于树类型。 node具有签名non_terminal -> tree_list -> tree

您是否声明了任何隐式参数?否则,在match个案例中,您对nodenode_t应用的参数太多,可能会被解释为部分应用。