@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,540 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// ============================================================
|
|
3
|
+
// ST Proof Minification — Núcleo
|
|
4
|
+
// ============================================================
|
|
5
|
+
//
|
|
6
|
+
// Transformaciones puras sobre árboles de pruebas. Ninguna operación
|
|
7
|
+
// muta el input — siempre se clonan los nodos al construir el output.
|
|
8
|
+
//
|
|
9
|
+
// Soundness: cada regla preserva la conclusión raíz y la conformidad
|
|
10
|
+
// estructural (premises siempre válidas, sin referencias colgantes).
|
|
11
|
+
// El minificador NO re-checkea la prueba — asume que el input ya es
|
|
12
|
+
// válido.
|
|
13
|
+
//
|
|
14
|
+
// Determinismo: las pasadas se aplican en orden fijo (detrivialize →
|
|
15
|
+
// compact-mp → cut-elimination-local → remove-unused). El bucle
|
|
16
|
+
// global termina cuando una iteración no cambia el árbol o se alcanza
|
|
17
|
+
// `maxIterations`.
|
|
18
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
19
|
+
exports.countNodes = countNodes;
|
|
20
|
+
exports.depthOf = depthOf;
|
|
21
|
+
exports.compactModusPonensChain = compactModusPonensChain;
|
|
22
|
+
exports.removeUnusedSubproofs = removeUnusedSubproofs;
|
|
23
|
+
exports.minifyProof = minifyProof;
|
|
24
|
+
const DEFAULT_MAX_ITERATIONS = 16;
|
|
25
|
+
const ALL_RULES = [
|
|
26
|
+
'detrivialize',
|
|
27
|
+
'compact-mp',
|
|
28
|
+
'cut-elimination-local',
|
|
29
|
+
'remove-unused',
|
|
30
|
+
];
|
|
31
|
+
// ── Reconocedores de reglas (nombres equivalentes) ────────────
|
|
32
|
+
const LEAF_RULES = new Set([
|
|
33
|
+
'axiom',
|
|
34
|
+
'ax',
|
|
35
|
+
'hypothesis',
|
|
36
|
+
'hyp',
|
|
37
|
+
'assumption',
|
|
38
|
+
'asm',
|
|
39
|
+
'premise',
|
|
40
|
+
'init',
|
|
41
|
+
'identity',
|
|
42
|
+
'id',
|
|
43
|
+
]);
|
|
44
|
+
const MP_RULES = new Set([
|
|
45
|
+
'→E',
|
|
46
|
+
'->E',
|
|
47
|
+
'MP',
|
|
48
|
+
'mp',
|
|
49
|
+
'modus-ponens',
|
|
50
|
+
'modus_ponens',
|
|
51
|
+
'impl-elim',
|
|
52
|
+
'implication-elimination',
|
|
53
|
+
'⊃E',
|
|
54
|
+
]);
|
|
55
|
+
const IMPL_INTRO_RULES = new Set(['→I', '->I', 'impl-intro', 'implication-introduction', '⊃I']);
|
|
56
|
+
const AND_INTRO_RULES = new Set([
|
|
57
|
+
'∧I',
|
|
58
|
+
'&I',
|
|
59
|
+
'and-intro',
|
|
60
|
+
'conj-intro',
|
|
61
|
+
'conjunction-introduction',
|
|
62
|
+
]);
|
|
63
|
+
const AND_ELIM_RULES = new Set([
|
|
64
|
+
'∧E',
|
|
65
|
+
'∧E1',
|
|
66
|
+
'∧E2',
|
|
67
|
+
'&E',
|
|
68
|
+
'&E1',
|
|
69
|
+
'&E2',
|
|
70
|
+
'and-elim',
|
|
71
|
+
'and-elim1',
|
|
72
|
+
'and-elim2',
|
|
73
|
+
'conj-elim',
|
|
74
|
+
'conjunction-elimination',
|
|
75
|
+
]);
|
|
76
|
+
const CUT_RULES = new Set(['cut', 'Cut', 'CUT']);
|
|
77
|
+
const WEAKEN_RULES = new Set(['weakening', 'weaken', 'WL', 'WR', 'exchange', 'XL', 'XR']);
|
|
78
|
+
function isLeafRule(rule) {
|
|
79
|
+
return LEAF_RULES.has(rule);
|
|
80
|
+
}
|
|
81
|
+
function isMPRule(rule) {
|
|
82
|
+
return MP_RULES.has(rule);
|
|
83
|
+
}
|
|
84
|
+
function isImplIntroRule(rule) {
|
|
85
|
+
return IMPL_INTRO_RULES.has(rule);
|
|
86
|
+
}
|
|
87
|
+
function isAndIntroRule(rule) {
|
|
88
|
+
return AND_INTRO_RULES.has(rule);
|
|
89
|
+
}
|
|
90
|
+
function isAndElimRule(rule) {
|
|
91
|
+
return AND_ELIM_RULES.has(rule);
|
|
92
|
+
}
|
|
93
|
+
function isCutRule(rule) {
|
|
94
|
+
return CUT_RULES.has(rule);
|
|
95
|
+
}
|
|
96
|
+
function isWeakenRule(rule) {
|
|
97
|
+
return WEAKEN_RULES.has(rule);
|
|
98
|
+
}
|
|
99
|
+
// ── Utilidades de árbol ───────────────────────────────────────
|
|
100
|
+
/** Normaliza una conclusión para comparación (trim + collapse ws). */
|
|
101
|
+
function normalize(formula) {
|
|
102
|
+
return formula.trim().replace(/\s+/g, ' ');
|
|
103
|
+
}
|
|
104
|
+
function cloneNode(n) {
|
|
105
|
+
const out = {
|
|
106
|
+
conclusion: n.conclusion,
|
|
107
|
+
rule: n.rule,
|
|
108
|
+
premises: n.premises.map(cloneNode),
|
|
109
|
+
};
|
|
110
|
+
if (n.metadata !== undefined) {
|
|
111
|
+
out.metadata = { ...n.metadata };
|
|
112
|
+
}
|
|
113
|
+
return out;
|
|
114
|
+
}
|
|
115
|
+
/** Cuenta los nodos de un árbol (raíz incluida). */
|
|
116
|
+
function countNodes(n) {
|
|
117
|
+
let total = 1;
|
|
118
|
+
for (const p of n.premises)
|
|
119
|
+
total += countNodes(p);
|
|
120
|
+
return total;
|
|
121
|
+
}
|
|
122
|
+
/** Profundidad máxima (raíz = 0). */
|
|
123
|
+
function depthOf(n) {
|
|
124
|
+
if (n.premises.length === 0)
|
|
125
|
+
return 0;
|
|
126
|
+
let max = 0;
|
|
127
|
+
for (const p of n.premises) {
|
|
128
|
+
const d = depthOf(p);
|
|
129
|
+
if (d > max)
|
|
130
|
+
max = d;
|
|
131
|
+
}
|
|
132
|
+
return 1 + max;
|
|
133
|
+
}
|
|
134
|
+
/** Serialización canónica para hashing/dedup. */
|
|
135
|
+
function canonicalKey(n) {
|
|
136
|
+
const kids = n.premises.map(canonicalKey).join('|');
|
|
137
|
+
return `${n.rule}::${normalize(n.conclusion)}::(${kids})`;
|
|
138
|
+
}
|
|
139
|
+
// ── 1. Detrivialize ───────────────────────────────────────────
|
|
140
|
+
//
|
|
141
|
+
// (a) Si un nodo de eliminación tiene como premisa inmediata su propio
|
|
142
|
+
// introductor con la misma conclusion final, colapsa al sub-árbol
|
|
143
|
+
// que justificó la intro. Ejemplo clásico:
|
|
144
|
+
//
|
|
145
|
+
// ⌜A⌝ (∧I)
|
|
146
|
+
// ⌜B⌝ ──────────────
|
|
147
|
+
// A ∧ B
|
|
148
|
+
// (∧E1)
|
|
149
|
+
// A
|
|
150
|
+
//
|
|
151
|
+
// → simplemente la sub-prueba de A.
|
|
152
|
+
//
|
|
153
|
+
// (b) Dedup de premises: si dos premises directas son estructuralmente
|
|
154
|
+
// iguales, se conserva una sola copia.
|
|
155
|
+
function detrivialize(node) {
|
|
156
|
+
// Primero reducimos los hijos.
|
|
157
|
+
const reducedPremises = node.premises.map(detrivialize);
|
|
158
|
+
// (a) ∧E ∘ ∧I → premisa correspondiente.
|
|
159
|
+
if (isAndElimRule(node.rule) &&
|
|
160
|
+
reducedPremises.length === 1 &&
|
|
161
|
+
isAndIntroRule(reducedPremises[0].rule) &&
|
|
162
|
+
reducedPremises[0].premises.length === 2) {
|
|
163
|
+
const intro = reducedPremises[0];
|
|
164
|
+
const target = normalize(node.conclusion);
|
|
165
|
+
// Elegir la premisa de la intro cuya conclusion coincide con la
|
|
166
|
+
// conclusion del eliminador.
|
|
167
|
+
for (const p of intro.premises) {
|
|
168
|
+
if (normalize(p.conclusion) === target) {
|
|
169
|
+
return cloneNode(p);
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
// (a') →E ∘ →I trivial: si la intro produjo A→B a partir de "asumir
|
|
174
|
+
// A, derivar B" donde B es exactamente la conclusion final y el
|
|
175
|
+
// antecedente A ya estaba como axioma/hipótesis fuera, el MP
|
|
176
|
+
// colapsa al sub-árbol que derivó B. Caso conservador: la sub-prueba
|
|
177
|
+
// de B debe ser una hoja (no re-ejecutamos sustituciones).
|
|
178
|
+
if (isMPRule(node.rule) &&
|
|
179
|
+
reducedPremises.length === 2 &&
|
|
180
|
+
isImplIntroRule(reducedPremises[0].rule) &&
|
|
181
|
+
reducedPremises[0].premises.length === 1) {
|
|
182
|
+
const intro = reducedPremises[0];
|
|
183
|
+
const body = intro.premises[0];
|
|
184
|
+
if (normalize(body.conclusion) === normalize(node.conclusion) && isLeafRule(body.rule)) {
|
|
185
|
+
return cloneNode(body);
|
|
186
|
+
}
|
|
187
|
+
}
|
|
188
|
+
// (b) Dedup de premises directas. Importante para conjunciones o
|
|
189
|
+
// pasos que repiten la misma justificación.
|
|
190
|
+
const dedupedPremises = [];
|
|
191
|
+
const seenKeys = new Set();
|
|
192
|
+
for (const p of reducedPremises) {
|
|
193
|
+
const k = canonicalKey(p);
|
|
194
|
+
if (seenKeys.has(k))
|
|
195
|
+
continue;
|
|
196
|
+
seenKeys.add(k);
|
|
197
|
+
dedupedPremises.push(p);
|
|
198
|
+
}
|
|
199
|
+
return {
|
|
200
|
+
conclusion: node.conclusion,
|
|
201
|
+
rule: node.rule,
|
|
202
|
+
premises: dedupedPremises,
|
|
203
|
+
...(node.metadata !== undefined ? { metadata: { ...node.metadata } } : {}),
|
|
204
|
+
};
|
|
205
|
+
}
|
|
206
|
+
// ── 2. Compact MP chains ──────────────────────────────────────
|
|
207
|
+
//
|
|
208
|
+
// Una cadena de modus ponens se ve así (n = 3):
|
|
209
|
+
//
|
|
210
|
+
// A A→B
|
|
211
|
+
// ───────── MP
|
|
212
|
+
// B B→C
|
|
213
|
+
// ──────────────── MP
|
|
214
|
+
// C C→D
|
|
215
|
+
// ─────────────── MP
|
|
216
|
+
// D
|
|
217
|
+
//
|
|
218
|
+
// El minificador detecta esta estructura y produce un único nodo MP*
|
|
219
|
+
// con todas las hipótesis y todas las implicaciones como premisas
|
|
220
|
+
// hermanas (estructura plana), con `metadata.chain = ['A','B','C','D']`
|
|
221
|
+
// y `rule = 'MP*'`.
|
|
222
|
+
function compactModusPonensChain(proof) {
|
|
223
|
+
// Top-down: primero intentamos compactar EN la raíz; si compactamos
|
|
224
|
+
// recursamos en las premisas resultantes (que serán hojas de la
|
|
225
|
+
// cadena). Si no compactamos en la raíz, recursamos en cada premisa
|
|
226
|
+
// individualmente.
|
|
227
|
+
if (isMPRule(proof.rule) && proof.premises.length === 2) {
|
|
228
|
+
const compacted = tryCompactChain(proof);
|
|
229
|
+
if (compacted !== null) {
|
|
230
|
+
// Las premisas de un MP* son las implicaciones + el antecedente
|
|
231
|
+
// más profundo. Aplicamos recursión a cada una por si tienen
|
|
232
|
+
// sub-cadenas independientes.
|
|
233
|
+
return {
|
|
234
|
+
...compacted,
|
|
235
|
+
premises: compacted.premises.map(compactModusPonensChain),
|
|
236
|
+
};
|
|
237
|
+
}
|
|
238
|
+
}
|
|
239
|
+
// No compactamos esta raíz; recursamos sobre premisas.
|
|
240
|
+
return {
|
|
241
|
+
conclusion: proof.conclusion,
|
|
242
|
+
rule: proof.rule,
|
|
243
|
+
premises: proof.premises.map(compactModusPonensChain),
|
|
244
|
+
...(proof.metadata !== undefined ? { metadata: { ...proof.metadata } } : {}),
|
|
245
|
+
};
|
|
246
|
+
}
|
|
247
|
+
/**
|
|
248
|
+
* Intenta detectar una cadena de modus ponens partiendo del nodo dado.
|
|
249
|
+
* Devuelve el nodo compactado o `null` si no hay cadena de tamaño ≥ 2.
|
|
250
|
+
*/
|
|
251
|
+
function tryCompactChain(node) {
|
|
252
|
+
const conclusions = [];
|
|
253
|
+
const impls = [];
|
|
254
|
+
let cursor = node;
|
|
255
|
+
const visited = new Set();
|
|
256
|
+
let mpDepth = 0;
|
|
257
|
+
while (cursor && isMPRule(cursor.rule) && cursor.premises.length === 2 && !visited.has(cursor)) {
|
|
258
|
+
visited.add(cursor);
|
|
259
|
+
mpDepth++;
|
|
260
|
+
const [a, b] = cursor.premises;
|
|
261
|
+
const target = normalize(cursor.conclusion);
|
|
262
|
+
const aConc = normalize(a.conclusion);
|
|
263
|
+
const bConc = normalize(b.conclusion);
|
|
264
|
+
const isAImpl = matchesImplication(aConc, target);
|
|
265
|
+
const isBImpl = matchesImplication(bConc, target);
|
|
266
|
+
let antecedent;
|
|
267
|
+
let implication;
|
|
268
|
+
if (isAImpl && !isBImpl) {
|
|
269
|
+
implication = a;
|
|
270
|
+
antecedent = b;
|
|
271
|
+
}
|
|
272
|
+
else if (isBImpl && !isAImpl) {
|
|
273
|
+
implication = b;
|
|
274
|
+
antecedent = a;
|
|
275
|
+
}
|
|
276
|
+
else {
|
|
277
|
+
// Ambiguo o ambas son implicaciones: no compactamos esta cadena.
|
|
278
|
+
return null;
|
|
279
|
+
}
|
|
280
|
+
impls.push(implication);
|
|
281
|
+
conclusions.push(antecedent.conclusion);
|
|
282
|
+
if (isMPRule(antecedent.rule) && antecedent.premises.length === 2) {
|
|
283
|
+
cursor = antecedent;
|
|
284
|
+
}
|
|
285
|
+
else {
|
|
286
|
+
conclusions.push(cursor.conclusion);
|
|
287
|
+
impls.push(antecedent);
|
|
288
|
+
break;
|
|
289
|
+
}
|
|
290
|
+
}
|
|
291
|
+
// Sólo compactamos si hubo al menos 2 MPs encadenados.
|
|
292
|
+
if (mpDepth < 2)
|
|
293
|
+
return null;
|
|
294
|
+
return {
|
|
295
|
+
conclusion: node.conclusion,
|
|
296
|
+
rule: 'MP*',
|
|
297
|
+
premises: impls,
|
|
298
|
+
metadata: {
|
|
299
|
+
chain: conclusions,
|
|
300
|
+
compactedFrom: 'modus-ponens-chain',
|
|
301
|
+
length: conclusions.length,
|
|
302
|
+
},
|
|
303
|
+
};
|
|
304
|
+
}
|
|
305
|
+
/**
|
|
306
|
+
* Heurística: ¿`impl` parece ser una implicación cuyo consecuente es
|
|
307
|
+
* `target`? Reconoce los conectores `→`, `->`, `⊃`, ` implies `.
|
|
308
|
+
* NO hace parsing real — sólo string-matching del lado derecho.
|
|
309
|
+
*/
|
|
310
|
+
function matchesImplication(impl, target) {
|
|
311
|
+
const connectors = ['→', '->', '⊃', ' implies '];
|
|
312
|
+
for (const conn of connectors) {
|
|
313
|
+
const idx = impl.lastIndexOf(conn);
|
|
314
|
+
if (idx < 0)
|
|
315
|
+
continue;
|
|
316
|
+
let rhs = impl.slice(idx + conn.length).trim();
|
|
317
|
+
// Strip outer parens si está balanceado.
|
|
318
|
+
rhs = stripOuterParens(rhs);
|
|
319
|
+
const tgt = stripOuterParens(target);
|
|
320
|
+
if (rhs === tgt)
|
|
321
|
+
return true;
|
|
322
|
+
}
|
|
323
|
+
return false;
|
|
324
|
+
}
|
|
325
|
+
function stripOuterParens(s) {
|
|
326
|
+
let cur = s.trim();
|
|
327
|
+
while (cur.startsWith('(') && cur.endsWith(')')) {
|
|
328
|
+
let depth = 0;
|
|
329
|
+
let balanced = true;
|
|
330
|
+
for (let i = 0; i < cur.length; i++) {
|
|
331
|
+
const ch = cur[i];
|
|
332
|
+
if (ch === '(')
|
|
333
|
+
depth++;
|
|
334
|
+
else if (ch === ')') {
|
|
335
|
+
depth--;
|
|
336
|
+
if (depth === 0 && i < cur.length - 1) {
|
|
337
|
+
balanced = false;
|
|
338
|
+
break;
|
|
339
|
+
}
|
|
340
|
+
}
|
|
341
|
+
}
|
|
342
|
+
if (!balanced)
|
|
343
|
+
break;
|
|
344
|
+
cur = cur.slice(1, -1).trim();
|
|
345
|
+
}
|
|
346
|
+
return cur;
|
|
347
|
+
}
|
|
348
|
+
// ── 3. Local cut elimination ──────────────────────────────────
|
|
349
|
+
//
|
|
350
|
+
// Caso elemental: nodo `cut` con cut-formula A donde una de las dos
|
|
351
|
+
// premisas es exactamente una hoja con conclusion A (la regla de
|
|
352
|
+
// identidad). En ese caso el cut es trivial y se reemplaza por la
|
|
353
|
+
// otra premisa, que ya derivaba la conclusion.
|
|
354
|
+
function eliminateLocalCuts(node) {
|
|
355
|
+
const reducedPremises = node.premises.map(eliminateLocalCuts);
|
|
356
|
+
const next = {
|
|
357
|
+
conclusion: node.conclusion,
|
|
358
|
+
rule: node.rule,
|
|
359
|
+
premises: reducedPremises,
|
|
360
|
+
...(node.metadata !== undefined ? { metadata: { ...node.metadata } } : {}),
|
|
361
|
+
};
|
|
362
|
+
if (!isCutRule(next.rule))
|
|
363
|
+
return next;
|
|
364
|
+
if (next.premises.length !== 2)
|
|
365
|
+
return next;
|
|
366
|
+
const [left, right] = next.premises;
|
|
367
|
+
// Si la rama izquierda es una hoja-identidad cuya conclusión coincide
|
|
368
|
+
// con la conclusión del cut, la rama derecha YA derivó la conclusión.
|
|
369
|
+
if (isLeafRule(left.rule) && normalize(left.conclusion) === normalize(next.conclusion)) {
|
|
370
|
+
return cloneNode(right);
|
|
371
|
+
}
|
|
372
|
+
if (isLeafRule(right.rule) && normalize(right.conclusion) === normalize(next.conclusion)) {
|
|
373
|
+
return cloneNode(left);
|
|
374
|
+
}
|
|
375
|
+
return next;
|
|
376
|
+
}
|
|
377
|
+
// ── 4. Remove unused subproofs ────────────────────────────────
|
|
378
|
+
//
|
|
379
|
+
// Para pasos de weakening/exchange, la(s) sub-prueba(s) que no
|
|
380
|
+
// contribuyen a la conclusión del nodo padre se pueden recortar. Aquí
|
|
381
|
+
// definimos "no contribuye" como: la conclusion del sub-árbol no
|
|
382
|
+
// coincide con ninguna conclusion en el camino raíz→nodo, y tampoco
|
|
383
|
+
// es premisa formal del nodo (caso weakening).
|
|
384
|
+
//
|
|
385
|
+
// Aplicación práctica: nodos weakening con N premisas donde sólo una
|
|
386
|
+
// coincide con la conclusion del padre → se conservan únicamente las
|
|
387
|
+
// premisas relevantes.
|
|
388
|
+
function removeUnusedSubproofs(proof) {
|
|
389
|
+
const cleaned = cleanWeakenings(proof);
|
|
390
|
+
return pruneOrphanPremises(cleaned);
|
|
391
|
+
}
|
|
392
|
+
function cleanWeakenings(node) {
|
|
393
|
+
const reduced = node.premises.map(cleanWeakenings);
|
|
394
|
+
if (isWeakenRule(node.rule)) {
|
|
395
|
+
const target = normalize(node.conclusion);
|
|
396
|
+
// Buscamos la(s) premisa(s) que derivan exactamente la conclusion.
|
|
397
|
+
const relevant = reduced.filter((p) => containsConclusion(p, target));
|
|
398
|
+
if (relevant.length >= 1 && relevant.length < reduced.length) {
|
|
399
|
+
return {
|
|
400
|
+
conclusion: node.conclusion,
|
|
401
|
+
rule: node.rule,
|
|
402
|
+
premises: relevant,
|
|
403
|
+
...(node.metadata !== undefined ? { metadata: { ...node.metadata } } : {}),
|
|
404
|
+
};
|
|
405
|
+
}
|
|
406
|
+
// Si todas las premisas son irrelevantes (caso degenerado): mantén
|
|
407
|
+
// sólo la primera para no perder el árbol.
|
|
408
|
+
if (relevant.length === 0 && reduced.length > 0) {
|
|
409
|
+
return {
|
|
410
|
+
conclusion: node.conclusion,
|
|
411
|
+
rule: node.rule,
|
|
412
|
+
premises: [reduced[0]],
|
|
413
|
+
...(node.metadata !== undefined ? { metadata: { ...node.metadata } } : {}),
|
|
414
|
+
};
|
|
415
|
+
}
|
|
416
|
+
}
|
|
417
|
+
return {
|
|
418
|
+
conclusion: node.conclusion,
|
|
419
|
+
rule: node.rule,
|
|
420
|
+
premises: reduced,
|
|
421
|
+
...(node.metadata !== undefined ? { metadata: { ...node.metadata } } : {}),
|
|
422
|
+
};
|
|
423
|
+
}
|
|
424
|
+
/**
|
|
425
|
+
* Recorta sub-pruebas huérfanas: una sub-prueba es huérfana si su
|
|
426
|
+
* conclusion no aparece en ninguna parte del árbol (ni como premisa
|
|
427
|
+
* referenciada, ni como conclusion intermedia útil) excepto a sí
|
|
428
|
+
* misma. Conservador: sólo opera sobre nodos con >2 premisas donde
|
|
429
|
+
* todas menos una son axiomas/hipótesis cuya conclusion nunca aparece.
|
|
430
|
+
*/
|
|
431
|
+
function pruneOrphanPremises(node) {
|
|
432
|
+
const reduced = node.premises.map(pruneOrphanPremises);
|
|
433
|
+
if (reduced.length <= 1) {
|
|
434
|
+
return {
|
|
435
|
+
conclusion: node.conclusion,
|
|
436
|
+
rule: node.rule,
|
|
437
|
+
premises: reduced,
|
|
438
|
+
...(node.metadata !== undefined ? { metadata: { ...node.metadata } } : {}),
|
|
439
|
+
};
|
|
440
|
+
}
|
|
441
|
+
// Conjunto de conclusiones que aparecen en el árbol completo bajo
|
|
442
|
+
// las premisas que SÍ son no-hojas: si una hoja-hipótesis tiene
|
|
443
|
+
// conclusion que no aparece como sub-fórmula de ningún otro nodo,
|
|
444
|
+
// probablemente sea dead weight.
|
|
445
|
+
const liveConclusions = new Set();
|
|
446
|
+
for (const p of reduced) {
|
|
447
|
+
collectNonLeafConclusions(p, liveConclusions);
|
|
448
|
+
}
|
|
449
|
+
liveConclusions.add(normalize(node.conclusion));
|
|
450
|
+
// Filtramos hojas cuya conclusion no aparece como sub-string de
|
|
451
|
+
// ninguna conclusion viva. Esto es heurístico (no semántico) — sirve
|
|
452
|
+
// sólo para casos donde la hipótesis es claramente independiente.
|
|
453
|
+
const pruned = [];
|
|
454
|
+
for (const p of reduced) {
|
|
455
|
+
if (isLeafRule(p.rule) && !appearsInAnyConclusion(normalize(p.conclusion), liveConclusions)) {
|
|
456
|
+
// huérfano: no incluir.
|
|
457
|
+
continue;
|
|
458
|
+
}
|
|
459
|
+
pruned.push(p);
|
|
460
|
+
}
|
|
461
|
+
// Aseguramos al menos una premisa si node no es hoja por naturaleza.
|
|
462
|
+
if (pruned.length === 0 && reduced.length > 0) {
|
|
463
|
+
pruned.push(reduced[0]);
|
|
464
|
+
}
|
|
465
|
+
return {
|
|
466
|
+
conclusion: node.conclusion,
|
|
467
|
+
rule: node.rule,
|
|
468
|
+
premises: pruned,
|
|
469
|
+
...(node.metadata !== undefined ? { metadata: { ...node.metadata } } : {}),
|
|
470
|
+
};
|
|
471
|
+
}
|
|
472
|
+
function collectNonLeafConclusions(n, set) {
|
|
473
|
+
if (!isLeafRule(n.rule)) {
|
|
474
|
+
set.add(normalize(n.conclusion));
|
|
475
|
+
}
|
|
476
|
+
for (const p of n.premises)
|
|
477
|
+
collectNonLeafConclusions(p, set);
|
|
478
|
+
}
|
|
479
|
+
function appearsInAnyConclusion(needle, hay) {
|
|
480
|
+
if (hay.has(needle))
|
|
481
|
+
return true;
|
|
482
|
+
for (const conc of hay) {
|
|
483
|
+
if (conc.includes(needle))
|
|
484
|
+
return true;
|
|
485
|
+
}
|
|
486
|
+
return false;
|
|
487
|
+
}
|
|
488
|
+
function containsConclusion(n, target) {
|
|
489
|
+
if (normalize(n.conclusion) === target)
|
|
490
|
+
return true;
|
|
491
|
+
for (const p of n.premises) {
|
|
492
|
+
if (containsConclusion(p, target))
|
|
493
|
+
return true;
|
|
494
|
+
}
|
|
495
|
+
return false;
|
|
496
|
+
}
|
|
497
|
+
// ── API principal ─────────────────────────────────────────────
|
|
498
|
+
/**
|
|
499
|
+
* Minifica un árbol de pruebas iterando las reglas hasta punto fijo
|
|
500
|
+
* o agotar `maxIterations`.
|
|
501
|
+
*/
|
|
502
|
+
function minifyProof(proof, opts = {}) {
|
|
503
|
+
const maxIterations = opts.maxIterations ?? DEFAULT_MAX_ITERATIONS;
|
|
504
|
+
const rules = opts.rules ?? ALL_RULES;
|
|
505
|
+
const ruleSet = new Set(rules);
|
|
506
|
+
const originalNodes = countNodes(proof);
|
|
507
|
+
const originalDepth = depthOf(proof);
|
|
508
|
+
let current = cloneNode(proof);
|
|
509
|
+
let iterations = 0;
|
|
510
|
+
for (let i = 0; i < maxIterations; i++) {
|
|
511
|
+
iterations++;
|
|
512
|
+
const before = canonicalKey(current);
|
|
513
|
+
if (ruleSet.has('detrivialize'))
|
|
514
|
+
current = detrivialize(current);
|
|
515
|
+
if (ruleSet.has('compact-mp'))
|
|
516
|
+
current = compactModusPonensChain(current);
|
|
517
|
+
if (ruleSet.has('cut-elimination-local'))
|
|
518
|
+
current = eliminateLocalCuts(current);
|
|
519
|
+
if (ruleSet.has('remove-unused'))
|
|
520
|
+
current = removeUnusedSubproofs(current);
|
|
521
|
+
const after = canonicalKey(current);
|
|
522
|
+
if (before === after)
|
|
523
|
+
break; // punto fijo
|
|
524
|
+
}
|
|
525
|
+
const minNodes = countNodes(current);
|
|
526
|
+
const minDepth = depthOf(current);
|
|
527
|
+
const removed = originalNodes - minNodes;
|
|
528
|
+
const pct = originalNodes === 0 ? 0 : (removed / originalNodes) * 100;
|
|
529
|
+
return {
|
|
530
|
+
original: { nodes: originalNodes, depth: originalDepth },
|
|
531
|
+
minified: current,
|
|
532
|
+
reduction: {
|
|
533
|
+
nodesRemoved: removed,
|
|
534
|
+
depthDelta: originalDepth - minDepth,
|
|
535
|
+
percentage: Math.round(pct * 100) / 100,
|
|
536
|
+
},
|
|
537
|
+
iterations,
|
|
538
|
+
};
|
|
539
|
+
}
|
|
540
|
+
//# sourceMappingURL=minify.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"minify.js","sourceRoot":"","sources":["../../../src/runtime/proof-minify/minify.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Nodo genérico de un árbol de pruebas.
|
|
3
|
+
*
|
|
4
|
+
* - `conclusion`: representación textual de la fórmula derivada en el
|
|
5
|
+
* nodo. La comparación entre conclusiones se hace por igualdad de
|
|
6
|
+
* strings normalizados (trim + colapsar whitespace interno).
|
|
7
|
+
* - `rule`: nombre de la regla que justifica la conclusión a partir
|
|
8
|
+
* de las premises. Convenciones reconocidas:
|
|
9
|
+
* * `axiom`, `hypothesis`, `assumption`, `premise`: hoja sin
|
|
10
|
+
* premises (o se ignoran las que tenga).
|
|
11
|
+
* * `→E`, `->E`, `MP`, `modus-ponens`, `impl-elim`: eliminación
|
|
12
|
+
* de implicación (modus ponens). Espera 2 premises: la
|
|
13
|
+
* implicación y el antecedente.
|
|
14
|
+
* * `→I`, `->I`, `impl-intro`: introducción de implicación.
|
|
15
|
+
* * `∧I`, `&I`, `and-intro`, `conj-intro`: conjunción intro.
|
|
16
|
+
* * `∧E1`, `∧E2`, `and-elim`, `conj-elim`: conjunción elim.
|
|
17
|
+
* * `cut`: corte en sequent calculus (elimina-able localmente
|
|
18
|
+
* cuando ambas ramas tienen el mismo cut-formula como hoja).
|
|
19
|
+
* El resto se trata como reglas opacas (no se reducen pero sí se
|
|
20
|
+
* detectan como redundantes/no usadas).
|
|
21
|
+
* - `premises`: subárboles. Para hojas, lista vacía.
|
|
22
|
+
* - `metadata`: opcional, free-form. Si el minificador encuentra dos
|
|
23
|
+
* nodos idénticos por conclusión+rule, prefiere el que tenga menos
|
|
24
|
+
* metadata (estable por orden de aparición).
|
|
25
|
+
*/
|
|
26
|
+
export interface GenericProofNode {
|
|
27
|
+
conclusion: string;
|
|
28
|
+
rule: string;
|
|
29
|
+
premises: GenericProofNode[];
|
|
30
|
+
metadata?: Record<string, unknown>;
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Reglas de reducción soportadas. El minificador las aplica en orden
|
|
34
|
+
* fijo dentro de cada iteración:
|
|
35
|
+
*
|
|
36
|
+
* 1. `detrivialize` — quita pares intro/elim adyacentes y
|
|
37
|
+
* quita usos redundantes de la misma
|
|
38
|
+
* premisa (dedup por conclusión).
|
|
39
|
+
* 2. `compact-mp` — colapsa cadenas A→B, A ⊢ B, B→C ⊢ C,
|
|
40
|
+
* C→D ⊢ D... cuando el árbol intermedio
|
|
41
|
+
* sólo se usa para alimentar el siguiente
|
|
42
|
+
* MP. La cadena queda en `metadata.chain`.
|
|
43
|
+
* 3. `cut-elimination-local` — caso simple de eliminación de cut
|
|
44
|
+
* cuando una rama del cut es una
|
|
45
|
+
* hipótesis idéntica a la otra rama.
|
|
46
|
+
* 4. `remove-unused` — recorre el árbol y descarta sub-pruebas
|
|
47
|
+
* cuyo resultado nunca aparece como
|
|
48
|
+
* conclusion en el camino hacia la raíz
|
|
49
|
+
* (sólo aplica a nodos del tipo
|
|
50
|
+
* `weakening`/`exchange` o sub-árboles
|
|
51
|
+
* huérfanos en una lista de premises).
|
|
52
|
+
*/
|
|
53
|
+
export type MinifyRule = 'detrivialize' | 'compact-mp' | 'cut-elimination-local' | 'remove-unused';
|
|
54
|
+
export interface MinifyOptions {
|
|
55
|
+
/**
|
|
56
|
+
* Tope superior de pasadas globales. Default: 16. El bucle se corta
|
|
57
|
+
* antes si una iteración entera no cambia el árbol (punto fijo).
|
|
58
|
+
*/
|
|
59
|
+
maxIterations?: number;
|
|
60
|
+
/**
|
|
61
|
+
* Subconjunto de reglas a aplicar. Default: todas. El orden de
|
|
62
|
+
* aplicación dentro de una iteración es fijo independientemente del
|
|
63
|
+
* orden en este array — se respeta el orden documentado.
|
|
64
|
+
*/
|
|
65
|
+
rules?: MinifyRule[];
|
|
66
|
+
}
|
|
67
|
+
export interface MinifyResult {
|
|
68
|
+
/** Estadísticas del árbol original. */
|
|
69
|
+
original: {
|
|
70
|
+
/** Número de nodos (incluida la raíz). */
|
|
71
|
+
nodes: number;
|
|
72
|
+
/** Profundidad máxima (raíz = 0). */
|
|
73
|
+
depth: number;
|
|
74
|
+
};
|
|
75
|
+
/** Árbol minificado. La raíz preserva la conclusion original. */
|
|
76
|
+
minified: GenericProofNode;
|
|
77
|
+
/** Métricas de reducción. */
|
|
78
|
+
reduction: {
|
|
79
|
+
/** Nodos eliminados (original.nodes - minified.nodes). */
|
|
80
|
+
nodesRemoved: number;
|
|
81
|
+
/** Diferencia de profundidad (puede ser 0 si no compactó MP). */
|
|
82
|
+
depthDelta: number;
|
|
83
|
+
/** Porcentaje de reducción de nodos, redondeado a 2 decimales. */
|
|
84
|
+
percentage: number;
|
|
85
|
+
};
|
|
86
|
+
/** Iteraciones consumidas antes del punto fijo (1-indexed). */
|
|
87
|
+
iterations: number;
|
|
88
|
+
}
|
|
89
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/runtime/proof-minify/types.ts"],"names":[],"mappings":"AAcA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,MAAM,WAAW,gBAAgB;IAC/B,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,gBAAgB,EAAE,CAAC;IAC7B,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,MAAM,MAAM,UAAU,GAAG,cAAc,GAAG,YAAY,GAAG,uBAAuB,GAAG,eAAe,CAAC;AAEnG,MAAM,WAAW,aAAa;IAC5B;;;OAGG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB;;;;OAIG;IACH,KAAK,CAAC,EAAE,UAAU,EAAE,CAAC;CACtB;AAED,MAAM,WAAW,YAAY;IAC3B,uCAAuC;IACvC,QAAQ,EAAE;QACR,0CAA0C;QAC1C,KAAK,EAAE,MAAM,CAAC;QACd,qCAAqC;QACrC,KAAK,EAAE,MAAM,CAAC;KACf,CAAC;IACF,iEAAiE;IACjE,QAAQ,EAAE,gBAAgB,CAAC;IAC3B,6BAA6B;IAC7B,SAAS,EAAE;QACT,0DAA0D;QAC1D,YAAY,EAAE,MAAM,CAAC;QACrB,iEAAiE;QACjE,UAAU,EAAE,MAAM,CAAC;QACnB,kEAAkE;QAClE,UAAU,EAAE,MAAM,CAAC;KACpB,CAAC;IACF,+DAA+D;IAC/D,UAAU,EAAE,MAAM,CAAC;CACpB"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// ============================================================
|
|
3
|
+
// ST Proof Minification — Tipos públicos
|
|
4
|
+
// ============================================================
|
|
5
|
+
//
|
|
6
|
+
// Representación genérica de un árbol de prueba que sirve tanto para
|
|
7
|
+
// natural deduction (intro/elim), cálculo de secuentes (G3, cut),
|
|
8
|
+
// resolución, paso modus-ponens encadenado, etc. La idea es que el
|
|
9
|
+
// reductor sea agnóstico al perfil lógico y opere sobre la estructura
|
|
10
|
+
// `(conclusion, rule, premises)` con strings textuales.
|
|
11
|
+
//
|
|
12
|
+
// El minificador NO valida que la prueba sea correcta — asume que el
|
|
13
|
+
// input ya es válido y se limita a aplicar transformaciones que
|
|
14
|
+
// preservan la conclusión y la corrección del árbol.
|
|
15
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
16
|
+
//# sourceMappingURL=types.js.map
|