@stevenvo780/st-lang 4.2.0 → 4.4.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/index.d.ts +8 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +70 -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/mltt/equality.d.ts +9 -0
- package/dist/mltt/equality.d.ts.map +1 -0
- package/dist/mltt/equality.js +79 -0
- package/dist/mltt/equality.js.map +1 -0
- package/dist/mltt/index.d.ts +8 -0
- package/dist/mltt/index.d.ts.map +1 -0
- package/dist/mltt/index.js +49 -0
- package/dist/mltt/index.js.map +1 -0
- package/dist/mltt/infer.d.ts +17 -0
- package/dist/mltt/infer.d.ts.map +1 -0
- package/dist/mltt/infer.js +269 -0
- package/dist/mltt/infer.js.map +1 -0
- package/dist/mltt/normalize.d.ts +7 -0
- package/dist/mltt/normalize.d.ts.map +1 -0
- package/dist/mltt/normalize.js +131 -0
- package/dist/mltt/normalize.js.map +1 -0
- package/dist/mltt/substitute.d.ts +4 -0
- package/dist/mltt/substitute.d.ts.map +1 -0
- package/dist/mltt/substitute.js +94 -0
- package/dist/mltt/substitute.js.map +1 -0
- package/dist/mltt/types.d.ts +72 -0
- package/dist/mltt/types.d.ts.map +1 -0
- package/dist/mltt/types.js +211 -0
- package/dist/mltt/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/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/mu-calculus/check.d.ts +15 -0
- package/dist/profiles/mu-calculus/check.d.ts.map +1 -0
- package/dist/profiles/mu-calculus/check.js +172 -0
- package/dist/profiles/mu-calculus/check.js.map +1 -0
- package/dist/profiles/mu-calculus/ctl-translate.d.ts +61 -0
- package/dist/profiles/mu-calculus/ctl-translate.d.ts.map +1 -0
- package/dist/profiles/mu-calculus/ctl-translate.js +181 -0
- package/dist/profiles/mu-calculus/ctl-translate.js.map +1 -0
- package/dist/profiles/mu-calculus/index.d.ts +7 -0
- package/dist/profiles/mu-calculus/index.d.ts.map +1 -0
- package/dist/profiles/mu-calculus/index.js +33 -0
- package/dist/profiles/mu-calculus/index.js.map +1 -0
- package/dist/profiles/mu-calculus/types.d.ts +51 -0
- package/dist/profiles/mu-calculus/types.d.ts.map +1 -0
- package/dist/profiles/mu-calculus/types.js +42 -0
- package/dist/profiles/mu-calculus/types.js.map +1 -0
- package/dist/profiles/mu-calculus/wellformed.d.ts +40 -0
- package/dist/profiles/mu-calculus/wellformed.d.ts.map +1 -0
- package/dist/profiles/mu-calculus/wellformed.js +160 -0
- package/dist/profiles/mu-calculus/wellformed.js.map +1 -0
- package/dist/profiles/sequent-lk/cut-elimination.d.ts +11 -0
- package/dist/profiles/sequent-lk/cut-elimination.d.ts.map +1 -0
- package/dist/profiles/sequent-lk/cut-elimination.js +216 -0
- package/dist/profiles/sequent-lk/cut-elimination.js.map +1 -0
- package/dist/profiles/sequent-lk/index.d.ts +5 -0
- package/dist/profiles/sequent-lk/index.d.ts.map +1 -0
- package/dist/profiles/sequent-lk/index.js +24 -0
- package/dist/profiles/sequent-lk/index.js.map +1 -0
- package/dist/profiles/sequent-lk/prover.d.ts +25 -0
- package/dist/profiles/sequent-lk/prover.d.ts.map +1 -0
- package/dist/profiles/sequent-lk/prover.js +532 -0
- package/dist/profiles/sequent-lk/prover.js.map +1 -0
- package/dist/profiles/sequent-lk/types.d.ts +55 -0
- package/dist/profiles/sequent-lk/types.d.ts.map +1 -0
- package/dist/profiles/sequent-lk/types.js +18 -0
- package/dist/profiles/sequent-lk/types.js.map +1 -0
- package/dist/profiles/sequent-lk/util.d.ts +18 -0
- package/dist/profiles/sequent-lk/util.d.ts.map +1 -0
- package/dist/profiles/sequent-lk/util.js +71 -0
- package/dist/profiles/sequent-lk/util.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/refinement-types/checker.d.ts +19 -0
- package/dist/refinement-types/checker.d.ts.map +1 -0
- package/dist/refinement-types/checker.js +248 -0
- package/dist/refinement-types/checker.js.map +1 -0
- package/dist/refinement-types/index.d.ts +11 -0
- package/dist/refinement-types/index.d.ts.map +1 -0
- package/dist/refinement-types/index.js +51 -0
- package/dist/refinement-types/index.js.map +1 -0
- package/dist/refinement-types/predicate.d.ts +31 -0
- package/dist/refinement-types/predicate.d.ts.map +1 -0
- package/dist/refinement-types/predicate.js +369 -0
- package/dist/refinement-types/predicate.js.map +1 -0
- package/dist/refinement-types/solver.d.ts +24 -0
- package/dist/refinement-types/solver.d.ts.map +1 -0
- package/dist/refinement-types/solver.js +207 -0
- package/dist/refinement-types/solver.js.map +1 -0
- package/dist/refinement-types/subtype.d.ts +14 -0
- package/dist/refinement-types/subtype.d.ts.map +1 -0
- package/dist/refinement-types/subtype.js +39 -0
- package/dist/refinement-types/subtype.js.map +1 -0
- package/dist/refinement-types/types.d.ts +64 -0
- package/dist/refinement-types/types.d.ts.map +1 -0
- package/dist/refinement-types/types.js +130 -0
- package/dist/refinement-types/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/anti-unification/anti-unify.d.ts +22 -0
- package/dist/runtime/anti-unification/anti-unify.d.ts.map +1 -0
- package/dist/runtime/anti-unification/anti-unify.js +154 -0
- package/dist/runtime/anti-unification/anti-unify.js.map +1 -0
- package/dist/runtime/anti-unification/index.d.ts +6 -0
- package/dist/runtime/anti-unification/index.d.ts.map +1 -0
- package/dist/runtime/anti-unification/index.js +23 -0
- package/dist/runtime/anti-unification/index.js.map +1 -0
- package/dist/runtime/anti-unification/many.d.ts +49 -0
- package/dist/runtime/anti-unification/many.d.ts.map +1 -0
- package/dist/runtime/anti-unification/many.js +185 -0
- package/dist/runtime/anti-unification/many.js.map +1 -0
- package/dist/runtime/anti-unification/term-utils.d.ts +40 -0
- package/dist/runtime/anti-unification/term-utils.d.ts.map +1 -0
- package/dist/runtime/anti-unification/term-utils.js +173 -0
- package/dist/runtime/anti-unification/term-utils.js.map +1 -0
- package/dist/runtime/anti-unification/types.d.ts +41 -0
- package/dist/runtime/anti-unification/types.d.ts.map +1 -0
- package/dist/runtime/anti-unification/types.js +26 -0
- package/dist/runtime/anti-unification/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/csp/ac3.d.ts +20 -0
- package/dist/runtime/csp/ac3.d.ts.map +1 -0
- package/dist/runtime/csp/ac3.js +165 -0
- package/dist/runtime/csp/ac3.js.map +1 -0
- package/dist/runtime/csp/backtrack.d.ts +15 -0
- package/dist/runtime/csp/backtrack.d.ts.map +1 -0
- package/dist/runtime/csp/backtrack.js +233 -0
- package/dist/runtime/csp/backtrack.js.map +1 -0
- package/dist/runtime/csp/builtins.d.ts +27 -0
- package/dist/runtime/csp/builtins.d.ts.map +1 -0
- package/dist/runtime/csp/builtins.js +109 -0
- package/dist/runtime/csp/builtins.js.map +1 -0
- package/dist/runtime/csp/index.d.ts +5 -0
- package/dist/runtime/csp/index.d.ts.map +1 -0
- package/dist/runtime/csp/index.js +23 -0
- package/dist/runtime/csp/index.js.map +1 -0
- package/dist/runtime/csp/types.d.ts +54 -0
- package/dist/runtime/csp/types.d.ts.map +1 -0
- package/dist/runtime/csp/types.js +14 -0
- package/dist/runtime/csp/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/markov-logic/grounding.d.ts +19 -0
- package/dist/runtime/markov-logic/grounding.d.ts.map +1 -0
- package/dist/runtime/markov-logic/grounding.js +252 -0
- package/dist/runtime/markov-logic/grounding.js.map +1 -0
- package/dist/runtime/markov-logic/index.d.ts +6 -0
- package/dist/runtime/markov-logic/index.d.ts.map +1 -0
- package/dist/runtime/markov-logic/index.js +47 -0
- package/dist/runtime/markov-logic/index.js.map +1 -0
- package/dist/runtime/markov-logic/inference.d.ts +77 -0
- package/dist/runtime/markov-logic/inference.d.ts.map +1 -0
- package/dist/runtime/markov-logic/inference.js +382 -0
- package/dist/runtime/markov-logic/inference.js.map +1 -0
- package/dist/runtime/markov-logic/parser.d.ts +25 -0
- package/dist/runtime/markov-logic/parser.d.ts.map +1 -0
- package/dist/runtime/markov-logic/parser.js +264 -0
- package/dist/runtime/markov-logic/parser.js.map +1 -0
- package/dist/runtime/markov-logic/types.d.ts +64 -0
- package/dist/runtime/markov-logic/types.d.ts.map +1 -0
- package/dist/runtime/markov-logic/types.js +17 -0
- package/dist/runtime/markov-logic/types.js.map +1 -0
- package/dist/runtime/pi-calculus/congruence.d.ts +15 -0
- package/dist/runtime/pi-calculus/congruence.d.ts.map +1 -0
- package/dist/runtime/pi-calculus/congruence.js +271 -0
- package/dist/runtime/pi-calculus/congruence.js.map +1 -0
- package/dist/runtime/pi-calculus/index.d.ts +6 -0
- package/dist/runtime/pi-calculus/index.d.ts.map +1 -0
- package/dist/runtime/pi-calculus/index.js +30 -0
- package/dist/runtime/pi-calculus/index.js.map +1 -0
- package/dist/runtime/pi-calculus/names.d.ts +28 -0
- package/dist/runtime/pi-calculus/names.d.ts.map +1 -0
- package/dist/runtime/pi-calculus/names.js +182 -0
- package/dist/runtime/pi-calculus/names.js.map +1 -0
- package/dist/runtime/pi-calculus/reduction.d.ts +25 -0
- package/dist/runtime/pi-calculus/reduction.d.ts.map +1 -0
- package/dist/runtime/pi-calculus/reduction.js +338 -0
- package/dist/runtime/pi-calculus/reduction.js.map +1 -0
- package/dist/runtime/pi-calculus/substitution.d.ts +11 -0
- package/dist/runtime/pi-calculus/substitution.d.ts.map +1 -0
- package/dist/runtime/pi-calculus/substitution.js +109 -0
- package/dist/runtime/pi-calculus/substitution.js.map +1 -0
- package/dist/runtime/pi-calculus/types.d.ts +38 -0
- package/dist/runtime/pi-calculus/types.d.ts.map +1 -0
- package/dist/runtime/pi-calculus/types.js +22 -0
- package/dist/runtime/pi-calculus/types.js.map +1 -0
- package/dist/runtime/planning/astar.d.ts +10 -0
- package/dist/runtime/planning/astar.d.ts.map +1 -0
- package/dist/runtime/planning/astar.js +155 -0
- package/dist/runtime/planning/astar.js.map +1 -0
- package/dist/runtime/planning/bfs.d.ts +17 -0
- package/dist/runtime/planning/bfs.d.ts.map +1 -0
- package/dist/runtime/planning/bfs.js +87 -0
- package/dist/runtime/planning/bfs.js.map +1 -0
- package/dist/runtime/planning/ground.d.ts +55 -0
- package/dist/runtime/planning/ground.d.ts.map +1 -0
- package/dist/runtime/planning/ground.js +154 -0
- package/dist/runtime/planning/ground.js.map +1 -0
- package/dist/runtime/planning/heuristic.d.ts +29 -0
- package/dist/runtime/planning/heuristic.d.ts.map +1 -0
- package/dist/runtime/planning/heuristic.js +172 -0
- package/dist/runtime/planning/heuristic.js.map +1 -0
- package/dist/runtime/planning/index.d.ts +6 -0
- package/dist/runtime/planning/index.d.ts.map +1 -0
- package/dist/runtime/planning/index.js +38 -0
- package/dist/runtime/planning/index.js.map +1 -0
- package/dist/runtime/planning/types.d.ts +100 -0
- package/dist/runtime/planning/types.d.ts.map +1 -0
- package/dist/runtime/planning/types.js +22 -0
- package/dist/runtime/planning/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 +212 -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/runtime/theorem-cache/cache.d.ts +100 -0
- package/dist/runtime/theorem-cache/cache.d.ts.map +1 -0
- package/dist/runtime/theorem-cache/cache.js +213 -0
- package/dist/runtime/theorem-cache/cache.js.map +1 -0
- package/dist/runtime/theorem-cache/canonical.d.ts +59 -0
- package/dist/runtime/theorem-cache/canonical.d.ts.map +1 -0
- package/dist/runtime/theorem-cache/canonical.js +105 -0
- package/dist/runtime/theorem-cache/canonical.js.map +1 -0
- package/dist/runtime/theorem-cache/index.d.ts +6 -0
- package/dist/runtime/theorem-cache/index.d.ts.map +1 -0
- package/dist/runtime/theorem-cache/index.js +16 -0
- package/dist/runtime/theorem-cache/index.js.map +1 -0
- package/dist/runtime/theorem-cache/pattern.d.ts +24 -0
- package/dist/runtime/theorem-cache/pattern.d.ts.map +1 -0
- package/dist/runtime/theorem-cache/pattern.js +80 -0
- package/dist/runtime/theorem-cache/pattern.js.map +1 -0
- package/dist/system-f/index.d.ts +7 -0
- package/dist/system-f/index.d.ts.map +1 -0
- package/dist/system-f/index.js +48 -0
- package/dist/system-f/index.js.map +1 -0
- package/dist/system-f/infer.d.ts +9 -0
- package/dist/system-f/infer.d.ts.map +1 -0
- package/dist/system-f/infer.js +94 -0
- package/dist/system-f/infer.js.map +1 -0
- package/dist/system-f/reduce.d.ts +15 -0
- package/dist/system-f/reduce.d.ts.map +1 -0
- package/dist/system-f/reduce.js +259 -0
- package/dist/system-f/reduce.js.map +1 -0
- package/dist/system-f/types.d.ts +53 -0
- package/dist/system-f/types.d.ts.map +1 -0
- package/dist/system-f/types.js +157 -0
- package/dist/system-f/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/anti-unification/anti-unify.test.d.ts +2 -0
- package/dist/tests/anti-unification/anti-unify.test.d.ts.map +1 -0
- package/dist/tests/anti-unification/anti-unify.test.js +219 -0
- package/dist/tests/anti-unification/anti-unify.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/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/coverage-fill-aristotelian.test.js +1 -1
- package/dist/tests/coverage-fill-aristotelian.test.js.map +1 -1
- package/dist/tests/coverage-fill-fallacies.test.js +1 -1
- package/dist/tests/coverage-fill-fallacies.test.js.map +1 -1
- package/dist/tests/coverage-fill-format.test.js +1 -1
- package/dist/tests/coverage-fill-format.test.js.map +1 -1
- package/dist/tests/coverage-fill-intuitionistic.test.js +1 -1
- package/dist/tests/coverage-fill-intuitionistic.test.js.map +1 -1
- package/dist/tests/coverage-fill-probabilistic.test.js +1 -1
- package/dist/tests/coverage-fill-probabilistic.test.js.map +1 -1
- package/dist/tests/csp/csp.test.d.ts +2 -0
- package/dist/tests/csp/csp.test.d.ts.map +1 -0
- package/dist/tests/csp/csp.test.js +292 -0
- package/dist/tests/csp/csp.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/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/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/markov-logic/markov-logic.test.d.ts +2 -0
- package/dist/tests/markov-logic/markov-logic.test.d.ts.map +1 -0
- package/dist/tests/markov-logic/markov-logic.test.js +349 -0
- package/dist/tests/markov-logic/markov-logic.test.js.map +1 -0
- package/dist/tests/mltt/mltt.test.d.ts +2 -0
- package/dist/tests/mltt/mltt.test.d.ts.map +1 -0
- package/dist/tests/mltt/mltt.test.js +181 -0
- package/dist/tests/mltt/mltt.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/mu-calculus/check.test.d.ts +2 -0
- package/dist/tests/mu-calculus/check.test.d.ts.map +1 -0
- package/dist/tests/mu-calculus/check.test.js +234 -0
- package/dist/tests/mu-calculus/check.test.js.map +1 -0
- package/dist/tests/pi-calculus/pi-calculus.test.d.ts +2 -0
- package/dist/tests/pi-calculus/pi-calculus.test.d.ts.map +1 -0
- package/dist/tests/pi-calculus/pi-calculus.test.js +273 -0
- package/dist/tests/pi-calculus/pi-calculus.test.js.map +1 -0
- package/dist/tests/planning/planning.test.d.ts +2 -0
- package/dist/tests/planning/planning.test.d.ts.map +1 -0
- package/dist/tests/planning/planning.test.js +397 -0
- package/dist/tests/planning/planning.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/refinement-types/refinement-types.test.d.ts +2 -0
- package/dist/tests/refinement-types/refinement-types.test.d.ts.map +1 -0
- package/dist/tests/refinement-types/refinement-types.test.js +174 -0
- package/dist/tests/refinement-types/refinement-types.test.js.map +1 -0
- package/dist/tests/sequent-lk/prover.test.d.ts +2 -0
- package/dist/tests/sequent-lk/prover.test.d.ts.map +1 -0
- package/dist/tests/sequent-lk/prover.test.js +317 -0
- package/dist/tests/sequent-lk/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/system-f/system-f.test.d.ts +2 -0
- package/dist/tests/system-f/system-f.test.d.ts.map +1 -0
- package/dist/tests/system-f/system-f.test.js +217 -0
- package/dist/tests/system-f/system-f.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/dist/tests/theorem-cache/cache.test.d.ts +2 -0
- package/dist/tests/theorem-cache/cache.test.d.ts.map +1 -0
- package/dist/tests/theorem-cache/cache.test.js +510 -0
- package/dist/tests/theorem-cache/cache.test.js.map +1 -0
- package/package.json +1 -1
|
@@ -0,0 +1,202 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// ============================================================
|
|
3
|
+
// ST Abduction — Núcleo: búsqueda de explicaciones
|
|
4
|
+
// ============================================================
|
|
5
|
+
//
|
|
6
|
+
// Estrategia: enumeración por tamaño creciente (BFS sobre subsets).
|
|
7
|
+
//
|
|
8
|
+
// for k in 0..maxSize:
|
|
9
|
+
// for cada subset H ⊆ abducibles con |H| = k:
|
|
10
|
+
// si KB ∪ H ⊨ O y KB ∪ H consistent:
|
|
11
|
+
// registrar H como explicación
|
|
12
|
+
// marcar todos sus supersets como redundantes (no parsimoniosos)
|
|
13
|
+
//
|
|
14
|
+
// Las explicaciones se reportan ordenadas por tamaño ascendente. La
|
|
15
|
+
// minimalidad por inclusión se verifica al final con una pasada O(N²)
|
|
16
|
+
// sobre las explicaciones encontradas (suficiente para |explicaciones|
|
|
17
|
+
// ≲ algunos miles; en problemas grandes acotar `maxHypotheses`).
|
|
18
|
+
//
|
|
19
|
+
// Para `preferred = 'minimal'`, solo se reportan las parsimoniosas.
|
|
20
|
+
// Para `minimum-cardinality`, se reportan únicamente las de tamaño
|
|
21
|
+
// igual al mínimo encontrado. Para `minimum-cost`, las de costo
|
|
22
|
+
// mínimo (requiere costFunction o se usa size).
|
|
23
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
24
|
+
exports.findExplanations = findExplanations;
|
|
25
|
+
exports.bestExplanation = bestExplanation;
|
|
26
|
+
const entails_1 = require("./entails");
|
|
27
|
+
function resolveOptions(abducibles, opts) {
|
|
28
|
+
const entails = opts?.entails ?? (0, entails_1.defaultEntails)();
|
|
29
|
+
const consistent = opts?.consistent ?? (0, entails_1.defaultConsistent)();
|
|
30
|
+
return {
|
|
31
|
+
entails,
|
|
32
|
+
consistent,
|
|
33
|
+
maxHypotheses: opts?.maxHypotheses ?? 1024,
|
|
34
|
+
maxSize: opts?.maxSize ?? abducibles.length,
|
|
35
|
+
costFunction: opts?.costFunction ?? (() => 1),
|
|
36
|
+
preferred: opts?.preferred ?? 'minimal',
|
|
37
|
+
};
|
|
38
|
+
}
|
|
39
|
+
/** Itera sobre todos los subsets de [0..n) de tamaño exactamente k (orden lex). */
|
|
40
|
+
function* combinations(n, k) {
|
|
41
|
+
if (k < 0 || k > n)
|
|
42
|
+
return;
|
|
43
|
+
if (k === 0) {
|
|
44
|
+
yield [];
|
|
45
|
+
return;
|
|
46
|
+
}
|
|
47
|
+
const idx = new Array(k);
|
|
48
|
+
for (let i = 0; i < k; i++)
|
|
49
|
+
idx[i] = i;
|
|
50
|
+
while (true) {
|
|
51
|
+
yield idx.slice();
|
|
52
|
+
// Avanzar al siguiente combination en orden lex.
|
|
53
|
+
let i = k - 1;
|
|
54
|
+
while (i >= 0 && idx[i] === n - k + i)
|
|
55
|
+
i--;
|
|
56
|
+
if (i < 0)
|
|
57
|
+
return;
|
|
58
|
+
idx[i] = idx[i] + 1;
|
|
59
|
+
for (let j = i + 1; j < k; j++)
|
|
60
|
+
idx[j] = idx[j - 1] + 1;
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
function isSubsetOf(a, b) {
|
|
64
|
+
if (a.length > b.length)
|
|
65
|
+
return false;
|
|
66
|
+
let i = 0;
|
|
67
|
+
let j = 0;
|
|
68
|
+
while (i < a.length && j < b.length) {
|
|
69
|
+
const ai = a[i];
|
|
70
|
+
const bj = b[j];
|
|
71
|
+
if (ai === bj) {
|
|
72
|
+
i++;
|
|
73
|
+
j++;
|
|
74
|
+
}
|
|
75
|
+
else if (ai < bj) {
|
|
76
|
+
return false;
|
|
77
|
+
}
|
|
78
|
+
else {
|
|
79
|
+
j++;
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
return i === a.length;
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* Encuentra todas las explicaciones de un problema abductivo.
|
|
86
|
+
*
|
|
87
|
+
* - Enumera subsets de abducibles en orden creciente de tamaño.
|
|
88
|
+
* - Filtra los inconsistentes y los que no implican la observación.
|
|
89
|
+
* - Calcula minimalidad por inclusión (parsimony) post-hoc.
|
|
90
|
+
* - Aplica el filtro `preferred` para el output final.
|
|
91
|
+
*/
|
|
92
|
+
function findExplanations(problem, opts) {
|
|
93
|
+
const { kb, observation, abducibles } = problem;
|
|
94
|
+
const resolved = resolveOptions(abducibles, opts);
|
|
95
|
+
const n = abducibles.length;
|
|
96
|
+
const maxK = Math.min(resolved.maxSize, n);
|
|
97
|
+
// Pre-check: si KB ya implica O sin ninguna hipótesis, la explicación
|
|
98
|
+
// vacía es la única parsimoniosa.
|
|
99
|
+
// (Esto requiere consistencia de KB y derivación.)
|
|
100
|
+
const raw = [];
|
|
101
|
+
if (resolved.consistent(kb) && resolved.entails(kb, observation)) {
|
|
102
|
+
raw.push({ indices: [], hypotheses: [], costScore: 0 });
|
|
103
|
+
}
|
|
104
|
+
// Buscamos también H no vacíos. Si la vacía explica, según
|
|
105
|
+
// `preferred` puede ser todo lo que necesitamos (case-by-case).
|
|
106
|
+
outer: for (let k = 1; k <= maxK; k++) {
|
|
107
|
+
for (const idx of combinations(n, k)) {
|
|
108
|
+
const hypotheses = [];
|
|
109
|
+
let costScore = 0;
|
|
110
|
+
for (const i of idx) {
|
|
111
|
+
const f = abducibles[i];
|
|
112
|
+
if (f === undefined)
|
|
113
|
+
continue;
|
|
114
|
+
hypotheses.push(f);
|
|
115
|
+
costScore += resolved.costFunction(f);
|
|
116
|
+
}
|
|
117
|
+
const combined = [...kb, ...hypotheses];
|
|
118
|
+
// Skip duplicate trivial: si algún subset menor ya está en raw y es
|
|
119
|
+
// subset de este, este NO va a ser parsimonious. Lo enumeramos
|
|
120
|
+
// igual porque `preferred=all` debe verlos, pero podemos saltarlo
|
|
121
|
+
// si `preferred` ∈ {minimal, minimum-cardinality, minimum-cost}.
|
|
122
|
+
if (resolved.preferred !== 'all' &&
|
|
123
|
+
raw.some((r) => r.indices.length < idx.length && isSubsetOf(r.indices, idx))) {
|
|
124
|
+
continue;
|
|
125
|
+
}
|
|
126
|
+
if (!resolved.consistent(combined))
|
|
127
|
+
continue;
|
|
128
|
+
if (!resolved.entails(combined, observation))
|
|
129
|
+
continue;
|
|
130
|
+
raw.push({ indices: idx, hypotheses, costScore });
|
|
131
|
+
if (raw.length >= resolved.maxHypotheses)
|
|
132
|
+
break outer;
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
// Determinar parsimony por inclusión: una H es parsimoniosa sii no
|
|
136
|
+
// existe H' ∈ raw con H' ⊂ H (subconjunto propio).
|
|
137
|
+
const parsimonyMap = new Map();
|
|
138
|
+
const keyFor = (r) => r.indices.join(',');
|
|
139
|
+
for (const r of raw) {
|
|
140
|
+
let parsim = true;
|
|
141
|
+
for (const other of raw) {
|
|
142
|
+
if (other === r)
|
|
143
|
+
continue;
|
|
144
|
+
if (other.indices.length >= r.indices.length)
|
|
145
|
+
continue;
|
|
146
|
+
if (isSubsetOf(other.indices, r.indices)) {
|
|
147
|
+
parsim = false;
|
|
148
|
+
break;
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
parsimonyMap.set(keyFor(r), parsim);
|
|
152
|
+
}
|
|
153
|
+
// Convertir a Explanation[].
|
|
154
|
+
const explanations = raw.map((r) => ({
|
|
155
|
+
hypotheses: r.hypotheses,
|
|
156
|
+
size: r.hypotheses.length,
|
|
157
|
+
parsimonious: parsimonyMap.get(keyFor(r)) ?? false,
|
|
158
|
+
costScore: r.costScore,
|
|
159
|
+
}));
|
|
160
|
+
return applyPreference(explanations, resolved);
|
|
161
|
+
}
|
|
162
|
+
function applyPreference(expls, resolved) {
|
|
163
|
+
if (expls.length === 0)
|
|
164
|
+
return [];
|
|
165
|
+
switch (resolved.preferred) {
|
|
166
|
+
case 'all':
|
|
167
|
+
return expls.slice();
|
|
168
|
+
case 'minimal':
|
|
169
|
+
return expls.filter((e) => e.parsimonious);
|
|
170
|
+
case 'minimum-cardinality': {
|
|
171
|
+
const minimal = expls.filter((e) => e.parsimonious);
|
|
172
|
+
if (minimal.length === 0)
|
|
173
|
+
return [];
|
|
174
|
+
const minSize = minimal.reduce((m, e) => Math.min(m, e.size), Infinity);
|
|
175
|
+
return minimal.filter((e) => e.size === minSize);
|
|
176
|
+
}
|
|
177
|
+
case 'minimum-cost': {
|
|
178
|
+
const minimal = expls.filter((e) => e.parsimonious);
|
|
179
|
+
if (minimal.length === 0)
|
|
180
|
+
return [];
|
|
181
|
+
const minCost = minimal.reduce((m, e) => Math.min(m, e.costScore ?? Infinity), Infinity);
|
|
182
|
+
return minimal.filter((e) => (e.costScore ?? Infinity) === minCost);
|
|
183
|
+
}
|
|
184
|
+
default:
|
|
185
|
+
return expls.slice();
|
|
186
|
+
}
|
|
187
|
+
}
|
|
188
|
+
/**
|
|
189
|
+
* Devuelve UNA explicación: la "mejor" según `preferred`. Si hay
|
|
190
|
+
* empate, la primera en orden lex (consistente y reproducible).
|
|
191
|
+
*
|
|
192
|
+
* Devuelve `null` si no hay explicación posible.
|
|
193
|
+
*/
|
|
194
|
+
function bestExplanation(problem, opts) {
|
|
195
|
+
// Para best-explanation, forzamos minimum-cost si hay costFunction;
|
|
196
|
+
// si no, minimum-cardinality. El cliente puede overridear con
|
|
197
|
+
// opts.preferred.
|
|
198
|
+
const preferred = opts?.preferred ?? (opts?.costFunction ? 'minimum-cost' : 'minimum-cardinality');
|
|
199
|
+
const all = findExplanations(problem, { ...opts, preferred });
|
|
200
|
+
return all.length > 0 ? all[0] : null;
|
|
201
|
+
}
|
|
202
|
+
//# sourceMappingURL=find.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"find.js","sourceRoot":"","sources":["../../../src/runtime/abduction/find.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
export { findExplanations, bestExplanation } from './find';
|
|
2
|
+
export { defaultEntails, defaultConsistent } from './entails';
|
|
3
|
+
export type { AbductionOptions, AbductionProblem, ConsistencyOracle, EntailmentOracle, Explanation, Formula, Preference, } from './types';
|
|
4
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/runtime/abduction/index.ts"],"names":[],"mappings":"AAiBA,OAAO,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,QAAQ,CAAC;AAC3D,OAAO,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAC9D,YAAY,EACV,gBAAgB,EAChB,gBAAgB,EAChB,iBAAiB,EACjB,gBAAgB,EAChB,WAAW,EACX,OAAO,EACP,UAAU,GACX,MAAM,SAAS,CAAC"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// ============================================================
|
|
3
|
+
// ST Abduction — Barrel
|
|
4
|
+
// ============================================================
|
|
5
|
+
//
|
|
6
|
+
// Razonamiento abductivo: dado un knowledge base KB y una observación
|
|
7
|
+
// O, encontrar la hipótesis mínima H ⊆ Abducibles tal que
|
|
8
|
+
// KB ∪ H ⊨ O y KB ∪ H es consistente.
|
|
9
|
+
//
|
|
10
|
+
// API pública:
|
|
11
|
+
// - `findExplanations(problem, opts?)` → todas las explicaciones
|
|
12
|
+
// - `bestExplanation(problem, opts?)` → la mejor según preferencia
|
|
13
|
+
// - `defaultEntails(opts?)` → oráculo entailment Horn-like
|
|
14
|
+
// - `defaultConsistent(opts?)` → oráculo consistencia derivado
|
|
15
|
+
//
|
|
16
|
+
// Tipos: `AbductionProblem`, `Explanation`, `AbductionOptions`,
|
|
17
|
+
// `EntailmentOracle`, `ConsistencyOracle`, `Preference`, `Formula`.
|
|
18
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
19
|
+
exports.defaultConsistent = exports.defaultEntails = exports.bestExplanation = exports.findExplanations = void 0;
|
|
20
|
+
var find_1 = require("./find");
|
|
21
|
+
Object.defineProperty(exports, "findExplanations", { enumerable: true, get: function () { return find_1.findExplanations; } });
|
|
22
|
+
Object.defineProperty(exports, "bestExplanation", { enumerable: true, get: function () { return find_1.bestExplanation; } });
|
|
23
|
+
var entails_1 = require("./entails");
|
|
24
|
+
Object.defineProperty(exports, "defaultEntails", { enumerable: true, get: function () { return entails_1.defaultEntails; } });
|
|
25
|
+
Object.defineProperty(exports, "defaultConsistent", { enumerable: true, get: function () { return entails_1.defaultConsistent; } });
|
|
26
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/runtime/abduction/index.ts"],"names":[],"mappings":";AAAA,+DAA+D;AAC/D,wBAAwB;AACxB,+DAA+D;AAC/D,EAAE;AACF,sEAAsE;AACtE,0DAA0D;AAC1D,sCAAsC;AACtC,EAAE;AACF,eAAe;AACf,oEAAoE;AACpE,uEAAuE;AACvE,yEAAyE;AACzE,0EAA0E;AAC1E,EAAE;AACF,gEAAgE;AAChE,oEAAoE;;;AAEpE,+BAA2D;AAAlD,wGAAA,gBAAgB,OAAA;AAAE,uGAAA,eAAe,OAAA;AAC1C,qCAA8D;AAArD,yGAAA,cAAc,OAAA;AAAE,4GAAA,iBAAiB,OAAA"}
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
/** Una fórmula (formato libre — strings, opaque al motor). */
|
|
2
|
+
export type Formula = string;
|
|
3
|
+
/**
|
|
4
|
+
* Oráculo de consecuencia lógica: dado un conjunto de premisas P y
|
|
5
|
+
* una fórmula objetivo q, devuelve `true` sii P ⊨ q.
|
|
6
|
+
*
|
|
7
|
+
* El motor abductivo es agnóstico al sistema lógico. Quien usa la
|
|
8
|
+
* librería provee este oráculo (puede ser propositional, FOL,
|
|
9
|
+
* description logic, etc).
|
|
10
|
+
*/
|
|
11
|
+
export type EntailmentOracle = (premises: ReadonlyArray<Formula>, target: Formula) => boolean;
|
|
12
|
+
/**
|
|
13
|
+
* Oráculo de consistencia: dado un conjunto de fórmulas, devuelve
|
|
14
|
+
* `true` sii admite al menos un modelo. Default razonable: si no
|
|
15
|
+
* lo dan, decimos consistente sii NO P ⊨ ⊥. Como no tenemos ⊥
|
|
16
|
+
* estándar en strings, en la práctica conviene pasar este oráculo.
|
|
17
|
+
*/
|
|
18
|
+
export type ConsistencyOracle = (premises: ReadonlyArray<Formula>) => boolean;
|
|
19
|
+
/**
|
|
20
|
+
* Problema abductivo.
|
|
21
|
+
*
|
|
22
|
+
* - `kb`: background knowledge (axiomas del dominio).
|
|
23
|
+
* - `observation`: fórmula que queremos explicar.
|
|
24
|
+
* - `abducibles`: el conjunto de fórmulas elegibles como hipótesis.
|
|
25
|
+
* El razonador buscará H ⊆ abducibles.
|
|
26
|
+
*/
|
|
27
|
+
export interface AbductionProblem {
|
|
28
|
+
kb: ReadonlyArray<Formula>;
|
|
29
|
+
observation: Formula;
|
|
30
|
+
abducibles: ReadonlyArray<Formula>;
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Una explicación candidata.
|
|
34
|
+
*
|
|
35
|
+
* - `hypotheses`: subconjunto de abducibles.
|
|
36
|
+
* - `size`: cardinalidad (= hypotheses.length).
|
|
37
|
+
* - `parsimonious`: true sii no existe subconjunto propio que
|
|
38
|
+
* también explique la observación de forma consistente.
|
|
39
|
+
* (Equivale a "minimal por inclusión".)
|
|
40
|
+
* - `costScore`: suma de costos si se proveyó costFunction.
|
|
41
|
+
*/
|
|
42
|
+
export interface Explanation {
|
|
43
|
+
hypotheses: ReadonlyArray<Formula>;
|
|
44
|
+
size: number;
|
|
45
|
+
parsimonious: boolean;
|
|
46
|
+
costScore?: number;
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Criterio de preferencia sobre el conjunto de explicaciones.
|
|
50
|
+
*
|
|
51
|
+
* - `all`: todas las explicaciones encontradas (no filtra).
|
|
52
|
+
* - `minimal`: solo las minimal-por-inclusión (parsimonious).
|
|
53
|
+
* - `minimum-cardinality`: las de menor |H| entre las minimales.
|
|
54
|
+
* - `minimum-cost`: las de menor costo total (requiere costFunction).
|
|
55
|
+
*/
|
|
56
|
+
export type Preference = 'all' | 'minimal' | 'minimum-cardinality' | 'minimum-cost';
|
|
57
|
+
export interface AbductionOptions {
|
|
58
|
+
/** Oráculo de entailment. Default: `defaultEntails` (propositional, ver entails.ts). */
|
|
59
|
+
entails?: EntailmentOracle;
|
|
60
|
+
/** Oráculo de consistencia. Default: derivado de `entails` (no entails ⊥-equiv). */
|
|
61
|
+
consistent?: ConsistencyOracle;
|
|
62
|
+
/**
|
|
63
|
+
* Tope de explicaciones a retornar. Útil cuando hay explosión
|
|
64
|
+
* combinatoria. Default: 1024.
|
|
65
|
+
*/
|
|
66
|
+
maxHypotheses?: number;
|
|
67
|
+
/**
|
|
68
|
+
* Tope para |H|. Acota el espacio de búsqueda. Default: igual a
|
|
69
|
+
* |abducibles| (sin tope efectivo). Bajarlo es una buena idea
|
|
70
|
+
* para |abducibles| > 12.
|
|
71
|
+
*/
|
|
72
|
+
maxSize?: number;
|
|
73
|
+
/** Función de costo por hipótesis. Default: 1 por hipótesis. */
|
|
74
|
+
costFunction?: (h: Formula) => number;
|
|
75
|
+
/** Cómo filtrar/ordenar el output. Default: `minimal`. */
|
|
76
|
+
preferred?: Preference;
|
|
77
|
+
}
|
|
78
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/runtime/abduction/types.ts"],"names":[],"mappings":"AAqBA,8DAA8D;AAC9D,MAAM,MAAM,OAAO,GAAG,MAAM,CAAC;AAE7B;;;;;;;GAOG;AACH,MAAM,MAAM,gBAAgB,GAAG,CAAC,QAAQ,EAAE,aAAa,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,OAAO,KAAK,OAAO,CAAC;AAE9F;;;;;GAKG;AACH,MAAM,MAAM,iBAAiB,GAAG,CAAC,QAAQ,EAAE,aAAa,CAAC,OAAO,CAAC,KAAK,OAAO,CAAC;AAE9E;;;;;;;GAOG;AACH,MAAM,WAAW,gBAAgB;IAC/B,EAAE,EAAE,aAAa,CAAC,OAAO,CAAC,CAAC;IAC3B,WAAW,EAAE,OAAO,CAAC;IACrB,UAAU,EAAE,aAAa,CAAC,OAAO,CAAC,CAAC;CACpC;AAED;;;;;;;;;GASG;AACH,MAAM,WAAW,WAAW;IAC1B,UAAU,EAAE,aAAa,CAAC,OAAO,CAAC,CAAC;IACnC,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,EAAE,OAAO,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;;;;;GAOG;AACH,MAAM,MAAM,UAAU,GAAG,KAAK,GAAG,SAAS,GAAG,qBAAqB,GAAG,cAAc,CAAC;AAEpF,MAAM,WAAW,gBAAgB;IAC/B,wFAAwF;IACxF,OAAO,CAAC,EAAE,gBAAgB,CAAC;IAC3B,oFAAoF;IACpF,UAAU,CAAC,EAAE,iBAAiB,CAAC;IAC/B;;;OAGG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB;;;;OAIG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,gEAAgE;IAChE,YAAY,CAAC,EAAE,CAAC,CAAC,EAAE,OAAO,KAAK,MAAM,CAAC;IACtC,0DAA0D;IAC1D,SAAS,CAAC,EAAE,UAAU,CAAC;CACxB"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// ============================================================
|
|
3
|
+
// ST Abduction — Tipos públicos
|
|
4
|
+
// ============================================================
|
|
5
|
+
//
|
|
6
|
+
// Razonamiento abductivo (Peirce 1903; Reiter 1987): dado un
|
|
7
|
+
// background knowledge KB y una observación O, encontrar
|
|
8
|
+
// hipótesis H ⊆ Abducibles tal que:
|
|
9
|
+
//
|
|
10
|
+
// 1. KB ∪ H ⊨ O (la hipótesis explica la observación)
|
|
11
|
+
// 2. KB ∪ H consistent (la hipótesis es compatible con KB)
|
|
12
|
+
// 3. H es minimal (no hay H' ⊂ H que cumpla 1 y 2)
|
|
13
|
+
//
|
|
14
|
+
// Usos típicos:
|
|
15
|
+
// - Diagnóstico (¿qué fallas explican estos síntomas?)
|
|
16
|
+
// - Inferencia best-fit (la hipótesis más simple/barata gana)
|
|
17
|
+
// - Generación de explicaciones (debugging de cadenas causales)
|
|
18
|
+
//
|
|
19
|
+
// El espacio de hipótesis se enumera sobre 2^|abducibles|. Para
|
|
20
|
+
// |abducibles| ≲ 16 la enumeración exhaustiva es viable. Para más
|
|
21
|
+
// grande, conviene un oráculo SAT incremental.
|
|
22
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
23
|
+
//# sourceMappingURL=types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/runtime/abduction/types.ts"],"names":[],"mappings":";AAAA,+DAA+D;AAC/D,gCAAgC;AAChC,+DAA+D;AAC/D,EAAE;AACF,6DAA6D;AAC7D,yDAAyD;AACzD,oCAAoC;AACpC,EAAE;AACF,8DAA8D;AAC9D,6DAA6D;AAC7D,qDAAqD;AACrD,EAAE;AACF,gBAAgB;AAChB,yDAAyD;AACzD,gEAAgE;AAChE,kEAAkE;AAClE,EAAE;AACF,gEAAgE;AAChE,kEAAkE;AAClE,+CAA+C"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import type { AntiUnificationResult, FreshSupply, Term } from './types';
|
|
2
|
+
/**
|
|
3
|
+
* Fuente default de variables frescas: _g0, _g1, _g2, …
|
|
4
|
+
*
|
|
5
|
+
* Se devuelve una NUEVA instancia por llamada para evitar estado
|
|
6
|
+
* compartido entre invocaciones de antiUnify.
|
|
7
|
+
*/
|
|
8
|
+
export declare function defaultFreshSupply(prefix?: string): FreshSupply;
|
|
9
|
+
/**
|
|
10
|
+
* Anti-unification de dos términos.
|
|
11
|
+
*
|
|
12
|
+
* Devuelve el lgg (least general generalization) junto con las
|
|
13
|
+
* sustituciones de izquierda y derecha que reconstruyen los
|
|
14
|
+
* términos originales.
|
|
15
|
+
*
|
|
16
|
+
* Complejidad: O(|t1| + |t2|) tiempo si la tabla se implementa con
|
|
17
|
+
* hashing O(1). Usamos `termKey` que serializa, así que es
|
|
18
|
+
* O((|t1| + |t2|)·k) donde k es el tamaño del subtérmino más grande
|
|
19
|
+
* que aparezca en un desacuerdo.
|
|
20
|
+
*/
|
|
21
|
+
export declare function antiUnify(t1: Term, t2: Term, freshSupply?: FreshSupply): AntiUnificationResult;
|
|
22
|
+
//# sourceMappingURL=anti-unify.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"anti-unify.d.ts","sourceRoot":"","sources":["../../../src/runtime/anti-unification/anti-unify.ts"],"names":[],"mappings":"AAyBA,OAAO,KAAK,EAAE,qBAAqB,EAAE,WAAW,EAAE,IAAI,EAAE,MAAM,SAAS,CAAC;AAGxE;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,GAAE,MAAa,GAAG,WAAW,CAGrE;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,SAAS,CAAC,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,WAAW,CAAC,EAAE,WAAW,GAAG,qBAAqB,CAc9F"}
|
|
@@ -0,0 +1,154 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// ============================================================
|
|
3
|
+
// ST Anti-Unification — Algoritmo de Plotkin (lgg)
|
|
4
|
+
// ============================================================
|
|
5
|
+
//
|
|
6
|
+
// Algoritmo (Plotkin 1970):
|
|
7
|
+
//
|
|
8
|
+
// au(t1, t2, table):
|
|
9
|
+
// si t1 ≡ t2 estructuralmente:
|
|
10
|
+
// return t1
|
|
11
|
+
// si ambos son func/const con mismo nombre y misma aridad:
|
|
12
|
+
// return func(name, [au(t1.args[i], t2.args[i]) for i])
|
|
13
|
+
// // desacuerdo: introducimos fresh var, reusando si ya existe
|
|
14
|
+
// // una asignada al MISMO par (t1, t2) — esto es clave para que
|
|
15
|
+
// // la generalización sea LEAST (most specific).
|
|
16
|
+
// si table tiene (t1, t2) → v entonces return v
|
|
17
|
+
// v := freshSupply()
|
|
18
|
+
// table[(t1, t2)] := v
|
|
19
|
+
// return v
|
|
20
|
+
//
|
|
21
|
+
// La tabla de correspondencias se mantiene globalmente durante la
|
|
22
|
+
// recursión para que múltiples ocurrencias del mismo desacuerdo
|
|
23
|
+
// reciban la misma fresh var. Sin esta tabla obtendríamos una
|
|
24
|
+
// generalización menos específica (e.g., au(p(a,a), p(b,b)) daría
|
|
25
|
+
// p(X, Y) en vez de p(X, X)).
|
|
26
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
27
|
+
exports.defaultFreshSupply = defaultFreshSupply;
|
|
28
|
+
exports.antiUnify = antiUnify;
|
|
29
|
+
const term_utils_1 = require("./term-utils");
|
|
30
|
+
/**
|
|
31
|
+
* Fuente default de variables frescas: _g0, _g1, _g2, …
|
|
32
|
+
*
|
|
33
|
+
* Se devuelve una NUEVA instancia por llamada para evitar estado
|
|
34
|
+
* compartido entre invocaciones de antiUnify.
|
|
35
|
+
*/
|
|
36
|
+
function defaultFreshSupply(prefix = '_g') {
|
|
37
|
+
let counter = 0;
|
|
38
|
+
return () => `${prefix}${counter++}`;
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Anti-unification de dos términos.
|
|
42
|
+
*
|
|
43
|
+
* Devuelve el lgg (least general generalization) junto con las
|
|
44
|
+
* sustituciones de izquierda y derecha que reconstruyen los
|
|
45
|
+
* términos originales.
|
|
46
|
+
*
|
|
47
|
+
* Complejidad: O(|t1| + |t2|) tiempo si la tabla se implementa con
|
|
48
|
+
* hashing O(1). Usamos `termKey` que serializa, así que es
|
|
49
|
+
* O((|t1| + |t2|)·k) donde k es el tamaño del subtérmino más grande
|
|
50
|
+
* que aparezca en un desacuerdo.
|
|
51
|
+
*/
|
|
52
|
+
function antiUnify(t1, t2, freshSupply) {
|
|
53
|
+
const supply = freshSupply ?? defaultFreshSupply();
|
|
54
|
+
// Tabla de desacuerdos: clave canónica "t1║t2" → nombre de var fresca.
|
|
55
|
+
const table = new Map();
|
|
56
|
+
// Sustituciones de salida: para cada fresh var, qué término iba en
|
|
57
|
+
// cada lado.
|
|
58
|
+
const substLeft = new Map();
|
|
59
|
+
const substRight = new Map();
|
|
60
|
+
// Orden de introducción de las fresh vars (para `variables`).
|
|
61
|
+
const variables = [];
|
|
62
|
+
const generalization = antiUnifyAux(t1, t2, table, substLeft, substRight, variables, supply);
|
|
63
|
+
return { generalization, substLeft, substRight, variables };
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* Núcleo recursivo del algoritmo. Se mantiene recursivo (no iterativo)
|
|
67
|
+
* porque la mayoría de términos en la práctica son superficiales y la
|
|
68
|
+
* recursión sigue la estructura del término más pequeño.
|
|
69
|
+
*
|
|
70
|
+
* Si en algún momento aparecen términos patológicamente profundos,
|
|
71
|
+
* habría que reescribirlo con un stack explícito siguiendo el patrón
|
|
72
|
+
* de `mapTerm` en term-rewriting/term-utils.ts.
|
|
73
|
+
*/
|
|
74
|
+
function antiUnifyAux(t1, t2, table, substLeft, substRight, variables, supply) {
|
|
75
|
+
// Caso base: estructuralmente iguales → la generalización es el
|
|
76
|
+
// término mismo, sin nuevas variables.
|
|
77
|
+
if ((0, term_utils_1.termEquals)(t1, t2))
|
|
78
|
+
return t1;
|
|
79
|
+
// Misma "cabeza" (mismo símbolo, misma aridad, mismo kind func/const)
|
|
80
|
+
// → recursamos argumento a argumento.
|
|
81
|
+
if (sameHead(t1, t2)) {
|
|
82
|
+
const args1 = t1.args ?? [];
|
|
83
|
+
const args2 = t2.args ?? [];
|
|
84
|
+
// sameHead garantiza aridad igual.
|
|
85
|
+
const newArgs = new Array(args1.length);
|
|
86
|
+
for (let i = 0; i < args1.length; i++) {
|
|
87
|
+
const a1 = args1[i];
|
|
88
|
+
const a2 = args2[i];
|
|
89
|
+
if (a1 === undefined || a2 === undefined) {
|
|
90
|
+
// Imposible si sameHead pasó, pero el chequeo apacigua a TS
|
|
91
|
+
// bajo noUncheckedIndexedAccess.
|
|
92
|
+
throw new Error('antiUnify: aridad inconsistente tras sameHead check');
|
|
93
|
+
}
|
|
94
|
+
newArgs[i] = antiUnifyAux(a1, a2, table, substLeft, substRight, variables, supply);
|
|
95
|
+
}
|
|
96
|
+
if (t1.kind === 'const') {
|
|
97
|
+
// const con args=[] ya cayó en termEquals; si llegamos aquí con
|
|
98
|
+
// kind=const es porque ambos tienen mismo nombre y 0 args, lo
|
|
99
|
+
// que ya implicaría termEquals=true. Defensa por si llega un
|
|
100
|
+
// const con args>0 mal construido.
|
|
101
|
+
return { kind: 'const', name: t1.name };
|
|
102
|
+
}
|
|
103
|
+
return { kind: 'func', name: t1.name, args: newArgs };
|
|
104
|
+
}
|
|
105
|
+
// Desacuerdo: pares distintos. Reutilizamos la fresh var si ya
|
|
106
|
+
// habíamos visto este par; de lo contrario generamos una nueva.
|
|
107
|
+
const key = pairKey(t1, t2);
|
|
108
|
+
const existing = table.get(key);
|
|
109
|
+
if (existing !== undefined) {
|
|
110
|
+
return { kind: 'var', name: existing };
|
|
111
|
+
}
|
|
112
|
+
const fresh = supply();
|
|
113
|
+
table.set(key, fresh);
|
|
114
|
+
substLeft.set(fresh, t1);
|
|
115
|
+
substRight.set(fresh, t2);
|
|
116
|
+
variables.push(fresh);
|
|
117
|
+
return { kind: 'var', name: fresh };
|
|
118
|
+
}
|
|
119
|
+
/**
|
|
120
|
+
* ¿t1 y t2 comparten la misma "cabeza" (símbolo + aridad + kind no-var)?
|
|
121
|
+
*
|
|
122
|
+
* Variables NUNCA tienen cabeza común con otra cosa: el caso `var, var`
|
|
123
|
+
* con mismos nombres ya lo absorbe `termEquals` arriba; con nombres
|
|
124
|
+
* distintos es un desacuerdo legítimo. Un `var` contra `func/const`
|
|
125
|
+
* también es desacuerdo (la variable es más general).
|
|
126
|
+
*/
|
|
127
|
+
function sameHead(t1, t2) {
|
|
128
|
+
if (t1.kind === 'var' || t2.kind === 'var')
|
|
129
|
+
return false;
|
|
130
|
+
// Tratamos const como func(name, []) para comparar aridad.
|
|
131
|
+
if (t1.name !== t2.name)
|
|
132
|
+
return false;
|
|
133
|
+
const a1 = t1.args ?? [];
|
|
134
|
+
const a2 = t2.args ?? [];
|
|
135
|
+
if (a1.length !== a2.length)
|
|
136
|
+
return false;
|
|
137
|
+
// Si los kinds difieren (func vs const) pero la aridad es 0 y los
|
|
138
|
+
// nombres coinciden, todavía lo aceptamos como "misma cabeza" para
|
|
139
|
+
// ser tolerantes con clientes que mezclen ambas convenciones.
|
|
140
|
+
// Pero antes de aceptar, exigimos que si difieren los kinds, la
|
|
141
|
+
// aridad sea 0 — un `const` con args no debería existir.
|
|
142
|
+
if (t1.kind !== t2.kind && a1.length > 0)
|
|
143
|
+
return false;
|
|
144
|
+
return true;
|
|
145
|
+
}
|
|
146
|
+
/**
|
|
147
|
+
* Clave canónica para un par (t1, t2) usada en la tabla de
|
|
148
|
+
* desacuerdos. Usamos un separador que no puede aparecer en
|
|
149
|
+
* `termKey` para evitar colisiones.
|
|
150
|
+
*/
|
|
151
|
+
function pairKey(t1, t2) {
|
|
152
|
+
return `${(0, term_utils_1.termKey)(t1)}║${(0, term_utils_1.termKey)(t2)}`;
|
|
153
|
+
}
|
|
154
|
+
//# sourceMappingURL=anti-unify.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"anti-unify.js","sourceRoot":"","sources":["../../../src/runtime/anti-unification/anti-unify.ts"],"names":[],"mappings":";AAAA,+DAA+D;AAC/D,mDAAmD;AACnD,+DAA+D;AAC/D,EAAE;AACF,4BAA4B;AAC5B,EAAE;AACF,uBAAuB;AACvB,mCAAmC;AACnC,kBAAkB;AAClB,+DAA+D;AAC/D,8DAA8D;AAC9D,mEAAmE;AACnE,qEAAqE;AACrE,sDAAsD;AACtD,oDAAoD;AACpD,yBAAyB;AACzB,2BAA2B;AAC3B,eAAe;AACf,EAAE;AACF,kEAAkE;AAClE,gEAAgE;AAChE,8DAA8D;AAC9D,kEAAkE;AAClE,8BAA8B;;AAW9B,gDAGC;AAcD,8BAcC;AAvCD,6CAAmD;AAEnD;;;;;GAKG;AACH,SAAgB,kBAAkB,CAAC,SAAiB,IAAI;IACtD,IAAI,OAAO,GAAG,CAAC,CAAC;IAChB,OAAO,GAAG,EAAE,CAAC,GAAG,MAAM,GAAG,OAAO,EAAE,EAAE,CAAC;AACvC,CAAC;AAED;;;;;;;;;;;GAWG;AACH,SAAgB,SAAS,CAAC,EAAQ,EAAE,EAAQ,EAAE,WAAyB;IACrE,MAAM,MAAM,GAAG,WAAW,IAAI,kBAAkB,EAAE,CAAC;IACnD,uEAAuE;IACvE,MAAM,KAAK,GAAG,IAAI,GAAG,EAAkB,CAAC;IACxC,mEAAmE;IACnE,aAAa;IACb,MAAM,SAAS,GAAG,IAAI,GAAG,EAAgB,CAAC;IAC1C,MAAM,UAAU,GAAG,IAAI,GAAG,EAAgB,CAAC;IAC3C,8DAA8D;IAC9D,MAAM,SAAS,GAAa,EAAE,CAAC;IAE/B,MAAM,cAAc,GAAG,YAAY,CAAC,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC;IAE7F,OAAO,EAAE,cAAc,EAAE,SAAS,EAAE,UAAU,EAAE,SAAS,EAAE,CAAC;AAC9D,CAAC;AAED;;;;;;;;GAQG;AACH,SAAS,YAAY,CACnB,EAAQ,EACR,EAAQ,EACR,KAA0B,EAC1B,SAA4B,EAC5B,UAA6B,EAC7B,SAAmB,EACnB,MAAmB;IAEnB,gEAAgE;IAChE,uCAAuC;IACvC,IAAI,IAAA,uBAAU,EAAC,EAAE,EAAE,EAAE,CAAC;QAAE,OAAO,EAAE,CAAC;IAElC,sEAAsE;IACtE,sCAAsC;IACtC,IAAI,QAAQ,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC;QACrB,MAAM,KAAK,GAAG,EAAE,CAAC,IAAI,IAAI,EAAE,CAAC;QAC5B,MAAM,KAAK,GAAG,EAAE,CAAC,IAAI,IAAI,EAAE,CAAC;QAC5B,mCAAmC;QACnC,MAAM,OAAO,GAAW,IAAI,KAAK,CAAO,KAAK,CAAC,MAAM,CAAC,CAAC;QACtD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACtC,MAAM,EAAE,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;YACpB,MAAM,EAAE,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;YACpB,IAAI,EAAE,KAAK,SAAS,IAAI,EAAE,KAAK,SAAS,EAAE,CAAC;gBACzC,4DAA4D;gBAC5D,iCAAiC;gBACjC,MAAM,IAAI,KAAK,CAAC,qDAAqD,CAAC,CAAC;YACzE,CAAC;YACD,OAAO,CAAC,CAAC,CAAC,GAAG,YAAY,CAAC,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC;QACrF,CAAC;QACD,IAAI,EAAE,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;YACxB,gEAAgE;YAChE,8DAA8D;YAC9D,6DAA6D;YAC7D,mCAAmC;YACnC,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE,CAAC,IAAI,EAAE,CAAC;QAC1C,CAAC;QACD,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;IACxD,CAAC;IAED,+DAA+D;IAC/D,gEAAgE;IAChE,MAAM,GAAG,GAAG,OAAO,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;IAC5B,MAAM,QAAQ,GAAG,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAChC,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;QAC3B,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;IACzC,CAAC;IACD,MAAM,KAAK,GAAG,MAAM,EAAE,CAAC;IACvB,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;IACtB,SAAS,CAAC,GAAG,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;IACzB,UAAU,CAAC,GAAG,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;IAC1B,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACtB,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;AACtC,CAAC;AAED;;;;;;;GAOG;AACH,SAAS,QAAQ,CAAC,EAAQ,EAAE,EAAQ;IAClC,IAAI,EAAE,CAAC,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC,IAAI,KAAK,KAAK;QAAE,OAAO,KAAK,CAAC;IACzD,2DAA2D;IAC3D,IAAI,EAAE,CAAC,IAAI,KAAK,EAAE,CAAC,IAAI;QAAE,OAAO,KAAK,CAAC;IACtC,MAAM,EAAE,GAAG,EAAE,CAAC,IAAI,IAAI,EAAE,CAAC;IACzB,MAAM,EAAE,GAAG,EAAE,CAAC,IAAI,IAAI,EAAE,CAAC;IACzB,IAAI,EAAE,CAAC,MAAM,KAAK,EAAE,CAAC,MAAM;QAAE,OAAO,KAAK,CAAC;IAC1C,kEAAkE;IAClE,mEAAmE;IACnE,8DAA8D;IAC9D,gEAAgE;IAChE,yDAAyD;IACzD,IAAI,EAAE,CAAC,IAAI,KAAK,EAAE,CAAC,IAAI,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC;QAAE,OAAO,KAAK,CAAC;IACvD,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;;GAIG;AACH,SAAS,OAAO,CAAC,EAAQ,EAAE,EAAQ;IACjC,OAAO,GAAG,IAAA,oBAAO,EAAC,EAAE,CAAC,IAAI,IAAA,oBAAO,EAAC,EAAE,CAAC,EAAE,CAAC;AACzC,CAAC"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
export type { Term, AntiUnificationResult, FreshSupply } from './types';
|
|
2
|
+
export { antiUnify, defaultFreshSupply } from './anti-unify';
|
|
3
|
+
export { termEquals, termKey, varsOf, applySubst, termSize, v, f, c } from './term-utils';
|
|
4
|
+
export { antiUnifyMany, antiUnifyManyDetailed, generalizationOrder } from './many';
|
|
5
|
+
export type { AntiUnificationManyResult } from './many';
|
|
6
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/runtime/anti-unification/index.ts"],"names":[],"mappings":"AAIA,YAAY,EAAE,IAAI,EAAE,qBAAqB,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAExE,OAAO,EAAE,SAAS,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAE7D,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,MAAM,cAAc,CAAC;AAE1F,OAAO,EAAE,aAAa,EAAE,qBAAqB,EAAE,mBAAmB,EAAE,MAAM,QAAQ,CAAC;AAEnF,YAAY,EAAE,yBAAyB,EAAE,MAAM,QAAQ,CAAC"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// ============================================================
|
|
3
|
+
// ST Anti-Unification — Barrel de exportaciones
|
|
4
|
+
// ============================================================
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.generalizationOrder = exports.antiUnifyManyDetailed = exports.antiUnifyMany = exports.c = exports.f = exports.v = exports.termSize = exports.applySubst = exports.varsOf = exports.termKey = exports.termEquals = exports.defaultFreshSupply = exports.antiUnify = void 0;
|
|
7
|
+
var anti_unify_1 = require("./anti-unify");
|
|
8
|
+
Object.defineProperty(exports, "antiUnify", { enumerable: true, get: function () { return anti_unify_1.antiUnify; } });
|
|
9
|
+
Object.defineProperty(exports, "defaultFreshSupply", { enumerable: true, get: function () { return anti_unify_1.defaultFreshSupply; } });
|
|
10
|
+
var term_utils_1 = require("./term-utils");
|
|
11
|
+
Object.defineProperty(exports, "termEquals", { enumerable: true, get: function () { return term_utils_1.termEquals; } });
|
|
12
|
+
Object.defineProperty(exports, "termKey", { enumerable: true, get: function () { return term_utils_1.termKey; } });
|
|
13
|
+
Object.defineProperty(exports, "varsOf", { enumerable: true, get: function () { return term_utils_1.varsOf; } });
|
|
14
|
+
Object.defineProperty(exports, "applySubst", { enumerable: true, get: function () { return term_utils_1.applySubst; } });
|
|
15
|
+
Object.defineProperty(exports, "termSize", { enumerable: true, get: function () { return term_utils_1.termSize; } });
|
|
16
|
+
Object.defineProperty(exports, "v", { enumerable: true, get: function () { return term_utils_1.v; } });
|
|
17
|
+
Object.defineProperty(exports, "f", { enumerable: true, get: function () { return term_utils_1.f; } });
|
|
18
|
+
Object.defineProperty(exports, "c", { enumerable: true, get: function () { return term_utils_1.c; } });
|
|
19
|
+
var many_1 = require("./many");
|
|
20
|
+
Object.defineProperty(exports, "antiUnifyMany", { enumerable: true, get: function () { return many_1.antiUnifyMany; } });
|
|
21
|
+
Object.defineProperty(exports, "antiUnifyManyDetailed", { enumerable: true, get: function () { return many_1.antiUnifyManyDetailed; } });
|
|
22
|
+
Object.defineProperty(exports, "generalizationOrder", { enumerable: true, get: function () { return many_1.generalizationOrder; } });
|
|
23
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/runtime/anti-unification/index.ts"],"names":[],"mappings":";AAAA,+DAA+D;AAC/D,gDAAgD;AAChD,+DAA+D;;;AAI/D,2CAA6D;AAApD,uGAAA,SAAS,OAAA;AAAE,gHAAA,kBAAkB,OAAA;AAEtC,2CAA0F;AAAjF,wGAAA,UAAU,OAAA;AAAE,qGAAA,OAAO,OAAA;AAAE,oGAAA,MAAM,OAAA;AAAE,wGAAA,UAAU,OAAA;AAAE,sGAAA,QAAQ,OAAA;AAAE,+FAAA,CAAC,OAAA;AAAE,+FAAA,CAAC,OAAA;AAAE,+FAAA,CAAC,OAAA;AAEnE,+BAAmF;AAA1E,qGAAA,aAAa,OAAA;AAAE,6GAAA,qBAAqB,OAAA;AAAE,2GAAA,mBAAmB,OAAA"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import type { AntiUnificationResult, FreshSupply, Term } from './types';
|
|
2
|
+
import { applySubst } from './term-utils';
|
|
3
|
+
/**
|
|
4
|
+
* Variante "detailed" del n-way lgg.
|
|
5
|
+
*
|
|
6
|
+
* Devuelve la generalización y un array `substs` de longitud n tal
|
|
7
|
+
* que substs[i] aplicada al generalization reproduce el término i.
|
|
8
|
+
*/
|
|
9
|
+
export interface AntiUnificationManyResult {
|
|
10
|
+
generalization: Term;
|
|
11
|
+
substs: Map<string, Term>[];
|
|
12
|
+
variables: string[];
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Anti-unification n-aria. Reduce con la versión binaria.
|
|
16
|
+
*
|
|
17
|
+
* Para n=0 lanza error (no hay generalización sensata).
|
|
18
|
+
* Para n=1 devuelve el término sin variables nuevas.
|
|
19
|
+
*/
|
|
20
|
+
export declare function antiUnifyMany(terms: Term[], freshSupply?: FreshSupply): AntiUnificationResult;
|
|
21
|
+
/**
|
|
22
|
+
* Versión "detailed" — devuelve las n sustituciones independientes.
|
|
23
|
+
*
|
|
24
|
+
* Esta es la forma más útil para clientes que quieren ver cómo se
|
|
25
|
+
* instancia cada uno de los n términos desde la generalización.
|
|
26
|
+
*/
|
|
27
|
+
export declare function antiUnifyManyDetailed(terms: Term[], freshSupply?: FreshSupply): AntiUnificationManyResult;
|
|
28
|
+
/**
|
|
29
|
+
* Orden de generalidad entre dos términos.
|
|
30
|
+
*
|
|
31
|
+
* Definición: g1 ≤ g2 ⇔ existe sustitución σ con σ(g1) = g2.
|
|
32
|
+
* Es decir, g1 es MÁS GENERAL que g2 (g2 es una instancia de g1).
|
|
33
|
+
*
|
|
34
|
+
* Resultados:
|
|
35
|
+
* - -1 si g1 es ESTRICTAMENTE más general que g2 (g1 < g2 en
|
|
36
|
+
* generalidad inversa — equivalente: σ(g1)=g2 pero no
|
|
37
|
+
* σ'(g2)=g1).
|
|
38
|
+
* - 0 si son equivalentes módulo renombre (cada uno instancia
|
|
39
|
+
* del otro vía sustitución de variables).
|
|
40
|
+
* - +1 si g2 es estrictamente más general que g1.
|
|
41
|
+
* - null si son INCOMPARABLES (no hay σ en ningún sentido).
|
|
42
|
+
*
|
|
43
|
+
* Nota: la convención del usuario en la spec es
|
|
44
|
+
* generalizationOrder(X, f(X)) → -1 (X más general).
|
|
45
|
+
* Esto es coherente: X es más general que f(X), y devolvemos -1.
|
|
46
|
+
*/
|
|
47
|
+
export declare function generalizationOrder(g1: Term, g2: Term): -1 | 0 | 1 | null;
|
|
48
|
+
export { applySubst };
|
|
49
|
+
//# sourceMappingURL=many.d.ts.map
|