Logic 如何自动证明两个一阶公式是等价的?

Logic 如何自动证明两个一阶公式是等价的?,logic,first-order-logic,proof-system,Logic,First Order Logic,Proof System,自动证明两个一阶公式F和G等价的最佳方法是什么 与“完整”一阶公式相比,这些公式有一些限制: 无量词 无功能 隐式普遍量化 我可以用子句范式转换这些公式,我有统一文本的例程。然而,我不确定如何继续,以及这个问题是否是可判定的。如前所述,要证明两个公式都是闭合的(普遍量化的)公式,需要证明F=>G和G=>F。要证明这两个公式中的每一个,可以使用各种计算。我将描述[解析演算]: 否定这个猜想,使F=>G变成F&-G 转换成CNF 运行解析过程 如果你得到一个空子句,你已经证明了原来的猜想F=>G。

自动证明两个一阶公式F和G等价的最佳方法是什么

与“完整”一阶公式相比,这些公式有一些限制:

  • 无量词
  • 无功能
  • 隐式普遍量化

  • 我可以用子句范式转换这些公式,我有统一文本的例程。然而,我不确定如何继续,以及这个问题是否是可判定的。

    如前所述,要证明两个公式都是闭合的(普遍量化的)公式,需要证明F=>G和G=>F。要证明这两个公式中的每一个,可以使用各种计算。我将描述[解析演算]:

    • 否定这个猜想,使F=>G变成F&-G
    • 转换成CNF
    • 运行解析过程
    • 如果你得到一个空子句,你已经证明了原来的猜想F=>G。如果搜索饱和,不能再得到新子句,这个猜想就不成立了
    在您的条件下,来自F的所有原子公式将是仅应用于变量的谓词符号,来自G的所有原子公式将是仅应用于skolem常量的谓词符号。所以解析过程只会产生替换,要么将变量映射到其他变量,要么将变量映射到那些skolem常量。这意味着它只能导出有限数量的不同文字,因此解析过程将始终停止-它将是可判定的


    您还可以为此目的使用自动化工具,该工具将为您完成所有工作。我用它来解决这些问题。作为输入语言,我使用的语言是,人类很容易读/写

    举个例子:输入文件:

    fof(my_formula_name, conjecture, (![X]: p(X)) <=> (![Y]: p(Y)) ).
    
    -tAuto
    -xAuto
    执行一些自动配置,在您的情况下很可能不需要),结果是

    # Garbage collection reclaimed 59 unused term cells.
    
    # Auto-Ordering is analysing problem.
    # Problem is type GHNFGFFSF00SS
    # Auto-mode selected ordering type KBO6
    # Auto-mode selected ordering precedence scheme <invfreq>
    # Auto-mode selected weight ordering scheme <precrank20>
    #
    # Auto-Heuristic is analysing problem.
    # Problem is type GHNFGFFSF00SS
    # Auto-Mode selected heuristic G_E___107_C41_F1_PI_AE_Q4_CS_SP_PS_S0Y
    # and selection function SelectMaxLComplexAvoidPosPred.
    #
    # No equality, disabling AC handling.
    #
    # Initializing proof state
    #
    #cnf(i_0_2,negated_conjecture,(~p(esk1_0)|~p(esk2_0))).
    #
    #cnf(i_0_1,negated_conjecture,(p(X1)|p(X2))).
    # Presaturation interreduction done
    #
    #cnf(i_0_2,negated_conjecture,(~p(esk1_0)|~p(esk2_0))).
    #
    #cnf(i_0_1,negated_conjecture,(p(X2)|p(X1))).
    #
    #cnf(i_0_3,negated_conjecture,(p(X3))).
    
    # Proof found!
    # SZS status Theorem
    # Parsed axioms                        : 1
    # Removed by relevancy pruning         : 0
    # Initial clauses                      : 2
    # Removed in clause preprocessing      : 0
    # Initial clauses in saturation        : 2
    # Processed clauses                    : 5
    # ...of these trivial                  : 0
    # ...subsumed                          : 0
    # ...remaining for further processing  : 5
    # Other redundant clauses eliminated   : 0
    # Clauses deleted for lack of memory   : 0
    # Backward-subsumed                    : 1
    # Backward-rewritten                   : 1
    # Generated clauses                    : 4
    # ...of the previous two non-trivial   : 4
    # Contextual simplify-reflections      : 0
    # Paramodulations                      : 2
    # Factorizations                       : 2
    # Equation resolutions                 : 0
    # Current number of processed clauses  : 1
    #    Positive orientable unit clauses  : 1
    #    Positive unorientable unit clauses: 0
    #    Negative unit clauses             : 0
    #    Non-unit-clauses                  : 0
    # Current number of unprocessed clauses: 0
    # ...number of literals in the above   : 0
    # Clause-clause subsumption calls (NU) : 0
    # Rec. Clause-clause subsumption calls : 0
    # Unit Clause-clause subsumption calls : 1
    # Rewrite failures with RHS unbound    : 0
    # Indexed BW rewrite attempts          : 4
    # Indexed BW rewrite successes         : 4
    # Unification attempts                 : 12
    # Unification successes                : 9
    # Backwards rewriting index :     2 leaves,   1.00+/-0.000 terms/leaf
    # Paramod-from index        :     1 leaves,   1.00+/-0.000 terms/leaf
    # Paramod-into index        :     1 leaves,   1.00+/-0.000 terms/leaf
    

    这个问题取决于你对公式的限制程度(我不记得细节)。为了证明F和g是等价的,你需要证明F意味着g和g意味着F。为了证明你试图用荒谬来证明它,通过试图证明F而不是(g)并且失败。。。然后探索这个公式的后果,同时试图证明它是错误的。该方法被称为类似“反驳树”或“真理树”的东西,因为它是无函数的,并且完全通用,将您置于一个可判定的片段中:
    # Garbage collection reclaimed 59 unused term cells.
    
    # Auto-Ordering is analysing problem.
    # Problem is type GHNFGFFSF00SS
    # Auto-mode selected ordering type KBO6
    # Auto-mode selected ordering precedence scheme <invfreq>
    # Auto-mode selected weight ordering scheme <precrank20>
    #
    # Auto-Heuristic is analysing problem.
    # Problem is type GHNFGFFSF00SS
    # Auto-Mode selected heuristic G_E___107_C41_F1_PI_AE_Q4_CS_SP_PS_S0Y
    # and selection function SelectMaxLComplexAvoidPosPred.
    #
    # No equality, disabling AC handling.
    #
    # Initializing proof state
    #
    #cnf(i_0_2,negated_conjecture,(~p(esk1_0)|~p(esk2_0))).
    #
    #cnf(i_0_1,negated_conjecture,(p(X1)|p(X2))).
    # Presaturation interreduction done
    #
    #cnf(i_0_2,negated_conjecture,(~p(esk1_0)|~p(esk2_0))).
    #
    #cnf(i_0_1,negated_conjecture,(p(X2)|p(X1))).
    #
    #cnf(i_0_3,negated_conjecture,(p(X3))).
    
    # Proof found!
    # SZS status Theorem
    # Parsed axioms                        : 1
    # Removed by relevancy pruning         : 0
    # Initial clauses                      : 2
    # Removed in clause preprocessing      : 0
    # Initial clauses in saturation        : 2
    # Processed clauses                    : 5
    # ...of these trivial                  : 0
    # ...subsumed                          : 0
    # ...remaining for further processing  : 5
    # Other redundant clauses eliminated   : 0
    # Clauses deleted for lack of memory   : 0
    # Backward-subsumed                    : 1
    # Backward-rewritten                   : 1
    # Generated clauses                    : 4
    # ...of the previous two non-trivial   : 4
    # Contextual simplify-reflections      : 0
    # Paramodulations                      : 2
    # Factorizations                       : 2
    # Equation resolutions                 : 0
    # Current number of processed clauses  : 1
    #    Positive orientable unit clauses  : 1
    #    Positive unorientable unit clauses: 0
    #    Negative unit clauses             : 0
    #    Non-unit-clauses                  : 0
    # Current number of unprocessed clauses: 0
    # ...number of literals in the above   : 0
    # Clause-clause subsumption calls (NU) : 0
    # Rec. Clause-clause subsumption calls : 0
    # Unit Clause-clause subsumption calls : 1
    # Rewrite failures with RHS unbound    : 0
    # Indexed BW rewrite attempts          : 4
    # Indexed BW rewrite successes         : 4
    # Unification attempts                 : 12
    # Unification successes                : 9
    # Backwards rewriting index :     2 leaves,   1.00+/-0.000 terms/leaf
    # Paramod-from index        :     1 leaves,   1.00+/-0.000 terms/leaf
    # Paramod-into index        :     1 leaves,   1.00+/-0.000 terms/leaf
    
    # Proof found!
    # SZS status Theorem