@stevenvo780/st-lang 4.3.0 → 4.5.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/coinduction/index.d.ts +136 -0
- package/dist/coinduction/index.d.ts.map +1 -0
- package/dist/coinduction/index.js +318 -0
- package/dist/coinduction/index.js.map +1 -0
- package/dist/combinators-ski/abstract.d.ts +5 -0
- package/dist/combinators-ski/abstract.d.ts.map +1 -0
- package/dist/combinators-ski/abstract.js +88 -0
- package/dist/combinators-ski/abstract.js.map +1 -0
- package/dist/combinators-ski/index.d.ts +6 -0
- package/dist/combinators-ski/index.d.ts.map +1 -0
- package/dist/combinators-ski/index.js +30 -0
- package/dist/combinators-ski/index.js.map +1 -0
- package/dist/combinators-ski/reduce.d.ts +10 -0
- package/dist/combinators-ski/reduce.d.ts.map +1 -0
- package/dist/combinators-ski/reduce.js +118 -0
- package/dist/combinators-ski/reduce.js.map +1 -0
- package/dist/combinators-ski/types.d.ts +23 -0
- package/dist/combinators-ski/types.d.ts.map +1 -0
- package/dist/combinators-ski/types.js +102 -0
- package/dist/combinators-ski/types.js.map +1 -0
- package/dist/constructive-reals/index.d.ts +132 -0
- package/dist/constructive-reals/index.d.ts.map +1 -0
- package/dist/constructive-reals/index.js +723 -0
- package/dist/constructive-reals/index.js.map +1 -0
- package/dist/game-semantics/convert.d.ts +4 -0
- package/dist/game-semantics/convert.d.ts.map +1 -0
- package/dist/game-semantics/convert.js +28 -0
- package/dist/game-semantics/convert.js.map +1 -0
- package/dist/game-semantics/index.d.ts +6 -0
- package/dist/game-semantics/index.d.ts.map +1 -0
- package/dist/game-semantics/index.js +28 -0
- package/dist/game-semantics/index.js.map +1 -0
- package/dist/game-semantics/strategy.d.ts +34 -0
- package/dist/game-semantics/strategy.d.ts.map +1 -0
- package/dist/game-semantics/strategy.js +336 -0
- package/dist/game-semantics/strategy.js.map +1 -0
- package/dist/game-semantics/types.d.ts +64 -0
- package/dist/game-semantics/types.d.ts.map +1 -0
- package/dist/game-semantics/types.js +78 -0
- package/dist/game-semantics/types.js.map +1 -0
- package/dist/higher-order-unify/index.d.ts +5 -0
- package/dist/higher-order-unify/index.d.ts.map +1 -0
- package/dist/higher-order-unify/index.js +27 -0
- package/dist/higher-order-unify/index.js.map +1 -0
- package/dist/higher-order-unify/normalize.d.ts +14 -0
- package/dist/higher-order-unify/normalize.d.ts.map +1 -0
- package/dist/higher-order-unify/normalize.js +191 -0
- package/dist/higher-order-unify/normalize.js.map +1 -0
- package/dist/higher-order-unify/pattern.d.ts +4 -0
- package/dist/higher-order-unify/pattern.d.ts.map +1 -0
- package/dist/higher-order-unify/pattern.js +70 -0
- package/dist/higher-order-unify/pattern.js.map +1 -0
- package/dist/higher-order-unify/types.d.ts +19 -0
- package/dist/higher-order-unify/types.d.ts.map +1 -0
- package/dist/higher-order-unify/types.js +14 -0
- package/dist/higher-order-unify/types.js.map +1 -0
- package/dist/higher-order-unify/unify.d.ts +5 -0
- package/dist/higher-order-unify/unify.d.ts.map +1 -0
- package/dist/higher-order-unify/unify.js +306 -0
- package/dist/higher-order-unify/unify.js.map +1 -0
- package/dist/index.d.ts +4 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +36 -2
- package/dist/index.js.map +1 -1
- package/dist/lambda-calc/church.d.ts.map +1 -1
- package/dist/lambda-calc/church.js.map +1 -1
- package/dist/lambda-calc/combinators.d.ts.map +1 -1
- package/dist/lambda-calc/combinators.js.map +1 -1
- package/dist/lambda-calc/index.d.ts +1 -1
- package/dist/lambda-calc/index.d.ts.map +1 -1
- package/dist/lambda-calc/index.js.map +1 -1
- 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/nbe/index.d.ts +3 -0
- package/dist/nbe/index.d.ts.map +1 -0
- package/dist/nbe/index.js +25 -0
- package/dist/nbe/index.js.map +1 -0
- package/dist/nbe/nbe.d.ts +7 -0
- package/dist/nbe/nbe.d.ts.map +1 -0
- package/dist/nbe/nbe.js +118 -0
- package/dist/nbe/nbe.js.map +1 -0
- package/dist/nbe/types.d.ts +54 -0
- package/dist/nbe/types.d.ts.map +1 -0
- package/dist/nbe/types.js +117 -0
- package/dist/nbe/types.js.map +1 -0
- package/dist/profile-bridge/index.d.ts +64 -0
- package/dist/profile-bridge/index.d.ts.map +1 -0
- package/dist/profile-bridge/index.js +328 -0
- package/dist/profile-bridge/index.js.map +1 -0
- package/dist/profiles/many-valued/index.d.ts.map +1 -1
- package/dist/profiles/many-valued/index.js.map +1 -1
- 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/proof-nets/construct.d.ts +3 -0
- package/dist/proof-nets/construct.d.ts.map +1 -0
- package/dist/proof-nets/construct.js +85 -0
- package/dist/proof-nets/construct.js.map +1 -0
- package/dist/proof-nets/correctness.d.ts +3 -0
- package/dist/proof-nets/correctness.d.ts.map +1 -0
- package/dist/proof-nets/correctness.js +213 -0
- package/dist/proof-nets/correctness.js.map +1 -0
- package/dist/proof-nets/cut-elim.d.ts +9 -0
- package/dist/proof-nets/cut-elim.d.ts.map +1 -0
- package/dist/proof-nets/cut-elim.js +149 -0
- package/dist/proof-nets/cut-elim.js.map +1 -0
- package/dist/proof-nets/index.d.ts +6 -0
- package/dist/proof-nets/index.d.ts.map +1 -0
- package/dist/proof-nets/index.js +33 -0
- package/dist/proof-nets/index.js.map +1 -0
- package/dist/proof-nets/types.d.ts +36 -0
- package/dist/proof-nets/types.d.ts.map +1 -0
- package/dist/proof-nets/types.js +89 -0
- package/dist/proof-nets/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/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/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/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/symbolic-diff/differentiate.d.ts.map +1 -1
- package/dist/runtime/symbolic-diff/differentiate.js.map +1 -1
- package/dist/runtime/symbolic-diff/index.d.ts +1 -1
- package/dist/runtime/symbolic-diff/index.d.ts.map +1 -1
- package/dist/runtime/symbolic-diff/index.js.map +1 -1
- package/dist/runtime/symbolic-diff/parse.d.ts.map +1 -1
- package/dist/runtime/symbolic-diff/parse.js +7 -1
- package/dist/runtime/symbolic-diff/parse.js.map +1 -1
- 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/tableau-framework/TableauProver.d.ts +10 -0
- package/dist/tableau-framework/TableauProver.d.ts.map +1 -0
- package/dist/tableau-framework/TableauProver.js +118 -0
- package/dist/tableau-framework/TableauProver.js.map +1 -0
- package/dist/tableau-framework/index.d.ts +5 -0
- package/dist/tableau-framework/index.d.ts.map +1 -0
- package/dist/tableau-framework/index.js +11 -0
- package/dist/tableau-framework/index.js.map +1 -0
- package/dist/tableau-framework/propositional.d.ts +11 -0
- package/dist/tableau-framework/propositional.d.ts.map +1 -0
- package/dist/tableau-framework/propositional.js +143 -0
- package/dist/tableau-framework/propositional.js.map +1 -0
- package/dist/tableau-framework/types.d.ts +32 -0
- package/dist/tableau-framework/types.d.ts.map +1 -0
- package/dist/tableau-framework/types.js +6 -0
- package/dist/tableau-framework/types.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/coinduction/coinduction.test.d.ts +2 -0
- package/dist/tests/coinduction/coinduction.test.d.ts.map +1 -0
- package/dist/tests/coinduction/coinduction.test.js +217 -0
- package/dist/tests/coinduction/coinduction.test.js.map +1 -0
- package/dist/tests/combinators-ski/combinators-ski.test.d.ts +2 -0
- package/dist/tests/combinators-ski/combinators-ski.test.d.ts.map +1 -0
- package/dist/tests/combinators-ski/combinators-ski.test.js +211 -0
- package/dist/tests/combinators-ski/combinators-ski.test.js.map +1 -0
- package/dist/tests/constructive-reals/constructive-reals.test.d.ts +2 -0
- package/dist/tests/constructive-reals/constructive-reals.test.d.ts.map +1 -0
- package/dist/tests/constructive-reals/constructive-reals.test.js +357 -0
- package/dist/tests/constructive-reals/constructive-reals.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/game-semantics/game-semantics.test.d.ts +2 -0
- package/dist/tests/game-semantics/game-semantics.test.d.ts.map +1 -0
- package/dist/tests/game-semantics/game-semantics.test.js +143 -0
- package/dist/tests/game-semantics/game-semantics.test.js.map +1 -0
- package/dist/tests/higher-order-unify/ho-unify.test.d.ts +2 -0
- package/dist/tests/higher-order-unify/ho-unify.test.d.ts.map +1 -0
- package/dist/tests/higher-order-unify/ho-unify.test.js +264 -0
- package/dist/tests/higher-order-unify/ho-unify.test.js.map +1 -0
- package/dist/tests/integration/cross-modules.test.d.ts +8 -0
- package/dist/tests/integration/cross-modules.test.d.ts.map +1 -0
- package/dist/tests/integration/cross-modules.test.js +668 -0
- package/dist/tests/integration/cross-modules.test.js.map +1 -0
- package/dist/tests/lambda-calc/lambda-calc.test.js.map +1 -1
- package/dist/tests/many-valued/many-valued.test.js.map +1 -1
- 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/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/nbe/nbe.test.d.ts +2 -0
- package/dist/tests/nbe/nbe.test.d.ts.map +1 -0
- package/dist/tests/nbe/nbe.test.js +121 -0
- package/dist/tests/nbe/nbe.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/profile-bridge/translations.test.d.ts +2 -0
- package/dist/tests/profile-bridge/translations.test.d.ts.map +1 -0
- package/dist/tests/profile-bridge/translations.test.js +266 -0
- package/dist/tests/profile-bridge/translations.test.js.map +1 -0
- package/dist/tests/proof-nets/proof-nets.test.d.ts +2 -0
- package/dist/tests/proof-nets/proof-nets.test.d.ts.map +1 -0
- package/dist/tests/proof-nets/proof-nets.test.js +263 -0
- package/dist/tests/proof-nets/proof-nets.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/symbolic-diff/symbolic-diff.test.js.map +1 -1
- 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/tableau-framework/tableau.test.d.ts +2 -0
- package/dist/tests/tableau-framework/tableau.test.d.ts.map +1 -0
- package/dist/tests/tableau-framework/tableau.test.js +196 -0
- package/dist/tests/tableau-framework/tableau.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,369 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// ============================================================
|
|
3
|
+
// Refinement types — Parser y evaluador de predicados
|
|
4
|
+
// ============================================================
|
|
5
|
+
//
|
|
6
|
+
// Los predicados se escriben como cadenas: "x > 0 && x < 100".
|
|
7
|
+
// Aquí va un parser recursivo-descendente minimalista y un
|
|
8
|
+
// evaluador sobre un entorno de variables. La gramática soportada:
|
|
9
|
+
//
|
|
10
|
+
// expr := or
|
|
11
|
+
// or := and ('||' and)*
|
|
12
|
+
// and := cmp ('&&' cmp)*
|
|
13
|
+
// cmp := add (op add)? op ∈ { <, <=, >, >=, ==, != }
|
|
14
|
+
// add := mul (('+'|'-') mul)*
|
|
15
|
+
// mul := unary (('*'|'/') unary)*
|
|
16
|
+
// unary := '!' unary | '-' unary | atom
|
|
17
|
+
// atom := number | bool | ident | '(' expr ')'
|
|
18
|
+
//
|
|
19
|
+
// El módulo no pretende cubrir aritmética completa: alcanza para
|
|
20
|
+
// los predicados típicos de un sistema didáctico (rangos, igualdades).
|
|
21
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
22
|
+
exports.parsePredicate = parsePredicate;
|
|
23
|
+
exports.freeVars = freeVars;
|
|
24
|
+
exports.substVar = substVar;
|
|
25
|
+
exports.renameVar = renameVar;
|
|
26
|
+
exports.predicateToString = predicateToString;
|
|
27
|
+
exports.evalPredicate = evalPredicate;
|
|
28
|
+
function tokenize(input) {
|
|
29
|
+
const out = [];
|
|
30
|
+
let i = 0;
|
|
31
|
+
const s = input;
|
|
32
|
+
while (i < s.length) {
|
|
33
|
+
const c = s[i] ?? '';
|
|
34
|
+
if (c === ' ' || c === '\t' || c === '\n' || c === '\r') {
|
|
35
|
+
i++;
|
|
36
|
+
continue;
|
|
37
|
+
}
|
|
38
|
+
if (c === '(') {
|
|
39
|
+
out.push({ type: 'lparen' });
|
|
40
|
+
i++;
|
|
41
|
+
continue;
|
|
42
|
+
}
|
|
43
|
+
if (c === ')') {
|
|
44
|
+
out.push({ type: 'rparen' });
|
|
45
|
+
i++;
|
|
46
|
+
continue;
|
|
47
|
+
}
|
|
48
|
+
// string literal
|
|
49
|
+
if (c === '"') {
|
|
50
|
+
let j = i + 1;
|
|
51
|
+
let buf = '';
|
|
52
|
+
while (j < s.length && s[j] !== '"') {
|
|
53
|
+
buf += s[j];
|
|
54
|
+
j++;
|
|
55
|
+
}
|
|
56
|
+
out.push({ type: 'str', value: buf });
|
|
57
|
+
i = j + 1;
|
|
58
|
+
continue;
|
|
59
|
+
}
|
|
60
|
+
// multichar operators
|
|
61
|
+
const two = s.slice(i, i + 2);
|
|
62
|
+
if (['<=', '>=', '==', '!=', '&&', '||'].includes(two)) {
|
|
63
|
+
out.push({ type: 'op', value: two });
|
|
64
|
+
i += 2;
|
|
65
|
+
continue;
|
|
66
|
+
}
|
|
67
|
+
if ('+-*/<>!'.includes(c)) {
|
|
68
|
+
out.push({ type: 'op', value: c });
|
|
69
|
+
i++;
|
|
70
|
+
continue;
|
|
71
|
+
}
|
|
72
|
+
// number
|
|
73
|
+
if (c >= '0' && c <= '9') {
|
|
74
|
+
let j = i;
|
|
75
|
+
while (j < s.length) {
|
|
76
|
+
const ch = s[j] ?? '';
|
|
77
|
+
if (!((ch >= '0' && ch <= '9') || ch === '.'))
|
|
78
|
+
break;
|
|
79
|
+
j++;
|
|
80
|
+
}
|
|
81
|
+
out.push({ type: 'num', value: Number(s.slice(i, j)) });
|
|
82
|
+
i = j;
|
|
83
|
+
continue;
|
|
84
|
+
}
|
|
85
|
+
// ident / keyword
|
|
86
|
+
if ((c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z') || c === '_') {
|
|
87
|
+
let j = i;
|
|
88
|
+
while (j < s.length) {
|
|
89
|
+
const ch = s[j] ?? '';
|
|
90
|
+
if (!((ch >= 'a' && ch <= 'z') ||
|
|
91
|
+
(ch >= 'A' && ch <= 'Z') ||
|
|
92
|
+
(ch >= '0' && ch <= '9') ||
|
|
93
|
+
ch === '_'))
|
|
94
|
+
break;
|
|
95
|
+
j++;
|
|
96
|
+
}
|
|
97
|
+
const word = s.slice(i, j);
|
|
98
|
+
if (word === 'true')
|
|
99
|
+
out.push({ type: 'bool', value: true });
|
|
100
|
+
else if (word === 'false')
|
|
101
|
+
out.push({ type: 'bool', value: false });
|
|
102
|
+
else
|
|
103
|
+
out.push({ type: 'ident', value: word });
|
|
104
|
+
i = j;
|
|
105
|
+
continue;
|
|
106
|
+
}
|
|
107
|
+
throw new Error(`predicate lexer: caracter inesperado "${c}" en posición ${i}`);
|
|
108
|
+
}
|
|
109
|
+
out.push({ type: 'eof' });
|
|
110
|
+
return out;
|
|
111
|
+
}
|
|
112
|
+
// ---------- Parser ----------
|
|
113
|
+
class Parser {
|
|
114
|
+
tokens;
|
|
115
|
+
pos = 0;
|
|
116
|
+
constructor(tokens) {
|
|
117
|
+
this.tokens = tokens;
|
|
118
|
+
}
|
|
119
|
+
peek() {
|
|
120
|
+
return this.tokens[this.pos] ?? { type: 'eof' };
|
|
121
|
+
}
|
|
122
|
+
next() {
|
|
123
|
+
const t = this.tokens[this.pos] ?? { type: 'eof' };
|
|
124
|
+
this.pos++;
|
|
125
|
+
return t;
|
|
126
|
+
}
|
|
127
|
+
parseExpr() {
|
|
128
|
+
const e = this.parseOr();
|
|
129
|
+
if (this.peek().type !== 'eof') {
|
|
130
|
+
throw new Error('predicate parser: tokens sobrantes');
|
|
131
|
+
}
|
|
132
|
+
return e;
|
|
133
|
+
}
|
|
134
|
+
parseOr() {
|
|
135
|
+
let left = this.parseAnd();
|
|
136
|
+
while (this.peek().type === 'op' && this.peek().value === '||') {
|
|
137
|
+
this.next();
|
|
138
|
+
const right = this.parseAnd();
|
|
139
|
+
left = { kind: 'binop', op: '||', left, right };
|
|
140
|
+
}
|
|
141
|
+
return left;
|
|
142
|
+
}
|
|
143
|
+
parseAnd() {
|
|
144
|
+
let left = this.parseCmp();
|
|
145
|
+
while (this.peek().type === 'op' && this.peek().value === '&&') {
|
|
146
|
+
this.next();
|
|
147
|
+
const right = this.parseCmp();
|
|
148
|
+
left = { kind: 'binop', op: '&&', left, right };
|
|
149
|
+
}
|
|
150
|
+
return left;
|
|
151
|
+
}
|
|
152
|
+
parseCmp() {
|
|
153
|
+
const left = this.parseAdd();
|
|
154
|
+
const t = this.peek();
|
|
155
|
+
if (t.type === 'op' && ['<', '<=', '>', '>=', '==', '!='].includes(t.value)) {
|
|
156
|
+
this.next();
|
|
157
|
+
const right = this.parseAdd();
|
|
158
|
+
return {
|
|
159
|
+
kind: 'binop',
|
|
160
|
+
op: t.value,
|
|
161
|
+
left,
|
|
162
|
+
right,
|
|
163
|
+
};
|
|
164
|
+
}
|
|
165
|
+
return left;
|
|
166
|
+
}
|
|
167
|
+
parseAdd() {
|
|
168
|
+
let left = this.parseMul();
|
|
169
|
+
while (this.peek().type === 'op' &&
|
|
170
|
+
['+', '-'].includes(this.peek().value)) {
|
|
171
|
+
const op = this.next().value;
|
|
172
|
+
const right = this.parseMul();
|
|
173
|
+
left = { kind: 'binop', op, left, right };
|
|
174
|
+
}
|
|
175
|
+
return left;
|
|
176
|
+
}
|
|
177
|
+
parseMul() {
|
|
178
|
+
let left = this.parseUnary();
|
|
179
|
+
while (this.peek().type === 'op' &&
|
|
180
|
+
['*', '/'].includes(this.peek().value)) {
|
|
181
|
+
const op = this.next().value;
|
|
182
|
+
const right = this.parseUnary();
|
|
183
|
+
left = { kind: 'binop', op, left, right };
|
|
184
|
+
}
|
|
185
|
+
return left;
|
|
186
|
+
}
|
|
187
|
+
parseUnary() {
|
|
188
|
+
const t = this.peek();
|
|
189
|
+
if (t.type === 'op' && (t.value === '!' || t.value === '-')) {
|
|
190
|
+
this.next();
|
|
191
|
+
const arg = this.parseUnary();
|
|
192
|
+
return { kind: 'unop', op: t.value, arg };
|
|
193
|
+
}
|
|
194
|
+
return this.parseAtom();
|
|
195
|
+
}
|
|
196
|
+
parseAtom() {
|
|
197
|
+
const t = this.next();
|
|
198
|
+
if (t.type === 'num')
|
|
199
|
+
return { kind: 'num', value: t.value };
|
|
200
|
+
if (t.type === 'bool')
|
|
201
|
+
return { kind: 'bool', value: t.value };
|
|
202
|
+
if (t.type === 'str')
|
|
203
|
+
return { kind: 'str', value: t.value };
|
|
204
|
+
if (t.type === 'ident')
|
|
205
|
+
return { kind: 'var', name: t.value };
|
|
206
|
+
if (t.type === 'lparen') {
|
|
207
|
+
const e = this.parseOr();
|
|
208
|
+
const close = this.next();
|
|
209
|
+
if (close.type !== 'rparen')
|
|
210
|
+
throw new Error('predicate parser: falta ")"');
|
|
211
|
+
return e;
|
|
212
|
+
}
|
|
213
|
+
throw new Error(`predicate parser: token inesperado ${JSON.stringify(t)}`);
|
|
214
|
+
}
|
|
215
|
+
}
|
|
216
|
+
const PARSE_CACHE = new Map();
|
|
217
|
+
function parsePredicate(src) {
|
|
218
|
+
const trimmed = (src ?? '').trim();
|
|
219
|
+
if (trimmed === '' || trimmed === 'true')
|
|
220
|
+
return { kind: 'bool', value: true };
|
|
221
|
+
if (trimmed === 'false')
|
|
222
|
+
return { kind: 'bool', value: false };
|
|
223
|
+
const cached = PARSE_CACHE.get(trimmed);
|
|
224
|
+
if (cached)
|
|
225
|
+
return cached;
|
|
226
|
+
const expr = new Parser(tokenize(trimmed)).parseExpr();
|
|
227
|
+
PARSE_CACHE.set(trimmed, expr);
|
|
228
|
+
return expr;
|
|
229
|
+
}
|
|
230
|
+
// ---------- Free variables ----------
|
|
231
|
+
function freeVars(e, acc = new Set()) {
|
|
232
|
+
switch (e.kind) {
|
|
233
|
+
case 'num':
|
|
234
|
+
case 'bool':
|
|
235
|
+
case 'str':
|
|
236
|
+
return acc;
|
|
237
|
+
case 'var':
|
|
238
|
+
acc.add(e.name);
|
|
239
|
+
return acc;
|
|
240
|
+
case 'unop':
|
|
241
|
+
return freeVars(e.arg, acc);
|
|
242
|
+
case 'binop':
|
|
243
|
+
freeVars(e.left, acc);
|
|
244
|
+
freeVars(e.right, acc);
|
|
245
|
+
return acc;
|
|
246
|
+
}
|
|
247
|
+
}
|
|
248
|
+
// ---------- Substitution (rename var → expr) ----------
|
|
249
|
+
function substVar(e, name, replacement) {
|
|
250
|
+
switch (e.kind) {
|
|
251
|
+
case 'num':
|
|
252
|
+
case 'bool':
|
|
253
|
+
case 'str':
|
|
254
|
+
return e;
|
|
255
|
+
case 'var':
|
|
256
|
+
return e.name === name ? replacement : e;
|
|
257
|
+
case 'unop':
|
|
258
|
+
return { kind: 'unop', op: e.op, arg: substVar(e.arg, name, replacement) };
|
|
259
|
+
case 'binop':
|
|
260
|
+
return {
|
|
261
|
+
kind: 'binop',
|
|
262
|
+
op: e.op,
|
|
263
|
+
left: substVar(e.left, name, replacement),
|
|
264
|
+
right: substVar(e.right, name, replacement),
|
|
265
|
+
};
|
|
266
|
+
}
|
|
267
|
+
}
|
|
268
|
+
function renameVar(predicate, fromName, toName) {
|
|
269
|
+
if (fromName === toName)
|
|
270
|
+
return predicate;
|
|
271
|
+
const ast = parsePredicate(predicate);
|
|
272
|
+
const renamed = substVar(ast, fromName, { kind: 'var', name: toName });
|
|
273
|
+
return predicateToString(renamed);
|
|
274
|
+
}
|
|
275
|
+
// ---------- Pretty-print de la AST a cadena canónica ----------
|
|
276
|
+
function predicateToString(e) {
|
|
277
|
+
switch (e.kind) {
|
|
278
|
+
case 'num':
|
|
279
|
+
return String(e.value);
|
|
280
|
+
case 'bool':
|
|
281
|
+
return e.value ? 'true' : 'false';
|
|
282
|
+
case 'str':
|
|
283
|
+
return JSON.stringify(e.value);
|
|
284
|
+
case 'var':
|
|
285
|
+
return e.name;
|
|
286
|
+
case 'unop':
|
|
287
|
+
return `${e.op}(${predicateToString(e.arg)})`;
|
|
288
|
+
case 'binop':
|
|
289
|
+
return `(${predicateToString(e.left)} ${e.op} ${predicateToString(e.right)})`;
|
|
290
|
+
}
|
|
291
|
+
}
|
|
292
|
+
function evalPredicate(e, env) {
|
|
293
|
+
switch (e.kind) {
|
|
294
|
+
case 'num':
|
|
295
|
+
return e.value;
|
|
296
|
+
case 'bool':
|
|
297
|
+
return e.value;
|
|
298
|
+
case 'str':
|
|
299
|
+
return e.value;
|
|
300
|
+
case 'var':
|
|
301
|
+
if (!(e.name in env)) {
|
|
302
|
+
throw new Error(`evalPredicate: variable libre "${e.name}" no está en el entorno`);
|
|
303
|
+
}
|
|
304
|
+
return env[e.name];
|
|
305
|
+
case 'unop': {
|
|
306
|
+
const v = evalPredicate(e.arg, env);
|
|
307
|
+
if (e.op === '!') {
|
|
308
|
+
if (typeof v !== 'boolean')
|
|
309
|
+
throw new Error('evalPredicate: ! aplicado a no-booleano');
|
|
310
|
+
return !v;
|
|
311
|
+
}
|
|
312
|
+
// op === '-'
|
|
313
|
+
if (typeof v !== 'number')
|
|
314
|
+
throw new Error('evalPredicate: - aplicado a no-número');
|
|
315
|
+
return -v;
|
|
316
|
+
}
|
|
317
|
+
case 'binop': {
|
|
318
|
+
const l = evalPredicate(e.left, env);
|
|
319
|
+
const r = evalPredicate(e.right, env);
|
|
320
|
+
switch (e.op) {
|
|
321
|
+
case '+':
|
|
322
|
+
if (typeof l === 'number' && typeof r === 'number')
|
|
323
|
+
return l + r;
|
|
324
|
+
if (typeof l === 'string' && typeof r === 'string')
|
|
325
|
+
return l + r;
|
|
326
|
+
throw new Error('evalPredicate: + sólo entre dos números o dos strings');
|
|
327
|
+
case '-':
|
|
328
|
+
case '*':
|
|
329
|
+
case '/': {
|
|
330
|
+
if (typeof l !== 'number' || typeof r !== 'number')
|
|
331
|
+
throw new Error(`evalPredicate: ${e.op} sólo entre números`);
|
|
332
|
+
if (e.op === '-')
|
|
333
|
+
return l - r;
|
|
334
|
+
if (e.op === '*')
|
|
335
|
+
return l * r;
|
|
336
|
+
if (r === 0)
|
|
337
|
+
throw new Error('evalPredicate: división por cero');
|
|
338
|
+
return l / r;
|
|
339
|
+
}
|
|
340
|
+
case '<':
|
|
341
|
+
case '<=':
|
|
342
|
+
case '>':
|
|
343
|
+
case '>=':
|
|
344
|
+
if (typeof l !== 'number' || typeof r !== 'number')
|
|
345
|
+
throw new Error(`evalPredicate: ${e.op} requiere números`);
|
|
346
|
+
if (e.op === '<')
|
|
347
|
+
return l < r;
|
|
348
|
+
if (e.op === '<=')
|
|
349
|
+
return l <= r;
|
|
350
|
+
if (e.op === '>')
|
|
351
|
+
return l > r;
|
|
352
|
+
return l >= r;
|
|
353
|
+
case '==':
|
|
354
|
+
return l === r;
|
|
355
|
+
case '!=':
|
|
356
|
+
return l !== r;
|
|
357
|
+
case '&&':
|
|
358
|
+
if (typeof l !== 'boolean' || typeof r !== 'boolean')
|
|
359
|
+
throw new Error('evalPredicate: && requiere booleanos');
|
|
360
|
+
return l && r;
|
|
361
|
+
case '||':
|
|
362
|
+
if (typeof l !== 'boolean' || typeof r !== 'boolean')
|
|
363
|
+
throw new Error('evalPredicate: || requiere booleanos');
|
|
364
|
+
return l || r;
|
|
365
|
+
}
|
|
366
|
+
}
|
|
367
|
+
}
|
|
368
|
+
}
|
|
369
|
+
//# sourceMappingURL=predicate.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"predicate.js","sourceRoot":"","sources":["../../src/refinement-types/predicate.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
export interface SolverOpts {
|
|
2
|
+
/** Cota inclusiva para enteros: dominio [-intBound, +intBound]. */
|
|
3
|
+
intBound?: number;
|
|
4
|
+
/** Cota total de intentos para abortar enumeración excesiva. */
|
|
5
|
+
maxAttempts?: number;
|
|
6
|
+
}
|
|
7
|
+
export interface CheckResult {
|
|
8
|
+
satisfiable: boolean;
|
|
9
|
+
counter?: Record<string, number | boolean>;
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* checkVC — devuelve si la conjunción de predicados es satisfacible.
|
|
13
|
+
* Si lo es, incluye un testigo `counter` con la asignación encontrada.
|
|
14
|
+
* El nombre "counter" se conserva por compatibilidad con la firma
|
|
15
|
+
* típica de verificadores que buscan contraejemplos de implicaciones.
|
|
16
|
+
*/
|
|
17
|
+
export declare function checkVC(predicates: string[], opts?: SolverOpts): CheckResult;
|
|
18
|
+
/**
|
|
19
|
+
* implies — chequea si `premises ⇒ conclusion` es válido en el dominio
|
|
20
|
+
* acotado. Implementado como búsqueda de contraejemplo a
|
|
21
|
+
* `premises ∧ ¬conclusion`.
|
|
22
|
+
*/
|
|
23
|
+
export declare function implies(premises: string[], conclusion: string, opts?: SolverOpts): boolean;
|
|
24
|
+
//# sourceMappingURL=solver.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"solver.d.ts","sourceRoot":"","sources":["../../src/refinement-types/solver.ts"],"names":[],"mappings":"AA2BA,MAAM,WAAW,UAAU;IACzB,mEAAmE;IACnE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,gEAAgE;IAChE,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,WAAW;IAC1B,WAAW,EAAE,OAAO,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC;CAC5C;AAsGD;;;;;GAKG;AACH,wBAAgB,OAAO,CAAC,UAAU,EAAE,MAAM,EAAE,EAAE,IAAI,GAAE,UAAe,GAAG,WAAW,CAoEhF;AAED;;;;GAIG;AACH,wBAAgB,OAAO,CAAC,QAAQ,EAAE,MAAM,EAAE,EAAE,UAAU,EAAE,MAAM,EAAE,IAAI,GAAE,UAAe,GAAG,OAAO,CAM9F"}
|
|
@@ -0,0 +1,207 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// ============================================================
|
|
3
|
+
// Refinement types — Solver bounded de VCs
|
|
4
|
+
// ============================================================
|
|
5
|
+
//
|
|
6
|
+
// Las VCs (verification conditions) son listas de predicados que
|
|
7
|
+
// se conjuntan. checkVC(P) responde:
|
|
8
|
+
// - satisfiable: ¿existe asignación que haga ⋀P verdadero?
|
|
9
|
+
// - counter: dicha asignación si la hay (testigo).
|
|
10
|
+
//
|
|
11
|
+
// Algoritmo: enumeración acotada sobre Int en [-bound, +bound]
|
|
12
|
+
// y sobre Bool. Es deliberadamente simple — Liquid Haskell usa Z3,
|
|
13
|
+
// nosotros usamos búsqueda finita suficiente para los tests
|
|
14
|
+
// del módulo y para subtipado de rangos pequeños.
|
|
15
|
+
//
|
|
16
|
+
// Para chequear "P ⇒ Q" (validez del implicador), se busca un
|
|
17
|
+
// contraejemplo a "P ∧ ¬Q": si NO se halla en el dominio acotado,
|
|
18
|
+
// se reporta válido.
|
|
19
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
20
|
+
exports.checkVC = checkVC;
|
|
21
|
+
exports.implies = implies;
|
|
22
|
+
const predicate_1 = require("./predicate");
|
|
23
|
+
/**
|
|
24
|
+
* Heurística para clasificar variables libres en booleanas o enteras.
|
|
25
|
+
* Una variable se marca como booleana si aparece como operando directo
|
|
26
|
+
* de !, &&, || o en comparaciones contra booleanos literales.
|
|
27
|
+
*/
|
|
28
|
+
function classifyVars(ast) {
|
|
29
|
+
const kinds = new Map();
|
|
30
|
+
function visit(e, expectedBool) {
|
|
31
|
+
switch (e.kind) {
|
|
32
|
+
case 'num':
|
|
33
|
+
case 'bool':
|
|
34
|
+
case 'str':
|
|
35
|
+
return;
|
|
36
|
+
case 'var':
|
|
37
|
+
if (expectedBool) {
|
|
38
|
+
const prev = kinds.get(e.name);
|
|
39
|
+
if (!prev)
|
|
40
|
+
kinds.set(e.name, 'bool');
|
|
41
|
+
}
|
|
42
|
+
else if (!kinds.has(e.name)) {
|
|
43
|
+
kinds.set(e.name, 'int');
|
|
44
|
+
}
|
|
45
|
+
return;
|
|
46
|
+
case 'unop':
|
|
47
|
+
visit(e.arg, e.op === '!');
|
|
48
|
+
return;
|
|
49
|
+
case 'binop': {
|
|
50
|
+
switch (e.op) {
|
|
51
|
+
case '&&':
|
|
52
|
+
case '||':
|
|
53
|
+
visit(e.left, true);
|
|
54
|
+
visit(e.right, true);
|
|
55
|
+
return;
|
|
56
|
+
case '+':
|
|
57
|
+
case '-':
|
|
58
|
+
case '*':
|
|
59
|
+
case '/':
|
|
60
|
+
case '<':
|
|
61
|
+
case '<=':
|
|
62
|
+
case '>':
|
|
63
|
+
case '>=':
|
|
64
|
+
visit(e.left, false);
|
|
65
|
+
visit(e.right, false);
|
|
66
|
+
return;
|
|
67
|
+
case '==':
|
|
68
|
+
case '!=': {
|
|
69
|
+
const rightBool = e.right.kind === 'bool' || e.left.kind === 'bool';
|
|
70
|
+
visit(e.left, rightBool);
|
|
71
|
+
visit(e.right, rightBool);
|
|
72
|
+
return;
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
visit(ast, true); // top-level expected boolean
|
|
79
|
+
return kinds;
|
|
80
|
+
}
|
|
81
|
+
function collectVars(predicates) {
|
|
82
|
+
const all = new Map();
|
|
83
|
+
const asts = [];
|
|
84
|
+
for (const src of predicates) {
|
|
85
|
+
const ast = (0, predicate_1.parsePredicate)(src);
|
|
86
|
+
asts.push(ast);
|
|
87
|
+
const local = classifyVars(ast);
|
|
88
|
+
const free = (0, predicate_1.freeVars)(ast);
|
|
89
|
+
for (const v of free) {
|
|
90
|
+
const newKind = local.get(v) ?? 'int';
|
|
91
|
+
const prev = all.get(v);
|
|
92
|
+
if (!prev)
|
|
93
|
+
all.set(v, newKind);
|
|
94
|
+
else if (prev !== newKind) {
|
|
95
|
+
// conflicto: optamos por 'int' (más informativo)
|
|
96
|
+
all.set(v, 'int');
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
const vars = Array.from(all.entries()).map(([name, kind]) => ({ name, kind }));
|
|
101
|
+
return { vars, asts };
|
|
102
|
+
}
|
|
103
|
+
function envValueAt(info, index, intBound) {
|
|
104
|
+
if (info.kind === 'bool') {
|
|
105
|
+
return index % 2 === 0;
|
|
106
|
+
}
|
|
107
|
+
// enumerar 0, 1, -1, 2, -2, ..., intBound, -intBound
|
|
108
|
+
if (index === 0)
|
|
109
|
+
return 0;
|
|
110
|
+
const half = Math.ceil(index / 2);
|
|
111
|
+
if (half > intBound)
|
|
112
|
+
return intBound + 1; // fuera de cota — caller deberá filtrar
|
|
113
|
+
return index % 2 === 1 ? half : -half;
|
|
114
|
+
}
|
|
115
|
+
function domainSize(info, intBound) {
|
|
116
|
+
if (info.kind === 'bool')
|
|
117
|
+
return 2;
|
|
118
|
+
return 2 * intBound + 1;
|
|
119
|
+
}
|
|
120
|
+
/**
|
|
121
|
+
* checkVC — devuelve si la conjunción de predicados es satisfacible.
|
|
122
|
+
* Si lo es, incluye un testigo `counter` con la asignación encontrada.
|
|
123
|
+
* El nombre "counter" se conserva por compatibilidad con la firma
|
|
124
|
+
* típica de verificadores que buscan contraejemplos de implicaciones.
|
|
125
|
+
*/
|
|
126
|
+
function checkVC(predicates, opts = {}) {
|
|
127
|
+
const intBound = opts.intBound ?? 8;
|
|
128
|
+
const maxAttempts = opts.maxAttempts ?? 50_000;
|
|
129
|
+
// VC vacía o sólo "true": trivialmente satisfacible con env vacío.
|
|
130
|
+
if (predicates.length === 0) {
|
|
131
|
+
return { satisfiable: true, counter: {} };
|
|
132
|
+
}
|
|
133
|
+
const { vars, asts } = collectVars(predicates);
|
|
134
|
+
// Caso sin variables libres: evaluar directo.
|
|
135
|
+
if (vars.length === 0) {
|
|
136
|
+
try {
|
|
137
|
+
for (const a of asts) {
|
|
138
|
+
const v = (0, predicate_1.evalPredicate)(a, {});
|
|
139
|
+
if (v !== true)
|
|
140
|
+
return { satisfiable: false };
|
|
141
|
+
}
|
|
142
|
+
return { satisfiable: true, counter: {} };
|
|
143
|
+
}
|
|
144
|
+
catch {
|
|
145
|
+
return { satisfiable: false };
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
const sizes = vars.map((v) => domainSize(v, intBound));
|
|
149
|
+
const total = sizes.reduce((a, b) => a * b, 1);
|
|
150
|
+
const attempts = Math.min(total, maxAttempts);
|
|
151
|
+
for (let i = 0; i < attempts; i++) {
|
|
152
|
+
const env = {};
|
|
153
|
+
let idx = i;
|
|
154
|
+
let outOfDomain = false;
|
|
155
|
+
for (let j = 0; j < vars.length; j++) {
|
|
156
|
+
const info = vars[j];
|
|
157
|
+
const size = sizes[j];
|
|
158
|
+
const localIdx = idx % size;
|
|
159
|
+
idx = Math.floor(idx / size);
|
|
160
|
+
const val = envValueAt(info, localIdx, intBound);
|
|
161
|
+
if (typeof val === 'number' && Math.abs(val) > intBound) {
|
|
162
|
+
outOfDomain = true;
|
|
163
|
+
break;
|
|
164
|
+
}
|
|
165
|
+
env[info.name] = val;
|
|
166
|
+
}
|
|
167
|
+
if (outOfDomain)
|
|
168
|
+
continue;
|
|
169
|
+
let allTrue = true;
|
|
170
|
+
try {
|
|
171
|
+
for (const a of asts) {
|
|
172
|
+
const v = (0, predicate_1.evalPredicate)(a, env);
|
|
173
|
+
if (v !== true) {
|
|
174
|
+
allTrue = false;
|
|
175
|
+
break;
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
catch {
|
|
180
|
+
allTrue = false;
|
|
181
|
+
}
|
|
182
|
+
if (allTrue) {
|
|
183
|
+
const counter = {};
|
|
184
|
+
for (const v of vars) {
|
|
185
|
+
const val = env[v.name];
|
|
186
|
+
if (typeof val === 'number' || typeof val === 'boolean') {
|
|
187
|
+
counter[v.name] = val;
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
return { satisfiable: true, counter };
|
|
191
|
+
}
|
|
192
|
+
}
|
|
193
|
+
return { satisfiable: false };
|
|
194
|
+
}
|
|
195
|
+
/**
|
|
196
|
+
* implies — chequea si `premises ⇒ conclusion` es válido en el dominio
|
|
197
|
+
* acotado. Implementado como búsqueda de contraejemplo a
|
|
198
|
+
* `premises ∧ ¬conclusion`.
|
|
199
|
+
*/
|
|
200
|
+
function implies(premises, conclusion, opts = {}) {
|
|
201
|
+
const negated = `!(${conclusion})`;
|
|
202
|
+
const res = checkVC([...premises, negated], opts);
|
|
203
|
+
// Si NO encontramos asignación que satisfaga premises ∧ ¬conclusion,
|
|
204
|
+
// entonces la implicación es válida (en el dominio acotado).
|
|
205
|
+
return !res.satisfiable;
|
|
206
|
+
}
|
|
207
|
+
//# sourceMappingURL=solver.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"solver.js","sourceRoot":"","sources":["../../src/refinement-types/solver.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { RefType } from './types';
|
|
2
|
+
import { type SolverOpts } from './solver';
|
|
3
|
+
export interface SubtypeOpts extends SolverOpts {
|
|
4
|
+
/** Predicados adicionales del contexto que pueden asumirse válidos. */
|
|
5
|
+
extraAssumptions?: string[];
|
|
6
|
+
}
|
|
7
|
+
/**
|
|
8
|
+
* isSubtype — devuelve true si T1 <: T2 bajo las suposiciones del contexto.
|
|
9
|
+
*
|
|
10
|
+
* - Para tipos base iguales: chequea P(x) ⇒ Q(x) renombrando el binding.
|
|
11
|
+
* - Para arrows: contravarianza en `from`, covarianza en `to`.
|
|
12
|
+
*/
|
|
13
|
+
export declare function isSubtype(t1: RefType, t2: RefType, opts?: SubtypeOpts): boolean;
|
|
14
|
+
//# sourceMappingURL=subtype.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"subtype.d.ts","sourceRoot":"","sources":["../../src/refinement-types/subtype.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,OAAO,EAAY,MAAM,SAAS,CAAC;AACjD,OAAO,EAAW,KAAK,UAAU,EAAE,MAAM,UAAU,CAAC;AAGpD,MAAM,WAAW,WAAY,SAAQ,UAAU;IAC7C,uEAAuE;IACvE,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAC;CAC7B;AAED;;;;;GAKG;AACH,wBAAgB,SAAS,CAAC,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,OAAO,EAAE,IAAI,GAAE,WAAgB,GAAG,OAAO,CAEnF"}
|