@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,442 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// CDCL v2 — Orquestador principal.
|
|
3
|
+
// Combina: 2-watched literals, BCP, 1UIP clause learning, VSIDS, Luby restarts,
|
|
4
|
+
// phase saving, LBD scoring + reducción periódica de aprendidas.
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.solveCDCLv2 = solveCDCLv2;
|
|
7
|
+
const clause_learning_1 = require("./clause-learning");
|
|
8
|
+
const lbd_1 = require("./lbd");
|
|
9
|
+
const luby_1 = require("./luby");
|
|
10
|
+
const phase_saving_1 = require("./phase-saving");
|
|
11
|
+
const state_1 = require("./state");
|
|
12
|
+
const vsids_1 = require("./vsids");
|
|
13
|
+
const DEFAULTS = {
|
|
14
|
+
timeoutMs: 30_000,
|
|
15
|
+
lubyBase: 100,
|
|
16
|
+
vsidsDecay: 0.95,
|
|
17
|
+
clauseDecay: 0.999,
|
|
18
|
+
lbdReduceThreshold: 2,
|
|
19
|
+
initialPhase: 0,
|
|
20
|
+
};
|
|
21
|
+
function normalizeOpts(opts) {
|
|
22
|
+
return {
|
|
23
|
+
timeoutMs: opts?.timeoutMs ?? DEFAULTS.timeoutMs,
|
|
24
|
+
lubyBase: opts?.lubyBase ?? DEFAULTS.lubyBase,
|
|
25
|
+
vsidsDecay: opts?.vsidsDecay ?? DEFAULTS.vsidsDecay,
|
|
26
|
+
clauseDecay: opts?.clauseDecay ?? DEFAULTS.clauseDecay,
|
|
27
|
+
lbdReduceThreshold: opts?.lbdReduceThreshold ?? DEFAULTS.lbdReduceThreshold,
|
|
28
|
+
atomNames: opts?.atomNames,
|
|
29
|
+
initialPhase: opts?.initialPhase ?? DEFAULTS.initialPhase,
|
|
30
|
+
};
|
|
31
|
+
}
|
|
32
|
+
function emptyStats() {
|
|
33
|
+
return {
|
|
34
|
+
decisions: 0,
|
|
35
|
+
propagations: 0,
|
|
36
|
+
conflicts: 0,
|
|
37
|
+
learnedClauses: 0,
|
|
38
|
+
reducedClauses: 0,
|
|
39
|
+
restarts: 0,
|
|
40
|
+
maxDecisionLevel: 0,
|
|
41
|
+
solveTimeMs: 0,
|
|
42
|
+
};
|
|
43
|
+
}
|
|
44
|
+
function buildModel(varVal, numVars, atomNames) {
|
|
45
|
+
const model = {};
|
|
46
|
+
if (!atomNames) {
|
|
47
|
+
for (let v = 1; v <= numVars; v++) {
|
|
48
|
+
model[`x${v}`] = varVal[v] === 1 || varVal[v] === 0;
|
|
49
|
+
}
|
|
50
|
+
return model;
|
|
51
|
+
}
|
|
52
|
+
for (let i = 0; i < atomNames.length && i < numVars; i++) {
|
|
53
|
+
const name = atomNames[i];
|
|
54
|
+
if (!name)
|
|
55
|
+
continue;
|
|
56
|
+
model[name] = varVal[i + 1] === 1 || varVal[i + 1] === 0;
|
|
57
|
+
}
|
|
58
|
+
return model;
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* Resuelve un conjunto de cláusulas CNF y retorna SAT (con modelo) o UNSAT
|
|
62
|
+
* (con core de variables involucradas en cláusulas vacías derivadas).
|
|
63
|
+
*
|
|
64
|
+
* Convención DIMACS: variables 1..numVars, literal positivo = variable
|
|
65
|
+
* asignada a true, negativo = false. Cláusula vacía ⇒ UNSAT inmediato.
|
|
66
|
+
*/
|
|
67
|
+
function solveCDCLv2(inputClauses, numVars, opts) {
|
|
68
|
+
const o = normalizeOpts(opts);
|
|
69
|
+
const startTime = Date.now();
|
|
70
|
+
const stats = emptyStats();
|
|
71
|
+
// Caso degenerado: 0 variables.
|
|
72
|
+
if (numVars === 0) {
|
|
73
|
+
// Cláusula vacía explícita ⇒ UNSAT; sino SAT trivial.
|
|
74
|
+
for (const c of inputClauses)
|
|
75
|
+
if (c.length === 0) {
|
|
76
|
+
stats.solveTimeMs = Date.now() - startTime;
|
|
77
|
+
return makeUnsat([], stats);
|
|
78
|
+
}
|
|
79
|
+
stats.solveTimeMs = Date.now() - startTime;
|
|
80
|
+
return makeSat({}, stats);
|
|
81
|
+
}
|
|
82
|
+
// Copia mutable de cláusulas — las watched literals se reordenan in-place.
|
|
83
|
+
const allClauses = inputClauses.map((c) => new Int32Array(c));
|
|
84
|
+
// UNSAT trivial: cláusula vacía directa.
|
|
85
|
+
for (const c of allClauses) {
|
|
86
|
+
if (c.length === 0) {
|
|
87
|
+
stats.solveTimeMs = Date.now() - startTime;
|
|
88
|
+
return makeUnsat([], stats);
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
const originalCount = allClauses.length;
|
|
92
|
+
// Estado de variables (1-indexado).
|
|
93
|
+
const varVal = new Int8Array(numVars + 1);
|
|
94
|
+
const varLevel = new Int32Array(numVars + 1).fill(-1);
|
|
95
|
+
const varAnte = new Int32Array(numVars + 1).fill(state_1.NO_ANTECEDENT);
|
|
96
|
+
// Trail: literales asignados en orden cronológico. trailLim guarda el
|
|
97
|
+
// offset del trail al inicio de cada nivel de decisión > 0.
|
|
98
|
+
const trail = [];
|
|
99
|
+
const trailLim = [];
|
|
100
|
+
let qHead = 0;
|
|
101
|
+
// Watch lists: 2-watched literals (MiniSat).
|
|
102
|
+
const watchSize = 2 * numVars;
|
|
103
|
+
const watches = new Array(watchSize);
|
|
104
|
+
for (let i = 0; i < watchSize; i++)
|
|
105
|
+
watches[i] = [];
|
|
106
|
+
const rebuildWatches = () => {
|
|
107
|
+
for (let i = 0; i < watchSize; i++)
|
|
108
|
+
watches[i] = [];
|
|
109
|
+
for (let ci = 0; ci < allClauses.length; ci++) {
|
|
110
|
+
const c = allClauses[ci];
|
|
111
|
+
if (c.length >= 2) {
|
|
112
|
+
const w0 = watches[(0, state_1.litToIdx)(c[0], numVars)];
|
|
113
|
+
const w1 = watches[(0, state_1.litToIdx)(c[1], numVars)];
|
|
114
|
+
if (w0)
|
|
115
|
+
w0.push(ci);
|
|
116
|
+
if (w1)
|
|
117
|
+
w1.push(ci);
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
};
|
|
121
|
+
rebuildWatches();
|
|
122
|
+
// Heurísticas.
|
|
123
|
+
const vsids = new vsids_1.VSIDS(numVars, o.vsidsDecay);
|
|
124
|
+
vsids.initFromClauses(allClauses);
|
|
125
|
+
const phases = new phase_saving_1.PhaseSaver(numVars, o.initialPhase);
|
|
126
|
+
const restarter = new luby_1.LubyRestartPolicy(o.lubyBase);
|
|
127
|
+
// Metadatos de cláusulas aprendidas (sólo learned, índice >= originalCount).
|
|
128
|
+
const learnedMeta = new Map();
|
|
129
|
+
let clauseInc = 1.0;
|
|
130
|
+
const seenLevelsBuf = new Uint8Array(numVars + 2);
|
|
131
|
+
const ensureSeenLevels = (lvl) => {
|
|
132
|
+
if (lvl + 2 > seenLevelsBuf.length) {
|
|
133
|
+
// El tamaño máximo de un nivel está acotado por numVars, así que esto
|
|
134
|
+
// no debería disparar; pero por seguridad reasignamos sin tirar el
|
|
135
|
+
// buffer existente.
|
|
136
|
+
const grown = new Uint8Array(lvl + 2);
|
|
137
|
+
grown.set(seenLevelsBuf);
|
|
138
|
+
return grown;
|
|
139
|
+
}
|
|
140
|
+
return seenLevelsBuf;
|
|
141
|
+
};
|
|
142
|
+
// --- API interna ---
|
|
143
|
+
const currentLevel = () => trailLim.length;
|
|
144
|
+
const litIsTrue = (lit) => (lit > 0 ? varVal[lit] === 1 : varVal[-lit] === -1);
|
|
145
|
+
const litIsFalse = (lit) => (lit > 0 ? varVal[lit] === -1 : varVal[-lit] === 1);
|
|
146
|
+
const enqueue = (lit, lev, reason) => {
|
|
147
|
+
const v = Math.abs(lit);
|
|
148
|
+
if (varVal[v] !== 0)
|
|
149
|
+
return litIsTrue(lit);
|
|
150
|
+
varVal[v] = lit > 0 ? 1 : -1;
|
|
151
|
+
varLevel[v] = lev;
|
|
152
|
+
varAnte[v] = reason;
|
|
153
|
+
trail.push(lit);
|
|
154
|
+
phases.save(lit);
|
|
155
|
+
stats.propagations++;
|
|
156
|
+
return true;
|
|
157
|
+
};
|
|
158
|
+
// BCP — propagación booleana con watched literals.
|
|
159
|
+
const propagate = () => {
|
|
160
|
+
while (qHead < trail.length) {
|
|
161
|
+
const p = trail[qHead++];
|
|
162
|
+
const falseLit = -p;
|
|
163
|
+
const wIdx = (0, state_1.litToIdx)(falseLit, numVars);
|
|
164
|
+
const wl = watches[wIdx];
|
|
165
|
+
let j = 0;
|
|
166
|
+
for (let i = 0; i < wl.length; i++) {
|
|
167
|
+
const ci = wl[i];
|
|
168
|
+
const c = allClauses[ci];
|
|
169
|
+
if (!c || c.length < 2) {
|
|
170
|
+
wl[j++] = ci;
|
|
171
|
+
continue;
|
|
172
|
+
}
|
|
173
|
+
// Aseguramos que falseLit esté en c[1] para tener c[0] como "otro watch".
|
|
174
|
+
if (c[0] === falseLit) {
|
|
175
|
+
const tmp = c[0];
|
|
176
|
+
c[0] = c[1];
|
|
177
|
+
c[1] = tmp;
|
|
178
|
+
}
|
|
179
|
+
if (litIsTrue(c[0])) {
|
|
180
|
+
wl[j++] = ci;
|
|
181
|
+
continue;
|
|
182
|
+
}
|
|
183
|
+
// Buscar reemplazo para el watch en c[1].
|
|
184
|
+
let found = false;
|
|
185
|
+
for (let k = 2; k < c.length; k++) {
|
|
186
|
+
if (!litIsFalse(c[k])) {
|
|
187
|
+
const tmp = c[1];
|
|
188
|
+
c[1] = c[k];
|
|
189
|
+
c[k] = tmp;
|
|
190
|
+
const newWatch = watches[(0, state_1.litToIdx)(c[1], numVars)];
|
|
191
|
+
if (newWatch)
|
|
192
|
+
newWatch.push(ci);
|
|
193
|
+
found = true;
|
|
194
|
+
break;
|
|
195
|
+
}
|
|
196
|
+
}
|
|
197
|
+
if (found)
|
|
198
|
+
continue;
|
|
199
|
+
// No hay reemplazo: c[0] queda como única esperanza.
|
|
200
|
+
wl[j++] = ci;
|
|
201
|
+
if (litIsFalse(c[0])) {
|
|
202
|
+
// CONFLICTO: copiamos el resto de la watch list intacta y salimos.
|
|
203
|
+
for (let r = i + 1; r < wl.length; r++)
|
|
204
|
+
wl[j++] = wl[r];
|
|
205
|
+
wl.length = j;
|
|
206
|
+
qHead = trail.length;
|
|
207
|
+
return ci;
|
|
208
|
+
}
|
|
209
|
+
// Unit propagation sobre c[0].
|
|
210
|
+
if (!enqueue(c[0], currentLevel(), ci)) {
|
|
211
|
+
for (let r = i + 1; r < wl.length; r++)
|
|
212
|
+
wl[j++] = wl[r];
|
|
213
|
+
wl.length = j;
|
|
214
|
+
qHead = trail.length;
|
|
215
|
+
return ci;
|
|
216
|
+
}
|
|
217
|
+
}
|
|
218
|
+
wl.length = j;
|
|
219
|
+
}
|
|
220
|
+
return state_1.NO_CONFLICT;
|
|
221
|
+
};
|
|
222
|
+
const backtrack = (target) => {
|
|
223
|
+
if (currentLevel() <= target)
|
|
224
|
+
return;
|
|
225
|
+
const btPoint = target < trailLim.length ? trailLim[target] : trail.length;
|
|
226
|
+
for (let i = trail.length - 1; i >= btPoint; i--) {
|
|
227
|
+
const v = Math.abs(trail[i]);
|
|
228
|
+
varVal[v] = 0;
|
|
229
|
+
varLevel[v] = -1;
|
|
230
|
+
varAnte[v] = state_1.NO_ANTECEDENT;
|
|
231
|
+
}
|
|
232
|
+
trail.length = btPoint;
|
|
233
|
+
trailLim.length = target;
|
|
234
|
+
qHead = btPoint;
|
|
235
|
+
};
|
|
236
|
+
const bumpClauseAct = (ci) => {
|
|
237
|
+
const meta = learnedMeta.get(ci);
|
|
238
|
+
if (!meta)
|
|
239
|
+
return;
|
|
240
|
+
meta.activity += clauseInc;
|
|
241
|
+
if (meta.activity > 1e20) {
|
|
242
|
+
for (const m of learnedMeta.values())
|
|
243
|
+
m.activity *= 1e-20;
|
|
244
|
+
clauseInc *= 1e-20;
|
|
245
|
+
}
|
|
246
|
+
};
|
|
247
|
+
const decayClauseAct = () => {
|
|
248
|
+
clauseInc /= o.clauseDecay;
|
|
249
|
+
};
|
|
250
|
+
const addLearnedClause = (learned, lbd) => {
|
|
251
|
+
const ci = allClauses.length;
|
|
252
|
+
allClauses.push(learned);
|
|
253
|
+
stats.learnedClauses++;
|
|
254
|
+
if (learned.length >= 2) {
|
|
255
|
+
const w0 = watches[(0, state_1.litToIdx)(learned[0], numVars)];
|
|
256
|
+
const w1 = watches[(0, state_1.litToIdx)(learned[1], numVars)];
|
|
257
|
+
if (w0)
|
|
258
|
+
w0.push(ci);
|
|
259
|
+
if (w1)
|
|
260
|
+
w1.push(ci);
|
|
261
|
+
}
|
|
262
|
+
learnedMeta.set(ci, {
|
|
263
|
+
index: ci,
|
|
264
|
+
lbd,
|
|
265
|
+
activity: clauseInc,
|
|
266
|
+
locked: false,
|
|
267
|
+
length: learned.length,
|
|
268
|
+
});
|
|
269
|
+
return ci;
|
|
270
|
+
};
|
|
271
|
+
// Reducción de cláusulas aprendidas: marca locked las que actualmente
|
|
272
|
+
// sirven como antecedente, calcula candidatas y reescribe arrays + watches.
|
|
273
|
+
const reduceLearnedDB = () => {
|
|
274
|
+
if (learnedMeta.size < 100)
|
|
275
|
+
return;
|
|
276
|
+
// Marcar locked.
|
|
277
|
+
for (const m of learnedMeta.values())
|
|
278
|
+
m.locked = false;
|
|
279
|
+
for (let v = 1; v <= numVars; v++) {
|
|
280
|
+
const ante = varAnte[v];
|
|
281
|
+
if (ante !== state_1.NO_ANTECEDENT && ante >= originalCount) {
|
|
282
|
+
const m = learnedMeta.get(ante);
|
|
283
|
+
if (m)
|
|
284
|
+
m.locked = true;
|
|
285
|
+
}
|
|
286
|
+
}
|
|
287
|
+
const toRemove = new Set((0, lbd_1.selectClausesToRemove)(Array.from(learnedMeta.values()), o.lbdReduceThreshold));
|
|
288
|
+
if (toRemove.size === 0)
|
|
289
|
+
return;
|
|
290
|
+
const oldToNew = new Map();
|
|
291
|
+
const newClauses = [];
|
|
292
|
+
for (let ci = 0; ci < allClauses.length; ci++) {
|
|
293
|
+
if (toRemove.has(ci))
|
|
294
|
+
continue;
|
|
295
|
+
oldToNew.set(ci, newClauses.length);
|
|
296
|
+
newClauses.push(allClauses[ci]);
|
|
297
|
+
}
|
|
298
|
+
// Reindexar antecedentes.
|
|
299
|
+
for (let v = 1; v <= numVars; v++) {
|
|
300
|
+
const ante = varAnte[v];
|
|
301
|
+
if (ante !== state_1.NO_ANTECEDENT) {
|
|
302
|
+
const mapped = oldToNew.get(ante);
|
|
303
|
+
varAnte[v] = mapped !== undefined ? mapped : state_1.NO_ANTECEDENT;
|
|
304
|
+
}
|
|
305
|
+
}
|
|
306
|
+
// Reindexar learnedMeta.
|
|
307
|
+
const newMeta = new Map();
|
|
308
|
+
for (const [oldIdx, meta] of learnedMeta) {
|
|
309
|
+
const newIdx = oldToNew.get(oldIdx);
|
|
310
|
+
if (newIdx === undefined)
|
|
311
|
+
continue;
|
|
312
|
+
meta.index = newIdx;
|
|
313
|
+
newMeta.set(newIdx, meta);
|
|
314
|
+
}
|
|
315
|
+
learnedMeta.clear();
|
|
316
|
+
for (const [k, v] of newMeta)
|
|
317
|
+
learnedMeta.set(k, v);
|
|
318
|
+
stats.reducedClauses += toRemove.size;
|
|
319
|
+
allClauses.length = 0;
|
|
320
|
+
for (const c of newClauses)
|
|
321
|
+
allClauses.push(c);
|
|
322
|
+
rebuildWatches();
|
|
323
|
+
};
|
|
324
|
+
// --- Setup: cláusulas unitarias iniciales como propagaciones de nivel 0. ---
|
|
325
|
+
for (let ci = 0; ci < allClauses.length; ci++) {
|
|
326
|
+
const c = allClauses[ci];
|
|
327
|
+
if (c.length === 1) {
|
|
328
|
+
const lit = c[0];
|
|
329
|
+
const v = Math.abs(lit);
|
|
330
|
+
if (varVal[v] !== 0) {
|
|
331
|
+
if (!litIsTrue(lit)) {
|
|
332
|
+
stats.solveTimeMs = Date.now() - startTime;
|
|
333
|
+
return makeUnsat([v], stats);
|
|
334
|
+
}
|
|
335
|
+
continue;
|
|
336
|
+
}
|
|
337
|
+
if (!enqueue(lit, 0, ci)) {
|
|
338
|
+
stats.solveTimeMs = Date.now() - startTime;
|
|
339
|
+
return makeUnsat([v], stats);
|
|
340
|
+
}
|
|
341
|
+
}
|
|
342
|
+
}
|
|
343
|
+
let conflict = propagate();
|
|
344
|
+
if (conflict !== state_1.NO_CONFLICT) {
|
|
345
|
+
stats.solveTimeMs = Date.now() - startTime;
|
|
346
|
+
return makeUnsat(extractCoreFromClause(allClauses[conflict]), stats);
|
|
347
|
+
}
|
|
348
|
+
let conflictsUntilRestart = restarter.next();
|
|
349
|
+
let conflictsSinceRestart = 0;
|
|
350
|
+
// Trigger inicial: reducir cuando el #learned excede una cuota.
|
|
351
|
+
let learnedQuota = Math.max(100, Math.floor(originalCount / 3));
|
|
352
|
+
while (true) {
|
|
353
|
+
if (Date.now() - startTime > o.timeoutMs) {
|
|
354
|
+
stats.solveTimeMs = Date.now() - startTime;
|
|
355
|
+
// Timeout — devolvemos UNSAT con core vacío como señal pesimista.
|
|
356
|
+
return makeUnsat([], stats);
|
|
357
|
+
}
|
|
358
|
+
const v = vsids.pick(varVal);
|
|
359
|
+
if (v === 0) {
|
|
360
|
+
// No quedan variables libres ⇒ SAT.
|
|
361
|
+
const model = buildModel(varVal, numVars, o.atomNames);
|
|
362
|
+
stats.solveTimeMs = Date.now() - startTime;
|
|
363
|
+
return makeSat(model, stats);
|
|
364
|
+
}
|
|
365
|
+
stats.decisions++;
|
|
366
|
+
trailLim.push(trail.length);
|
|
367
|
+
if (trailLim.length > stats.maxDecisionLevel)
|
|
368
|
+
stats.maxDecisionLevel = trailLim.length;
|
|
369
|
+
enqueue(phases.pickLit(v), currentLevel(), state_1.NO_ANTECEDENT);
|
|
370
|
+
conflict = propagate();
|
|
371
|
+
while (conflict !== state_1.NO_CONFLICT) {
|
|
372
|
+
stats.conflicts++;
|
|
373
|
+
conflictsSinceRestart++;
|
|
374
|
+
if (currentLevel() === 0) {
|
|
375
|
+
stats.solveTimeMs = Date.now() - startTime;
|
|
376
|
+
const conflictClause = allClauses[conflict];
|
|
377
|
+
return makeUnsat(conflictClause ? extractCoreFromClause(conflictClause) : [], stats);
|
|
378
|
+
}
|
|
379
|
+
const result = (0, clause_learning_1.analyzeConflict1UIP)(conflict, {
|
|
380
|
+
clauses: allClauses,
|
|
381
|
+
trail,
|
|
382
|
+
currentLevel: currentLevel(),
|
|
383
|
+
varLevel,
|
|
384
|
+
varAnte,
|
|
385
|
+
});
|
|
386
|
+
// Bump activities de variables tocadas, luego decay.
|
|
387
|
+
for (const bv of result.bumped)
|
|
388
|
+
vsids.bump(bv);
|
|
389
|
+
vsids.decayStep();
|
|
390
|
+
// Si la "cláusula" aprendida es vacía con btLevel = -1, UNSAT.
|
|
391
|
+
if (result.learned.length === 0 || result.btLevel < 0) {
|
|
392
|
+
stats.solveTimeMs = Date.now() - startTime;
|
|
393
|
+
return makeUnsat(result.bumped, stats);
|
|
394
|
+
}
|
|
395
|
+
// Si la cláusula aprendida bumpeó cláusula raíz, también bumpeamos su act.
|
|
396
|
+
bumpClauseAct(conflict);
|
|
397
|
+
decayClauseAct();
|
|
398
|
+
backtrack(result.btLevel);
|
|
399
|
+
if (result.learned.length === 1) {
|
|
400
|
+
// Asignación forzada a nivel 0.
|
|
401
|
+
if (!enqueue(result.learned[0], 0, state_1.NO_ANTECEDENT)) {
|
|
402
|
+
stats.solveTimeMs = Date.now() - startTime;
|
|
403
|
+
return makeUnsat(result.bumped, stats);
|
|
404
|
+
}
|
|
405
|
+
}
|
|
406
|
+
else {
|
|
407
|
+
const lbdBuf = ensureSeenLevels(stats.maxDecisionLevel);
|
|
408
|
+
const lbd = (0, lbd_1.computeLBD)(result.learned, varLevel, lbdBuf);
|
|
409
|
+
const newCi = addLearnedClause(result.learned, lbd);
|
|
410
|
+
if (!enqueue(result.learned[0], result.btLevel, newCi)) {
|
|
411
|
+
stats.solveTimeMs = Date.now() - startTime;
|
|
412
|
+
return makeUnsat(result.bumped, stats);
|
|
413
|
+
}
|
|
414
|
+
}
|
|
415
|
+
conflict = propagate();
|
|
416
|
+
}
|
|
417
|
+
if (conflictsSinceRestart >= conflictsUntilRestart) {
|
|
418
|
+
stats.restarts++;
|
|
419
|
+
backtrack(0);
|
|
420
|
+
conflictsSinceRestart = 0;
|
|
421
|
+
conflictsUntilRestart = restarter.next();
|
|
422
|
+
}
|
|
423
|
+
if (learnedMeta.size > learnedQuota) {
|
|
424
|
+
reduceLearnedDB();
|
|
425
|
+
learnedQuota = Math.max(100, learnedMeta.size + Math.floor(originalCount / 2));
|
|
426
|
+
}
|
|
427
|
+
}
|
|
428
|
+
}
|
|
429
|
+
function makeSat(model, stats) {
|
|
430
|
+
return { sat: true, model, stats };
|
|
431
|
+
}
|
|
432
|
+
function makeUnsat(core, stats) {
|
|
433
|
+
return { unsat: true, core, stats };
|
|
434
|
+
}
|
|
435
|
+
/** Extrae las variables de una cláusula como "core" pesimista. */
|
|
436
|
+
function extractCoreFromClause(c) {
|
|
437
|
+
const out = [];
|
|
438
|
+
for (let i = 0; i < c.length; i++)
|
|
439
|
+
out.push(Math.abs(c[i] ?? 0));
|
|
440
|
+
return out;
|
|
441
|
+
}
|
|
442
|
+
//# sourceMappingURL=solver.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"solver.js","sourceRoot":"","sources":["../../../src/solver/cdcl-v2/solver.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
export type Clause = Int32Array;
|
|
2
|
+
export type Literal = number;
|
|
3
|
+
/** Valor de variable: 0 = sin asignar, 1 = true, -1 = false. */
|
|
4
|
+
export type VarValue = 0 | 1 | -1;
|
|
5
|
+
export interface SolverStatsV2 {
|
|
6
|
+
decisions: number;
|
|
7
|
+
propagations: number;
|
|
8
|
+
conflicts: number;
|
|
9
|
+
learnedClauses: number;
|
|
10
|
+
reducedClauses: number;
|
|
11
|
+
restarts: number;
|
|
12
|
+
maxDecisionLevel: number;
|
|
13
|
+
solveTimeMs: number;
|
|
14
|
+
}
|
|
15
|
+
/** Resultado SAT con modelo. */
|
|
16
|
+
export interface SatResult {
|
|
17
|
+
sat: true;
|
|
18
|
+
model: Record<string, boolean>;
|
|
19
|
+
stats: SolverStatsV2;
|
|
20
|
+
}
|
|
21
|
+
/** Resultado UNSAT con núcleo (conjunto de variables que entran en cláusulas
|
|
22
|
+
* aprendidas vacías en el camino al conflicto raíz). */
|
|
23
|
+
export interface UnsatResult {
|
|
24
|
+
unsat: true;
|
|
25
|
+
core: number[];
|
|
26
|
+
stats: SolverStatsV2;
|
|
27
|
+
}
|
|
28
|
+
export type SolveResult = SatResult | UnsatResult;
|
|
29
|
+
/** Opciones públicas del solver. */
|
|
30
|
+
export interface SolverOptions {
|
|
31
|
+
/** Límite total en ms. Default: 30000. */
|
|
32
|
+
timeoutMs?: number;
|
|
33
|
+
/** Multiplicador de la secuencia de Luby (cada paso vale `base * luby(i)` conflictos). */
|
|
34
|
+
lubyBase?: number;
|
|
35
|
+
/** Decay multiplicativo para activities VSIDS (entre 0 y 1, típico 0.95). */
|
|
36
|
+
vsidsDecay?: number;
|
|
37
|
+
/** Decay multiplicativo para activities de cláusulas (typical 0.999). */
|
|
38
|
+
clauseDecay?: number;
|
|
39
|
+
/** LBD máximo aceptado al reducir; cláusulas con LBD > threshold se candidatean a eliminación. */
|
|
40
|
+
lbdReduceThreshold?: number;
|
|
41
|
+
/** Nombres de átomos opcional para producir modelo legible (1-indexado). */
|
|
42
|
+
atomNames?: ReadonlyArray<string>;
|
|
43
|
+
/** Fase inicial sugerida: 1 = polaridad positiva, 0 = negativa. Default 0 (MiniSat). */
|
|
44
|
+
initialPhase?: 0 | 1;
|
|
45
|
+
}
|
|
46
|
+
/** Resultado de propagar: -1 si todo OK, o índice de cláusula en conflicto. */
|
|
47
|
+
export declare const NO_CONFLICT = -1;
|
|
48
|
+
/** Sentinela de "sin antecedente" (variable decidida o forzada por preprocessing). */
|
|
49
|
+
export declare const NO_ANTECEDENT = -1;
|
|
50
|
+
/** Convierte literal DIMACS a índice de watch list (rango 0..2*numVars-1). */
|
|
51
|
+
export declare function litToIdx(lit: Literal, numVars: number): number;
|
|
52
|
+
/** Inversa de litToIdx — útil sólo para debugging. */
|
|
53
|
+
export declare function idxToLit(idx: number, numVars: number): Literal;
|
|
54
|
+
//# sourceMappingURL=state.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"state.d.ts","sourceRoot":"","sources":["../../../src/solver/cdcl-v2/state.ts"],"names":[],"mappings":"AAKA,MAAM,MAAM,MAAM,GAAG,UAAU,CAAC;AAEhC,MAAM,MAAM,OAAO,GAAG,MAAM,CAAC;AAE7B,gEAAgE;AAChE,MAAM,MAAM,QAAQ,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;AAElC,MAAM,WAAW,aAAa;IAC5B,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,EAAE,MAAM,CAAC;IACvB,cAAc,EAAE,MAAM,CAAC;IACvB,QAAQ,EAAE,MAAM,CAAC;IACjB,gBAAgB,EAAE,MAAM,CAAC;IACzB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,gCAAgC;AAChC,MAAM,WAAW,SAAS;IACxB,GAAG,EAAE,IAAI,CAAC;IACV,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC/B,KAAK,EAAE,aAAa,CAAC;CACtB;AAED;wDACwD;AACxD,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,IAAI,CAAC;IACZ,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,KAAK,EAAE,aAAa,CAAC;CACtB;AAED,MAAM,MAAM,WAAW,GAAG,SAAS,GAAG,WAAW,CAAC;AAElD,oCAAoC;AACpC,MAAM,WAAW,aAAa;IAC5B,0CAA0C;IAC1C,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,0FAA0F;IAC1F,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,6EAA6E;IAC7E,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,yEAAyE;IACzE,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,kGAAkG;IAClG,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,4EAA4E;IAC5E,SAAS,CAAC,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;IAClC,wFAAwF;IACxF,YAAY,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;CACtB;AAED,+EAA+E;AAC/E,eAAO,MAAM,WAAW,KAAK,CAAC;AAE9B,sFAAsF;AACtF,eAAO,MAAM,aAAa,KAAK,CAAC;AAEhC,8EAA8E;AAC9E,wBAAgB,QAAQ,CAAC,GAAG,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAE9D;AAED,sDAAsD;AACtD,wBAAgB,QAAQ,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAE9D"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// Estado compartido del solver CDCL v2.
|
|
3
|
+
// Una "Clause" es un Int32Array de literales DIMACS (var positiva = true, negativa = false).
|
|
4
|
+
// Var IDs son 1-indexados. Literal `l` se mapea a índice de watch list mediante
|
|
5
|
+
// litToIdx(l, numVars).
|
|
6
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
+
exports.NO_ANTECEDENT = exports.NO_CONFLICT = void 0;
|
|
8
|
+
exports.litToIdx = litToIdx;
|
|
9
|
+
exports.idxToLit = idxToLit;
|
|
10
|
+
/** Resultado de propagar: -1 si todo OK, o índice de cláusula en conflicto. */
|
|
11
|
+
exports.NO_CONFLICT = -1;
|
|
12
|
+
/** Sentinela de "sin antecedente" (variable decidida o forzada por preprocessing). */
|
|
13
|
+
exports.NO_ANTECEDENT = -1;
|
|
14
|
+
/** Convierte literal DIMACS a índice de watch list (rango 0..2*numVars-1). */
|
|
15
|
+
function litToIdx(lit, numVars) {
|
|
16
|
+
return lit > 0 ? lit - 1 : numVars + -lit - 1;
|
|
17
|
+
}
|
|
18
|
+
/** Inversa de litToIdx — útil sólo para debugging. */
|
|
19
|
+
function idxToLit(idx, numVars) {
|
|
20
|
+
return idx < numVars ? idx + 1 : -(idx - numVars + 1);
|
|
21
|
+
}
|
|
22
|
+
//# sourceMappingURL=state.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"state.js","sourceRoot":"","sources":["../../../src/solver/cdcl-v2/state.ts"],"names":[],"mappings":";AAAA,wCAAwC;AACxC,6FAA6F;AAC7F,gFAAgF;AAChF,wBAAwB;;;AA8DxB,4BAEC;AAGD,4BAEC;AAdD,+EAA+E;AAClE,QAAA,WAAW,GAAG,CAAC,CAAC,CAAC;AAE9B,sFAAsF;AACzE,QAAA,aAAa,GAAG,CAAC,CAAC,CAAC;AAEhC,8EAA8E;AAC9E,SAAgB,QAAQ,CAAC,GAAY,EAAE,OAAe;IACpD,OAAO,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC;AAChD,CAAC;AAED,sDAAsD;AACtD,SAAgB,QAAQ,CAAC,GAAW,EAAE,OAAe;IACnD,OAAO,GAAG,GAAG,OAAO,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,OAAO,GAAG,CAAC,CAAC,CAAC;AACxD,CAAC"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
export declare class VSIDS {
|
|
2
|
+
readonly activity: Float64Array;
|
|
3
|
+
readonly numVars: number;
|
|
4
|
+
private varInc;
|
|
5
|
+
private readonly decay;
|
|
6
|
+
constructor(numVars: number, decay?: number);
|
|
7
|
+
/** Inicializa activities por frecuencia de aparición en las cláusulas dadas. */
|
|
8
|
+
initFromClauses(clauses: ReadonlyArray<Int32Array>): void;
|
|
9
|
+
/** Incrementa la activity de la variable y dispara rescaling si hace falta. */
|
|
10
|
+
bump(v: number): void;
|
|
11
|
+
/** Aumenta varInc para que próximos bumps pesen más (decay efectivo). */
|
|
12
|
+
decayStep(): void;
|
|
13
|
+
/** Variable libre (varVal[v]==0) con mayor activity, 0 si no hay. */
|
|
14
|
+
pick(varVal: Int8Array): number;
|
|
15
|
+
/** Acceso al incremento actual (para tests). */
|
|
16
|
+
get currentInc(): number;
|
|
17
|
+
private rescale;
|
|
18
|
+
}
|
|
19
|
+
//# sourceMappingURL=vsids.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"vsids.d.ts","sourceRoot":"","sources":["../../../src/solver/cdcl-v2/vsids.ts"],"names":[],"mappings":"AAYA,qBAAa,KAAK;IAChB,QAAQ,CAAC,QAAQ,EAAE,YAAY,CAAC;IAChC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,OAAO,CAAC,MAAM,CAAO;IACrB,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAS;gBAEnB,OAAO,EAAE,MAAM,EAAE,KAAK,GAAE,MAAa;IAYjD,gFAAgF;IAChF,eAAe,CAAC,OAAO,EAAE,aAAa,CAAC,UAAU,CAAC,GAAG,IAAI;IASzD,+EAA+E;IAC/E,IAAI,CAAC,CAAC,EAAE,MAAM,GAAG,IAAI;IAMrB,yEAAyE;IACzE,SAAS,IAAI,IAAI;IAKjB,qEAAqE;IACrE,IAAI,CAAC,MAAM,EAAE,SAAS,GAAG,MAAM;IAY/B,gDAAgD;IAChD,IAAI,UAAU,IAAI,MAAM,CAEvB;IAED,OAAO,CAAC,OAAO;CAIhB"}
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// VSIDS (Variable State Independent Decaying Sum) — Moskewicz et al. (2001)
|
|
3
|
+
// + EVSIDS (Exponential VSIDS) con rescaling para evitar overflow (MiniSat 2.0+).
|
|
4
|
+
//
|
|
5
|
+
// Cada conflicto bumpea las variables que aparecen en la cláusula aprendida.
|
|
6
|
+
// El `varInc` se incrementa periódicamente (cada conflicto) mediante división
|
|
7
|
+
// por VAR_DECAY, lo que efectivamente decae las activities viejas relativas a
|
|
8
|
+
// las nuevas — equivalente matemáticamente a multiplicar todo el array por
|
|
9
|
+
// VAR_DECAY pero O(1) en vez de O(n).
|
|
10
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
11
|
+
exports.VSIDS = void 0;
|
|
12
|
+
const RESCALE_THRESHOLD = 1e100;
|
|
13
|
+
const RESCALE_FACTOR = 1e-100;
|
|
14
|
+
class VSIDS {
|
|
15
|
+
activity;
|
|
16
|
+
numVars;
|
|
17
|
+
varInc = 1.0;
|
|
18
|
+
decay;
|
|
19
|
+
constructor(numVars, decay = 0.95) {
|
|
20
|
+
if (numVars < 0 || !Number.isInteger(numVars)) {
|
|
21
|
+
throw new RangeError(`VSIDS: numVars inválido ${numVars}`);
|
|
22
|
+
}
|
|
23
|
+
if (!(decay > 0 && decay <= 1)) {
|
|
24
|
+
throw new RangeError(`VSIDS: decay debe estar en (0, 1], recibido ${decay}`);
|
|
25
|
+
}
|
|
26
|
+
this.numVars = numVars;
|
|
27
|
+
this.decay = decay;
|
|
28
|
+
this.activity = new Float64Array(numVars + 1);
|
|
29
|
+
}
|
|
30
|
+
/** Inicializa activities por frecuencia de aparición en las cláusulas dadas. */
|
|
31
|
+
initFromClauses(clauses) {
|
|
32
|
+
for (const c of clauses) {
|
|
33
|
+
for (let i = 0; i < c.length; i++) {
|
|
34
|
+
const v = Math.abs(c[i] ?? 0);
|
|
35
|
+
if (v > 0 && v <= this.numVars)
|
|
36
|
+
this.activity[v] += 1.0;
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
/** Incrementa la activity de la variable y dispara rescaling si hace falta. */
|
|
41
|
+
bump(v) {
|
|
42
|
+
if (v <= 0 || v > this.numVars)
|
|
43
|
+
return;
|
|
44
|
+
this.activity[v] += this.varInc;
|
|
45
|
+
if (this.activity[v] > RESCALE_THRESHOLD)
|
|
46
|
+
this.rescale();
|
|
47
|
+
}
|
|
48
|
+
/** Aumenta varInc para que próximos bumps pesen más (decay efectivo). */
|
|
49
|
+
decayStep() {
|
|
50
|
+
this.varInc /= this.decay;
|
|
51
|
+
if (this.varInc > RESCALE_THRESHOLD)
|
|
52
|
+
this.rescale();
|
|
53
|
+
}
|
|
54
|
+
/** Variable libre (varVal[v]==0) con mayor activity, 0 si no hay. */
|
|
55
|
+
pick(varVal) {
|
|
56
|
+
let best = 0;
|
|
57
|
+
let bestAct = -1;
|
|
58
|
+
for (let v = 1; v <= this.numVars; v++) {
|
|
59
|
+
if (varVal[v] === 0 && this.activity[v] > bestAct) {
|
|
60
|
+
bestAct = this.activity[v];
|
|
61
|
+
best = v;
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
return best;
|
|
65
|
+
}
|
|
66
|
+
/** Acceso al incremento actual (para tests). */
|
|
67
|
+
get currentInc() {
|
|
68
|
+
return this.varInc;
|
|
69
|
+
}
|
|
70
|
+
rescale() {
|
|
71
|
+
for (let i = 1; i <= this.numVars; i++)
|
|
72
|
+
this.activity[i] *= RESCALE_FACTOR;
|
|
73
|
+
this.varInc *= RESCALE_FACTOR;
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
exports.VSIDS = VSIDS;
|
|
77
|
+
//# sourceMappingURL=vsids.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"vsids.js","sourceRoot":"","sources":["../../../src/solver/cdcl-v2/vsids.ts"],"names":[],"mappings":"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"}
|