Coq 混淆“程序”策略产生的义务

Coq 混淆“程序”策略产生的义务,coq,Coq,我对coq认证助理还很陌生,现在仍在努力。 我遇到了一个我不知道如何处理的案例:我试图使用程序定点策略来削弱对我的代码的要求,以便稍后证明所需的属性,即所谓的义务。虽然其中大多数都很简单,但有两个义务生成目标的形式为[a-quity-simplee-xpr]=[my function name]\u Responsibility\u 3,一般来说,这些目标是指以前证明的其他义务。我试着展开和替换,但没有真正的帮助。 如果这些问题没有通用的解决方案,我可以发送证明脚本+添加一些上下文的义务截图 先

我对coq认证助理还很陌生,现在仍在努力。 我遇到了一个我不知道如何处理的案例:我试图使用
程序定点
策略来削弱对我的代码的要求,以便稍后证明所需的属性,即所谓的
义务
。虽然其中大多数都很简单,但有两个义务生成目标的形式为
[a-quity-simplee-xpr]=[my function name]\u Responsibility\u 3
,一般来说,这些目标是指以前证明的其他义务。我试着展开和替换,但没有真正的帮助。 如果这些问题没有通用的解决方案,我可以发送证明脚本+添加一些上下文的义务截图


先谢谢你

可能发生的一件事是,您拥有同时包含“数据”和“证明”的类型(通常,如果您试图使用
sig
或包含证明项的自定义归纳类型进行细化),并且您的函数需要命题相等的证明,对于这种依赖类型来说,它通常太强了

证明术语应该是无关的:最简单的解决方法是使用
证明无关性
(在stdlib中)中的公理来解决该目标


有一些没有axiom的方法,但我相信它们需要更多的工作/专业知识

可能发生的一件事是,您拥有同时包含“数据”和“证明”的类型(通常,如果您试图使用
sig
或包含证明项的自定义归纳类型进行细化),并且您的函数需要命题相等的证明,对于这种依赖类型来说,它通常太强了

证明术语应该是无关的:最简单的解决方法是使用
证明无关性
(在stdlib中)中的公理来解决该目标


有一些没有axiom的方法,但我相信它们需要更多的工作/专业知识

我没有使用细化类型(sig)。我所做的唯一一件事是:我有一个
P
类型
tx
的值,它被传递给函数,该函数接受
typey
类型的值。我知道
x=y
。但是这个属性必须被明确证明,coq不能自动证明。我没有使用细化类型(sig)。我所做的唯一一件事是:我有一个
P
类型
tx
的值,它被传递给函数,该函数接受
typey
类型的值。我知道
x=y
。但是这个属性必须被明确证明,coq不能自动证明。