aboutsummaryrefslogtreecommitdiff
path: root/proofsearch/include
diff options
context:
space:
mode:
authorRichard Qin <richard.qin.x@gmail.com>2026-04-04 02:33:26 +0800
committerRichard Qin <richard.qin.x@gmail.com>2026-04-04 02:33:26 +0800
commitc7cf051e764b43e6455fa6cceaf1dbf7f6cb841b (patch)
treef69a15726c11076471ad8708c2c26a2584eb34f2 /proofsearch/include
parentdf6c2f124fce4cecd42da806a003afdf3a922c09 (diff)
downloadrcc-project-c7cf051e764b43e6455fa6cceaf1dbf7f6cb841b.tar.gz
rcc-project-c7cf051e764b43e6455fa6cceaf1dbf7f6cb841b.tar.xz
feat: implement variable renaming and update resolution logic to prevent variable collisions
Diffstat (limited to 'proofsearch/include')
-rw-r--r--proofsearch/include/atp/infer/resolution.h12
1 files changed, 9 insertions, 3 deletions
diff --git a/proofsearch/include/atp/infer/resolution.h b/proofsearch/include/atp/infer/resolution.h
index 2d73b06..c31ff0e 100644
--- a/proofsearch/include/atp/infer/resolution.h
+++ b/proofsearch/include/atp/infer/resolution.h
@@ -32,13 +32,19 @@ 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(const TermBank& bank, const Clause& c1, size_t lit_idx1,
+std::optional<Clause> resolve(TermBank& bank, const Clause& c1, size_t lit_idx1,
const Clause& c2, size_t lit_idx2);
/// Generate all possible resolvents between two clauses.
-std::vector<Clause> allResolvents(const TermBank& bank, const Clause& c1, const Clause& c2);
+std::vector<Clause> allResolvents(TermBank& bank, const Clause& c1, const Clause& c2);
/// Attempt factoring on a single clause (merge two unifiable literals).
-std::vector<Clause> factor(const TermBank& bank, const Clause& c);
+std::vector<Clause> factor(TermBank& bank, const Clause& c);
+
+/// Rename all variables in a clause to fresh ones, avoiding conflicts
+/// with variables already in the bank.
+Clause renameVariables(const Clause& c, TermBank& bank, SymbolTable& symbols,
+ uint32_t& next_var_id);
+
} // namespace atp