@stevenvo780/st-lang 3.2.3 → 4.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +47 -7
- package/dist/api.d.ts +2 -0
- package/dist/api.d.ts.map +1 -1
- package/dist/api.js +5 -1
- package/dist/api.js.map +1 -1
- package/dist/argumentation/dot.d.ts +3 -0
- package/dist/argumentation/dot.d.ts.map +1 -0
- package/dist/argumentation/dot.js +25 -0
- package/dist/argumentation/dot.js.map +1 -0
- package/dist/argumentation/extensions.d.ts +11 -0
- package/dist/argumentation/extensions.d.ts.map +1 -0
- package/dist/argumentation/extensions.js +173 -0
- package/dist/argumentation/extensions.js.map +1 -0
- package/dist/argumentation/framework.d.ts +13 -0
- package/dist/argumentation/framework.d.ts.map +1 -0
- package/dist/argumentation/framework.js +117 -0
- package/dist/argumentation/framework.js.map +1 -0
- package/dist/argumentation/index.d.ts +6 -0
- package/dist/argumentation/index.d.ts.map +1 -0
- package/dist/argumentation/index.js +33 -0
- package/dist/argumentation/index.js.map +1 -0
- package/dist/argumentation/types.d.ts +11 -0
- package/dist/argumentation/types.d.ts.map +1 -0
- package/dist/argumentation/types.js +8 -0
- package/dist/argumentation/types.js.map +1 -0
- package/dist/ast/visitor.d.ts +95 -0
- package/dist/ast/visitor.d.ts.map +1 -0
- package/dist/ast/visitor.js +223 -0
- package/dist/ast/visitor.js.map +1 -0
- package/dist/citation-reasoning/derive.d.ts +31 -0
- package/dist/citation-reasoning/derive.d.ts.map +1 -0
- package/dist/citation-reasoning/derive.js +157 -0
- package/dist/citation-reasoning/derive.js.map +1 -0
- package/dist/citation-reasoning/index.d.ts +4 -0
- package/dist/citation-reasoning/index.d.ts.map +1 -0
- package/dist/citation-reasoning/index.js +10 -0
- package/dist/citation-reasoning/index.js.map +1 -0
- package/dist/citation-reasoning/types.d.ts +36 -0
- package/dist/citation-reasoning/types.d.ts.map +1 -0
- package/dist/citation-reasoning/types.js +6 -0
- package/dist/citation-reasoning/types.js.map +1 -0
- package/dist/educational/checker.d.ts +3 -0
- package/dist/educational/checker.d.ts.map +1 -0
- package/dist/educational/checker.js +244 -0
- package/dist/educational/checker.js.map +1 -0
- package/dist/educational/generator.d.ts +4 -0
- package/dist/educational/generator.d.ts.map +1 -0
- package/dist/educational/generator.js +158 -0
- package/dist/educational/generator.js.map +1 -0
- package/dist/educational/index.d.ts +6 -0
- package/dist/educational/index.d.ts.map +1 -0
- package/dist/educational/index.js +21 -0
- package/dist/educational/index.js.map +1 -0
- package/dist/educational/normalize.d.ts +6 -0
- package/dist/educational/normalize.d.ts.map +1 -0
- package/dist/educational/normalize.js +124 -0
- package/dist/educational/normalize.js.map +1 -0
- package/dist/educational/rng.d.ts +10 -0
- package/dist/educational/rng.d.ts.map +1 -0
- package/dist/educational/rng.js +47 -0
- package/dist/educational/rng.js.map +1 -0
- package/dist/educational/templates.d.ts +30 -0
- package/dist/educational/templates.d.ts.map +1 -0
- package/dist/educational/templates.js +567 -0
- package/dist/educational/templates.js.map +1 -0
- package/dist/educational/types.d.ts +44 -0
- package/dist/educational/types.d.ts.map +1 -0
- package/dist/educational/types.js +20 -0
- package/dist/educational/types.js.map +1 -0
- package/dist/exporters/coq/index.d.ts +35 -0
- package/dist/exporters/coq/index.d.ts.map +1 -0
- package/dist/exporters/coq/index.js +299 -0
- package/dist/exporters/coq/index.js.map +1 -0
- package/dist/fol-prover/cnf.d.ts +10 -0
- package/dist/fol-prover/cnf.d.ts.map +1 -0
- package/dist/fol-prover/cnf.js +357 -0
- package/dist/fol-prover/cnf.js.map +1 -0
- package/dist/fol-prover/index.d.ts +7 -0
- package/dist/fol-prover/index.d.ts.map +1 -0
- package/dist/fol-prover/index.js +27 -0
- package/dist/fol-prover/index.js.map +1 -0
- package/dist/fol-prover/prove.d.ts +4 -0
- package/dist/fol-prover/prove.d.ts.map +1 -0
- package/dist/fol-prover/prove.js +34 -0
- package/dist/fol-prover/prove.js.map +1 -0
- package/dist/fol-prover/resolve.d.ts +27 -0
- package/dist/fol-prover/resolve.d.ts.map +1 -0
- package/dist/fol-prover/resolve.js +234 -0
- package/dist/fol-prover/resolve.js.map +1 -0
- package/dist/fol-prover/types.d.ts +34 -0
- package/dist/fol-prover/types.d.ts.map +1 -0
- package/dist/fol-prover/types.js +38 -0
- package/dist/fol-prover/types.js.map +1 -0
- package/dist/fol-prover/unify.d.ts +9 -0
- package/dist/fol-prover/unify.d.ts.map +1 -0
- package/dist/fol-prover/unify.js +110 -0
- package/dist/fol-prover/unify.js.map +1 -0
- package/dist/hyperreal/index.d.ts +45 -0
- package/dist/hyperreal/index.d.ts.map +1 -0
- package/dist/hyperreal/index.js +183 -0
- package/dist/hyperreal/index.js.map +1 -0
- package/dist/index.d.ts +26 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +72 -1
- package/dist/index.js.map +1 -1
- package/dist/lsp/index.d.ts +6 -0
- package/dist/lsp/index.d.ts.map +1 -0
- package/dist/lsp/index.js +29 -0
- package/dist/lsp/index.js.map +1 -0
- package/dist/lsp/protocol.d.ts +20 -0
- package/dist/lsp/protocol.d.ts.map +1 -0
- package/dist/lsp/protocol.js +64 -0
- package/dist/lsp/protocol.js.map +1 -0
- package/dist/lsp/server.d.ts +47 -0
- package/dist/lsp/server.d.ts.map +1 -0
- package/dist/lsp/server.js +529 -0
- package/dist/lsp/server.js.map +1 -0
- package/dist/lsp/types.d.ts +152 -0
- package/dist/lsp/types.d.ts.map +1 -0
- package/dist/lsp/types.js +70 -0
- package/dist/lsp/types.js.map +1 -0
- package/dist/parser/formulas.d.ts +7 -0
- package/dist/parser/formulas.d.ts.map +1 -0
- package/dist/parser/formulas.js +511 -0
- package/dist/parser/formulas.js.map +1 -0
- package/dist/parser/parser.d.ts +11 -41
- package/dist/parser/parser.d.ts.map +1 -1
- package/dist/parser/parser.js +410 -1037
- package/dist/parser/parser.js.map +1 -1
- package/dist/parser/state.d.ts +34 -0
- package/dist/parser/state.d.ts.map +1 -0
- package/dist/parser/state.js +163 -0
- package/dist/parser/state.js.map +1 -0
- package/dist/plugin-system/demo-min-logic.d.ts +3 -0
- package/dist/plugin-system/demo-min-logic.d.ts.map +1 -0
- package/dist/plugin-system/demo-min-logic.js +116 -0
- package/dist/plugin-system/demo-min-logic.js.map +1 -0
- package/dist/plugin-system/errors.d.ts +9 -0
- package/dist/plugin-system/errors.d.ts.map +1 -0
- package/dist/plugin-system/errors.js +24 -0
- package/dist/plugin-system/errors.js.map +1 -0
- package/dist/plugin-system/index.d.ts +6 -0
- package/dist/plugin-system/index.d.ts.map +1 -0
- package/dist/plugin-system/index.js +14 -0
- package/dist/plugin-system/index.js.map +1 -0
- package/dist/plugin-system/registry.d.ts +12 -0
- package/dist/plugin-system/registry.d.ts.map +1 -0
- package/dist/plugin-system/registry.js +46 -0
- package/dist/plugin-system/registry.js.map +1 -0
- package/dist/plugin-system/types.d.ts +23 -0
- package/dist/plugin-system/types.d.ts.map +1 -0
- package/dist/plugin-system/types.js +3 -0
- package/dist/plugin-system/types.js.map +1 -0
- package/dist/plugin-system/validate.d.ts +4 -0
- package/dist/plugin-system/validate.d.ts.map +1 -0
- package/dist/plugin-system/validate.js +60 -0
- package/dist/plugin-system/validate.js.map +1 -0
- package/dist/profiles/classical/parallel-sat.js +3 -3
- package/dist/profiles/classical/parallel-sat.js.map +1 -1
- package/dist/proof-exchange/index.d.ts +26 -0
- package/dist/proof-exchange/index.d.ts.map +1 -0
- package/dist/proof-exchange/index.js +94 -0
- package/dist/proof-exchange/index.js.map +1 -0
- package/dist/runtime/memo/cache.d.ts +32 -0
- package/dist/runtime/memo/cache.d.ts.map +1 -0
- package/dist/runtime/memo/cache.js +129 -0
- package/dist/runtime/memo/cache.js.map +1 -0
- package/dist/runtime/memo/hash.d.ts +9 -0
- package/dist/runtime/memo/hash.d.ts.map +1 -0
- package/dist/runtime/memo/hash.js +87 -0
- package/dist/runtime/memo/hash.js.map +1 -0
- package/dist/runtime/memo/index.d.ts +4 -0
- package/dist/runtime/memo/index.d.ts.map +1 -0
- package/dist/runtime/memo/index.js +8 -0
- package/dist/runtime/memo/index.js.map +1 -0
- package/dist/runtime/parallel/index.d.ts +34 -0
- package/dist/runtime/parallel/index.d.ts.map +1 -0
- package/dist/runtime/parallel/index.js +220 -0
- package/dist/runtime/parallel/index.js.map +1 -0
- package/dist/runtime/parallel/worker.d.ts +22 -0
- package/dist/runtime/parallel/worker.d.ts.map +1 -0
- package/dist/runtime/parallel/worker.js +43 -0
- package/dist/runtime/parallel/worker.js.map +1 -0
- package/dist/runtime/smt/index.d.ts +6 -0
- package/dist/runtime/smt/index.d.ts.map +1 -0
- package/dist/runtime/smt/index.js +18 -0
- package/dist/runtime/smt/index.js.map +1 -0
- package/dist/runtime/smt/mock-backend.d.ts +30 -0
- package/dist/runtime/smt/mock-backend.d.ts.map +1 -0
- package/dist/runtime/smt/mock-backend.js +460 -0
- package/dist/runtime/smt/mock-backend.js.map +1 -0
- package/dist/runtime/smt/serializer.d.ts +21 -0
- package/dist/runtime/smt/serializer.d.ts.map +1 -0
- package/dist/runtime/smt/serializer.js +314 -0
- package/dist/runtime/smt/serializer.js.map +1 -0
- package/dist/runtime/smt/subprocess-backend.d.ts +62 -0
- package/dist/runtime/smt/subprocess-backend.d.ts.map +1 -0
- package/dist/runtime/smt/subprocess-backend.js +261 -0
- package/dist/runtime/smt/subprocess-backend.js.map +1 -0
- package/dist/runtime/smt/types.d.ts +57 -0
- package/dist/runtime/smt/types.d.ts.map +1 -0
- package/dist/runtime/smt/types.js +6 -0
- package/dist/runtime/smt/types.js.map +1 -0
- package/dist/runtime/streaming/index.d.ts +4 -0
- package/dist/runtime/streaming/index.d.ts.map +1 -0
- package/dist/runtime/streaming/index.js +9 -0
- package/dist/runtime/streaming/index.js.map +1 -0
- package/dist/runtime/streaming/stream-eval.d.ts +31 -0
- package/dist/runtime/streaming/stream-eval.d.ts.map +1 -0
- package/dist/runtime/streaming/stream-eval.js +155 -0
- package/dist/runtime/streaming/stream-eval.js.map +1 -0
- package/dist/runtime/streaming/types.d.ts +33 -0
- package/dist/runtime/streaming/types.d.ts.map +1 -0
- package/dist/runtime/streaming/types.js +6 -0
- package/dist/runtime/streaming/types.js.map +1 -0
- package/dist/runtime/typecheck/checker.d.ts +72 -0
- package/dist/runtime/typecheck/checker.d.ts.map +1 -0
- package/dist/runtime/typecheck/checker.js +462 -0
- package/dist/runtime/typecheck/checker.js.map +1 -0
- package/dist/runtime/typecheck/index.d.ts +4 -0
- package/dist/runtime/typecheck/index.d.ts.map +1 -0
- package/dist/runtime/typecheck/index.js +13 -0
- package/dist/runtime/typecheck/index.js.map +1 -0
- package/dist/runtime/typecheck/levenshtein.d.ts +11 -0
- package/dist/runtime/typecheck/levenshtein.d.ts.map +1 -0
- package/dist/runtime/typecheck/levenshtein.js +49 -0
- package/dist/runtime/typecheck/levenshtein.js.map +1 -0
- package/dist/runtime/typecheck/types.d.ts +14 -0
- package/dist/runtime/typecheck/types.d.ts.map +1 -0
- package/dist/runtime/typecheck/types.js +26 -0
- package/dist/runtime/typecheck/types.js.map +1 -0
- package/dist/solver/cdcl-v2/clause-learning.d.ts +33 -0
- package/dist/solver/cdcl-v2/clause-learning.d.ts.map +1 -0
- package/dist/solver/cdcl-v2/clause-learning.js +110 -0
- package/dist/solver/cdcl-v2/clause-learning.js.map +1 -0
- package/dist/solver/cdcl-v2/index.d.ts +9 -0
- package/dist/solver/cdcl-v2/index.d.ts.map +1 -0
- package/dist/solver/cdcl-v2/index.js +39 -0
- package/dist/solver/cdcl-v2/index.js.map +1 -0
- package/dist/solver/cdcl-v2/lbd.d.ts +34 -0
- package/dist/solver/cdcl-v2/lbd.d.ts.map +1 -0
- package/dist/solver/cdcl-v2/lbd.js +72 -0
- package/dist/solver/cdcl-v2/lbd.js.map +1 -0
- package/dist/solver/cdcl-v2/luby.d.ts +28 -0
- package/dist/solver/cdcl-v2/luby.d.ts.map +1 -0
- package/dist/solver/cdcl-v2/luby.js +70 -0
- package/dist/solver/cdcl-v2/luby.js.map +1 -0
- package/dist/solver/cdcl-v2/phase-saving.d.ts +14 -0
- package/dist/solver/cdcl-v2/phase-saving.d.ts.map +1 -0
- package/dist/solver/cdcl-v2/phase-saving.js +44 -0
- package/dist/solver/cdcl-v2/phase-saving.js.map +1 -0
- package/dist/solver/cdcl-v2/solver.d.ts +10 -0
- package/dist/solver/cdcl-v2/solver.d.ts.map +1 -0
- package/dist/solver/cdcl-v2/solver.js +442 -0
- package/dist/solver/cdcl-v2/solver.js.map +1 -0
- package/dist/solver/cdcl-v2/state.d.ts +54 -0
- package/dist/solver/cdcl-v2/state.d.ts.map +1 -0
- package/dist/solver/cdcl-v2/state.js +22 -0
- package/dist/solver/cdcl-v2/state.js.map +1 -0
- package/dist/solver/cdcl-v2/vsids.d.ts +19 -0
- package/dist/solver/cdcl-v2/vsids.d.ts.map +1 -0
- package/dist/solver/cdcl-v2/vsids.js +77 -0
- package/dist/solver/cdcl-v2/vsids.js.map +1 -0
- package/dist/tests/agora-integration-fixtures.test.js.map +1 -1
- package/dist/tests/argumentation/dung.test.d.ts +2 -0
- package/dist/tests/argumentation/dung.test.d.ts.map +1 -0
- package/dist/tests/argumentation/dung.test.js +219 -0
- package/dist/tests/argumentation/dung.test.js.map +1 -0
- package/dist/tests/citation-reasoning/citation-reasoning.test.d.ts +2 -0
- package/dist/tests/citation-reasoning/citation-reasoning.test.d.ts.map +1 -0
- package/dist/tests/citation-reasoning/citation-reasoning.test.js +240 -0
- package/dist/tests/citation-reasoning/citation-reasoning.test.js.map +1 -0
- package/dist/tests/coverage-fill-api.test.d.ts +7 -0
- package/dist/tests/coverage-fill-api.test.d.ts.map +1 -0
- package/dist/tests/coverage-fill-api.test.js +310 -0
- package/dist/tests/coverage-fill-api.test.js.map +1 -0
- package/dist/tests/coverage-fill-aristotelian.test.d.ts +7 -0
- package/dist/tests/coverage-fill-aristotelian.test.d.ts.map +1 -0
- package/dist/tests/coverage-fill-aristotelian.test.js +377 -0
- package/dist/tests/coverage-fill-aristotelian.test.js.map +1 -0
- package/dist/tests/coverage-fill-belnap.test.d.ts +6 -0
- package/dist/tests/coverage-fill-belnap.test.d.ts.map +1 -0
- package/dist/tests/coverage-fill-belnap.test.js +277 -0
- package/dist/tests/coverage-fill-belnap.test.js.map +1 -0
- package/dist/tests/coverage-fill-cross-system.test.d.ts +6 -0
- package/dist/tests/coverage-fill-cross-system.test.d.ts.map +1 -0
- package/dist/tests/coverage-fill-cross-system.test.js +75 -0
- package/dist/tests/coverage-fill-cross-system.test.js.map +1 -0
- package/dist/tests/coverage-fill-fallacies.test.d.ts +6 -0
- package/dist/tests/coverage-fill-fallacies.test.d.ts.map +1 -0
- package/dist/tests/coverage-fill-fallacies.test.js +287 -0
- package/dist/tests/coverage-fill-fallacies.test.js.map +1 -0
- package/dist/tests/coverage-fill-format.test.d.ts +7 -0
- package/dist/tests/coverage-fill-format.test.d.ts.map +1 -0
- package/dist/tests/coverage-fill-format.test.js +455 -0
- package/dist/tests/coverage-fill-format.test.js.map +1 -0
- package/dist/tests/coverage-fill-intuitionistic.test.d.ts +6 -0
- package/dist/tests/coverage-fill-intuitionistic.test.d.ts.map +1 -0
- package/dist/tests/coverage-fill-intuitionistic.test.js +293 -0
- package/dist/tests/coverage-fill-intuitionistic.test.js.map +1 -0
- package/dist/tests/coverage-fill-probabilistic.test.d.ts +7 -0
- package/dist/tests/coverage-fill-probabilistic.test.d.ts.map +1 -0
- package/dist/tests/coverage-fill-probabilistic.test.js +314 -0
- package/dist/tests/coverage-fill-probabilistic.test.js.map +1 -0
- package/dist/tests/educational/checker.test.d.ts +2 -0
- package/dist/tests/educational/checker.test.d.ts.map +1 -0
- package/dist/tests/educational/checker.test.js +212 -0
- package/dist/tests/educational/checker.test.js.map +1 -0
- package/dist/tests/educational/generator.test.d.ts +2 -0
- package/dist/tests/educational/generator.test.d.ts.map +1 -0
- package/dist/tests/educational/generator.test.js +137 -0
- package/dist/tests/educational/generator.test.js.map +1 -0
- package/dist/tests/exporters/coq/coq-exporter.test.d.ts +2 -0
- package/dist/tests/exporters/coq/coq-exporter.test.d.ts.map +1 -0
- package/dist/tests/exporters/coq/coq-exporter.test.js +353 -0
- package/dist/tests/exporters/coq/coq-exporter.test.js.map +1 -0
- package/dist/tests/fol-prover/cnf.test.d.ts +2 -0
- package/dist/tests/fol-prover/cnf.test.d.ts.map +1 -0
- package/dist/tests/fol-prover/cnf.test.js +74 -0
- package/dist/tests/fol-prover/cnf.test.js.map +1 -0
- package/dist/tests/fol-prover/prove.test.d.ts +2 -0
- package/dist/tests/fol-prover/prove.test.d.ts.map +1 -0
- package/dist/tests/fol-prover/prove.test.js +106 -0
- package/dist/tests/fol-prover/prove.test.js.map +1 -0
- package/dist/tests/fol-prover/unify.test.d.ts +2 -0
- package/dist/tests/fol-prover/unify.test.d.ts.map +1 -0
- package/dist/tests/fol-prover/unify.test.js +66 -0
- package/dist/tests/fol-prover/unify.test.js.map +1 -0
- package/dist/tests/hyperreal/hyperreal.test.d.ts +2 -0
- package/dist/tests/hyperreal/hyperreal.test.d.ts.map +1 -0
- package/dist/tests/hyperreal/hyperreal.test.js +219 -0
- package/dist/tests/hyperreal/hyperreal.test.js.map +1 -0
- package/dist/tests/lsp/server.test.d.ts +2 -0
- package/dist/tests/lsp/server.test.d.ts.map +1 -0
- package/dist/tests/lsp/server.test.js +406 -0
- package/dist/tests/lsp/server.test.js.map +1 -0
- package/dist/tests/memo/cache.test.d.ts +2 -0
- package/dist/tests/memo/cache.test.d.ts.map +1 -0
- package/dist/tests/memo/cache.test.js +252 -0
- package/dist/tests/memo/cache.test.js.map +1 -0
- package/dist/tests/parallel/parallel-pool.test.d.ts +11 -0
- package/dist/tests/parallel/parallel-pool.test.d.ts.map +1 -0
- package/dist/tests/parallel/parallel-pool.test.js +192 -0
- package/dist/tests/parallel/parallel-pool.test.js.map +1 -0
- package/dist/tests/plugin-system/demo-min-logic.test.d.ts +2 -0
- package/dist/tests/plugin-system/demo-min-logic.test.d.ts.map +1 -0
- package/dist/tests/plugin-system/demo-min-logic.test.js +85 -0
- package/dist/tests/plugin-system/demo-min-logic.test.js.map +1 -0
- package/dist/tests/plugin-system/registry.test.d.ts +2 -0
- package/dist/tests/plugin-system/registry.test.d.ts.map +1 -0
- package/dist/tests/plugin-system/registry.test.js +88 -0
- package/dist/tests/plugin-system/registry.test.js.map +1 -0
- package/dist/tests/plugin-system/validate.test.d.ts +2 -0
- package/dist/tests/plugin-system/validate.test.d.ts.map +1 -0
- package/dist/tests/plugin-system/validate.test.js +101 -0
- package/dist/tests/plugin-system/validate.test.js.map +1 -0
- package/dist/tests/proof-exchange/proof-exchange.test.d.ts +2 -0
- package/dist/tests/proof-exchange/proof-exchange.test.d.ts.map +1 -0
- package/dist/tests/proof-exchange/proof-exchange.test.js +161 -0
- package/dist/tests/proof-exchange/proof-exchange.test.js.map +1 -0
- package/dist/tests/sat-v2/clause-learning.test.d.ts +2 -0
- package/dist/tests/sat-v2/clause-learning.test.d.ts.map +1 -0
- package/dist/tests/sat-v2/clause-learning.test.js +73 -0
- package/dist/tests/sat-v2/clause-learning.test.js.map +1 -0
- package/dist/tests/sat-v2/lbd.test.d.ts +2 -0
- package/dist/tests/sat-v2/lbd.test.d.ts.map +1 -0
- package/dist/tests/sat-v2/lbd.test.js +82 -0
- package/dist/tests/sat-v2/lbd.test.js.map +1 -0
- package/dist/tests/sat-v2/luby.test.d.ts +2 -0
- package/dist/tests/sat-v2/luby.test.d.ts.map +1 -0
- package/dist/tests/sat-v2/luby.test.js +58 -0
- package/dist/tests/sat-v2/luby.test.js.map +1 -0
- package/dist/tests/sat-v2/phase-saving.test.d.ts +2 -0
- package/dist/tests/sat-v2/phase-saving.test.d.ts.map +1 -0
- package/dist/tests/sat-v2/phase-saving.test.js +38 -0
- package/dist/tests/sat-v2/phase-saving.test.js.map +1 -0
- package/dist/tests/sat-v2/solver-end-to-end.test.d.ts +2 -0
- package/dist/tests/sat-v2/solver-end-to-end.test.d.ts.map +1 -0
- package/dist/tests/sat-v2/solver-end-to-end.test.js +199 -0
- package/dist/tests/sat-v2/solver-end-to-end.test.js.map +1 -0
- package/dist/tests/sat-v2/vsids.test.d.ts +2 -0
- package/dist/tests/sat-v2/vsids.test.d.ts.map +1 -0
- package/dist/tests/sat-v2/vsids.test.js +69 -0
- package/dist/tests/sat-v2/vsids.test.js.map +1 -0
- package/dist/tests/smt/mock-backend.test.d.ts +2 -0
- package/dist/tests/smt/mock-backend.test.d.ts.map +1 -0
- package/dist/tests/smt/mock-backend.test.js +129 -0
- package/dist/tests/smt/mock-backend.test.js.map +1 -0
- package/dist/tests/smt/serializer.test.d.ts +2 -0
- package/dist/tests/smt/serializer.test.d.ts.map +1 -0
- package/dist/tests/smt/serializer.test.js +94 -0
- package/dist/tests/smt/serializer.test.js.map +1 -0
- package/dist/tests/smt/subprocess-backend.test.d.ts +2 -0
- package/dist/tests/smt/subprocess-backend.test.d.ts.map +1 -0
- package/dist/tests/smt/subprocess-backend.test.js +89 -0
- package/dist/tests/smt/subprocess-backend.test.js.map +1 -0
- package/dist/tests/streaming/stream-eval.test.d.ts +2 -0
- package/dist/tests/streaming/stream-eval.test.d.ts.map +1 -0
- package/dist/tests/streaming/stream-eval.test.js +170 -0
- package/dist/tests/streaming/stream-eval.test.js.map +1 -0
- package/dist/tests/text-layer-v2/claim-graph.test.d.ts +2 -0
- package/dist/tests/text-layer-v2/claim-graph.test.d.ts.map +1 -0
- package/dist/tests/text-layer-v2/claim-graph.test.js +255 -0
- package/dist/tests/text-layer-v2/claim-graph.test.js.map +1 -0
- package/dist/tests/time-travel/snapshot.test.d.ts +2 -0
- package/dist/tests/time-travel/snapshot.test.d.ts.map +1 -0
- package/dist/tests/time-travel/snapshot.test.js +75 -0
- package/dist/tests/time-travel/snapshot.test.js.map +1 -0
- package/dist/tests/time-travel/store.test.d.ts +2 -0
- package/dist/tests/time-travel/store.test.d.ts.map +1 -0
- package/dist/tests/time-travel/store.test.js +242 -0
- package/dist/tests/time-travel/store.test.js.map +1 -0
- package/dist/tests/typecheck-core.test.d.ts +2 -0
- package/dist/tests/typecheck-core.test.d.ts.map +1 -0
- package/dist/tests/typecheck-core.test.js +339 -0
- package/dist/tests/typecheck-core.test.js.map +1 -0
- package/dist/text-layer/v2/claim-graph.d.ts +45 -0
- package/dist/text-layer/v2/claim-graph.d.ts.map +1 -0
- package/dist/text-layer/v2/claim-graph.js +270 -0
- package/dist/text-layer/v2/claim-graph.js.map +1 -0
- package/dist/text-layer/v2/index.d.ts +6 -0
- package/dist/text-layer/v2/index.d.ts.map +1 -0
- package/dist/text-layer/v2/index.js +10 -0
- package/dist/text-layer/v2/index.js.map +1 -0
- package/dist/text-layer/v2/types.d.ts +32 -0
- package/dist/text-layer/v2/types.d.ts.map +1 -0
- package/dist/text-layer/v2/types.js +11 -0
- package/dist/text-layer/v2/types.js.map +1 -0
- package/dist/time-travel/index.d.ts +4 -0
- package/dist/time-travel/index.d.ts.map +1 -0
- package/dist/time-travel/index.js +8 -0
- package/dist/time-travel/index.js.map +1 -0
- package/dist/time-travel/snapshot.d.ts +9 -0
- package/dist/time-travel/snapshot.d.ts.map +1 -0
- package/dist/time-travel/snapshot.js +24 -0
- package/dist/time-travel/snapshot.js.map +1 -0
- package/dist/time-travel/store.d.ts +14 -0
- package/dist/time-travel/store.d.ts.map +1 -0
- package/dist/time-travel/store.js +119 -0
- package/dist/time-travel/store.js.map +1 -0
- package/dist/time-travel/types.d.ts +50 -0
- package/dist/time-travel/types.d.ts.map +1 -0
- package/dist/time-travel/types.js +3 -0
- package/dist/time-travel/types.js.map +1 -0
- package/package.json +5 -1
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
export interface AnalysisResult {
|
|
2
|
+
/** Cláusula aprendida. learned[0] es el literal asertivo (a propagar tras backtrack). */
|
|
3
|
+
learned: Int32Array;
|
|
4
|
+
/** Nivel de decisión al que retroceder (0 si la cláusula es unitaria). */
|
|
5
|
+
btLevel: number;
|
|
6
|
+
/** Variables que fueron "bumped" durante el análisis (para que VSIDS las premie). */
|
|
7
|
+
bumped: number[];
|
|
8
|
+
}
|
|
9
|
+
/** Función mínima requerida del solver para acceder al antecedente de cada lit. */
|
|
10
|
+
export interface ConflictContext {
|
|
11
|
+
/** Array de cláusulas indexadas por índice (mutable, learned clauses incluidas). */
|
|
12
|
+
clauses: ReadonlyArray<Int32Array>;
|
|
13
|
+
/** Trail completo de literales asignados en orden. */
|
|
14
|
+
trail: ReadonlyArray<number>;
|
|
15
|
+
/** Nivel de decisión actual. */
|
|
16
|
+
currentLevel: number;
|
|
17
|
+
/** Nivel de decisión en que se asignó cada variable (1-indexado, -1 si libre). */
|
|
18
|
+
varLevel: Int32Array;
|
|
19
|
+
/** Cláusula antecedente que propagó cada variable (-1 si fue decisión). */
|
|
20
|
+
varAnte: Int32Array;
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Analiza un conflicto usando el esquema 1UIP.
|
|
24
|
+
*
|
|
25
|
+
* @param conflictCi cláusula que entró en conflicto durante BCP.
|
|
26
|
+
* @param ctx contexto inmutable del solver (trail, levels, antecedents).
|
|
27
|
+
* @returns cláusula aprendida + nivel de backtrack + variables bumpeadas.
|
|
28
|
+
*
|
|
29
|
+
* Si retorna learned.length === 0 y btLevel === -1, el solver debe interpretar
|
|
30
|
+
* UNSAT raíz (conflicto en nivel 0).
|
|
31
|
+
*/
|
|
32
|
+
export declare function analyzeConflict1UIP(conflictCi: number, ctx: ConflictContext): AnalysisResult;
|
|
33
|
+
//# sourceMappingURL=clause-learning.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"clause-learning.d.ts","sourceRoot":"","sources":["../../../src/solver/cdcl-v2/clause-learning.ts"],"names":[],"mappings":"AAQA,MAAM,WAAW,cAAc;IAC7B,yFAAyF;IACzF,OAAO,EAAE,UAAU,CAAC;IACpB,0EAA0E;IAC1E,OAAO,EAAE,MAAM,CAAC;IAChB,qFAAqF;IACrF,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB;AAED,mFAAmF;AACnF,MAAM,WAAW,eAAe;IAC9B,oFAAoF;IACpF,OAAO,EAAE,aAAa,CAAC,UAAU,CAAC,CAAC;IACnC,sDAAsD;IACtD,KAAK,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;IAC7B,gCAAgC;IAChC,YAAY,EAAE,MAAM,CAAC;IACrB,kFAAkF;IAClF,QAAQ,EAAE,UAAU,CAAC;IACrB,2EAA2E;IAC3E,OAAO,EAAE,UAAU,CAAC;CACrB;AAED;;;;;;;;;GASG;AACH,wBAAgB,mBAAmB,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,EAAE,eAAe,GAAG,cAAc,CA0F5F"}
|
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// First-UIP Conflict Analysis — Marques-Silva & Sakallah (GRASP, 1996).
|
|
3
|
+
// Recorremos hacia atrás el grafo de implicaciones desde la cláusula en
|
|
4
|
+
// conflicto hasta hallar el primer Unique Implication Point: el único
|
|
5
|
+
// literal del nivel de decisión actual que queda en la "frontera" del
|
|
6
|
+
// corte. Eso produce la cláusula aprendida mínima respecto al esquema 1UIP.
|
|
7
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
8
|
+
exports.analyzeConflict1UIP = analyzeConflict1UIP;
|
|
9
|
+
const state_1 = require("./state");
|
|
10
|
+
/**
|
|
11
|
+
* Analiza un conflicto usando el esquema 1UIP.
|
|
12
|
+
*
|
|
13
|
+
* @param conflictCi cláusula que entró en conflicto durante BCP.
|
|
14
|
+
* @param ctx contexto inmutable del solver (trail, levels, antecedents).
|
|
15
|
+
* @returns cláusula aprendida + nivel de backtrack + variables bumpeadas.
|
|
16
|
+
*
|
|
17
|
+
* Si retorna learned.length === 0 y btLevel === -1, el solver debe interpretar
|
|
18
|
+
* UNSAT raíz (conflicto en nivel 0).
|
|
19
|
+
*/
|
|
20
|
+
function analyzeConflict1UIP(conflictCi, ctx) {
|
|
21
|
+
const { clauses, trail, currentLevel, varLevel, varAnte } = ctx;
|
|
22
|
+
if (currentLevel === 0) {
|
|
23
|
+
return { learned: new Int32Array(0), btLevel: -1, bumped: [] };
|
|
24
|
+
}
|
|
25
|
+
const numVarsPlus1 = varLevel.length;
|
|
26
|
+
const seen = new Uint8Array(numVarsPlus1);
|
|
27
|
+
const outLits = [];
|
|
28
|
+
const bumped = [];
|
|
29
|
+
let counter = 0;
|
|
30
|
+
let btLevel = 0;
|
|
31
|
+
// addLits: agrega los literales de la cláusula `ci` (excepto skipVar) al
|
|
32
|
+
// conjunto "seen", actualizando counter (lits del nivel actual) y outLits.
|
|
33
|
+
const addLits = (ci, skipVar) => {
|
|
34
|
+
const c = clauses[ci];
|
|
35
|
+
if (!c)
|
|
36
|
+
return;
|
|
37
|
+
for (let i = 0; i < c.length; i++) {
|
|
38
|
+
const lit = c[i] ?? 0;
|
|
39
|
+
const v = Math.abs(lit);
|
|
40
|
+
if (v === 0 || v === skipVar || seen[v])
|
|
41
|
+
continue;
|
|
42
|
+
seen[v] = 1;
|
|
43
|
+
bumped.push(v);
|
|
44
|
+
const lvl = varLevel[v];
|
|
45
|
+
if (lvl === currentLevel) {
|
|
46
|
+
counter++;
|
|
47
|
+
}
|
|
48
|
+
else if (lvl > 0) {
|
|
49
|
+
outLits.push(lit);
|
|
50
|
+
if (lvl > btLevel)
|
|
51
|
+
btLevel = lvl;
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
};
|
|
55
|
+
addLits(conflictCi, 0);
|
|
56
|
+
let ti = trail.length - 1;
|
|
57
|
+
let assertLit = 0;
|
|
58
|
+
while (counter > 0) {
|
|
59
|
+
while (ti >= 0 && !seen[Math.abs(trail[ti] ?? 0)])
|
|
60
|
+
ti--;
|
|
61
|
+
if (ti < 0)
|
|
62
|
+
break;
|
|
63
|
+
const p = trail[ti] ?? 0;
|
|
64
|
+
ti--;
|
|
65
|
+
const v = Math.abs(p);
|
|
66
|
+
seen[v] = 0;
|
|
67
|
+
counter--;
|
|
68
|
+
if (counter === 0) {
|
|
69
|
+
assertLit = -p;
|
|
70
|
+
}
|
|
71
|
+
else if (varAnte[v] !== state_1.NO_ANTECEDENT) {
|
|
72
|
+
addLits(varAnte[v], v);
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
const learned = [];
|
|
76
|
+
if (assertLit !== 0)
|
|
77
|
+
learned.push(assertLit);
|
|
78
|
+
for (const l of outLits)
|
|
79
|
+
learned.push(l);
|
|
80
|
+
if (learned.length === 0) {
|
|
81
|
+
return { learned: new Int32Array(0), btLevel: -1, bumped };
|
|
82
|
+
}
|
|
83
|
+
if (learned.length === 1) {
|
|
84
|
+
return { learned: new Int32Array(learned), btLevel: 0, bumped };
|
|
85
|
+
}
|
|
86
|
+
// Posicionar el literal de mayor nivel-de-decisión-no-actual en learned[1].
|
|
87
|
+
// Esa colocación garantiza que tras backtrack(btLevel) ambos watched literals
|
|
88
|
+
// de la cláusula aprendida quedan bien definidos (learned[0] no asignado,
|
|
89
|
+
// learned[1] falso al nivel btLevel).
|
|
90
|
+
let mx = 1;
|
|
91
|
+
for (let i = 2; i < learned.length; i++) {
|
|
92
|
+
const li = learned[i];
|
|
93
|
+
const lmx = learned[mx];
|
|
94
|
+
if (li === undefined || lmx === undefined)
|
|
95
|
+
continue;
|
|
96
|
+
if (varLevel[Math.abs(li)] > varLevel[Math.abs(lmx)]) {
|
|
97
|
+
mx = i;
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
if (mx !== 1) {
|
|
101
|
+
const tmp = learned[1];
|
|
102
|
+
const swap = learned[mx];
|
|
103
|
+
if (tmp !== undefined && swap !== undefined) {
|
|
104
|
+
learned[1] = swap;
|
|
105
|
+
learned[mx] = tmp;
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
return { learned: new Int32Array(learned), btLevel, bumped };
|
|
109
|
+
}
|
|
110
|
+
//# sourceMappingURL=clause-learning.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"clause-learning.js","sourceRoot":"","sources":["../../../src/solver/cdcl-v2/clause-learning.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export { solveCDCLv2 } from './solver';
|
|
2
|
+
export { NO_ANTECEDENT, NO_CONFLICT, litToIdx, idxToLit } from './state';
|
|
3
|
+
export type { Clause, Literal, SatResult, SolveResult, SolverOptions, SolverStatsV2, UnsatResult, VarValue, } from './state';
|
|
4
|
+
export { VSIDS } from './vsids';
|
|
5
|
+
export { LubyRestartPolicy, luby, lubySequence } from './luby';
|
|
6
|
+
export { PhaseSaver } from './phase-saving';
|
|
7
|
+
export { analyzeConflict1UIP, type AnalysisResult, type ConflictContext } from './clause-learning';
|
|
8
|
+
export { computeLBD, selectClausesToRemove, type LearnedMeta } from './lbd';
|
|
9
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/solver/cdcl-v2/index.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AACvC,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AACzE,YAAY,EACV,MAAM,EACN,OAAO,EACP,SAAS,EACT,WAAW,EACX,aAAa,EACb,aAAa,EACb,WAAW,EACX,QAAQ,GACT,MAAM,SAAS,CAAC;AACjB,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAChC,OAAO,EAAE,iBAAiB,EAAE,IAAI,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AAC/D,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAC5C,OAAO,EAAE,mBAAmB,EAAE,KAAK,cAAc,EAAE,KAAK,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACnG,OAAO,EAAE,UAAU,EAAE,qBAAqB,EAAE,KAAK,WAAW,EAAE,MAAM,OAAO,CAAC"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// CDCL v2 — Entry point público.
|
|
3
|
+
//
|
|
4
|
+
// API principal:
|
|
5
|
+
// solveCDCLv2(clauses, numVars, opts?) → SatResult | UnsatResult
|
|
6
|
+
//
|
|
7
|
+
// `clauses` es un arreglo de Int32Array en formato DIMACS (variables 1..numVars,
|
|
8
|
+
// literal positivo = true, negativo = false; cláusula vacía ⇒ UNSAT).
|
|
9
|
+
//
|
|
10
|
+
// El solver implementa el pipeline state-of-the-art clásico:
|
|
11
|
+
// - 2-watched literals para BCP O(amortizado).
|
|
12
|
+
// - VSIDS con EVSIDS rescaling para heurística de decisión.
|
|
13
|
+
// - 1UIP conflict analysis con minimización implícita por bumped tracking.
|
|
14
|
+
// - Luby restarts (1, 1, 2, 1, 1, 2, 4, ...).
|
|
15
|
+
// - Phase saving (Pipatsrisawat & Darwiche 2007).
|
|
16
|
+
// - LBD scoring + reducción periódica de la learnt clause database.
|
|
17
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
18
|
+
exports.selectClausesToRemove = exports.computeLBD = exports.analyzeConflict1UIP = exports.PhaseSaver = exports.lubySequence = exports.luby = exports.LubyRestartPolicy = exports.VSIDS = exports.idxToLit = exports.litToIdx = exports.NO_CONFLICT = exports.NO_ANTECEDENT = exports.solveCDCLv2 = void 0;
|
|
19
|
+
var solver_1 = require("./solver");
|
|
20
|
+
Object.defineProperty(exports, "solveCDCLv2", { enumerable: true, get: function () { return solver_1.solveCDCLv2; } });
|
|
21
|
+
var state_1 = require("./state");
|
|
22
|
+
Object.defineProperty(exports, "NO_ANTECEDENT", { enumerable: true, get: function () { return state_1.NO_ANTECEDENT; } });
|
|
23
|
+
Object.defineProperty(exports, "NO_CONFLICT", { enumerable: true, get: function () { return state_1.NO_CONFLICT; } });
|
|
24
|
+
Object.defineProperty(exports, "litToIdx", { enumerable: true, get: function () { return state_1.litToIdx; } });
|
|
25
|
+
Object.defineProperty(exports, "idxToLit", { enumerable: true, get: function () { return state_1.idxToLit; } });
|
|
26
|
+
var vsids_1 = require("./vsids");
|
|
27
|
+
Object.defineProperty(exports, "VSIDS", { enumerable: true, get: function () { return vsids_1.VSIDS; } });
|
|
28
|
+
var luby_1 = require("./luby");
|
|
29
|
+
Object.defineProperty(exports, "LubyRestartPolicy", { enumerable: true, get: function () { return luby_1.LubyRestartPolicy; } });
|
|
30
|
+
Object.defineProperty(exports, "luby", { enumerable: true, get: function () { return luby_1.luby; } });
|
|
31
|
+
Object.defineProperty(exports, "lubySequence", { enumerable: true, get: function () { return luby_1.lubySequence; } });
|
|
32
|
+
var phase_saving_1 = require("./phase-saving");
|
|
33
|
+
Object.defineProperty(exports, "PhaseSaver", { enumerable: true, get: function () { return phase_saving_1.PhaseSaver; } });
|
|
34
|
+
var clause_learning_1 = require("./clause-learning");
|
|
35
|
+
Object.defineProperty(exports, "analyzeConflict1UIP", { enumerable: true, get: function () { return clause_learning_1.analyzeConflict1UIP; } });
|
|
36
|
+
var lbd_1 = require("./lbd");
|
|
37
|
+
Object.defineProperty(exports, "computeLBD", { enumerable: true, get: function () { return lbd_1.computeLBD; } });
|
|
38
|
+
Object.defineProperty(exports, "selectClausesToRemove", { enumerable: true, get: function () { return lbd_1.selectClausesToRemove; } });
|
|
39
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/solver/cdcl-v2/index.ts"],"names":[],"mappings":";AAAA,iCAAiC;AACjC,EAAE;AACF,iBAAiB;AACjB,mEAAmE;AACnE,EAAE;AACF,iFAAiF;AACjF,sEAAsE;AACtE,EAAE;AACF,6DAA6D;AAC7D,iDAAiD;AACjD,8DAA8D;AAC9D,6EAA6E;AAC7E,gDAAgD;AAChD,oDAAoD;AACpD,sEAAsE;;;AAEtE,mCAAuC;AAA9B,qGAAA,WAAW,OAAA;AACpB,iCAAyE;AAAhE,sGAAA,aAAa,OAAA;AAAE,oGAAA,WAAW,OAAA;AAAE,iGAAA,QAAQ,OAAA;AAAE,iGAAA,QAAQ,OAAA;AAWvD,iCAAgC;AAAvB,8FAAA,KAAK,OAAA;AACd,+BAA+D;AAAtD,yGAAA,iBAAiB,OAAA;AAAE,4FAAA,IAAI,OAAA;AAAE,oGAAA,YAAY,OAAA;AAC9C,+CAA4C;AAAnC,0GAAA,UAAU,OAAA;AACnB,qDAAmG;AAA1F,sHAAA,mBAAmB,OAAA;AAC5B,6BAA4E;AAAnE,iGAAA,UAAU,OAAA;AAAE,4GAAA,qBAAqB,OAAA"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Calcula el LBD de una cláusula dado el nivel de decisión actual de cada
|
|
3
|
+
* variable. Usa un buffer compartido `seenLevels` (reseteado internamente
|
|
4
|
+
* cada llamada) para evitar allocaciones repetidas.
|
|
5
|
+
*
|
|
6
|
+
* Si una variable no está asignada (level = -1), no se cuenta.
|
|
7
|
+
*/
|
|
8
|
+
export declare function computeLBD(clause: Int32Array, varLevel: Int32Array, seenBuffer: Uint8Array): number;
|
|
9
|
+
/**
|
|
10
|
+
* Metadatos de una cláusula aprendida usados para decidir si conservarla.
|
|
11
|
+
*/
|
|
12
|
+
export interface LearnedMeta {
|
|
13
|
+
/** Índice en el array de cláusulas. */
|
|
14
|
+
index: number;
|
|
15
|
+
/** LBD calculado al momento del aprendizaje (y opcionalmente actualizado). */
|
|
16
|
+
lbd: number;
|
|
17
|
+
/** Activity de la cláusula (analogía VSIDS para cláusulas). */
|
|
18
|
+
activity: number;
|
|
19
|
+
/** True si actualmente "bloquea" la asignación de alguna variable (no descartable). */
|
|
20
|
+
locked: boolean;
|
|
21
|
+
/** Longitud de la cláusula (útil como tiebreaker). */
|
|
22
|
+
length: number;
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Selecciona cláusulas a eliminar de un conjunto de aprendidas.
|
|
26
|
+
*
|
|
27
|
+
* Política: preservar siempre las "glue clauses" (LBD <= 2). Del resto,
|
|
28
|
+
* ordenar por (lbd desc, activity asc, length desc) y eliminar la mitad
|
|
29
|
+
* con menor utilidad. Cláusulas locked nunca se eliminan.
|
|
30
|
+
*
|
|
31
|
+
* Retorna los `index` (relativos a `metas`) a eliminar.
|
|
32
|
+
*/
|
|
33
|
+
export declare function selectClausesToRemove(metas: ReadonlyArray<LearnedMeta>, lbdProtectThreshold?: number): number[];
|
|
34
|
+
//# sourceMappingURL=lbd.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lbd.d.ts","sourceRoot":"","sources":["../../../src/solver/cdcl-v2/lbd.ts"],"names":[],"mappings":"AAMA;;;;;;GAMG;AACH,wBAAgB,UAAU,CACxB,MAAM,EAAE,UAAU,EAClB,QAAQ,EAAE,UAAU,EACpB,UAAU,EAAE,UAAU,GACrB,MAAM,CAmBR;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,uCAAuC;IACvC,KAAK,EAAE,MAAM,CAAC;IACd,8EAA8E;IAC9E,GAAG,EAAE,MAAM,CAAC;IACZ,+DAA+D;IAC/D,QAAQ,EAAE,MAAM,CAAC;IACjB,uFAAuF;IACvF,MAAM,EAAE,OAAO,CAAC;IAChB,sDAAsD;IACtD,MAAM,EAAE,MAAM,CAAC;CAChB;AAED;;;;;;;;GAQG;AACH,wBAAgB,qBAAqB,CACnC,KAAK,EAAE,aAAa,CAAC,WAAW,CAAC,EACjC,mBAAmB,GAAE,MAAU,GAC9B,MAAM,EAAE,CAgBV"}
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// LBD (Literal Block Distance) — Audemard & Simon (2009) "Predicting Learnt
|
|
3
|
+
// Clauses Quality in Modern SAT Solvers" (Glucose). El LBD de una cláusula
|
|
4
|
+
// es la cantidad de niveles de decisión distintos representados por sus
|
|
5
|
+
// literales. Cláusulas con LBD bajo (especialmente LBD <= 2, "glue clauses")
|
|
6
|
+
// son los aprendizajes más útiles y nunca se descartan.
|
|
7
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
8
|
+
exports.computeLBD = computeLBD;
|
|
9
|
+
exports.selectClausesToRemove = selectClausesToRemove;
|
|
10
|
+
/**
|
|
11
|
+
* Calcula el LBD de una cláusula dado el nivel de decisión actual de cada
|
|
12
|
+
* variable. Usa un buffer compartido `seenLevels` (reseteado internamente
|
|
13
|
+
* cada llamada) para evitar allocaciones repetidas.
|
|
14
|
+
*
|
|
15
|
+
* Si una variable no está asignada (level = -1), no se cuenta.
|
|
16
|
+
*/
|
|
17
|
+
function computeLBD(clause, varLevel, seenBuffer) {
|
|
18
|
+
// Buffer indexed by level + 1 (para tolerar -1).
|
|
19
|
+
// El caller garantiza seenBuffer.length >= max nivel + 2.
|
|
20
|
+
// Reseteamos sólo las posiciones que tocamos para mantener O(|clause|).
|
|
21
|
+
const touched = [];
|
|
22
|
+
let lbd = 0;
|
|
23
|
+
for (let i = 0; i < clause.length; i++) {
|
|
24
|
+
const v = Math.abs(clause[i] ?? 0);
|
|
25
|
+
if (v === 0)
|
|
26
|
+
continue;
|
|
27
|
+
const lvl = varLevel[v];
|
|
28
|
+
if (lvl < 0)
|
|
29
|
+
continue;
|
|
30
|
+
if (!seenBuffer[lvl]) {
|
|
31
|
+
seenBuffer[lvl] = 1;
|
|
32
|
+
touched.push(lvl);
|
|
33
|
+
lbd++;
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
for (const lvl of touched)
|
|
37
|
+
seenBuffer[lvl] = 0;
|
|
38
|
+
return lbd;
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Selecciona cláusulas a eliminar de un conjunto de aprendidas.
|
|
42
|
+
*
|
|
43
|
+
* Política: preservar siempre las "glue clauses" (LBD <= 2). Del resto,
|
|
44
|
+
* ordenar por (lbd desc, activity asc, length desc) y eliminar la mitad
|
|
45
|
+
* con menor utilidad. Cláusulas locked nunca se eliminan.
|
|
46
|
+
*
|
|
47
|
+
* Retorna los `index` (relativos a `metas`) a eliminar.
|
|
48
|
+
*/
|
|
49
|
+
function selectClausesToRemove(metas, lbdProtectThreshold = 2) {
|
|
50
|
+
const candidates = [];
|
|
51
|
+
for (const m of metas) {
|
|
52
|
+
if (m.locked)
|
|
53
|
+
continue;
|
|
54
|
+
if (m.lbd <= lbdProtectThreshold)
|
|
55
|
+
continue;
|
|
56
|
+
if (m.length <= 2)
|
|
57
|
+
continue;
|
|
58
|
+
candidates.push(m);
|
|
59
|
+
}
|
|
60
|
+
if (candidates.length === 0)
|
|
61
|
+
return [];
|
|
62
|
+
candidates.sort((a, b) => {
|
|
63
|
+
if (a.lbd !== b.lbd)
|
|
64
|
+
return b.lbd - a.lbd;
|
|
65
|
+
if (a.activity !== b.activity)
|
|
66
|
+
return a.activity - b.activity;
|
|
67
|
+
return b.length - a.length;
|
|
68
|
+
});
|
|
69
|
+
const half = Math.floor(candidates.length / 2);
|
|
70
|
+
return candidates.slice(0, half).map((m) => m.index);
|
|
71
|
+
}
|
|
72
|
+
//# sourceMappingURL=lbd.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lbd.js","sourceRoot":"","sources":["../../../src/solver/cdcl-v2/lbd.ts"],"names":[],"mappings":";AAAA,4EAA4E;AAC5E,2EAA2E;AAC3E,wEAAwE;AACxE,6EAA6E;AAC7E,wDAAwD;;AASxD,gCAuBC;AA2BD,sDAmBC;AA5ED;;;;;;GAMG;AACH,SAAgB,UAAU,CACxB,MAAkB,EAClB,QAAoB,EACpB,UAAsB;IAEtB,iDAAiD;IACjD,0DAA0D;IAC1D,wEAAwE;IACxE,MAAM,OAAO,GAAa,EAAE,CAAC;IAC7B,IAAI,GAAG,GAAG,CAAC,CAAC;IACZ,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACvC,MAAM,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;QACnC,IAAI,CAAC,KAAK,CAAC;YAAE,SAAS;QACtB,MAAM,GAAG,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;QACxB,IAAI,GAAG,GAAG,CAAC;YAAE,SAAS;QACtB,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;YACrB,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YACpB,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAClB,GAAG,EAAE,CAAC;QACR,CAAC;IACH,CAAC;IACD,KAAK,MAAM,GAAG,IAAI,OAAO;QAAE,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAC/C,OAAO,GAAG,CAAC;AACb,CAAC;AAkBD;;;;;;;;GAQG;AACH,SAAgB,qBAAqB,CACnC,KAAiC,EACjC,sBAA8B,CAAC;IAE/B,MAAM,UAAU,GAAkB,EAAE,CAAC;IACrC,KAAK,MAAM,CAAC,IAAI,KAAK,EAAE,CAAC;QACtB,IAAI,CAAC,CAAC,MAAM;YAAE,SAAS;QACvB,IAAI,CAAC,CAAC,GAAG,IAAI,mBAAmB;YAAE,SAAS;QAC3C,IAAI,CAAC,CAAC,MAAM,IAAI,CAAC;YAAE,SAAS;QAC5B,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACrB,CAAC;IACD,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,CAAC;IACvC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;QACvB,IAAI,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,GAAG;YAAE,OAAO,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC;QAC1C,IAAI,CAAC,CAAC,QAAQ,KAAK,CAAC,CAAC,QAAQ;YAAE,OAAO,CAAC,CAAC,QAAQ,GAAG,CAAC,CAAC,QAAQ,CAAC;QAC9D,OAAO,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC;IAC7B,CAAC,CAAC,CAAC;IACH,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IAC/C,OAAO,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;AACvD,CAAC"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Calcula el i-ésimo término (1-indexado) de la secuencia de Luby.
|
|
3
|
+
* Para mantener la indexación pública 0-indexada, internamente trabajamos
|
|
4
|
+
* con t = i + 1, aplicando la recurrencia clásica de Knuth (1991):
|
|
5
|
+
* luby(t) = 2^(k-1) si t = 2^k - 1
|
|
6
|
+
* luby(t) = luby(t - 2^(k-1) + 1) si 2^(k-1) ≤ t < 2^k - 1
|
|
7
|
+
*/
|
|
8
|
+
export declare function luby(i: number): number;
|
|
9
|
+
/**
|
|
10
|
+
* Genera los primeros `n` términos de la secuencia de Luby.
|
|
11
|
+
* Útil para tests y previsualización.
|
|
12
|
+
*/
|
|
13
|
+
export declare function lubySequence(n: number): number[];
|
|
14
|
+
/**
|
|
15
|
+
* Política de restart Luby con multiplicador `base`.
|
|
16
|
+
* Cada paso devuelve cuántos conflictos esperar antes del próximo restart.
|
|
17
|
+
*/
|
|
18
|
+
export declare class LubyRestartPolicy {
|
|
19
|
+
private readonly base;
|
|
20
|
+
private idx;
|
|
21
|
+
constructor(base?: number);
|
|
22
|
+
/** Conflictos hasta el próximo restart (avanza el contador interno). */
|
|
23
|
+
next(): number;
|
|
24
|
+
/** Estado actual (para inspección/tests). */
|
|
25
|
+
get index(): number;
|
|
26
|
+
reset(): void;
|
|
27
|
+
}
|
|
28
|
+
//# sourceMappingURL=luby.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"luby.d.ts","sourceRoot":"","sources":["../../../src/solver/cdcl-v2/luby.ts"],"names":[],"mappings":"AAIA;;;;;;GAMG;AACH,wBAAgB,IAAI,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CActC;AAED;;;GAGG;AACH,wBAAgB,YAAY,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAIhD;AAED;;;GAGG;AACH,qBAAa,iBAAiB;IAEhB,OAAO,CAAC,QAAQ,CAAC,IAAI;IADjC,OAAO,CAAC,GAAG,CAAK;gBACa,IAAI,GAAE,MAAY;IAM/C,wEAAwE;IACxE,IAAI,IAAI,MAAM;IAMd,6CAA6C;IAC7C,IAAI,KAAK,IAAI,MAAM,CAElB;IAED,KAAK,IAAI,IAAI;CAGd"}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// Luby sequence — Knuth (1991) / Luby et al. (1993)
|
|
3
|
+
// Secuencia: 1, 1, 2, 1, 1, 2, 4, 1, 1, 2, 1, 1, 2, 4, 8, ...
|
|
4
|
+
// Usada como cadencia de restart en CDCL (Huang 2007).
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.LubyRestartPolicy = void 0;
|
|
7
|
+
exports.luby = luby;
|
|
8
|
+
exports.lubySequence = lubySequence;
|
|
9
|
+
/**
|
|
10
|
+
* Calcula el i-ésimo término (1-indexado) de la secuencia de Luby.
|
|
11
|
+
* Para mantener la indexación pública 0-indexada, internamente trabajamos
|
|
12
|
+
* con t = i + 1, aplicando la recurrencia clásica de Knuth (1991):
|
|
13
|
+
* luby(t) = 2^(k-1) si t = 2^k - 1
|
|
14
|
+
* luby(t) = luby(t - 2^(k-1) + 1) si 2^(k-1) ≤ t < 2^k - 1
|
|
15
|
+
*/
|
|
16
|
+
function luby(i) {
|
|
17
|
+
if (i < 0 || !Number.isFinite(i)) {
|
|
18
|
+
throw new RangeError(`luby: index debe ser entero >= 0, recibido ${String(i)}`);
|
|
19
|
+
}
|
|
20
|
+
let t = i + 1;
|
|
21
|
+
while (true) {
|
|
22
|
+
// Encontrar la menor potencia tal que 2^k - 1 >= t.
|
|
23
|
+
let pow = 2;
|
|
24
|
+
while (pow - 1 < t) {
|
|
25
|
+
pow *= 2;
|
|
26
|
+
}
|
|
27
|
+
if (pow - 1 === t)
|
|
28
|
+
return pow >>> 1; // t = 2^k - 1 ⇒ luby = 2^(k-1)
|
|
29
|
+
t = t - (pow >>> 1) + 1;
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Genera los primeros `n` términos de la secuencia de Luby.
|
|
34
|
+
* Útil para tests y previsualización.
|
|
35
|
+
*/
|
|
36
|
+
function lubySequence(n) {
|
|
37
|
+
const out = new Array(n);
|
|
38
|
+
for (let i = 0; i < n; i++)
|
|
39
|
+
out[i] = luby(i);
|
|
40
|
+
return out;
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Política de restart Luby con multiplicador `base`.
|
|
44
|
+
* Cada paso devuelve cuántos conflictos esperar antes del próximo restart.
|
|
45
|
+
*/
|
|
46
|
+
class LubyRestartPolicy {
|
|
47
|
+
base;
|
|
48
|
+
idx = 0;
|
|
49
|
+
constructor(base = 100) {
|
|
50
|
+
this.base = base;
|
|
51
|
+
if (!(base > 0)) {
|
|
52
|
+
throw new RangeError(`LubyRestartPolicy: base debe ser > 0, recibido ${base}`);
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
/** Conflictos hasta el próximo restart (avanza el contador interno). */
|
|
56
|
+
next() {
|
|
57
|
+
const n = this.base * luby(this.idx);
|
|
58
|
+
this.idx++;
|
|
59
|
+
return n;
|
|
60
|
+
}
|
|
61
|
+
/** Estado actual (para inspección/tests). */
|
|
62
|
+
get index() {
|
|
63
|
+
return this.idx;
|
|
64
|
+
}
|
|
65
|
+
reset() {
|
|
66
|
+
this.idx = 0;
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
exports.LubyRestartPolicy = LubyRestartPolicy;
|
|
70
|
+
//# sourceMappingURL=luby.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"luby.js","sourceRoot":"","sources":["../../../src/solver/cdcl-v2/luby.ts"],"names":[],"mappings":";AAAA,oDAAoD;AACpD,8DAA8D;AAC9D,uDAAuD;;;AASvD,oBAcC;AAMD,oCAIC;AA/BD;;;;;;GAMG;AACH,SAAgB,IAAI,CAAC,CAAS;IAC5B,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC;QACjC,MAAM,IAAI,UAAU,CAAC,8CAA8C,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;IAClF,CAAC;IACD,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IACd,OAAO,IAAI,EAAE,CAAC;QACZ,oDAAoD;QACpD,IAAI,GAAG,GAAG,CAAC,CAAC;QACZ,OAAO,GAAG,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;YACnB,GAAG,IAAI,CAAC,CAAC;QACX,CAAC;QACD,IAAI,GAAG,GAAG,CAAC,KAAK,CAAC;YAAE,OAAO,GAAG,KAAK,CAAC,CAAC,CAAC,+BAA+B;QACpE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC;IAC1B,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,SAAgB,YAAY,CAAC,CAAS;IACpC,MAAM,GAAG,GAAa,IAAI,KAAK,CAAS,CAAC,CAAC,CAAC;IAC3C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE;QAAE,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;IAC7C,OAAO,GAAG,CAAC;AACb,CAAC;AAED;;;GAGG;AACH,MAAa,iBAAiB;IAEC;IADrB,GAAG,GAAG,CAAC,CAAC;IAChB,YAA6B,OAAe,GAAG;QAAlB,SAAI,GAAJ,IAAI,CAAc;QAC7C,IAAI,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,EAAE,CAAC;YAChB,MAAM,IAAI,UAAU,CAAC,kDAAkD,IAAI,EAAE,CAAC,CAAC;QACjF,CAAC;IACH,CAAC;IAED,wEAAwE;IACxE,IAAI;QACF,MAAM,CAAC,GAAG,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACrC,IAAI,CAAC,GAAG,EAAE,CAAC;QACX,OAAO,CAAC,CAAC;IACX,CAAC;IAED,6CAA6C;IAC7C,IAAI,KAAK;QACP,OAAO,IAAI,CAAC,GAAG,CAAC;IAClB,CAAC;IAED,KAAK;QACH,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC;IACf,CAAC;CACF;AAvBD,8CAuBC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
export declare class PhaseSaver {
|
|
2
|
+
/** 1 = positivo, 0 = negativo. -1 codificado como 0 en la práctica. */
|
|
3
|
+
private readonly phase;
|
|
4
|
+
readonly numVars: number;
|
|
5
|
+
private readonly initialPhase;
|
|
6
|
+
constructor(numVars: number, initialPhase?: 0 | 1);
|
|
7
|
+
/** Guarda la polaridad efectivamente asignada al literal `lit`. */
|
|
8
|
+
save(lit: number): void;
|
|
9
|
+
/** Polaridad guardada (0 o 1) para la variable. */
|
|
10
|
+
getPhase(v: number): 0 | 1;
|
|
11
|
+
/** Literal a probar en branching: var positiva si phase=1, negativa si phase=0. */
|
|
12
|
+
pickLit(v: number): number;
|
|
13
|
+
}
|
|
14
|
+
//# sourceMappingURL=phase-saving.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"phase-saving.d.ts","sourceRoot":"","sources":["../../../src/solver/cdcl-v2/phase-saving.ts"],"names":[],"mappings":"AAKA,qBAAa,UAAU;IACrB,uEAAuE;IACvE,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAY;IAClC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAQ;gBAEzB,OAAO,EAAE,MAAM,EAAE,YAAY,GAAE,CAAC,GAAG,CAAK;IAYpD,mEAAmE;IACnE,IAAI,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAMvB,mDAAmD;IACnD,QAAQ,CAAC,CAAC,EAAE,MAAM,GAAG,CAAC,GAAG,CAAC;IAK1B,mFAAmF;IACnF,OAAO,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM;CAG3B"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// Phase saving — Pipatsrisawat & Darwiche (2007).
|
|
3
|
+
// Guarda la última polaridad asignada a cada variable. Al decidir, el solver
|
|
4
|
+
// la reutiliza, lo que explota localidad: el espacio "cerca" de soluciones
|
|
5
|
+
// parciales válidas suele tener phases similares.
|
|
6
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
+
exports.PhaseSaver = void 0;
|
|
8
|
+
class PhaseSaver {
|
|
9
|
+
/** 1 = positivo, 0 = negativo. -1 codificado como 0 en la práctica. */
|
|
10
|
+
phase;
|
|
11
|
+
numVars;
|
|
12
|
+
initialPhase;
|
|
13
|
+
constructor(numVars, initialPhase = 0) {
|
|
14
|
+
if (numVars < 0 || !Number.isInteger(numVars)) {
|
|
15
|
+
throw new RangeError(`PhaseSaver: numVars inválido ${numVars}`);
|
|
16
|
+
}
|
|
17
|
+
this.numVars = numVars;
|
|
18
|
+
this.initialPhase = initialPhase;
|
|
19
|
+
this.phase = new Int8Array(numVars + 1);
|
|
20
|
+
if (initialPhase === 1) {
|
|
21
|
+
for (let i = 1; i <= numVars; i++)
|
|
22
|
+
this.phase[i] = 1;
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
/** Guarda la polaridad efectivamente asignada al literal `lit`. */
|
|
26
|
+
save(lit) {
|
|
27
|
+
const v = Math.abs(lit);
|
|
28
|
+
if (v <= 0 || v > this.numVars)
|
|
29
|
+
return;
|
|
30
|
+
this.phase[v] = lit > 0 ? 1 : 0;
|
|
31
|
+
}
|
|
32
|
+
/** Polaridad guardada (0 o 1) para la variable. */
|
|
33
|
+
getPhase(v) {
|
|
34
|
+
if (v <= 0 || v > this.numVars)
|
|
35
|
+
return this.initialPhase;
|
|
36
|
+
return this.phase[v] === 1 ? 1 : 0;
|
|
37
|
+
}
|
|
38
|
+
/** Literal a probar en branching: var positiva si phase=1, negativa si phase=0. */
|
|
39
|
+
pickLit(v) {
|
|
40
|
+
return this.getPhase(v) === 1 ? v : -v;
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
exports.PhaseSaver = PhaseSaver;
|
|
44
|
+
//# sourceMappingURL=phase-saving.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"phase-saving.js","sourceRoot":"","sources":["../../../src/solver/cdcl-v2/phase-saving.ts"],"names":[],"mappings":";AAAA,kDAAkD;AAClD,6EAA6E;AAC7E,2EAA2E;AAC3E,kDAAkD;;;AAElD,MAAa,UAAU;IACrB,uEAAuE;IACtD,KAAK,CAAY;IACzB,OAAO,CAAS;IACR,YAAY,CAAQ;IAErC,YAAY,OAAe,EAAE,eAAsB,CAAC;QAClD,IAAI,OAAO,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,CAAC;YAC9C,MAAM,IAAI,UAAU,CAAC,gCAAgC,OAAO,EAAE,CAAC,CAAC;QAClE,CAAC;QACD,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;QACjC,IAAI,CAAC,KAAK,GAAG,IAAI,SAAS,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC;QACxC,IAAI,YAAY,KAAK,CAAC,EAAE,CAAC;YACvB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,OAAO,EAAE,CAAC,EAAE;gBAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;QACvD,CAAC;IACH,CAAC;IAED,mEAAmE;IACnE,IAAI,CAAC,GAAW;QACd,MAAM,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACxB,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,OAAO;YAAE,OAAO;QACvC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAClC,CAAC;IAED,mDAAmD;IACnD,QAAQ,CAAC,CAAS;QAChB,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,OAAO;YAAE,OAAO,IAAI,CAAC,YAAY,CAAC;QACzD,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACrC,CAAC;IAED,mFAAmF;IACnF,OAAO,CAAC,CAAS;QACf,OAAO,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACzC,CAAC;CACF;AAnCD,gCAmCC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { type SolverOptions, type SolveResult } from './state';
|
|
2
|
+
/**
|
|
3
|
+
* Resuelve un conjunto de cláusulas CNF y retorna SAT (con modelo) o UNSAT
|
|
4
|
+
* (con core de variables involucradas en cláusulas vacías derivadas).
|
|
5
|
+
*
|
|
6
|
+
* Convención DIMACS: variables 1..numVars, literal positivo = variable
|
|
7
|
+
* asignada a true, negativo = false. Cláusula vacía ⇒ UNSAT inmediato.
|
|
8
|
+
*/
|
|
9
|
+
export declare function solveCDCLv2(inputClauses: ReadonlyArray<Int32Array>, numVars: number, opts?: SolverOptions): SolveResult;
|
|
10
|
+
//# sourceMappingURL=solver.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"solver.d.ts","sourceRoot":"","sources":["../../../src/solver/cdcl-v2/solver.ts"],"names":[],"mappings":"AAQA,OAAO,EAML,KAAK,aAAa,EAElB,KAAK,WAAW,EAEjB,MAAM,SAAS,CAAC;AAmEjB;;;;;;GAMG;AACH,wBAAgB,WAAW,CACzB,YAAY,EAAE,aAAa,CAAC,UAAU,CAAC,EACvC,OAAO,EAAE,MAAM,EACf,IAAI,CAAC,EAAE,aAAa,GACnB,WAAW,CAqYb"}
|