aboutsummaryrefslogtreecommitdiff
path: root/proofsearch/include/atp/infer
diff options
context:
space:
mode:
authorRichard Qin <richard.qin.x@gmail.com>2026-04-04 04:52:36 +0800
committerRichard Qin <richard.qin.x@gmail.com>2026-04-04 04:52:36 +0800
commitdbd35e0081c600822a2069fd7b393e085b0c00c9 (patch)
tree9fb1c5ffa8813f2e77ceccf5339500a3a6c11eb7 /proofsearch/include/atp/infer
parent2713bbcb4044ca18eb3071a8efea7ad097a6693b (diff)
downloadrcc-project-dbd35e0081c600822a2069fd7b393e085b0c00c9.tar.gz
rcc-project-dbd35e0081c600822a2069fd7b393e085b0c00c9.tar.xz
feat: implement saturation-based resolution loop in Prover class
Diffstat (limited to 'proofsearch/include/atp/infer')
-rw-r--r--proofsearch/include/atp/infer/resolution.h11
1 files changed, 8 insertions, 3 deletions
diff --git a/proofsearch/include/atp/infer/resolution.h b/proofsearch/include/atp/infer/resolution.h
index c31ff0e..df9cab3 100644
--- a/proofsearch/include/atp/infer/resolution.h
+++ b/proofsearch/include/atp/infer/resolution.h
@@ -28,18 +28,23 @@
#include <optional>
#include <vector>
+#include "atp/infer/unification.h"
+
namespace atp {
/// Attempt binary resolution between two clauses on the specified literal indices.
/// @return The resolvent clause if resolution succeeds, std::nullopt otherwise.
std::optional<Clause> resolve(TermBank& bank, const Clause& c1, size_t lit_idx1,
- const Clause& c2, size_t lit_idx2);
+ const Clause& c2, size_t lit_idx2,
+ const UnificationConfig& uconfig = {});
/// Generate all possible resolvents between two clauses.
-std::vector<Clause> allResolvents(TermBank& bank, const Clause& c1, const Clause& c2);
+std::vector<Clause> allResolvents(TermBank& bank, const Clause& c1, const Clause& c2,
+ const UnificationConfig& uconfig = {});
/// Attempt factoring on a single clause (merge two unifiable literals).
-std::vector<Clause> factor(TermBank& bank, const Clause& c);
+std::vector<Clause> factor(TermBank& bank, const Clause& c,
+ const UnificationConfig& uconfig = {});
/// Rename all variables in a clause to fresh ones, avoiding conflicts
/// with variables already in the bank.