#include "proof/alethe/alethe_node_converter.h"
#include "proof/alethe/alethe_post_processor.h"
#include "proof/dot/dot_printer.h"
+#include "proof/lfsc/lfsc_post_processor.h"
+#include "proof/lfsc/lfsc_printer.h"
#include "proof/proof_checker.h"
#include "proof/proof_node_algorithm.h"
#include "proof/proof_node_manager.h"
{
fp = d_pnm->clone(fp);
}
- // TODO (proj #37) according to the proof format, post process the proof node
- // TODO (proj #37) according to the proof format, print the proof node
// according to the proof format, post process and print the proof node
if (options().proof.proofFormatMode == options::ProofFormatMode::DOT)
proof::AletheProofPostprocess vpfpp(d_pnm.get(), anc);
vpfpp.process(fp);
}
+ else if (options().proof.proofFormatMode == options::ProofFormatMode::LFSC)
+ {
+ std::vector<Node> assertions;
+ getAssertions(as, assertions);
+ proof::LfscNodeConverter ltp;
+ proof::LfscProofPostprocess lpp(ltp, d_pnm.get());
+ lpp.process(fp);
+ proof::LfscPrinter lp(ltp);
+ lp.print(out, assertions, fp.get());
+ }
else if (options().proof.proofFormatMode == options::ProofFormatMode::TPTP)
{
out << "% SZS output start Proof for " << options().driver.filename
regress0/printer/tuples_and_records.cvc.smt2
regress0/proofs/cyclic-ucp.smt2
regress0/proofs/issue277-circuit-propagator.smt2
+ regress0/proofs/lfsc-test-1.smt2
regress0/proofs/open-pf-datatypes.smt2
regress0/proofs/open-pf-if-unordered-iff.smt2
regress0/proofs/open-pf-rederivation.smt2
--- /dev/null
+; COMMAND-LINE: --dump-proofs --proof-format-mode=lfsc
+; EXIT: 0
+; SCRUBBER: grep -v -E '.*'
+(set-logic QF_UF)
+(set-info :category "crafted")
+
+(declare-sort U 0)
+(declare-fun f1 () U)
+(declare-fun f2 () U)
+(declare-fun f3 () U)
+(declare-fun f4 () U)
+(declare-fun p (U) Bool)
+(assert (not (= f1 f2)))
+(assert (and (p f1) (or (= f1 f2) (distinct f3 f4 f2)) (p f3)))
+(assert (= f3 f4))
+(check-sat)
+(exit)