The generic template for using ceres_omega to analyze a proof.
The generic template for using ceres_omega to analyze a proof. It performs the following steps:
1) eliminate definitions (AnalysisWithCeresOmega.input_proof
2) eliminate definitions (AnalysisWithCeresOmega.preprocessed_input_proof1
3) expand non-atomic axioms (AnalysisWithCeresOmega.preprocessed_input_proof2)
4) make the proof regular (AnalysisWithCeresOmega.preprocessed_input_proof)
5) convert it to lk_sk (AnalysisWithCeresOmega.lksk_proof)
6) compute the struct, css and projections (AnalysisWithCeresOmega.css,
AnalysisWithCeresOmega.projections, AnalysisWithCeresOmega.struct)
7) map the css to first-order by lambda lifting and erasure of types (AnalysisWithCeresOmega.fol_css)
8) try to find a refutation of the css (AnalysisWithCeresOmega.fol_refutation)
9) reintroduce types (might fail because type erasure is a heuristic which is unsound in general) (no method available, included in step 11)
10) reintroduce terms abstracted away by lambda lifting (no method available, included in step 11)
11) construct an r_al proof from the refutation (AnalysisWithCeresOmega.ral_refutation)
12) construct the acnf (AnalysisWithCeresOmega.acnf)
13) construct the expansion proof (with atomic cuts) (AnalysisWithCeresOmega.expansion_proof)
14) print statistics (AnalysisWithCeresOmega.printStatistics)
Does not work for Schema, for CERESomega only if all labels are empty (clauses are correct, but labels forgotten).
The pick* functions generalize the convenience constructors of the LK rules which allow to specify arguments by a formula instead of an index.
The pick* functions generalize the convenience constructors of the LK rules which allow to specify arguments by a formula instead of an index. Here we lookup fitting matches for the auxiliary formulas of each LK rule. In the case of LK, fitting is defined as equality of the formula. In the case of LKsk, it is equality of formulas and skolem labels. An algorithm using pickrule is therefore easier to transfer to LKsk.