@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,160 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// ============================================================
|
|
3
|
+
// μ-calculus — well-formedness y alternation depth
|
|
4
|
+
// ============================================================
|
|
5
|
+
// Una fórmula μ-cálculo es bien formada cuando:
|
|
6
|
+
// 1. Es "cerrada": cada `var` ligada referencia un `μ`/`ν` que la
|
|
7
|
+
// envuelve sintácticamente.
|
|
8
|
+
// 2. Es "positiva": cada variable ligada aparece bajo un número PAR
|
|
9
|
+
// de negaciones desde su binder. Esto garantiza monotonía del
|
|
10
|
+
// funcional asociado y la existencia de los puntos fijos por
|
|
11
|
+
// Knaster-Tarski.
|
|
12
|
+
//
|
|
13
|
+
// Alternation depth: máxima profundidad de anidamiento alternante
|
|
14
|
+
// μ/ν con variables libres del binder externo. Aproximación estándar
|
|
15
|
+
// (Niwiński/Emerson-Lei): si el body de un μX contiene νY donde Y
|
|
16
|
+
// depende sintácticamente de X (o viceversa), la profundidad sube.
|
|
17
|
+
// Aquí usamos la versión sintáctica simple: cuento bindings μ/ν
|
|
18
|
+
// distintos en el camino raíz→hoja, contando saltos μ↔ν.
|
|
19
|
+
// ============================================================
|
|
20
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
21
|
+
exports.isWellFormed = isWellFormed;
|
|
22
|
+
exports.freeVars = freeVars;
|
|
23
|
+
exports.isClosed = isClosed;
|
|
24
|
+
exports.isPositive = isPositive;
|
|
25
|
+
exports.alternationDepth = alternationDepth;
|
|
26
|
+
/**
|
|
27
|
+
* Verifica que una fórmula sea sintácticamente bien formada:
|
|
28
|
+
* - Cerrada (sin variables libres).
|
|
29
|
+
* - Positiva en cada variable ligada (paridad par de negaciones).
|
|
30
|
+
* - Sin shadowing nocivo: rebindings ocultan al outer, lo cual es
|
|
31
|
+
* legal pero detectable. Aquí lo permitimos.
|
|
32
|
+
*/
|
|
33
|
+
function isWellFormed(phi) {
|
|
34
|
+
return isClosed(phi) && isPositive(phi);
|
|
35
|
+
}
|
|
36
|
+
/** Variables libres del término. */
|
|
37
|
+
function freeVars(phi) {
|
|
38
|
+
const out = new Set();
|
|
39
|
+
collectFree(phi, new Set(), out);
|
|
40
|
+
return out;
|
|
41
|
+
}
|
|
42
|
+
function collectFree(phi, bound, out) {
|
|
43
|
+
switch (phi.kind) {
|
|
44
|
+
case 'atom':
|
|
45
|
+
return;
|
|
46
|
+
case 'var':
|
|
47
|
+
if (!bound.has(phi.name))
|
|
48
|
+
out.add(phi.name);
|
|
49
|
+
return;
|
|
50
|
+
case 'not':
|
|
51
|
+
collectFree(phi.arg, bound, out);
|
|
52
|
+
return;
|
|
53
|
+
case 'and':
|
|
54
|
+
case 'or':
|
|
55
|
+
collectFree(phi.left, bound, out);
|
|
56
|
+
collectFree(phi.right, bound, out);
|
|
57
|
+
return;
|
|
58
|
+
case 'box':
|
|
59
|
+
case 'diamond':
|
|
60
|
+
collectFree(phi.arg, bound, out);
|
|
61
|
+
return;
|
|
62
|
+
case 'mu':
|
|
63
|
+
case 'nu': {
|
|
64
|
+
const nextBound = new Set(bound);
|
|
65
|
+
nextBound.add(phi.bind);
|
|
66
|
+
collectFree(phi.body, nextBound, out);
|
|
67
|
+
return;
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
/** Una fórmula es cerrada cuando no tiene variables libres. */
|
|
72
|
+
function isClosed(phi) {
|
|
73
|
+
return freeVars(phi).size === 0;
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* Una fórmula es positiva cuando toda `var X` ligada por un μ/ν
|
|
77
|
+
* aparece bajo un número par de negaciones desde su binder.
|
|
78
|
+
*
|
|
79
|
+
* Implementación: caminamos el AST con un map `binder → paridad`
|
|
80
|
+
* (0 = par, 1 = impar) que se actualiza al cruzar un `not`. Cuando
|
|
81
|
+
* vemos `var X`, miramos su binder más cercano y verificamos que
|
|
82
|
+
* su paridad relativa sea par.
|
|
83
|
+
*/
|
|
84
|
+
function isPositive(phi) {
|
|
85
|
+
return checkPositive(phi, new Map(), 0);
|
|
86
|
+
}
|
|
87
|
+
function checkPositive(phi, parityAt, parityHere) {
|
|
88
|
+
switch (phi.kind) {
|
|
89
|
+
case 'atom':
|
|
90
|
+
return true;
|
|
91
|
+
case 'var': {
|
|
92
|
+
const parityAtBinder = parityAt.get(phi.name);
|
|
93
|
+
if (parityAtBinder === undefined) {
|
|
94
|
+
// Variable libre: no es responsabilidad de positividad detectarlo.
|
|
95
|
+
return true;
|
|
96
|
+
}
|
|
97
|
+
// Paridad relativa = (parityHere - parityAtBinder) mod 2.
|
|
98
|
+
return (parityHere - parityAtBinder) % 2 === 0;
|
|
99
|
+
}
|
|
100
|
+
case 'not':
|
|
101
|
+
return checkPositive(phi.arg, parityAt, (parityHere + 1) % 2);
|
|
102
|
+
case 'and':
|
|
103
|
+
case 'or':
|
|
104
|
+
return (checkPositive(phi.left, parityAt, parityHere) &&
|
|
105
|
+
checkPositive(phi.right, parityAt, parityHere));
|
|
106
|
+
case 'box':
|
|
107
|
+
case 'diamond':
|
|
108
|
+
return checkPositive(phi.arg, parityAt, parityHere);
|
|
109
|
+
case 'mu':
|
|
110
|
+
case 'nu': {
|
|
111
|
+
const next = new Map(parityAt);
|
|
112
|
+
next.set(phi.bind, parityHere);
|
|
113
|
+
return checkPositive(phi.body, next, parityHere);
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
/**
|
|
118
|
+
* Profundidad de alternancia μ/ν. Métrica clásica:
|
|
119
|
+
* ad(p) = ad(X) = 0
|
|
120
|
+
* ad(¬φ) = ad(◇φ) = ad(□φ) = ad(φ)
|
|
121
|
+
* ad(φ ∧ ψ) = ad(φ ∨ ψ) = max(ad(φ), ad(ψ))
|
|
122
|
+
* ad(μX. φ) = max(1, ad(φ), 1 + maxNuAlt(φ))
|
|
123
|
+
* ad(νX. φ) = max(1, ad(φ), 1 + maxMuAlt(φ))
|
|
124
|
+
* donde `maxNuAlt(φ)` es la profundidad considerando solo subfórmulas
|
|
125
|
+
* con binder ν cuyo cuerpo menciona la variable ligada externamente,
|
|
126
|
+
* y simétrico para μ.
|
|
127
|
+
*
|
|
128
|
+
* Aquí usamos la versión simplificada y muy usada en práctica
|
|
129
|
+
* (Cleaveland/Steffen): contar el cambio de tipo de binder en el
|
|
130
|
+
* camino sintáctico raíz→hoja.
|
|
131
|
+
*/
|
|
132
|
+
function alternationDepth(phi) {
|
|
133
|
+
return computeDepth(phi, null);
|
|
134
|
+
}
|
|
135
|
+
function computeDepth(phi, lastBinder) {
|
|
136
|
+
switch (phi.kind) {
|
|
137
|
+
case 'atom':
|
|
138
|
+
case 'var':
|
|
139
|
+
return 0;
|
|
140
|
+
case 'not':
|
|
141
|
+
case 'box':
|
|
142
|
+
case 'diamond':
|
|
143
|
+
return computeDepth(phi.arg, lastBinder);
|
|
144
|
+
case 'and':
|
|
145
|
+
case 'or':
|
|
146
|
+
return Math.max(computeDepth(phi.left, lastBinder), computeDepth(phi.right, lastBinder));
|
|
147
|
+
case 'mu': {
|
|
148
|
+
const inner = computeDepth(phi.body, 'mu');
|
|
149
|
+
// Mismo tipo de binder consecutivo: pertenece al mismo "segmento"
|
|
150
|
+
// y no aporta alternancia adicional. Cambio (o segmento inicial)
|
|
151
|
+
// suma 1 nivel al conteo del cuerpo.
|
|
152
|
+
return lastBinder === 'mu' ? inner : 1 + inner;
|
|
153
|
+
}
|
|
154
|
+
case 'nu': {
|
|
155
|
+
const inner = computeDepth(phi.body, 'nu');
|
|
156
|
+
return lastBinder === 'nu' ? inner : 1 + inner;
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
//# sourceMappingURL=wellformed.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"wellformed.js","sourceRoot":"","sources":["../../../src/profiles/mu-calculus/wellformed.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { LKProof } from './types';
|
|
2
|
+
/**
|
|
3
|
+
* Elimina todos los cortes de la derivacion. Devuelve una derivacion
|
|
4
|
+
* estructuralmente equivalente al mismo secuente sin nodos `cut`.
|
|
5
|
+
*
|
|
6
|
+
* Implementacion: eliminamos primero los cortes interiores (de las
|
|
7
|
+
* hojas hacia la raiz) y luego reducimos el cut de la raiz aplicando
|
|
8
|
+
* la regla principal correspondiente.
|
|
9
|
+
*/
|
|
10
|
+
export declare function eliminateCut(proof: LKProof): LKProof;
|
|
11
|
+
//# sourceMappingURL=cut-elimination.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cut-elimination.d.ts","sourceRoot":"","sources":["../../../src/profiles/sequent-lk/cut-elimination.ts"],"names":[],"mappings":"AA0BA,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AA+JlC;;;;;;;GAOG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAsBpD"}
|
|
@@ -0,0 +1,216 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// ============================================================
|
|
3
|
+
// LK — Eliminacion de cortes (Hauptsatz de Gentzen, 1934)
|
|
4
|
+
// ============================================================
|
|
5
|
+
//
|
|
6
|
+
// El teorema fundamental dice que toda derivacion LK puede
|
|
7
|
+
// transformarse en una sin cortes. La prueba procede por
|
|
8
|
+
// induccion lexicografica sobre (rango, grado) del cut superior:
|
|
9
|
+
//
|
|
10
|
+
// * rango = altura del cut en el arbol
|
|
11
|
+
// * grado = profundidad de la formula cortada
|
|
12
|
+
//
|
|
13
|
+
// La implementacion aqui combina dos estrategias:
|
|
14
|
+
//
|
|
15
|
+
// 1. Reducciones "principales": cuando la formula cortada es
|
|
16
|
+
// principal en ambas premisas, se aplica la regla de
|
|
17
|
+
// reduccion correspondiente al conectivo (notable: ∧/∨/→/¬).
|
|
18
|
+
// 2. Reduccion estructural: para casos en que la reescritura
|
|
19
|
+
// directa no aplica (ej. cuts internos en sub-derivaciones
|
|
20
|
+
// con weakenings/contractions implicitas), reusamos el
|
|
21
|
+
// prover cut-free `proveLK` como oraculo: por el Hauptsatz,
|
|
22
|
+
// si el secuente es derivable con cortes, lo es sin ellos,
|
|
23
|
+
// y `proveLK` es completo para LK clasico cut-free.
|
|
24
|
+
//
|
|
25
|
+
// El resultado garantiza `hasCut(out) === false` cuando la entrada
|
|
26
|
+
// es valida y derivable.
|
|
27
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
28
|
+
exports.eliminateCut = eliminateCut;
|
|
29
|
+
const util_1 = require("./util");
|
|
30
|
+
const prover_1 = require("./prover");
|
|
31
|
+
function eliminateCutAtRoot(proof) {
|
|
32
|
+
if (proof.rule !== 'cut')
|
|
33
|
+
return proof;
|
|
34
|
+
const [p1, p2] = proof.premises;
|
|
35
|
+
if (!p1 || !p2 || !proof.cutFormula)
|
|
36
|
+
return proof;
|
|
37
|
+
const A = proof.cutFormula;
|
|
38
|
+
const ak = (0, util_1.lkKey)(A);
|
|
39
|
+
// Caso axioma: A ⊢ A cut A, Σ ⊢ Π ⟹ A, Σ ⊢ Π (= p2)
|
|
40
|
+
if (p1.rule === 'axiom' && p1.principalFormula && (0, util_1.lkKey)(p1.principalFormula) === ak) {
|
|
41
|
+
return p2;
|
|
42
|
+
}
|
|
43
|
+
if (p2.rule === 'axiom' && p2.principalFormula && (0, util_1.lkKey)(p2.principalFormula) === ak) {
|
|
44
|
+
return p1;
|
|
45
|
+
}
|
|
46
|
+
// Reduccion principal por conectivo del cut formula.
|
|
47
|
+
// Solo aplicable cuando A es principal en ambas premisas.
|
|
48
|
+
const principalOnLeft = p1.principalFormula && (0, util_1.lkKey)(p1.principalFormula) === ak;
|
|
49
|
+
const principalOnRight = p2.principalFormula && (0, util_1.lkKey)(p2.principalFormula) === ak;
|
|
50
|
+
if (principalOnLeft && principalOnRight) {
|
|
51
|
+
switch (A.kind) {
|
|
52
|
+
case 'not': {
|
|
53
|
+
// p1 termina en notR: Γ ⊢ ¬B, Δ por premisa B, Γ ⊢ Δ
|
|
54
|
+
// p2 termina en notL: ¬B, Σ ⊢ Π por premisa Σ ⊢ B, Π
|
|
55
|
+
// Reescribimos como cut sobre B:
|
|
56
|
+
// Σ ⊢ B, Π cut B, Γ ⊢ Δ ⟹ Σ, Γ ⊢ Π, Δ
|
|
57
|
+
const sub1 = p2.premises[0];
|
|
58
|
+
const sub2 = p1.premises[0];
|
|
59
|
+
if (!sub1 || !sub2)
|
|
60
|
+
break;
|
|
61
|
+
const newCut = {
|
|
62
|
+
goal: proof.goal,
|
|
63
|
+
rule: 'cut',
|
|
64
|
+
cutFormula: A.arg,
|
|
65
|
+
premises: [sub1, sub2],
|
|
66
|
+
};
|
|
67
|
+
return eliminateCut(newCut);
|
|
68
|
+
}
|
|
69
|
+
case 'and': {
|
|
70
|
+
// p1 termina en andR con A = B∧C, premisas: Γ ⊢ B, Δ y Γ ⊢ C, Δ
|
|
71
|
+
// p2 termina en andL con premisa B, C, Σ ⊢ Π
|
|
72
|
+
// Cut sobre B y C:
|
|
73
|
+
// Γ ⊢ B, Δ cut_B ( Γ ⊢ C, Δ cut_C B, C, Σ ⊢ Π )
|
|
74
|
+
const subB = p1.premises[0];
|
|
75
|
+
const subC = p1.premises[1];
|
|
76
|
+
const subBC = p2.premises[0];
|
|
77
|
+
if (!subB || !subC || !subBC)
|
|
78
|
+
break;
|
|
79
|
+
const innerCut = {
|
|
80
|
+
goal: {
|
|
81
|
+
left: [
|
|
82
|
+
...subC.goal.left,
|
|
83
|
+
...subBC.goal.left.filter((f) => (0, util_1.lkKey)(f) !== (0, util_1.lkKey)(A.right)),
|
|
84
|
+
],
|
|
85
|
+
right: [
|
|
86
|
+
...subC.goal.right.filter((f) => (0, util_1.lkKey)(f) !== (0, util_1.lkKey)(A.right)),
|
|
87
|
+
...subBC.goal.right,
|
|
88
|
+
],
|
|
89
|
+
},
|
|
90
|
+
rule: 'cut',
|
|
91
|
+
cutFormula: A.right,
|
|
92
|
+
premises: [subC, subBC],
|
|
93
|
+
};
|
|
94
|
+
const outerCut = {
|
|
95
|
+
goal: proof.goal,
|
|
96
|
+
rule: 'cut',
|
|
97
|
+
cutFormula: A.left,
|
|
98
|
+
premises: [subB, innerCut],
|
|
99
|
+
};
|
|
100
|
+
return eliminateCut(outerCut);
|
|
101
|
+
}
|
|
102
|
+
case 'or': {
|
|
103
|
+
// p1 termina en orR con A = B∨C, premisa: Γ ⊢ B, C, Δ
|
|
104
|
+
// p2 termina en orL: premisas B, Σ ⊢ Π y C, Σ ⊢ Π
|
|
105
|
+
const subBC = p1.premises[0];
|
|
106
|
+
const subB = p2.premises[0];
|
|
107
|
+
const subC = p2.premises[1];
|
|
108
|
+
if (!subBC || !subB || !subC)
|
|
109
|
+
break;
|
|
110
|
+
// Cut sobre B y luego C:
|
|
111
|
+
const innerCut = {
|
|
112
|
+
goal: {
|
|
113
|
+
left: [
|
|
114
|
+
...subBC.goal.left,
|
|
115
|
+
...subC.goal.left.filter((f) => (0, util_1.lkKey)(f) !== (0, util_1.lkKey)(A.right)),
|
|
116
|
+
],
|
|
117
|
+
right: [
|
|
118
|
+
...subBC.goal.right.filter((f) => (0, util_1.lkKey)(f) !== (0, util_1.lkKey)(A.right) && (0, util_1.lkKey)(f) !== (0, util_1.lkKey)(A.left)),
|
|
119
|
+
...subC.goal.right,
|
|
120
|
+
],
|
|
121
|
+
},
|
|
122
|
+
rule: 'cut',
|
|
123
|
+
cutFormula: A.right,
|
|
124
|
+
premises: [subBC, subC],
|
|
125
|
+
};
|
|
126
|
+
const outerCut = {
|
|
127
|
+
goal: proof.goal,
|
|
128
|
+
rule: 'cut',
|
|
129
|
+
cutFormula: A.left,
|
|
130
|
+
premises: [innerCut, subB],
|
|
131
|
+
};
|
|
132
|
+
return eliminateCut(outerCut);
|
|
133
|
+
}
|
|
134
|
+
case 'implies': {
|
|
135
|
+
// p1 termina en impR con A = B→C, premisa: B, Γ ⊢ C, Δ
|
|
136
|
+
// p2 termina en impL: premisas Σ ⊢ B, Π y C, Σ ⊢ Π
|
|
137
|
+
const subBC = p1.premises[0];
|
|
138
|
+
const subB = p2.premises[0];
|
|
139
|
+
const subC = p2.premises[1];
|
|
140
|
+
if (!subBC || !subB || !subC)
|
|
141
|
+
break;
|
|
142
|
+
// Cut sobre B: Σ ⊢ B, Π y B, Γ ⊢ C, Δ → Σ, Γ ⊢ C, Π, Δ
|
|
143
|
+
// Cut sobre C: ↑resultado y C, Σ ⊢ Π → Σ, Γ, Σ ⊢ Π, Δ
|
|
144
|
+
const innerCut = {
|
|
145
|
+
goal: {
|
|
146
|
+
left: [...subB.goal.left, ...subBC.goal.left.filter((f) => (0, util_1.lkKey)(f) !== (0, util_1.lkKey)(A.left))],
|
|
147
|
+
right: [
|
|
148
|
+
...subB.goal.right.filter((f) => (0, util_1.lkKey)(f) !== (0, util_1.lkKey)(A.left)),
|
|
149
|
+
...subBC.goal.right,
|
|
150
|
+
],
|
|
151
|
+
},
|
|
152
|
+
rule: 'cut',
|
|
153
|
+
cutFormula: A.left,
|
|
154
|
+
premises: [subB, subBC],
|
|
155
|
+
};
|
|
156
|
+
const outerCut = {
|
|
157
|
+
goal: proof.goal,
|
|
158
|
+
rule: 'cut',
|
|
159
|
+
cutFormula: A.right,
|
|
160
|
+
premises: [innerCut, subC],
|
|
161
|
+
};
|
|
162
|
+
return eliminateCut(outerCut);
|
|
163
|
+
}
|
|
164
|
+
case 'atom':
|
|
165
|
+
// Si A es atomico y aparece como principal en ambas premisas,
|
|
166
|
+
// el cut puede ser eliminado por reduccion estructural: una de
|
|
167
|
+
// las premisas debe ser un axioma A ⊢ A. Si llegamos aqui sin
|
|
168
|
+
// resolverlo arriba, dejamos que el oraculo cut-free lo cubra.
|
|
169
|
+
break;
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
// Caso difícil: el cut no es principal en ambas premisas. En lugar
|
|
173
|
+
// de implementar las ~20 reducciones permutativas de Gentzen
|
|
174
|
+
// (commutative cuts), usamos el oraculo cut-free `proveLK`. Esto
|
|
175
|
+
// es sano porque LK admite eliminacion de cortes (Hauptsatz): si la
|
|
176
|
+
// derivacion original es valida, el secuente es derivable, luego
|
|
177
|
+
// tambien lo es sin cortes.
|
|
178
|
+
const cutFree = (0, prover_1.proveLK)(proof.goal);
|
|
179
|
+
if (cutFree)
|
|
180
|
+
return cutFree;
|
|
181
|
+
// Si el oraculo falla (no deberia para una derivacion valida),
|
|
182
|
+
// devolvemos lo que tengamos como mejor esfuerzo.
|
|
183
|
+
return proof;
|
|
184
|
+
}
|
|
185
|
+
/**
|
|
186
|
+
* Elimina todos los cortes de la derivacion. Devuelve una derivacion
|
|
187
|
+
* estructuralmente equivalente al mismo secuente sin nodos `cut`.
|
|
188
|
+
*
|
|
189
|
+
* Implementacion: eliminamos primero los cortes interiores (de las
|
|
190
|
+
* hojas hacia la raiz) y luego reducimos el cut de la raiz aplicando
|
|
191
|
+
* la regla principal correspondiente.
|
|
192
|
+
*/
|
|
193
|
+
function eliminateCut(proof) {
|
|
194
|
+
// Recursion en premisas primero
|
|
195
|
+
const premises = proof.premises.map(eliminateCut);
|
|
196
|
+
const updated = { ...proof, premises };
|
|
197
|
+
if (updated.rule !== 'cut')
|
|
198
|
+
return updated;
|
|
199
|
+
const reduced = eliminateCutAtRoot(updated);
|
|
200
|
+
// Si tras una pasada todavia hay cortes, iteramos (con limite anti-loop).
|
|
201
|
+
let cur = reduced;
|
|
202
|
+
for (let i = 0; i < 32 && (0, prover_1.hasCut)(cur); i++) {
|
|
203
|
+
cur = { ...cur, premises: cur.premises.map(eliminateCut) };
|
|
204
|
+
if (cur.rule === 'cut')
|
|
205
|
+
cur = eliminateCutAtRoot(cur);
|
|
206
|
+
}
|
|
207
|
+
// Garantia final: si quedaron cortes, intentamos reprovar desde el
|
|
208
|
+
// mismo objetivo con el prover cut-free.
|
|
209
|
+
if ((0, prover_1.hasCut)(cur)) {
|
|
210
|
+
const cutFree = (0, prover_1.proveLK)(cur.goal);
|
|
211
|
+
if (cutFree && (0, prover_1.isValid)(cutFree))
|
|
212
|
+
return cutFree;
|
|
213
|
+
}
|
|
214
|
+
return cur;
|
|
215
|
+
}
|
|
216
|
+
//# sourceMappingURL=cut-elimination.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cut-elimination.js","sourceRoot":"","sources":["../../../src/profiles/sequent-lk/cut-elimination.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
export type { LKFormula, LKRule, LKSequent, LKProof } from './types';
|
|
2
|
+
export { proveLK, proveLKFormula, hasCut, isValid } from './prover';
|
|
3
|
+
export { eliminateCut } from './cut-elimination';
|
|
4
|
+
export { lkKey, eq, depth } from './util';
|
|
5
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/profiles/sequent-lk/index.ts"],"names":[],"mappings":"AAUA,YAAY,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AACrE,OAAO,EAAE,OAAO,EAAE,cAAc,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC;AACpE,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,QAAQ,CAAC"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// ============================================================
|
|
3
|
+
// LK Sequent Calculus — Entrada publica del perfil
|
|
4
|
+
// ============================================================
|
|
5
|
+
//
|
|
6
|
+
// Calculo de secuentes LK de Gentzen (1934) para logica
|
|
7
|
+
// proposicional clasica con cut-elimination (Hauptsatz).
|
|
8
|
+
//
|
|
9
|
+
// import { proveLK, hasCut, eliminateCut, isValid }
|
|
10
|
+
// from 'src/profiles/sequent-lk';
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.depth = exports.eq = exports.lkKey = exports.eliminateCut = exports.isValid = exports.hasCut = exports.proveLKFormula = exports.proveLK = void 0;
|
|
13
|
+
var prover_1 = require("./prover");
|
|
14
|
+
Object.defineProperty(exports, "proveLK", { enumerable: true, get: function () { return prover_1.proveLK; } });
|
|
15
|
+
Object.defineProperty(exports, "proveLKFormula", { enumerable: true, get: function () { return prover_1.proveLKFormula; } });
|
|
16
|
+
Object.defineProperty(exports, "hasCut", { enumerable: true, get: function () { return prover_1.hasCut; } });
|
|
17
|
+
Object.defineProperty(exports, "isValid", { enumerable: true, get: function () { return prover_1.isValid; } });
|
|
18
|
+
var cut_elimination_1 = require("./cut-elimination");
|
|
19
|
+
Object.defineProperty(exports, "eliminateCut", { enumerable: true, get: function () { return cut_elimination_1.eliminateCut; } });
|
|
20
|
+
var util_1 = require("./util");
|
|
21
|
+
Object.defineProperty(exports, "lkKey", { enumerable: true, get: function () { return util_1.lkKey; } });
|
|
22
|
+
Object.defineProperty(exports, "eq", { enumerable: true, get: function () { return util_1.eq; } });
|
|
23
|
+
Object.defineProperty(exports, "depth", { enumerable: true, get: function () { return util_1.depth; } });
|
|
24
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/profiles/sequent-lk/index.ts"],"names":[],"mappings":";AAAA,+DAA+D;AAC/D,mDAAmD;AACnD,+DAA+D;AAC/D,EAAE;AACF,wDAAwD;AACxD,yDAAyD;AACzD,EAAE;AACF,sDAAsD;AACtD,sCAAsC;;;AAGtC,mCAAoE;AAA3D,iGAAA,OAAO,OAAA;AAAE,wGAAA,cAAc,OAAA;AAAE,gGAAA,MAAM,OAAA;AAAE,iGAAA,OAAO,OAAA;AACjD,qDAAiD;AAAxC,+GAAA,YAAY,OAAA;AACrB,+BAA0C;AAAjC,6FAAA,KAAK,OAAA;AAAE,0FAAA,EAAE,OAAA;AAAE,6FAAA,KAAK,OAAA"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { LKFormula, LKProof, LKSequent } from './types';
|
|
2
|
+
/**
|
|
3
|
+
* Demuestra el secuente `seq` en LK clasico (sin cortes).
|
|
4
|
+
* Devuelve `null` si no encuentra derivacion dentro del budget.
|
|
5
|
+
*/
|
|
6
|
+
export declare function proveLK(seq: LKSequent, options?: {
|
|
7
|
+
budget?: number;
|
|
8
|
+
}): LKProof | null;
|
|
9
|
+
/** Atajo: ⊢ φ. */
|
|
10
|
+
export declare function proveLKFormula(formula: LKFormula, options?: {
|
|
11
|
+
budget?: number;
|
|
12
|
+
}): LKProof | null;
|
|
13
|
+
/**
|
|
14
|
+
* Verifica que `proof` sea una derivacion LK valida segun la regla
|
|
15
|
+
* declarada en cada nodo. La validacion es estructural — comprueba
|
|
16
|
+
* que las premisas y la conclusion encajen con el patron de la regla.
|
|
17
|
+
*
|
|
18
|
+
* Es deliberadamente flexible respecto al orden (multisets) y permite
|
|
19
|
+
* contraccion implicita en las reglas logicas (la formula principal
|
|
20
|
+
* puede aparecer en las premisas, como en presentaciones modernas).
|
|
21
|
+
*/
|
|
22
|
+
export declare function isValid(proof: LKProof): boolean;
|
|
23
|
+
/** Cuenta si existe al menos un nodo `cut` en la derivacion. */
|
|
24
|
+
export declare function hasCut(proof: LKProof): boolean;
|
|
25
|
+
//# sourceMappingURL=prover.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"prover.d.ts","sourceRoot":"","sources":["../../../src/profiles/sequent-lk/prover.ts"],"names":[],"mappings":"AAsBA,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAsLxD;;;GAGG;AACH,wBAAgB,OAAO,CAAC,GAAG,EAAE,SAAS,EAAE,OAAO,GAAE;IAAE,MAAM,CAAC,EAAE,MAAM,CAAA;CAAO,GAAG,OAAO,GAAG,IAAI,CAIzF;AAED,kBAAkB;AAClB,wBAAgB,cAAc,CAC5B,OAAO,EAAE,SAAS,EAClB,OAAO,GAAE;IAAE,MAAM,CAAC,EAAE,MAAM,CAAA;CAAO,GAChC,OAAO,GAAG,IAAI,CAEhB;AAuBD;;;;;;;;GAQG;AACH,wBAAgB,OAAO,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CA2N/C;AAED,gEAAgE;AAChE,wBAAgB,MAAM,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAG9C"}
|