@stevenvo780/st-lang 4.1.0 → 4.3.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/dist/belief-revision/agm.d.ts +76 -0
- package/dist/belief-revision/agm.d.ts.map +1 -0
- package/dist/belief-revision/agm.js +249 -0
- package/dist/belief-revision/agm.js.map +1 -0
- package/dist/belief-revision/index.d.ts +6 -0
- package/dist/belief-revision/index.d.ts.map +1 -0
- package/dist/belief-revision/index.js +33 -0
- package/dist/belief-revision/index.js.map +1 -0
- package/dist/belief-revision/parser.d.ts +16 -0
- package/dist/belief-revision/parser.d.ts.map +1 -0
- package/dist/belief-revision/parser.js +199 -0
- package/dist/belief-revision/parser.js.map +1 -0
- package/dist/belief-revision/sat.d.ts +19 -0
- package/dist/belief-revision/sat.d.ts.map +1 -0
- package/dist/belief-revision/sat.js +90 -0
- package/dist/belief-revision/sat.js.map +1 -0
- package/dist/belief-revision/types.d.ts +51 -0
- package/dist/belief-revision/types.d.ts.map +1 -0
- package/dist/belief-revision/types.js +10 -0
- package/dist/belief-revision/types.js.map +1 -0
- package/dist/curry-howard/index.d.ts +7 -0
- package/dist/curry-howard/index.d.ts.map +1 -0
- package/dist/curry-howard/index.js +46 -0
- package/dist/curry-howard/index.js.map +1 -0
- package/dist/curry-howard/infer.d.ts +9 -0
- package/dist/curry-howard/infer.d.ts.map +1 -0
- package/dist/curry-howard/infer.js +129 -0
- package/dist/curry-howard/infer.js.map +1 -0
- package/dist/curry-howard/proof.d.ts +7 -0
- package/dist/curry-howard/proof.d.ts.map +1 -0
- package/dist/curry-howard/proof.js +282 -0
- package/dist/curry-howard/proof.js.map +1 -0
- package/dist/curry-howard/reduce.d.ts +7 -0
- package/dist/curry-howard/reduce.d.ts.map +1 -0
- package/dist/curry-howard/reduce.js +266 -0
- package/dist/curry-howard/reduce.js.map +1 -0
- package/dist/curry-howard/types.d.ts +91 -0
- package/dist/curry-howard/types.d.ts.map +1 -0
- package/dist/curry-howard/types.js +149 -0
- package/dist/curry-howard/types.js.map +1 -0
- package/dist/fol-prover-equality/demodulate.d.ts +29 -0
- package/dist/fol-prover-equality/demodulate.d.ts.map +1 -0
- package/dist/fol-prover-equality/demodulate.js +197 -0
- package/dist/fol-prover-equality/demodulate.js.map +1 -0
- package/dist/fol-prover-equality/index.d.ts +8 -0
- package/dist/fol-prover-equality/index.d.ts.map +1 -0
- package/dist/fol-prover-equality/index.js +24 -0
- package/dist/fol-prover-equality/index.js.map +1 -0
- package/dist/fol-prover-equality/paramodulate.d.ts +46 -0
- package/dist/fol-prover-equality/paramodulate.d.ts.map +1 -0
- package/dist/fol-prover-equality/paramodulate.js +159 -0
- package/dist/fol-prover-equality/paramodulate.js.map +1 -0
- package/dist/fol-prover-equality/prove.d.ts +7 -0
- package/dist/fol-prover-equality/prove.d.ts.map +1 -0
- package/dist/fol-prover-equality/prove.js +307 -0
- package/dist/fol-prover-equality/prove.js.map +1 -0
- package/dist/fol-prover-equality/term-utils.d.ts +43 -0
- package/dist/fol-prover-equality/term-utils.d.ts.map +1 -0
- package/dist/fol-prover-equality/term-utils.js +230 -0
- package/dist/fol-prover-equality/term-utils.js.map +1 -0
- package/dist/fol-prover-equality/types.d.ts +20 -0
- package/dist/fol-prover-equality/types.d.ts.map +1 -0
- package/dist/fol-prover-equality/types.js +5 -0
- package/dist/fol-prover-equality/types.js.map +1 -0
- package/dist/index.d.ts +8 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +53 -1
- package/dist/index.js.map +1 -1
- package/dist/lambda-calc/church.d.ts +8 -0
- package/dist/lambda-calc/church.d.ts.map +1 -0
- package/dist/lambda-calc/church.js +67 -0
- package/dist/lambda-calc/church.js.map +1 -0
- package/dist/lambda-calc/combinators.d.ts +8 -0
- package/dist/lambda-calc/combinators.d.ts.map +1 -0
- package/dist/lambda-calc/combinators.js +24 -0
- package/dist/lambda-calc/combinators.js.map +1 -0
- package/dist/lambda-calc/index.d.ts +8 -0
- package/dist/lambda-calc/index.d.ts.map +1 -0
- package/dist/lambda-calc/index.js +48 -0
- package/dist/lambda-calc/index.js.map +1 -0
- package/dist/lambda-calc/reduce.d.ts +18 -0
- package/dist/lambda-calc/reduce.d.ts.map +1 -0
- package/dist/lambda-calc/reduce.js +174 -0
- package/dist/lambda-calc/reduce.js.map +1 -0
- package/dist/lambda-calc/substitution.d.ts +6 -0
- package/dist/lambda-calc/substitution.d.ts.map +1 -0
- package/dist/lambda-calc/substitution.js +120 -0
- package/dist/lambda-calc/substitution.js.map +1 -0
- package/dist/lambda-calc/types.d.ts +19 -0
- package/dist/lambda-calc/types.d.ts.map +1 -0
- package/dist/lambda-calc/types.js +72 -0
- package/dist/lambda-calc/types.js.map +1 -0
- package/dist/profiles/ctl/check.d.ts +13 -0
- package/dist/profiles/ctl/check.d.ts.map +1 -0
- package/dist/profiles/ctl/check.js +359 -0
- package/dist/profiles/ctl/check.js.map +1 -0
- package/dist/profiles/ctl/index.d.ts +5 -0
- package/dist/profiles/ctl/index.d.ts.map +1 -0
- package/dist/profiles/ctl/index.js +23 -0
- package/dist/profiles/ctl/index.js.map +1 -0
- package/dist/profiles/ctl/types.d.ts +74 -0
- package/dist/profiles/ctl/types.d.ts.map +1 -0
- package/dist/profiles/ctl/types.js +53 -0
- package/dist/profiles/ctl/types.js.map +1 -0
- package/dist/profiles/ctl/witness.d.ts +20 -0
- package/dist/profiles/ctl/witness.d.ts.map +1 -0
- package/dist/profiles/ctl/witness.js +149 -0
- package/dist/profiles/ctl/witness.js.map +1 -0
- package/dist/profiles/default-logic/entailment.d.ts +14 -0
- package/dist/profiles/default-logic/entailment.d.ts.map +1 -0
- package/dist/profiles/default-logic/entailment.js +36 -0
- package/dist/profiles/default-logic/entailment.js.map +1 -0
- package/dist/profiles/default-logic/extensions.d.ts +35 -0
- package/dist/profiles/default-logic/extensions.d.ts.map +1 -0
- package/dist/profiles/default-logic/extensions.js +276 -0
- package/dist/profiles/default-logic/extensions.js.map +1 -0
- package/dist/profiles/default-logic/index.d.ts +5 -0
- package/dist/profiles/default-logic/index.d.ts.map +1 -0
- package/dist/profiles/default-logic/index.js +33 -0
- package/dist/profiles/default-logic/index.js.map +1 -0
- package/dist/profiles/default-logic/types.d.ts +29 -0
- package/dist/profiles/default-logic/types.d.ts.map +1 -0
- package/dist/profiles/default-logic/types.js +25 -0
- package/dist/profiles/default-logic/types.js.map +1 -0
- package/dist/profiles/description-logic/index.d.ts +5 -0
- package/dist/profiles/description-logic/index.d.ts.map +1 -0
- package/dist/profiles/description-logic/index.js +39 -0
- package/dist/profiles/description-logic/index.js.map +1 -0
- package/dist/profiles/description-logic/nnf.d.ts +13 -0
- package/dist/profiles/description-logic/nnf.d.ts.map +1 -0
- package/dist/profiles/description-logic/nnf.js +123 -0
- package/dist/profiles/description-logic/nnf.js.map +1 -0
- package/dist/profiles/description-logic/tableau.d.ts +27 -0
- package/dist/profiles/description-logic/tableau.d.ts.map +1 -0
- package/dist/profiles/description-logic/tableau.js +491 -0
- package/dist/profiles/description-logic/tableau.js.map +1 -0
- package/dist/profiles/description-logic/types.d.ts +45 -0
- package/dist/profiles/description-logic/types.d.ts.map +1 -0
- package/dist/profiles/description-logic/types.js +71 -0
- package/dist/profiles/description-logic/types.js.map +1 -0
- package/dist/profiles/hybrid-logic/index.d.ts +5 -0
- package/dist/profiles/hybrid-logic/index.d.ts.map +1 -0
- package/dist/profiles/hybrid-logic/index.js +34 -0
- package/dist/profiles/hybrid-logic/index.js.map +1 -0
- package/dist/profiles/hybrid-logic/sat.d.ts +15 -0
- package/dist/profiles/hybrid-logic/sat.d.ts.map +1 -0
- package/dist/profiles/hybrid-logic/sat.js +142 -0
- package/dist/profiles/hybrid-logic/sat.js.map +1 -0
- package/dist/profiles/hybrid-logic/semantics.d.ts +20 -0
- package/dist/profiles/hybrid-logic/semantics.d.ts.map +1 -0
- package/dist/profiles/hybrid-logic/semantics.js +107 -0
- package/dist/profiles/hybrid-logic/semantics.js.map +1 -0
- package/dist/profiles/hybrid-logic/types.d.ts +78 -0
- package/dist/profiles/hybrid-logic/types.d.ts.map +1 -0
- package/dist/profiles/hybrid-logic/types.js +107 -0
- package/dist/profiles/hybrid-logic/types.js.map +1 -0
- package/dist/profiles/intuitionistic-nj/formula.d.ts +19 -0
- package/dist/profiles/intuitionistic-nj/formula.d.ts.map +1 -0
- package/dist/profiles/intuitionistic-nj/formula.js +99 -0
- package/dist/profiles/intuitionistic-nj/formula.js.map +1 -0
- package/dist/profiles/intuitionistic-nj/index.d.ts +5 -0
- package/dist/profiles/intuitionistic-nj/index.d.ts.map +1 -0
- package/dist/profiles/intuitionistic-nj/index.js +24 -0
- package/dist/profiles/intuitionistic-nj/index.js.map +1 -0
- package/dist/profiles/intuitionistic-nj/kripke.d.ts +17 -0
- package/dist/profiles/intuitionistic-nj/kripke.d.ts.map +1 -0
- package/dist/profiles/intuitionistic-nj/kripke.js +206 -0
- package/dist/profiles/intuitionistic-nj/kripke.js.map +1 -0
- package/dist/profiles/intuitionistic-nj/prover.d.ts +13 -0
- package/dist/profiles/intuitionistic-nj/prover.d.ts.map +1 -0
- package/dist/profiles/intuitionistic-nj/prover.js +418 -0
- package/dist/profiles/intuitionistic-nj/prover.js.map +1 -0
- package/dist/profiles/intuitionistic-nj/types.d.ts +55 -0
- package/dist/profiles/intuitionistic-nj/types.d.ts.map +1 -0
- package/dist/profiles/intuitionistic-nj/types.js +21 -0
- package/dist/profiles/intuitionistic-nj/types.js.map +1 -0
- package/dist/profiles/ltl-sat/index.d.ts +4 -0
- package/dist/profiles/ltl-sat/index.d.ts.map +1 -0
- package/dist/profiles/ltl-sat/index.js +40 -0
- package/dist/profiles/ltl-sat/index.js.map +1 -0
- package/dist/profiles/ltl-sat/sat.d.ts +8 -0
- package/dist/profiles/ltl-sat/sat.d.ts.map +1 -0
- package/dist/profiles/ltl-sat/sat.js +140 -0
- package/dist/profiles/ltl-sat/sat.js.map +1 -0
- package/dist/profiles/ltl-sat/tableau.d.ts +19 -0
- package/dist/profiles/ltl-sat/tableau.d.ts.map +1 -0
- package/dist/profiles/ltl-sat/tableau.js +358 -0
- package/dist/profiles/ltl-sat/tableau.js.map +1 -0
- package/dist/profiles/ltl-sat/types.d.ts +52 -0
- package/dist/profiles/ltl-sat/types.d.ts.map +1 -0
- package/dist/profiles/ltl-sat/types.js +101 -0
- package/dist/profiles/ltl-sat/types.js.map +1 -0
- package/dist/profiles/many-valued/index.d.ts +39 -0
- package/dist/profiles/many-valued/index.d.ts.map +1 -0
- package/dist/profiles/many-valued/index.js +250 -0
- package/dist/profiles/many-valued/index.js.map +1 -0
- package/dist/profiles/modal-frame-axioms/formula.d.ts +23 -0
- package/dist/profiles/modal-frame-axioms/formula.d.ts.map +1 -0
- package/dist/profiles/modal-frame-axioms/formula.js +158 -0
- package/dist/profiles/modal-frame-axioms/formula.js.map +1 -0
- package/dist/profiles/modal-frame-axioms/index.d.ts +6 -0
- package/dist/profiles/modal-frame-axioms/index.d.ts.map +1 -0
- package/dist/profiles/modal-frame-axioms/index.js +41 -0
- package/dist/profiles/modal-frame-axioms/index.js.map +1 -0
- package/dist/profiles/modal-frame-axioms/systems.d.ts +29 -0
- package/dist/profiles/modal-frame-axioms/systems.d.ts.map +1 -0
- package/dist/profiles/modal-frame-axioms/systems.js +96 -0
- package/dist/profiles/modal-frame-axioms/systems.js.map +1 -0
- package/dist/profiles/modal-frame-axioms/tableau.d.ts +12 -0
- package/dist/profiles/modal-frame-axioms/tableau.d.ts.map +1 -0
- package/dist/profiles/modal-frame-axioms/tableau.js +299 -0
- package/dist/profiles/modal-frame-axioms/tableau.js.map +1 -0
- package/dist/profiles/modal-frame-axioms/types.d.ts +61 -0
- package/dist/profiles/modal-frame-axioms/types.d.ts.map +1 -0
- package/dist/profiles/modal-frame-axioms/types.js +27 -0
- package/dist/profiles/modal-frame-axioms/types.js.map +1 -0
- package/dist/profiles/sequent-g3/index.d.ts +5 -0
- package/dist/profiles/sequent-g3/index.d.ts.map +1 -0
- package/dist/profiles/sequent-g3/index.js +23 -0
- package/dist/profiles/sequent-g3/index.js.map +1 -0
- package/dist/profiles/sequent-g3/latex.d.ts +7 -0
- package/dist/profiles/sequent-g3/latex.d.ts.map +1 -0
- package/dist/profiles/sequent-g3/latex.js +107 -0
- package/dist/profiles/sequent-g3/latex.js.map +1 -0
- package/dist/profiles/sequent-g3/normalize.d.ts +15 -0
- package/dist/profiles/sequent-g3/normalize.d.ts.map +1 -0
- package/dist/profiles/sequent-g3/normalize.js +121 -0
- package/dist/profiles/sequent-g3/normalize.js.map +1 -0
- package/dist/profiles/sequent-g3/prover.d.ts +16 -0
- package/dist/profiles/sequent-g3/prover.d.ts.map +1 -0
- package/dist/profiles/sequent-g3/prover.js +348 -0
- package/dist/profiles/sequent-g3/prover.js.map +1 -0
- package/dist/profiles/sequent-g3/types.d.ts +30 -0
- package/dist/profiles/sequent-g3/types.d.ts.map +1 -0
- package/dist/profiles/sequent-g3/types.js +16 -0
- package/dist/profiles/sequent-g3/types.js.map +1 -0
- package/dist/profiles/substructural/index.d.ts +4 -0
- package/dist/profiles/substructural/index.d.ts.map +1 -0
- package/dist/profiles/substructural/index.js +22 -0
- package/dist/profiles/substructural/index.js.map +1 -0
- package/dist/profiles/substructural/prover.d.ts +13 -0
- package/dist/profiles/substructural/prover.d.ts.map +1 -0
- package/dist/profiles/substructural/prover.js +481 -0
- package/dist/profiles/substructural/prover.js.map +1 -0
- package/dist/profiles/substructural/types.d.ts +72 -0
- package/dist/profiles/substructural/types.d.ts.map +1 -0
- package/dist/profiles/substructural/types.js +27 -0
- package/dist/profiles/substructural/types.js.map +1 -0
- package/dist/runtime/abduction/entails.d.ts +21 -0
- package/dist/runtime/abduction/entails.d.ts.map +1 -0
- package/dist/runtime/abduction/entails.js +308 -0
- package/dist/runtime/abduction/entails.js.map +1 -0
- package/dist/runtime/abduction/find.d.ts +18 -0
- package/dist/runtime/abduction/find.d.ts.map +1 -0
- package/dist/runtime/abduction/find.js +202 -0
- package/dist/runtime/abduction/find.js.map +1 -0
- package/dist/runtime/abduction/index.d.ts +4 -0
- package/dist/runtime/abduction/index.d.ts.map +1 -0
- package/dist/runtime/abduction/index.js +26 -0
- package/dist/runtime/abduction/index.js.map +1 -0
- package/dist/runtime/abduction/types.d.ts +78 -0
- package/dist/runtime/abduction/types.d.ts.map +1 -0
- package/dist/runtime/abduction/types.js +23 -0
- package/dist/runtime/abduction/types.js.map +1 -0
- package/dist/runtime/bayesian/factor.d.ts +22 -0
- package/dist/runtime/bayesian/factor.d.ts.map +1 -0
- package/dist/runtime/bayesian/factor.js +249 -0
- package/dist/runtime/bayesian/factor.js.map +1 -0
- package/dist/runtime/bayesian/index.d.ts +3 -0
- package/dist/runtime/bayesian/index.d.ts.map +1 -0
- package/dist/runtime/bayesian/index.js +25 -0
- package/dist/runtime/bayesian/index.js.map +1 -0
- package/dist/runtime/bayesian/inference.d.ts +6 -0
- package/dist/runtime/bayesian/inference.d.ts.map +1 -0
- package/dist/runtime/bayesian/inference.js +260 -0
- package/dist/runtime/bayesian/inference.js.map +1 -0
- package/dist/runtime/bayesian/types.d.ts +19 -0
- package/dist/runtime/bayesian/types.d.ts.map +1 -0
- package/dist/runtime/bayesian/types.js +9 -0
- package/dist/runtime/bayesian/types.js.map +1 -0
- package/dist/runtime/bisimulation/index.d.ts +4 -0
- package/dist/runtime/bisimulation/index.d.ts.map +1 -0
- package/dist/runtime/bisimulation/index.js +21 -0
- package/dist/runtime/bisimulation/index.js.map +1 -0
- package/dist/runtime/bisimulation/operations.d.ts +40 -0
- package/dist/runtime/bisimulation/operations.d.ts.map +1 -0
- package/dist/runtime/bisimulation/operations.js +219 -0
- package/dist/runtime/bisimulation/operations.js.map +1 -0
- package/dist/runtime/bisimulation/paige-tarjan.d.ts +8 -0
- package/dist/runtime/bisimulation/paige-tarjan.d.ts.map +1 -0
- package/dist/runtime/bisimulation/paige-tarjan.js +199 -0
- package/dist/runtime/bisimulation/paige-tarjan.js.map +1 -0
- package/dist/runtime/bisimulation/types.d.ts +26 -0
- package/dist/runtime/bisimulation/types.d.ts.map +1 -0
- package/dist/runtime/bisimulation/types.js +22 -0
- package/dist/runtime/bisimulation/types.js.map +1 -0
- package/dist/runtime/countermodel-min/index.d.ts +3 -0
- package/dist/runtime/countermodel-min/index.d.ts.map +1 -0
- package/dist/runtime/countermodel-min/index.js +9 -0
- package/dist/runtime/countermodel-min/index.js.map +1 -0
- package/dist/runtime/countermodel-min/minimize.d.ts +17 -0
- package/dist/runtime/countermodel-min/minimize.d.ts.map +1 -0
- package/dist/runtime/countermodel-min/minimize.js +0 -0
- package/dist/runtime/countermodel-min/minimize.js.map +1 -0
- package/dist/runtime/countermodel-min/types.d.ts +40 -0
- package/dist/runtime/countermodel-min/types.d.ts.map +1 -0
- package/dist/runtime/countermodel-min/types.js +6 -0
- package/dist/runtime/countermodel-min/types.js.map +1 -0
- package/dist/runtime/fca/context.d.ts +46 -0
- package/dist/runtime/fca/context.d.ts.map +1 -0
- package/dist/runtime/fca/context.js +155 -0
- package/dist/runtime/fca/context.js.map +1 -0
- package/dist/runtime/fca/implications.d.ts +10 -0
- package/dist/runtime/fca/implications.d.ts.map +1 -0
- package/dist/runtime/fca/implications.js +33 -0
- package/dist/runtime/fca/implications.js.map +1 -0
- package/dist/runtime/fca/index.d.ts +6 -0
- package/dist/runtime/fca/index.d.ts.map +1 -0
- package/dist/runtime/fca/index.js +39 -0
- package/dist/runtime/fca/index.js.map +1 -0
- package/dist/runtime/fca/lattice.d.ts +10 -0
- package/dist/runtime/fca/lattice.d.ts.map +1 -0
- package/dist/runtime/fca/lattice.js +86 -0
- package/dist/runtime/fca/lattice.js.map +1 -0
- package/dist/runtime/fca/next-closure.d.ts +12 -0
- package/dist/runtime/fca/next-closure.d.ts.map +1 -0
- package/dist/runtime/fca/next-closure.js +99 -0
- package/dist/runtime/fca/next-closure.js.map +1 -0
- package/dist/runtime/fca/types.d.ts +31 -0
- package/dist/runtime/fca/types.d.ts.map +1 -0
- package/dist/runtime/fca/types.js +30 -0
- package/dist/runtime/fca/types.js.map +1 -0
- package/dist/runtime/mus/extract.d.ts +34 -0
- package/dist/runtime/mus/extract.d.ts.map +1 -0
- package/dist/runtime/mus/extract.js +243 -0
- package/dist/runtime/mus/extract.js.map +1 -0
- package/dist/runtime/mus/index.d.ts +4 -0
- package/dist/runtime/mus/index.d.ts.map +1 -0
- package/dist/runtime/mus/index.js +12 -0
- package/dist/runtime/mus/index.js.map +1 -0
- package/dist/runtime/mus/quickxplain.d.ts +10 -0
- package/dist/runtime/mus/quickxplain.d.ts.map +1 -0
- package/dist/runtime/mus/quickxplain.js +100 -0
- package/dist/runtime/mus/quickxplain.js.map +1 -0
- package/dist/runtime/mus/types.d.ts +59 -0
- package/dist/runtime/mus/types.d.ts.map +1 -0
- package/dist/runtime/mus/types.js +20 -0
- package/dist/runtime/mus/types.js.map +1 -0
- package/dist/runtime/proof-minify/index.d.ts +3 -0
- package/dist/runtime/proof-minify/index.d.ts.map +1 -0
- package/dist/runtime/proof-minify/index.js +13 -0
- package/dist/runtime/proof-minify/index.js.map +1 -0
- package/dist/runtime/proof-minify/minify.d.ts +13 -0
- package/dist/runtime/proof-minify/minify.d.ts.map +1 -0
- package/dist/runtime/proof-minify/minify.js +540 -0
- package/dist/runtime/proof-minify/minify.js.map +1 -0
- package/dist/runtime/proof-minify/types.d.ts +89 -0
- package/dist/runtime/proof-minify/types.d.ts.map +1 -0
- package/dist/runtime/proof-minify/types.js +16 -0
- package/dist/runtime/proof-minify/types.js.map +1 -0
- package/dist/runtime/symbolic-diff/constructors.d.ts +16 -0
- package/dist/runtime/symbolic-diff/constructors.d.ts.map +1 -0
- package/dist/runtime/symbolic-diff/constructors.js +75 -0
- package/dist/runtime/symbolic-diff/constructors.js.map +1 -0
- package/dist/runtime/symbolic-diff/differentiate.d.ts +22 -0
- package/dist/runtime/symbolic-diff/differentiate.d.ts.map +1 -0
- package/dist/runtime/symbolic-diff/differentiate.js +107 -0
- package/dist/runtime/symbolic-diff/differentiate.js.map +1 -0
- package/dist/runtime/symbolic-diff/evaluate.d.ts +3 -0
- package/dist/runtime/symbolic-diff/evaluate.d.ts.map +1 -0
- package/dist/runtime/symbolic-diff/evaluate.js +47 -0
- package/dist/runtime/symbolic-diff/evaluate.js.map +1 -0
- package/dist/runtime/symbolic-diff/index.d.ts +9 -0
- package/dist/runtime/symbolic-diff/index.d.ts.map +1 -0
- package/dist/runtime/symbolic-diff/index.js +34 -0
- package/dist/runtime/symbolic-diff/index.js.map +1 -0
- package/dist/runtime/symbolic-diff/parse.d.ts +16 -0
- package/dist/runtime/symbolic-diff/parse.d.ts.map +1 -0
- package/dist/runtime/symbolic-diff/parse.js +206 -0
- package/dist/runtime/symbolic-diff/parse.js.map +1 -0
- package/dist/runtime/symbolic-diff/simplify.d.ts +11 -0
- package/dist/runtime/symbolic-diff/simplify.d.ts.map +1 -0
- package/dist/runtime/symbolic-diff/simplify.js +214 -0
- package/dist/runtime/symbolic-diff/simplify.js.map +1 -0
- package/dist/runtime/symbolic-diff/stringify.d.ts +3 -0
- package/dist/runtime/symbolic-diff/stringify.d.ts.map +1 -0
- package/dist/runtime/symbolic-diff/stringify.js +69 -0
- package/dist/runtime/symbolic-diff/stringify.js.map +1 -0
- package/dist/runtime/symbolic-diff/types.d.ts +35 -0
- package/dist/runtime/symbolic-diff/types.d.ts.map +1 -0
- package/dist/runtime/symbolic-diff/types.js +9 -0
- package/dist/runtime/symbolic-diff/types.js.map +1 -0
- package/dist/runtime/term-rewriting/critical-pairs.d.ts +38 -0
- package/dist/runtime/term-rewriting/critical-pairs.d.ts.map +1 -0
- package/dist/runtime/term-rewriting/critical-pairs.js +109 -0
- package/dist/runtime/term-rewriting/critical-pairs.js.map +1 -0
- package/dist/runtime/term-rewriting/index.d.ts +9 -0
- package/dist/runtime/term-rewriting/index.d.ts.map +1 -0
- package/dist/runtime/term-rewriting/index.js +38 -0
- package/dist/runtime/term-rewriting/index.js.map +1 -0
- package/dist/runtime/term-rewriting/knuth-bendix.d.ts +29 -0
- package/dist/runtime/term-rewriting/knuth-bendix.d.ts.map +1 -0
- package/dist/runtime/term-rewriting/knuth-bendix.js +196 -0
- package/dist/runtime/term-rewriting/knuth-bendix.js.map +1 -0
- package/dist/runtime/term-rewriting/lpo.d.ts +17 -0
- package/dist/runtime/term-rewriting/lpo.d.ts.map +1 -0
- package/dist/runtime/term-rewriting/lpo.js +158 -0
- package/dist/runtime/term-rewriting/lpo.js.map +1 -0
- package/dist/runtime/term-rewriting/rewrite.d.ts +44 -0
- package/dist/runtime/term-rewriting/rewrite.d.ts.map +1 -0
- package/dist/runtime/term-rewriting/rewrite.js +189 -0
- package/dist/runtime/term-rewriting/rewrite.js.map +1 -0
- package/dist/runtime/term-rewriting/term-utils.d.ts +64 -0
- package/dist/runtime/term-rewriting/term-utils.d.ts.map +1 -0
- package/dist/runtime/term-rewriting/term-utils.js +360 -0
- package/dist/runtime/term-rewriting/term-utils.js.map +1 -0
- package/dist/runtime/term-rewriting/types.d.ts +66 -0
- package/dist/runtime/term-rewriting/types.d.ts.map +1 -0
- package/dist/runtime/term-rewriting/types.js +21 -0
- package/dist/runtime/term-rewriting/types.js.map +1 -0
- package/dist/solver/cdcl-v2-incremental/index.d.ts +3 -0
- package/dist/solver/cdcl-v2-incremental/index.d.ts.map +1 -0
- package/dist/solver/cdcl-v2-incremental/index.js +16 -0
- package/dist/solver/cdcl-v2-incremental/index.js.map +1 -0
- package/dist/solver/cdcl-v2-incremental/solver.d.ts +83 -0
- package/dist/solver/cdcl-v2-incremental/solver.d.ts.map +1 -0
- package/dist/solver/cdcl-v2-incremental/solver.js +727 -0
- package/dist/solver/cdcl-v2-incremental/solver.js.map +1 -0
- package/dist/solver/cdcl-v2-incremental/types.d.ts +47 -0
- package/dist/solver/cdcl-v2-incremental/types.d.ts.map +1 -0
- package/dist/solver/cdcl-v2-incremental/types.js +13 -0
- package/dist/solver/cdcl-v2-incremental/types.js.map +1 -0
- package/dist/tests/abduction/abduction.test.d.ts +2 -0
- package/dist/tests/abduction/abduction.test.d.ts.map +1 -0
- package/dist/tests/abduction/abduction.test.js +380 -0
- package/dist/tests/abduction/abduction.test.js.map +1 -0
- package/dist/tests/bayesian/bayesian.test.d.ts +2 -0
- package/dist/tests/bayesian/bayesian.test.d.ts.map +1 -0
- package/dist/tests/bayesian/bayesian.test.js +328 -0
- package/dist/tests/bayesian/bayesian.test.js.map +1 -0
- package/dist/tests/belief-revision/agm.test.d.ts +2 -0
- package/dist/tests/belief-revision/agm.test.d.ts.map +1 -0
- package/dist/tests/belief-revision/agm.test.js +173 -0
- package/dist/tests/belief-revision/agm.test.js.map +1 -0
- package/dist/tests/bisimulation/paige-tarjan.test.d.ts +2 -0
- package/dist/tests/bisimulation/paige-tarjan.test.d.ts.map +1 -0
- package/dist/tests/bisimulation/paige-tarjan.test.js +254 -0
- package/dist/tests/bisimulation/paige-tarjan.test.js.map +1 -0
- package/dist/tests/countermodel-min/minimize.test.d.ts +2 -0
- package/dist/tests/countermodel-min/minimize.test.d.ts.map +1 -0
- package/dist/tests/countermodel-min/minimize.test.js +241 -0
- package/dist/tests/countermodel-min/minimize.test.js.map +1 -0
- package/dist/tests/ctl/check.test.d.ts +2 -0
- package/dist/tests/ctl/check.test.d.ts.map +1 -0
- package/dist/tests/ctl/check.test.js +337 -0
- package/dist/tests/ctl/check.test.js.map +1 -0
- package/dist/tests/curry-howard/infer.test.d.ts +2 -0
- package/dist/tests/curry-howard/infer.test.d.ts.map +1 -0
- package/dist/tests/curry-howard/infer.test.js +93 -0
- package/dist/tests/curry-howard/infer.test.js.map +1 -0
- package/dist/tests/curry-howard/proof.test.d.ts +2 -0
- package/dist/tests/curry-howard/proof.test.d.ts.map +1 -0
- package/dist/tests/curry-howard/proof.test.js +105 -0
- package/dist/tests/curry-howard/proof.test.js.map +1 -0
- package/dist/tests/curry-howard/reduce.test.d.ts +2 -0
- package/dist/tests/curry-howard/reduce.test.d.ts.map +1 -0
- package/dist/tests/curry-howard/reduce.test.js +109 -0
- package/dist/tests/curry-howard/reduce.test.js.map +1 -0
- package/dist/tests/default-logic/extensions.test.d.ts +2 -0
- package/dist/tests/default-logic/extensions.test.d.ts.map +1 -0
- package/dist/tests/default-logic/extensions.test.js +323 -0
- package/dist/tests/default-logic/extensions.test.js.map +1 -0
- package/dist/tests/description-logic/alc.test.d.ts +2 -0
- package/dist/tests/description-logic/alc.test.d.ts.map +1 -0
- package/dist/tests/description-logic/alc.test.js +253 -0
- package/dist/tests/description-logic/alc.test.js.map +1 -0
- package/dist/tests/fca/fca.test.d.ts +2 -0
- package/dist/tests/fca/fca.test.d.ts.map +1 -0
- package/dist/tests/fca/fca.test.js +317 -0
- package/dist/tests/fca/fca.test.js.map +1 -0
- package/dist/tests/fol-prover-equality/prove.test.d.ts +2 -0
- package/dist/tests/fol-prover-equality/prove.test.d.ts.map +1 -0
- package/dist/tests/fol-prover-equality/prove.test.js +179 -0
- package/dist/tests/fol-prover-equality/prove.test.js.map +1 -0
- package/dist/tests/hybrid-logic/semantics.test.d.ts +2 -0
- package/dist/tests/hybrid-logic/semantics.test.d.ts.map +1 -0
- package/dist/tests/hybrid-logic/semantics.test.js +169 -0
- package/dist/tests/hybrid-logic/semantics.test.js.map +1 -0
- package/dist/tests/intuitionistic-nj/nj.test.d.ts +2 -0
- package/dist/tests/intuitionistic-nj/nj.test.d.ts.map +1 -0
- package/dist/tests/intuitionistic-nj/nj.test.js +216 -0
- package/dist/tests/intuitionistic-nj/nj.test.js.map +1 -0
- package/dist/tests/lambda-calc/lambda-calc.test.d.ts +2 -0
- package/dist/tests/lambda-calc/lambda-calc.test.d.ts.map +1 -0
- package/dist/tests/lambda-calc/lambda-calc.test.js +164 -0
- package/dist/tests/lambda-calc/lambda-calc.test.js.map +1 -0
- package/dist/tests/ltl-sat/sat.test.d.ts +2 -0
- package/dist/tests/ltl-sat/sat.test.d.ts.map +1 -0
- package/dist/tests/ltl-sat/sat.test.js +160 -0
- package/dist/tests/ltl-sat/sat.test.js.map +1 -0
- package/dist/tests/many-valued/many-valued.test.d.ts +2 -0
- package/dist/tests/many-valued/many-valued.test.d.ts.map +1 -0
- package/dist/tests/many-valued/many-valued.test.js +150 -0
- package/dist/tests/many-valued/many-valued.test.js.map +1 -0
- package/dist/tests/modal-frame-axioms/frame-axioms.test.d.ts +2 -0
- package/dist/tests/modal-frame-axioms/frame-axioms.test.d.ts.map +1 -0
- package/dist/tests/modal-frame-axioms/frame-axioms.test.js +236 -0
- package/dist/tests/modal-frame-axioms/frame-axioms.test.js.map +1 -0
- package/dist/tests/mus/extract.test.d.ts +2 -0
- package/dist/tests/mus/extract.test.d.ts.map +1 -0
- package/dist/tests/mus/extract.test.js +352 -0
- package/dist/tests/mus/extract.test.js.map +1 -0
- package/dist/tests/proof-minify/minify.test.d.ts +2 -0
- package/dist/tests/proof-minify/minify.test.d.ts.map +1 -0
- package/dist/tests/proof-minify/minify.test.js +281 -0
- package/dist/tests/proof-minify/minify.test.js.map +1 -0
- package/dist/tests/sat-v2-incremental/basic.test.d.ts +2 -0
- package/dist/tests/sat-v2-incremental/basic.test.d.ts.map +1 -0
- package/dist/tests/sat-v2-incremental/basic.test.js +352 -0
- package/dist/tests/sat-v2-incremental/basic.test.js.map +1 -0
- package/dist/tests/sequent-g3/prover.test.d.ts +2 -0
- package/dist/tests/sequent-g3/prover.test.d.ts.map +1 -0
- package/dist/tests/sequent-g3/prover.test.js +205 -0
- package/dist/tests/sequent-g3/prover.test.js.map +1 -0
- package/dist/tests/substructural/prover.test.d.ts +2 -0
- package/dist/tests/substructural/prover.test.d.ts.map +1 -0
- package/dist/tests/substructural/prover.test.js +271 -0
- package/dist/tests/substructural/prover.test.js.map +1 -0
- package/dist/tests/symbolic-diff/symbolic-diff.test.d.ts +2 -0
- package/dist/tests/symbolic-diff/symbolic-diff.test.d.ts.map +1 -0
- package/dist/tests/symbolic-diff/symbolic-diff.test.js +278 -0
- package/dist/tests/symbolic-diff/symbolic-diff.test.js.map +1 -0
- package/dist/tests/term-rewriting/critical-pairs.test.d.ts +2 -0
- package/dist/tests/term-rewriting/critical-pairs.test.d.ts.map +1 -0
- package/dist/tests/term-rewriting/critical-pairs.test.js +34 -0
- package/dist/tests/term-rewriting/critical-pairs.test.js.map +1 -0
- package/dist/tests/term-rewriting/knuth-bendix.test.d.ts +2 -0
- package/dist/tests/term-rewriting/knuth-bendix.test.d.ts.map +1 -0
- package/dist/tests/term-rewriting/knuth-bendix.test.js +94 -0
- package/dist/tests/term-rewriting/knuth-bendix.test.js.map +1 -0
- package/dist/tests/term-rewriting/lpo.test.d.ts +2 -0
- package/dist/tests/term-rewriting/lpo.test.d.ts.map +1 -0
- package/dist/tests/term-rewriting/lpo.test.js +57 -0
- package/dist/tests/term-rewriting/lpo.test.js.map +1 -0
- package/dist/tests/term-rewriting/rewrite.test.d.ts +2 -0
- package/dist/tests/term-rewriting/rewrite.test.d.ts.map +1 -0
- package/dist/tests/term-rewriting/rewrite.test.js +56 -0
- package/dist/tests/term-rewriting/rewrite.test.js.map +1 -0
- package/dist/tests/term-rewriting/term-utils.test.d.ts +2 -0
- package/dist/tests/term-rewriting/term-utils.test.d.ts.map +1 -0
- package/dist/tests/term-rewriting/term-utils.test.js +58 -0
- package/dist/tests/term-rewriting/term-utils.test.js.map +1 -0
- package/package.json +1 -1
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import type { MUSOptions, MUSResult, SATOracle, AssumptionSolver } from './types';
|
|
2
|
+
/**
|
|
3
|
+
* Extrae un MUS (Minimal Unsatisfiable Subset) del conjunto unsat
|
|
4
|
+
* `clauses` usando el oráculo SAT provisto.
|
|
5
|
+
*
|
|
6
|
+
* Convenciones:
|
|
7
|
+
* - Las cláusulas son arrays de literales enteros estilo DIMACS
|
|
8
|
+
* (positivo / negativo). El motor no inspecciona la semántica;
|
|
9
|
+
* todo lo delega al `satOracle`.
|
|
10
|
+
* - El conjunto retornado en `mus` son índices sobre `clauses`.
|
|
11
|
+
* - Si `clauses` ES satisfacible, devolvemos `mus = []` (no hay
|
|
12
|
+
* MUS posible).
|
|
13
|
+
* - Determinismo: orden numérico ascendente en todos los recorridos.
|
|
14
|
+
*/
|
|
15
|
+
export declare function extractMUS(clauses: number[][], satOracle: SATOracle, opts?: MUSOptions): MUSResult;
|
|
16
|
+
/**
|
|
17
|
+
* Variante para SAT solvers incrementales con assumptions.
|
|
18
|
+
*
|
|
19
|
+
* El patrón típico es:
|
|
20
|
+
* - Por cada cláusula original `C_i`, añadir un selector literal
|
|
21
|
+
* `s_i` y convertirla en `C_i ∨ ¬s_i` (la cláusula está "off"
|
|
22
|
+
* cuando `s_i = false`).
|
|
23
|
+
* - Para "activar" un subset, pasar las correspondientes `s_i` como
|
|
24
|
+
* assumptions positivas.
|
|
25
|
+
* - Cuando el problema es unsat, el solver devuelve
|
|
26
|
+
* `failedAssumptions ⊆ assumptions` — el unsat core proyectado
|
|
27
|
+
* sobre los selectors.
|
|
28
|
+
*
|
|
29
|
+
* Esta función toma el `failedAssumptions` como punto de partida y
|
|
30
|
+
* lo minimiza con un pase deletion-based usando el mismo solver para
|
|
31
|
+
* garantizar minimalidad por inclusión.
|
|
32
|
+
*/
|
|
33
|
+
export declare function extractMUSWithSelectors(clauses: number[][], selectors: number[], solver: AssumptionSolver, opts?: MUSOptions): MUSResult;
|
|
34
|
+
//# sourceMappingURL=extract.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"extract.d.ts","sourceRoot":"","sources":["../../../src/runtime/mus/extract.ts"],"names":[],"mappings":"AAkBA,OAAO,KAAK,EAAgB,UAAU,EAAE,SAAS,EAAE,SAAS,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAuHhG;;;;;;;;;;;;GAYG;AACH,wBAAgB,UAAU,CACxB,OAAO,EAAE,MAAM,EAAE,EAAE,EACnB,SAAS,EAAE,SAAS,EACpB,IAAI,GAAE,UAAe,GACpB,SAAS,CA8CX;AAID;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,uBAAuB,CACrC,OAAO,EAAE,MAAM,EAAE,EAAE,EACnB,SAAS,EAAE,MAAM,EAAE,EACnB,MAAM,EAAE,gBAAgB,EACxB,IAAI,GAAE,UAAe,GACpB,SAAS,CAsDX"}
|
|
@@ -0,0 +1,243 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// ============================================================
|
|
3
|
+
// ST MUS — Extracción de Minimal Unsatisfiable Subsets
|
|
4
|
+
// ============================================================
|
|
5
|
+
//
|
|
6
|
+
// Algoritmos implementados:
|
|
7
|
+
// - deletion-based (O(n) llamadas SAT)
|
|
8
|
+
// - insertion-based (variante MARCO-like sencilla)
|
|
9
|
+
// - QuickXplain (delegado a `quickxplain.ts`)
|
|
10
|
+
//
|
|
11
|
+
// El oráculo SAT es una caja negra: cualquier función que dado un
|
|
12
|
+
// array de cláusulas (literales enteros estilo DIMACS) devuelva
|
|
13
|
+
// `true` si tiene modelo. Sound y completo según el oráculo provisto.
|
|
14
|
+
//
|
|
15
|
+
// También exponemos `extractMUSWithSelectors` para SAT solvers
|
|
16
|
+
// incrementales que devuelven `failedAssumptions`: en ese caso
|
|
17
|
+
// usamos la API del solver para conseguir un núcleo y luego lo
|
|
18
|
+
// minimizamos.
|
|
19
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
20
|
+
exports.extractMUS = extractMUS;
|
|
21
|
+
exports.extractMUSWithSelectors = extractMUSWithSelectors;
|
|
22
|
+
const quickxplain_1 = require("./quickxplain");
|
|
23
|
+
const DEFAULT_MAX_ITERATIONS = 100_000;
|
|
24
|
+
function callOracle(state, ids) {
|
|
25
|
+
if (state.satCalls >= state.maxIterations)
|
|
26
|
+
return true; // forzar salida segura
|
|
27
|
+
const subset = [];
|
|
28
|
+
for (const id of ids) {
|
|
29
|
+
const c = state.byId.get(id);
|
|
30
|
+
if (c !== undefined)
|
|
31
|
+
subset.push(c);
|
|
32
|
+
}
|
|
33
|
+
state.satCalls++;
|
|
34
|
+
return state.oracle(subset);
|
|
35
|
+
}
|
|
36
|
+
// ── Deletion-based ─────────────────────────────────────────────
|
|
37
|
+
/**
|
|
38
|
+
* Recorre cada cláusula del conjunto inicial; si removerla deja al
|
|
39
|
+
* resto unsat, la descarta. Garantiza minimalidad por inclusión al
|
|
40
|
+
* terminar el pase porque cada cláusula sobreviviente es "necesaria"
|
|
41
|
+
* en el contexto del conjunto sobreviviente.
|
|
42
|
+
*
|
|
43
|
+
* Detalle sutil: el orden de visita importa para *cuál* MUS se
|
|
44
|
+
* encuentra (puede haber varios). Usamos el orden numérico (id
|
|
45
|
+
* ascendente) para determinismo.
|
|
46
|
+
*/
|
|
47
|
+
function extractDeletion(state, allIds) {
|
|
48
|
+
let kept = allIds.slice().sort((a, b) => a - b);
|
|
49
|
+
for (const id of allIds.slice().sort((a, b) => a - b)) {
|
|
50
|
+
if (state.satCalls >= state.maxIterations)
|
|
51
|
+
break;
|
|
52
|
+
state.iterations++;
|
|
53
|
+
const candidate = kept.filter((x) => x !== id);
|
|
54
|
+
if (candidate.length === 0)
|
|
55
|
+
continue;
|
|
56
|
+
if (!callOracle(state, candidate)) {
|
|
57
|
+
// Sin esa cláusula sigue unsat → no es necesaria.
|
|
58
|
+
kept = candidate;
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
return kept;
|
|
62
|
+
}
|
|
63
|
+
// ── Insertion-based ────────────────────────────────────────────
|
|
64
|
+
/**
|
|
65
|
+
* Variante "linear search" de MUS extraction (a veces llamada
|
|
66
|
+
* dichotomic / insertion). Itera:
|
|
67
|
+
*
|
|
68
|
+
* 1. Mantiene `mus = []` (núcleo crecido) y `pool = allIds`.
|
|
69
|
+
* 2. Va añadiendo cláusulas de `pool` a un `working` set hasta que
|
|
70
|
+
* `mus ∪ working` se vuelve unsat. La última añadida es
|
|
71
|
+
* "transition" — la promueve a `mus`.
|
|
72
|
+
* 3. Reset `working = []` y repite, recortando `pool` a las que
|
|
73
|
+
* quedaron antes de la transition.
|
|
74
|
+
* 4. Termina cuando `mus` solo es unsat.
|
|
75
|
+
*
|
|
76
|
+
* Esto es esencialmente "augmenting MUS" / Junker's linear baseline.
|
|
77
|
+
* O(|MUS| · |C|) llamadas SAT en el peor caso, pero suele ser mucho
|
|
78
|
+
* más rápido en la práctica cuando |MUS| ≪ |C|.
|
|
79
|
+
*/
|
|
80
|
+
function extractInsertion(state, allIds) {
|
|
81
|
+
const mus = [];
|
|
82
|
+
let pool = allIds.slice().sort((a, b) => a - b);
|
|
83
|
+
// Caso base: si `[]` ya es unsat, el MUS es vacío.
|
|
84
|
+
state.iterations++;
|
|
85
|
+
if (!callOracle(state, []))
|
|
86
|
+
return [];
|
|
87
|
+
while (state.satCalls < state.maxIterations) {
|
|
88
|
+
state.iterations++;
|
|
89
|
+
// Si solo `mus` ya es unsat, terminamos.
|
|
90
|
+
if (!callOracle(state, mus))
|
|
91
|
+
break;
|
|
92
|
+
let working = [];
|
|
93
|
+
let transition = -1;
|
|
94
|
+
const consumed = [];
|
|
95
|
+
for (const id of pool) {
|
|
96
|
+
if (state.satCalls >= state.maxIterations)
|
|
97
|
+
break;
|
|
98
|
+
working = working.concat(id);
|
|
99
|
+
consumed.push(id);
|
|
100
|
+
if (!callOracle(state, mus.concat(working))) {
|
|
101
|
+
transition = id;
|
|
102
|
+
break;
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
if (transition === -1) {
|
|
106
|
+
// Defensa: si nunca se hizo unsat, el conjunto no era unsat para
|
|
107
|
+
// empezar (o se acabó el presupuesto). Salimos.
|
|
108
|
+
break;
|
|
109
|
+
}
|
|
110
|
+
mus.push(transition);
|
|
111
|
+
// Para el próximo loop solo nos quedamos con las cláusulas que se
|
|
112
|
+
// consumieron antes de la transition (excluyendo la transition).
|
|
113
|
+
// Esas son las "potencialmente irrelevantes" que aún hay que
|
|
114
|
+
// testear; las que estaban después en `pool` quedan ya cubiertas
|
|
115
|
+
// implícitamente por `mus`.
|
|
116
|
+
pool = consumed.filter((x) => x !== transition);
|
|
117
|
+
}
|
|
118
|
+
mus.sort((a, b) => a - b);
|
|
119
|
+
return mus;
|
|
120
|
+
}
|
|
121
|
+
// ── API pública ────────────────────────────────────────────────
|
|
122
|
+
/**
|
|
123
|
+
* Extrae un MUS (Minimal Unsatisfiable Subset) del conjunto unsat
|
|
124
|
+
* `clauses` usando el oráculo SAT provisto.
|
|
125
|
+
*
|
|
126
|
+
* Convenciones:
|
|
127
|
+
* - Las cláusulas son arrays de literales enteros estilo DIMACS
|
|
128
|
+
* (positivo / negativo). El motor no inspecciona la semántica;
|
|
129
|
+
* todo lo delega al `satOracle`.
|
|
130
|
+
* - El conjunto retornado en `mus` son índices sobre `clauses`.
|
|
131
|
+
* - Si `clauses` ES satisfacible, devolvemos `mus = []` (no hay
|
|
132
|
+
* MUS posible).
|
|
133
|
+
* - Determinismo: orden numérico ascendente en todos los recorridos.
|
|
134
|
+
*/
|
|
135
|
+
function extractMUS(clauses, satOracle, opts = {}) {
|
|
136
|
+
const algorithm = opts.algorithm ?? 'deletion';
|
|
137
|
+
const maxIterations = opts.maxIterations ?? DEFAULT_MAX_ITERATIONS;
|
|
138
|
+
// Pre-check: el conjunto completo debe ser unsat. Si es sat, no hay
|
|
139
|
+
// MUS — devolvemos vacío.
|
|
140
|
+
if (satOracle(clauses)) {
|
|
141
|
+
return { mus: [], iterations: 1, satCalls: 1 };
|
|
142
|
+
}
|
|
143
|
+
if (clauses.length === 0) {
|
|
144
|
+
// `[]` es trivialmente sat, así que el pre-check ya habría
|
|
145
|
+
// devuelto. Defensa: nunca llegamos aquí porque sat([]) = true.
|
|
146
|
+
return { mus: [], iterations: 1, satCalls: 1 };
|
|
147
|
+
}
|
|
148
|
+
const byId = new Map();
|
|
149
|
+
clauses.forEach((c, i) => byId.set(i, c));
|
|
150
|
+
const allIds = clauses.map((_, i) => i);
|
|
151
|
+
if (algorithm === 'qx') {
|
|
152
|
+
const qx = (0, quickxplain_1.quickxplain)(clauses, satOracle, maxIterations);
|
|
153
|
+
// QuickXplain ya devuelve un MUS minimal por inclusión.
|
|
154
|
+
return { mus: qx.mus, iterations: 1, satCalls: qx.satCalls + 1 };
|
|
155
|
+
}
|
|
156
|
+
const state = {
|
|
157
|
+
oracle: satOracle,
|
|
158
|
+
byId,
|
|
159
|
+
satCalls: 1, // contamos el pre-check inicial
|
|
160
|
+
iterations: 0,
|
|
161
|
+
maxIterations,
|
|
162
|
+
};
|
|
163
|
+
let mus;
|
|
164
|
+
if (algorithm === 'insertion') {
|
|
165
|
+
mus = extractInsertion(state, allIds);
|
|
166
|
+
}
|
|
167
|
+
else {
|
|
168
|
+
mus = extractDeletion(state, allIds);
|
|
169
|
+
}
|
|
170
|
+
return {
|
|
171
|
+
mus: mus.slice().sort((a, b) => a - b),
|
|
172
|
+
iterations: state.iterations,
|
|
173
|
+
satCalls: state.satCalls,
|
|
174
|
+
};
|
|
175
|
+
}
|
|
176
|
+
// ── Variante con assumptions / selectors ───────────────────────
|
|
177
|
+
/**
|
|
178
|
+
* Variante para SAT solvers incrementales con assumptions.
|
|
179
|
+
*
|
|
180
|
+
* El patrón típico es:
|
|
181
|
+
* - Por cada cláusula original `C_i`, añadir un selector literal
|
|
182
|
+
* `s_i` y convertirla en `C_i ∨ ¬s_i` (la cláusula está "off"
|
|
183
|
+
* cuando `s_i = false`).
|
|
184
|
+
* - Para "activar" un subset, pasar las correspondientes `s_i` como
|
|
185
|
+
* assumptions positivas.
|
|
186
|
+
* - Cuando el problema es unsat, el solver devuelve
|
|
187
|
+
* `failedAssumptions ⊆ assumptions` — el unsat core proyectado
|
|
188
|
+
* sobre los selectors.
|
|
189
|
+
*
|
|
190
|
+
* Esta función toma el `failedAssumptions` como punto de partida y
|
|
191
|
+
* lo minimiza con un pase deletion-based usando el mismo solver para
|
|
192
|
+
* garantizar minimalidad por inclusión.
|
|
193
|
+
*/
|
|
194
|
+
function extractMUSWithSelectors(clauses, selectors, solver, opts = {}) {
|
|
195
|
+
const maxIterations = opts.maxIterations ?? DEFAULT_MAX_ITERATIONS;
|
|
196
|
+
if (clauses.length !== selectors.length) {
|
|
197
|
+
throw new Error(`extractMUSWithSelectors: clauses.length (${clauses.length}) !== selectors.length (${selectors.length})`);
|
|
198
|
+
}
|
|
199
|
+
let satCalls = 0;
|
|
200
|
+
let iterations = 0;
|
|
201
|
+
// Primera llamada con TODAS las assumptions activas.
|
|
202
|
+
satCalls++;
|
|
203
|
+
iterations++;
|
|
204
|
+
const initial = solver.solveWithAssumptions(selectors.slice());
|
|
205
|
+
if (initial.sat) {
|
|
206
|
+
return { mus: [], iterations, satCalls };
|
|
207
|
+
}
|
|
208
|
+
// Núcleo inicial: failedAssumptions si el solver lo da; sino, todos.
|
|
209
|
+
const selectorToIndex = new Map();
|
|
210
|
+
selectors.forEach((s, i) => selectorToIndex.set(s, i));
|
|
211
|
+
let core;
|
|
212
|
+
if (initial.failedAssumptions && initial.failedAssumptions.length > 0) {
|
|
213
|
+
core = initial.failedAssumptions
|
|
214
|
+
.map((s) => selectorToIndex.get(s))
|
|
215
|
+
.filter((idx) => idx !== undefined);
|
|
216
|
+
}
|
|
217
|
+
else {
|
|
218
|
+
core = clauses.map((_, i) => i);
|
|
219
|
+
}
|
|
220
|
+
core = Array.from(new Set(core)).sort((a, b) => a - b);
|
|
221
|
+
// Minimización deletion-based sobre el core con el mismo solver.
|
|
222
|
+
for (const idx of core.slice()) {
|
|
223
|
+
if (satCalls >= maxIterations)
|
|
224
|
+
break;
|
|
225
|
+
iterations++;
|
|
226
|
+
const candidate = core.filter((x) => x !== idx);
|
|
227
|
+
if (candidate.length === 0)
|
|
228
|
+
continue;
|
|
229
|
+
const assumptions = candidate.map((i) => selectors[i]);
|
|
230
|
+
satCalls++;
|
|
231
|
+
const res = solver.solveWithAssumptions(assumptions);
|
|
232
|
+
if (!res.sat) {
|
|
233
|
+
// Sin esa cláusula sigue unsat → no es necesaria.
|
|
234
|
+
core = candidate;
|
|
235
|
+
}
|
|
236
|
+
}
|
|
237
|
+
return {
|
|
238
|
+
mus: core.slice().sort((a, b) => a - b),
|
|
239
|
+
iterations,
|
|
240
|
+
satCalls,
|
|
241
|
+
};
|
|
242
|
+
}
|
|
243
|
+
//# sourceMappingURL=extract.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"extract.js","sourceRoot":"","sources":["../../../src/runtime/mus/extract.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/runtime/mus/index.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,UAAU,EAAE,uBAAuB,EAAE,MAAM,WAAW,CAAC;AAChE,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,YAAY,EAAE,YAAY,EAAE,UAAU,EAAE,SAAS,EAAE,SAAS,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// ============================================================
|
|
3
|
+
// ST MUS — Barrel
|
|
4
|
+
// ============================================================
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.quickxplain = exports.extractMUSWithSelectors = exports.extractMUS = void 0;
|
|
7
|
+
var extract_1 = require("./extract");
|
|
8
|
+
Object.defineProperty(exports, "extractMUS", { enumerable: true, get: function () { return extract_1.extractMUS; } });
|
|
9
|
+
Object.defineProperty(exports, "extractMUSWithSelectors", { enumerable: true, get: function () { return extract_1.extractMUSWithSelectors; } });
|
|
10
|
+
var quickxplain_1 = require("./quickxplain");
|
|
11
|
+
Object.defineProperty(exports, "quickxplain", { enumerable: true, get: function () { return quickxplain_1.quickxplain; } });
|
|
12
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/runtime/mus/index.ts"],"names":[],"mappings":";AAAA,+DAA+D;AAC/D,kBAAkB;AAClB,+DAA+D;;;AAE/D,qCAAgE;AAAvD,qGAAA,UAAU,OAAA;AAAE,kHAAA,uBAAuB,OAAA;AAC5C,6CAA4C;AAAnC,0GAAA,WAAW,OAAA"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { SATOracle } from './types';
|
|
2
|
+
/**
|
|
3
|
+
* Ejecuta QuickXplain sobre el conjunto de cláusulas indexadas y
|
|
4
|
+
* devuelve los índices del MUS hallado más el conteo de llamadas SAT.
|
|
5
|
+
*/
|
|
6
|
+
export declare function quickxplain(clauses: number[][], oracle: SATOracle, maxIterations: number): {
|
|
7
|
+
mus: number[];
|
|
8
|
+
satCalls: number;
|
|
9
|
+
};
|
|
10
|
+
//# sourceMappingURL=quickxplain.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"quickxplain.d.ts","sourceRoot":"","sources":["../../../src/runtime/mus/quickxplain.ts"],"names":[],"mappings":"AAyBA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAoEzC;;;GAGG;AACH,wBAAgB,WAAW,CACzB,OAAO,EAAE,MAAM,EAAE,EAAE,EACnB,MAAM,EAAE,SAAS,EACjB,aAAa,EAAE,MAAM,GACpB;IAAE,GAAG,EAAE,MAAM,EAAE,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,CAerC"}
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// ============================================================
|
|
3
|
+
// ST MUS — QuickXplain (Junker 2004)
|
|
4
|
+
// ============================================================
|
|
5
|
+
//
|
|
6
|
+
// Divide-y-vencerás para encontrar un MUS dentro de un conjunto
|
|
7
|
+
// `C = B ∪ U` donde `B` (background) ya se sabe consistente y
|
|
8
|
+
// queremos hallar el subconjunto mínimo de `U` que es responsable
|
|
9
|
+
// de la inconsistencia (junto con `B`).
|
|
10
|
+
//
|
|
11
|
+
// Pseudocódigo (versión simétrica clásica):
|
|
12
|
+
//
|
|
13
|
+
// QX(B, ∆, C):
|
|
14
|
+
// if ∆ ≠ ∅ ∧ ¬sat(B): return ∅ // ∆ no necesario
|
|
15
|
+
// if |C| = 1: return C // C es minimal
|
|
16
|
+
// C1, C2 = split(C)
|
|
17
|
+
// ∆1 = QX(B ∪ C1, C1, C2)
|
|
18
|
+
// ∆2 = QX(B ∪ ∆1, ∆1, C1)
|
|
19
|
+
// return ∆1 ∪ ∆2
|
|
20
|
+
//
|
|
21
|
+
// Cuidado: en la primera llamada `∆` debe ser ≠ ∅ para no caer en el
|
|
22
|
+
// short-circuit. Convención típica: pasar `∆ = C` en el wrap externo.
|
|
23
|
+
//
|
|
24
|
+
// Complejidad: O(2k + 2k · log(n/k)) llamadas SAT, donde n = |C| y
|
|
25
|
+
// k = |MUS|. Muy buena cuando k ≪ n.
|
|
26
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
27
|
+
exports.quickxplain = quickxplain;
|
|
28
|
+
/**
|
|
29
|
+
* Llama al oráculo con la unión de varios sets de ids. Si el contador
|
|
30
|
+
* de llamadas excede `maxIterations`, devuelve `true` (sat) para
|
|
31
|
+
* forzar la salida del algoritmo de forma segura.
|
|
32
|
+
*/
|
|
33
|
+
function check(state, ...sets) {
|
|
34
|
+
if (state.satCalls >= state.maxIterations)
|
|
35
|
+
return true;
|
|
36
|
+
const seen = new Set();
|
|
37
|
+
for (const s of sets)
|
|
38
|
+
for (const id of s)
|
|
39
|
+
seen.add(id);
|
|
40
|
+
const subset = [];
|
|
41
|
+
for (const id of seen) {
|
|
42
|
+
const clause = state.byId.get(id);
|
|
43
|
+
if (clause !== undefined)
|
|
44
|
+
subset.push(clause);
|
|
45
|
+
}
|
|
46
|
+
state.satCalls++;
|
|
47
|
+
return state.oracle(subset);
|
|
48
|
+
}
|
|
49
|
+
function qxRec(state, background, delta, candidates) {
|
|
50
|
+
// Si añadir delta hizo que el background sea unsat, delta no es necesario.
|
|
51
|
+
if (delta.length > 0 && !check(state, background)) {
|
|
52
|
+
return [];
|
|
53
|
+
}
|
|
54
|
+
if (candidates.length === 1) {
|
|
55
|
+
return candidates.slice();
|
|
56
|
+
}
|
|
57
|
+
if (state.satCalls >= state.maxIterations) {
|
|
58
|
+
return candidates.slice();
|
|
59
|
+
}
|
|
60
|
+
const mid = Math.floor(candidates.length / 2);
|
|
61
|
+
const left = candidates.slice(0, mid);
|
|
62
|
+
const right = candidates.slice(mid);
|
|
63
|
+
const delta1 = qxRec(state, mergeUnique(background, left), left, right);
|
|
64
|
+
const delta2 = qxRec(state, mergeUnique(background, delta1), delta1, left);
|
|
65
|
+
return mergeUnique(delta1, delta2);
|
|
66
|
+
}
|
|
67
|
+
function mergeUnique(a, b) {
|
|
68
|
+
if (a.length === 0)
|
|
69
|
+
return b.slice();
|
|
70
|
+
if (b.length === 0)
|
|
71
|
+
return a.slice();
|
|
72
|
+
const seen = new Set(a);
|
|
73
|
+
const out = a.slice();
|
|
74
|
+
for (const id of b) {
|
|
75
|
+
if (!seen.has(id)) {
|
|
76
|
+
seen.add(id);
|
|
77
|
+
out.push(id);
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
return out;
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* Ejecuta QuickXplain sobre el conjunto de cláusulas indexadas y
|
|
84
|
+
* devuelve los índices del MUS hallado más el conteo de llamadas SAT.
|
|
85
|
+
*/
|
|
86
|
+
function quickxplain(clauses, oracle, maxIterations) {
|
|
87
|
+
const byId = new Map();
|
|
88
|
+
clauses.forEach((c, i) => byId.set(i, c));
|
|
89
|
+
const ids = clauses.map((_, i) => i);
|
|
90
|
+
// Pre-check: si el conjunto completo ya es SAT, no hay MUS.
|
|
91
|
+
const state = { oracle, byId, satCalls: 0, maxIterations };
|
|
92
|
+
if (check(state, ids)) {
|
|
93
|
+
return { mus: [], satCalls: state.satCalls };
|
|
94
|
+
}
|
|
95
|
+
// En la primera llamada, ∆ = candidates para evitar short-circuit.
|
|
96
|
+
const mus = qxRec(state, [], ids, ids);
|
|
97
|
+
mus.sort((a, b) => a - b);
|
|
98
|
+
return { mus, satCalls: state.satCalls };
|
|
99
|
+
}
|
|
100
|
+
//# sourceMappingURL=quickxplain.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"quickxplain.js","sourceRoot":"","sources":["../../../src/runtime/mus/quickxplain.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Algoritmos disponibles para extracción de MUS.
|
|
3
|
+
*
|
|
4
|
+
* - `deletion`: por cada cláusula c, prueba si C \ {c} sigue unsat;
|
|
5
|
+
* si sí, descarta c definitivamente. O(n) llamadas al oráculo SAT.
|
|
6
|
+
* Sencillo, robusto, fácil de auditar.
|
|
7
|
+
*
|
|
8
|
+
* - `insertion`: empieza con conjunto vacío W, agrega cláusulas una
|
|
9
|
+
* por una. Cuando W se vuelve unsat, la última cláusula añadida es
|
|
10
|
+
* "necesaria" (la fija en el MUS y vacía W). Repite hasta cubrir
|
|
11
|
+
* todo. Útil cuando el MUS es pequeño respecto al total.
|
|
12
|
+
*
|
|
13
|
+
* - `qx`: QuickXplain (Junker 2004). Algoritmo divide-y-vencerás que
|
|
14
|
+
* resuelve "minimum conflict explanation" con O(2k · log(n/k))
|
|
15
|
+
* llamadas SAT, donde k es el tamaño del MUS. En la práctica mucho
|
|
16
|
+
* más rápido que deletion para MUS grandes embebidos en problemas
|
|
17
|
+
* inmensos.
|
|
18
|
+
*/
|
|
19
|
+
export type MUSAlgorithm = 'deletion' | 'insertion' | 'qx';
|
|
20
|
+
export interface MUSOptions {
|
|
21
|
+
/** Algoritmo a usar. Default: `deletion`. */
|
|
22
|
+
algorithm?: MUSAlgorithm;
|
|
23
|
+
/** Tope superior de llamadas al oráculo SAT. Default: 100_000. */
|
|
24
|
+
maxIterations?: number;
|
|
25
|
+
}
|
|
26
|
+
export interface MUSResult {
|
|
27
|
+
/** Índices (sobre el array original `clauses`) que conforman el MUS. */
|
|
28
|
+
mus: number[];
|
|
29
|
+
/** Iteraciones de bucle externo (rondas del algoritmo). */
|
|
30
|
+
iterations: number;
|
|
31
|
+
/** Llamadas totales al oráculo SAT. */
|
|
32
|
+
satCalls: number;
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Oráculo SAT: dado un conjunto de cláusulas (cada cláusula es una
|
|
36
|
+
* lista de literales enteros — convención DIMACS: positivo es literal
|
|
37
|
+
* positivo, negativo es negado), devuelve `true` sii el conjunto
|
|
38
|
+
* tiene un modelo, `false` si es unsat.
|
|
39
|
+
*/
|
|
40
|
+
export type SATOracle = (subset: number[][]) => boolean;
|
|
41
|
+
/**
|
|
42
|
+
* Solver incremental con assumptions (estilo MiniSat / SAT4J):
|
|
43
|
+
* dadas N cláusulas hard y una lista de literales-asumidos, devuelve
|
|
44
|
+
* `{ sat: false, failedAssumptions: [...] }` cuando el problema es
|
|
45
|
+
* unsat — el array `failedAssumptions` contiene un subconjunto de las
|
|
46
|
+
* assumptions suficientes para que el problema sea unsat (el unsat
|
|
47
|
+
* core proyectado sobre assumptions).
|
|
48
|
+
*
|
|
49
|
+
* En la práctica `failedAssumptions` ya es un MUS (sobre la
|
|
50
|
+
* codificación por selectors) o un superset cercano; corremos un pase
|
|
51
|
+
* adicional de minimización para garantizar minimalidad.
|
|
52
|
+
*/
|
|
53
|
+
export interface AssumptionSolver {
|
|
54
|
+
solveWithAssumptions: (assumptions: number[]) => {
|
|
55
|
+
sat: boolean;
|
|
56
|
+
failedAssumptions?: number[];
|
|
57
|
+
};
|
|
58
|
+
}
|
|
59
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/runtime/mus/types.ts"],"names":[],"mappings":"AAkBA;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,MAAM,YAAY,GAAG,UAAU,GAAG,WAAW,GAAG,IAAI,CAAC;AAE3D,MAAM,WAAW,UAAU;IACzB,6CAA6C;IAC7C,SAAS,CAAC,EAAE,YAAY,CAAC;IACzB,kEAAkE;IAClE,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,SAAS;IACxB,wEAAwE;IACxE,GAAG,EAAE,MAAM,EAAE,CAAC;IACd,2DAA2D;IAC3D,UAAU,EAAE,MAAM,CAAC;IACnB,uCAAuC;IACvC,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED;;;;;GAKG;AACH,MAAM,MAAM,SAAS,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,KAAK,OAAO,CAAC;AAExD;;;;;;;;;;;GAWG;AACH,MAAM,WAAW,gBAAgB;IAC/B,oBAAoB,EAAE,CAAC,WAAW,EAAE,MAAM,EAAE,KAAK;QAC/C,GAAG,EAAE,OAAO,CAAC;QACb,iBAAiB,CAAC,EAAE,MAAM,EAAE,CAAC;KAC9B,CAAC;CACH"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// ============================================================
|
|
3
|
+
// ST MUS (Minimal Unsatisfiable Subset) — Tipos públicos
|
|
4
|
+
// ============================================================
|
|
5
|
+
//
|
|
6
|
+
// Un MUS de un conjunto unsat C de cláusulas es un subconjunto
|
|
7
|
+
// M ⊆ C tal que:
|
|
8
|
+
// 1. M es insatisfacible (unsat).
|
|
9
|
+
// 2. Para toda cláusula c ∈ M, M \ {c} es satisfacible (sat).
|
|
10
|
+
//
|
|
11
|
+
// Es decir: minimal por inclusión. NO necesariamente cardinality-
|
|
12
|
+
// minimum — eso sería el smallest MUS y es Σ₂ᵖ-hard.
|
|
13
|
+
//
|
|
14
|
+
// Usos típicos en debugging de constraints / type errors:
|
|
15
|
+
// - Aislar el "núcleo" del conflicto cuando un sistema reporta
|
|
16
|
+
// unsat sobre cientos de cláusulas.
|
|
17
|
+
// - Explicar a un usuario por qué su conjunto de premisas es
|
|
18
|
+
// contradictorio.
|
|
19
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
20
|
+
//# sourceMappingURL=types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/runtime/mus/types.ts"],"names":[],"mappings":";AAAA,+DAA+D;AAC/D,yDAAyD;AACzD,+DAA+D;AAC/D,EAAE;AACF,+DAA+D;AAC/D,iBAAiB;AACjB,oCAAoC;AACpC,gEAAgE;AAChE,EAAE;AACF,kEAAkE;AAClE,qDAAqD;AACrD,EAAE;AACF,0DAA0D;AAC1D,iEAAiE;AACjE,wCAAwC;AACxC,+DAA+D;AAC/D,sBAAsB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/runtime/proof-minify/index.ts"],"names":[],"mappings":"AAIA,OAAO,EACL,WAAW,EACX,uBAAuB,EACvB,qBAAqB,EACrB,UAAU,EACV,OAAO,GACR,MAAM,UAAU,CAAC;AAElB,YAAY,EAAE,gBAAgB,EAAE,aAAa,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// ============================================================
|
|
3
|
+
// ST Proof Minification — Barrel
|
|
4
|
+
// ============================================================
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.depthOf = exports.countNodes = exports.removeUnusedSubproofs = exports.compactModusPonensChain = exports.minifyProof = void 0;
|
|
7
|
+
var minify_1 = require("./minify");
|
|
8
|
+
Object.defineProperty(exports, "minifyProof", { enumerable: true, get: function () { return minify_1.minifyProof; } });
|
|
9
|
+
Object.defineProperty(exports, "compactModusPonensChain", { enumerable: true, get: function () { return minify_1.compactModusPonensChain; } });
|
|
10
|
+
Object.defineProperty(exports, "removeUnusedSubproofs", { enumerable: true, get: function () { return minify_1.removeUnusedSubproofs; } });
|
|
11
|
+
Object.defineProperty(exports, "countNodes", { enumerable: true, get: function () { return minify_1.countNodes; } });
|
|
12
|
+
Object.defineProperty(exports, "depthOf", { enumerable: true, get: function () { return minify_1.depthOf; } });
|
|
13
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/runtime/proof-minify/index.ts"],"names":[],"mappings":";AAAA,+DAA+D;AAC/D,iCAAiC;AACjC,+DAA+D;;;AAE/D,mCAMkB;AALhB,qGAAA,WAAW,OAAA;AACX,iHAAA,uBAAuB,OAAA;AACvB,+GAAA,qBAAqB,OAAA;AACrB,oGAAA,UAAU,OAAA;AACV,iGAAA,OAAO,OAAA"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { GenericProofNode, MinifyOptions, MinifyResult } from './types';
|
|
2
|
+
/** Cuenta los nodos de un árbol (raíz incluida). */
|
|
3
|
+
export declare function countNodes(n: GenericProofNode): number;
|
|
4
|
+
/** Profundidad máxima (raíz = 0). */
|
|
5
|
+
export declare function depthOf(n: GenericProofNode): number;
|
|
6
|
+
export declare function compactModusPonensChain(proof: GenericProofNode): GenericProofNode;
|
|
7
|
+
export declare function removeUnusedSubproofs(proof: GenericProofNode): GenericProofNode;
|
|
8
|
+
/**
|
|
9
|
+
* Minifica un árbol de pruebas iterando las reglas hasta punto fijo
|
|
10
|
+
* o agotar `maxIterations`.
|
|
11
|
+
*/
|
|
12
|
+
export declare function minifyProof(proof: GenericProofNode, opts?: MinifyOptions): MinifyResult;
|
|
13
|
+
//# sourceMappingURL=minify.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"minify.d.ts","sourceRoot":"","sources":["../../../src/runtime/proof-minify/minify.ts"],"names":[],"mappings":"AAiBA,OAAO,KAAK,EAAE,gBAAgB,EAAE,aAAa,EAAE,YAAY,EAAc,MAAM,SAAS,CAAC;AA2GzF,oDAAoD;AACpD,wBAAgB,UAAU,CAAC,CAAC,EAAE,gBAAgB,GAAG,MAAM,CAItD;AAED,qCAAqC;AACrC,wBAAgB,OAAO,CAAC,CAAC,EAAE,gBAAgB,GAAG,MAAM,CAQnD;AAqGD,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,gBAAgB,GAAG,gBAAgB,CAwBjF;AAgJD,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,gBAAgB,GAAG,gBAAgB,CAG/E;AA8GD;;;GAGG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,gBAAgB,EAAE,IAAI,GAAE,aAAkB,GAAG,YAAY,CAuC3F"}
|