code wiki / (root) / nx_avatar_split.nx

nx_avatar_split.nx

buildroot/runtime/nx_avatar_split.nx

5079 B137 linesdepth 7pulls 7 transitivereach 6 importersview sourcekind librarytopic avatar
docsdependenciesstructsconstsfunctions

about

nx_avatar_split.nx -- AVATAR-style clause splitting. Per Vampire-displacement roadmap Phase 2. AVATAR (Voronkov 2014) splits multi-component clauses into independent sub-clauses; full AVATAR uses a SAT solver to coordinate which split combinations to explore. This commit ships the SPLIT-ONLY primitive (trivial AVATAR). For each multi-component input clause, emit one output clause per component containing only that component's literals. Single- component clauses pass through unchanged. Sound when split components are ground or when each split's variables don't escape into the SAT-side coordination -- which is always the case here because we're splitting variable-disjoint components. The components don't share variables by construction (that's what "component" means), so each can be saturated independently and any UNSAT in any sub-clause is UNSAT for the whole clause set. API: nx_avatar_split_clause(c, out, cap) -> n_emitted nx_avatar_split_all(in, n_in, out, cap) -> n_emitted

dependencies 7 imports · 5 importers

nx_syscalls.nx nx_runtime.nx nx_tier.nx nx_result.nx nx_unify.nx nx_resolution.nx nx_clause_components.nx nx_avatar_split.nx nx_avatar_encode.nx nx_avatar_encode_test.nx nx_avatar_solve_test.nx nx_avatar_split_test.nx nx_solve.nx

imports: nx_syscalls.nxnx_runtime.nxnx_tier.nxnx_result.nxnx_unify.nxnx_resolution.nxnx_clause_components.nx

imported by: nx_avatar_encode.nxnx_avatar_encode_test.nxnx_avatar_solve_test.nxnx_avatar_split_test.nxnx_solve.nx

structs

none

consts

none

functions

43func nx_avatar_split_clause(c: *Clause, out: *Clause, cap: nx_int) -> nx_int
110func nx_avatar_count_splittable(input: *Clause, n_in: nx_int) -> nx_int
called by 1: main calls 1: nx_clause_n_components
123func nx_avatar_split_all(input: *Clause, n_in: nx_int,