程序修复点与Coq中的函数之间的区别是什么?

时间:2017-06-17 15:24:29

标签: coq totality

他们似乎服务于类似的目的。我到目前为止注意到的一个区别是,虽然var obj = { method: 'GET' , mode : 'no-cors', headers: { 'Access-Control-Request-Headers': 'Authorization', 'Authorization': 'Basic amFzcGVyYWRtaW46amFzcGVyYWRtaW4=', 'Content-Type': 'application/json', 'Origin': '' }, credentials: 'include' }; fetch('http://myreport:8082/jasperserver/rest/login/', obj ).then(… 会接受像Program Fixpoint这样的复合量度,但{measure (length l1 + length l2) }似乎拒绝这一点并且只允许Function

{measure length l1}是否比Program Fixpoint更强大,或者它们更适合不同的用例?

1 个答案:

答案 0 :(得分:3)

这可能不是一个完整的清单,但它是我迄今为止所发现的:

  • 正如您已经提到的,Program Fixpoint允许该度量查看多个参数。
  • Function创建了一个foo_equation引理,可用于通过其RHS重写对foo的调用。避免Coq simpl for Program Fixpoint等问题非常有用。
  • 在某些(简单?)案例中,Function可以定义foo_ind引理,以便在foo的递归调用结构中执行归纳。同样,如果没有在证明中有效地重复终止参数,那么证明foo的内容非常有用。
  • 可以欺骗
  • Program Fixpoint支持嵌套递归,请参阅https://stackoverflow.com/a/46859452/946226。这也是Program Fixpoint无法在Function无效时file_get_contents发挥作用的原因。