Logic 如何使用Coq作为计算器或正向链接规则引擎/序列应用工具?

Logic 如何使用Coq作为计算器或正向链接规则引擎/序列应用工具?,logic,sequence,coq,Logic,Sequence,Coq,在正向链接模式下,是否可能以及如何使用Coq作为计算器或规则引擎?Coq脚本通常需要声明可以找到证据的目标。但是,是否有可能朝着另一个方向发展,例如,计算受某个规则约束的一些结果集,例如,通过一些步骤。我对完全一阶逻辑的顺序演算特别感兴趣。我猜,但我不知道有一些一阶逻辑的后续演算的实现或包,但它是用于定理证明的。我想用这种顺序演算,以某种有向顺序推导出结果。这在Coq中可能吗?如何使用?Coq也可以用于正向推理,特别是使用断言策略。当您编写断言H:P时,Coq生成一个子目标,要求您证明P。当该目

在正向链接模式下,是否可能以及如何使用Coq作为计算器或规则引擎?Coq脚本通常需要声明可以找到证据的目标。但是,是否有可能朝着另一个方向发展,例如,计算受某个规则约束的一些结果集,例如,通过一些步骤。我对完全一阶逻辑的顺序演算特别感兴趣。我猜,但我不知道有一些一阶逻辑的后续演算的实现或包,但它是用于定理证明的。我想用这种顺序演算,以某种有向顺序推导出结果。这在Coq中可能吗?如何使用?

Coq也可以用于正向推理,特别是使用断言策略。当您编写断言H:P时,Coq生成一个子目标,要求您证明P。当该目标完成时,它恢复原始证明,并使用假设H:P扩展其上下文


用于编写Coq脚本的ltac语言有一个匹配目标操作符,允许您检查目标的形状。这使您可以使用断言策略,使用从当前假设中得出的新事实逐步饱和您的证明上下文,并在满足某些条件后停止。Adam Chlipala的CPDT书涵盖了战术编程的这些特性

非常感谢你的建议,但我还是感到困惑。assertH:P意味着我应该事先知道目标或子目标H:P,这对于定理证明很好。但是在正向推理的情况下,我不知道会出现什么,下一步会得到什么。当我的目的是推导出关于某个概念或关系的任何或某些有价值的知识,而我不知道这些定理的形式和内容时,可以使用正向推理,因此,我不能将它们表示为某种目标。我甚至不知道这样的定理是否会存在。这篇文章是关于关系符号强化学习如何引导/集中正向推理,只发现一些知识,只发现有价值/有趣的知识。我想这是一篇很有创新性的文章/方法,在此之前,正向推理没有任何价值。但现在这种方法正在出现。Isabelle/HOL有第6.2.3章关于前向链接,我仍在研究它。