@stevenvo780/st-lang 4.14.0 → 4.14.1
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/README.md +6 -6
- package/dist/ast/nodes.d.ts +50 -0
- package/dist/ast/nodes.d.ts.map +1 -1
- package/dist/format/stnb/parser.d.ts +14 -0
- package/dist/format/stnb/parser.d.ts.map +1 -0
- package/dist/format/stnb/parser.js +123 -0
- package/dist/format/stnb/parser.js.map +1 -0
- package/dist/format/stnb/types.d.ts +45 -0
- package/dist/format/stnb/types.d.ts.map +1 -0
- package/dist/format/stnb/types.js +7 -0
- package/dist/format/stnb/types.js.map +1 -0
- package/dist/logic/profile-bridge/index.d.ts.map +1 -1
- package/dist/logic/profile-bridge/index.js +20 -3
- package/dist/logic/profile-bridge/index.js.map +1 -1
- package/dist/logic/profiles/classical/propositional.d.ts.map +1 -1
- package/dist/logic/profiles/classical/propositional.js.map +1 -1
- package/dist/logic/profiles/ctl/check.d.ts.map +1 -1
- package/dist/logic/profiles/ctl/check.js +21 -11
- package/dist/logic/profiles/ctl/check.js.map +1 -1
- package/dist/logic/profiles/ctl/witness.d.ts.map +1 -1
- package/dist/logic/profiles/ctl/witness.js +2 -0
- package/dist/logic/profiles/ctl/witness.js.map +1 -1
- package/dist/logic/profiles/description-logic/types.d.ts +15 -0
- package/dist/logic/profiles/description-logic/types.d.ts.map +1 -1
- package/dist/logic/profiles/description-logic/types.js +13 -0
- package/dist/logic/profiles/description-logic/types.js.map +1 -1
- package/dist/logic/profiles/hybrid-logic/types.d.ts +17 -0
- package/dist/logic/profiles/hybrid-logic/types.d.ts.map +1 -1
- package/dist/logic/profiles/hybrid-logic/types.js +17 -0
- package/dist/logic/profiles/hybrid-logic/types.js.map +1 -1
- package/dist/logic/profiles/intuitionistic-nj/kripke.d.ts.map +1 -1
- package/dist/logic/profiles/intuitionistic-nj/kripke.js +8 -5
- package/dist/logic/profiles/intuitionistic-nj/kripke.js.map +1 -1
- package/dist/logic/profiles/ltl-sat/tableau.d.ts +31 -0
- package/dist/logic/profiles/ltl-sat/tableau.d.ts.map +1 -1
- package/dist/logic/profiles/ltl-sat/tableau.js +18 -0
- package/dist/logic/profiles/ltl-sat/tableau.js.map +1 -1
- package/dist/logic/profiles/ltl-sat/types.d.ts +15 -0
- package/dist/logic/profiles/ltl-sat/types.d.ts.map +1 -1
- package/dist/logic/profiles/ltl-sat/types.js +2 -1
- package/dist/logic/profiles/ltl-sat/types.js.map +1 -1
- package/dist/logic/profiles/modal-frame-axioms/formula.d.ts +10 -0
- package/dist/logic/profiles/modal-frame-axioms/formula.d.ts.map +1 -1
- package/dist/logic/profiles/modal-frame-axioms/formula.js +10 -0
- package/dist/logic/profiles/modal-frame-axioms/formula.js.map +1 -1
- package/dist/logic/profiles/mu-calculus/check.d.ts.map +1 -1
- package/dist/logic/profiles/mu-calculus/check.js +7 -4
- package/dist/logic/profiles/mu-calculus/check.js.map +1 -1
- package/dist/logic/profiles/natural-deduction-nk/formula.d.ts +8 -0
- package/dist/logic/profiles/natural-deduction-nk/formula.d.ts.map +1 -1
- package/dist/logic/profiles/natural-deduction-nk/formula.js +8 -0
- package/dist/logic/profiles/natural-deduction-nk/formula.js.map +1 -1
- package/dist/logic/profiles/quantum/index.d.ts.map +1 -1
- package/dist/logic/profiles/quantum/index.js +11 -8
- package/dist/logic/profiles/quantum/index.js.map +1 -1
- package/dist/logic/profiles/sequent-lj/index.d.ts +90 -0
- package/dist/logic/profiles/sequent-lj/index.d.ts.map +1 -0
- package/dist/logic/profiles/sequent-lj/index.js +903 -0
- package/dist/logic/profiles/sequent-lj/index.js.map +1 -0
- package/dist/logic/profiles/shared/tableau-engine.d.ts.map +1 -1
- package/dist/logic/profiles/shared/tableau-engine.js +0 -17
- package/dist/logic/profiles/shared/tableau-engine.js.map +1 -1
- package/dist/namespaces/proof-systems.d.ts +1 -1
- package/dist/namespaces/proof-systems.d.ts.map +1 -1
- package/dist/namespaces/proof-systems.js.map +1 -1
- package/dist/namespaces/semantics.d.ts +1 -1
- package/dist/namespaces/semantics.d.ts.map +1 -1
- package/dist/namespaces/semantics.js.map +1 -1
- package/dist/proof-systems/distributed-exchange/index.d.ts +29 -0
- package/dist/proof-systems/distributed-exchange/index.d.ts.map +1 -1
- package/dist/proof-systems/distributed-exchange/index.js +18 -0
- package/dist/proof-systems/distributed-exchange/index.js.map +1 -1
- package/dist/proof-systems/fol-prover/types.d.ts +16 -0
- package/dist/proof-systems/fol-prover/types.d.ts.map +1 -1
- package/dist/proof-systems/fol-prover/types.js +7 -0
- package/dist/proof-systems/fol-prover/types.js.map +1 -1
- package/dist/proof-systems/fol-prover-advanced/index.d.ts +3 -3
- package/dist/proof-systems/fol-prover-advanced/index.d.ts.map +1 -1
- package/dist/proof-systems/fol-prover-advanced/index.js.map +1 -1
- package/dist/proof-systems/fol-prover-advanced/ordering.js +1 -1
- package/dist/proof-systems/fol-prover-advanced/prover.d.ts.map +1 -1
- package/dist/proof-systems/fol-prover-advanced/prover.js +19 -12
- package/dist/proof-systems/fol-prover-advanced/prover.js.map +1 -1
- package/dist/proof-systems/fol-prover-advanced/resolve.d.ts.map +1 -1
- package/dist/proof-systems/fol-prover-advanced/resolve.js +7 -7
- package/dist/proof-systems/fol-prover-advanced/resolve.js.map +1 -1
- package/dist/proof-systems/fol-prover-advanced/subsumption.d.ts.map +1 -1
- package/dist/proof-systems/fol-prover-advanced/subsumption.js.map +1 -1
- package/dist/proof-systems/fol-prover-advanced/types.d.ts +12 -0
- package/dist/proof-systems/fol-prover-advanced/types.d.ts.map +1 -1
- package/dist/proof-systems/fol-prover-advanced/unify.js +2 -2
- package/dist/proof-systems/fol-prover-equality/term-utils.d.ts +46 -0
- package/dist/proof-systems/fol-prover-equality/term-utils.d.ts.map +1 -1
- package/dist/proof-systems/fol-prover-equality/term-utils.js +46 -0
- package/dist/proof-systems/fol-prover-equality/term-utils.js.map +1 -1
- package/dist/proof-systems/proof-nets/correctness.d.ts.map +1 -1
- package/dist/proof-systems/proof-nets/correctness.js +24 -12
- package/dist/proof-systems/proof-nets/correctness.js.map +1 -1
- package/dist/proof-systems/proof-nets/types.d.ts +18 -0
- package/dist/proof-systems/proof-nets/types.d.ts.map +1 -1
- package/dist/proof-systems/proof-nets/types.js +6 -0
- package/dist/proof-systems/proof-nets/types.js.map +1 -1
- package/dist/proof-systems/tableau-framework/TableauProver.d.ts.map +1 -1
- package/dist/proof-systems/tableau-framework/TableauProver.js +5 -5
- package/dist/proof-systems/tableau-framework/TableauProver.js.map +1 -1
- package/dist/proof-systems/tableau-framework/propositional.d.ts.map +1 -1
- package/dist/proof-systems/tableau-framework/propositional.js +21 -21
- package/dist/proof-systems/tableau-framework/propositional.js.map +1 -1
- package/dist/reasoning/ban-logic/terms.d.ts +24 -0
- package/dist/reasoning/ban-logic/terms.d.ts.map +1 -1
- package/dist/reasoning/ban-logic/terms.js +24 -0
- package/dist/reasoning/ban-logic/terms.js.map +1 -1
- package/dist/reasoning/bayesian/factor.js +8 -8
- package/dist/reasoning/bayesian/factor.js.map +1 -1
- package/dist/reasoning/bayesian/inference.d.ts.map +1 -1
- package/dist/reasoning/bayesian/inference.js +11 -5
- package/dist/reasoning/bayesian/inference.js.map +1 -1
- package/dist/reasoning/combinatorics/generators.js.map +1 -1
- package/dist/reasoning/combinatorics/index.d.ts +3 -3
- package/dist/reasoning/combinatorics/index.d.ts.map +1 -1
- package/dist/reasoning/combinatorics/index.js.map +1 -1
- package/dist/reasoning/combinatorics/set-partitions.js.map +1 -1
- package/dist/reasoning/combinatorics/special-numbers.d.ts.map +1 -1
- package/dist/reasoning/combinatorics/special-numbers.js.map +1 -1
- package/dist/reasoning/constructive-analysis/cauchy.js +2 -2
- package/dist/reasoning/constructive-analysis/compact.js +1 -1
- package/dist/reasoning/constructive-analysis/continuity.d.ts.map +1 -1
- package/dist/reasoning/constructive-analysis/continuity.js +4 -4
- package/dist/reasoning/constructive-analysis/continuity.js.map +1 -1
- package/dist/reasoning/constructive-analysis/index.d.ts.map +1 -1
- package/dist/reasoning/constructive-analysis/index.js.map +1 -1
- package/dist/reasoning/constructive-analysis/ivt.d.ts.map +1 -1
- package/dist/reasoning/constructive-analysis/ivt.js +2 -2
- package/dist/reasoning/constructive-analysis/ivt.js.map +1 -1
- package/dist/reasoning/constructive-reals/index.d.ts.map +1 -1
- package/dist/reasoning/constructive-reals/index.js +4 -8
- package/dist/reasoning/constructive-reals/index.js.map +1 -1
- package/dist/reasoning/galois-fields/index.d.ts +64 -0
- package/dist/reasoning/galois-fields/index.d.ts.map +1 -1
- package/dist/reasoning/galois-fields/index.js +56 -6
- package/dist/reasoning/galois-fields/index.js.map +1 -1
- package/dist/reasoning/graph-theory/index.d.ts +31 -0
- package/dist/reasoning/graph-theory/index.d.ts.map +1 -1
- package/dist/reasoning/graph-theory/index.js +28 -10
- package/dist/reasoning/graph-theory/index.js.map +1 -1
- package/dist/reasoning/hoare-logic/index.d.ts +34 -0
- package/dist/reasoning/hoare-logic/index.d.ts.map +1 -1
- package/dist/reasoning/hoare-logic/index.js +26 -0
- package/dist/reasoning/hoare-logic/index.js.map +1 -1
- package/dist/reasoning/hyperreal/index.d.ts +30 -0
- package/dist/reasoning/hyperreal/index.d.ts.map +1 -1
- package/dist/reasoning/hyperreal/index.js +25 -0
- package/dist/reasoning/hyperreal/index.js.map +1 -1
- package/dist/reasoning/information-theory/index.d.ts +34 -0
- package/dist/reasoning/information-theory/index.d.ts.map +1 -1
- package/dist/reasoning/information-theory/index.js +27 -44
- package/dist/reasoning/information-theory/index.js.map +1 -1
- package/dist/reasoning/lemma-synthesis/index.d.ts +36 -0
- package/dist/reasoning/lemma-synthesis/index.d.ts.map +1 -1
- package/dist/reasoning/lemma-synthesis/index.js +12 -0
- package/dist/reasoning/lemma-synthesis/index.js.map +1 -1
- package/dist/reasoning/linear-algebra/index.d.ts +38 -0
- package/dist/reasoning/linear-algebra/index.d.ts.map +1 -1
- package/dist/reasoning/linear-algebra/index.js +34 -5
- package/dist/reasoning/linear-algebra/index.js.map +1 -1
- package/dist/reasoning/markov-logic/grounding.js +1 -1
- package/dist/reasoning/markov-logic/grounding.js.map +1 -1
- package/dist/reasoning/markov-logic/inference.js +1 -1
- package/dist/reasoning/markov-logic/inference.js.map +1 -1
- package/dist/reasoning/order-theory/index.d.ts +121 -0
- package/dist/reasoning/order-theory/index.d.ts.map +1 -0
- package/dist/reasoning/order-theory/index.js +562 -0
- package/dist/reasoning/order-theory/index.js.map +1 -0
- package/dist/reasoning/peano-arithmetic/index.d.ts +114 -0
- package/dist/reasoning/peano-arithmetic/index.d.ts.map +1 -0
- package/dist/reasoning/peano-arithmetic/index.js +650 -0
- package/dist/reasoning/peano-arithmetic/index.js.map +1 -0
- package/dist/reasoning/polynomial-ring/index.d.ts +80 -0
- package/dist/reasoning/polynomial-ring/index.d.ts.map +1 -1
- package/dist/reasoning/polynomial-ring/index.js +75 -0
- package/dist/reasoning/polynomial-ring/index.js.map +1 -1
- package/dist/reasoning/separation-logic/index.d.ts +30 -0
- package/dist/reasoning/separation-logic/index.d.ts.map +1 -1
- package/dist/reasoning/separation-logic/index.js +21 -0
- package/dist/reasoning/separation-logic/index.js.map +1 -1
- package/dist/reasoning/set-theory/hf-functions.js +3 -3
- package/dist/reasoning/set-theory/hf-sets.js +1 -1
- package/dist/reasoning/set-theory/index.d.ts +3 -3
- package/dist/reasoning/set-theory/index.d.ts.map +1 -1
- package/dist/reasoning/set-theory/zfc-axioms.js +4 -4
- package/dist/reasoning/tactic-dsl/tactics.d.ts +87 -0
- package/dist/reasoning/tactic-dsl/tactics.d.ts.map +1 -1
- package/dist/reasoning/tactic-dsl/tactics.js +86 -36
- package/dist/reasoning/tactic-dsl/tactics.js.map +1 -1
- package/dist/reasoning/topology/index.d.ts +81 -0
- package/dist/reasoning/topology/index.d.ts.map +1 -1
- package/dist/reasoning/topology/index.js +69 -45
- package/dist/reasoning/topology/index.js.map +1 -1
- package/dist/runtime/countermodel-min/minimize.js +0 -0
- package/dist/runtime/countermodel-min/minimize.js.map +1 -1
- package/dist/runtime/csp-hoare/semantics.d.ts +12 -0
- package/dist/runtime/csp-hoare/semantics.d.ts.map +1 -1
- package/dist/runtime/csp-hoare/semantics.js +12 -0
- package/dist/runtime/csp-hoare/semantics.js.map +1 -1
- package/dist/runtime/symbolic-diff/constructors.d.ts +20 -0
- package/dist/runtime/symbolic-diff/constructors.d.ts.map +1 -1
- package/dist/runtime/symbolic-diff/constructors.js +20 -0
- package/dist/runtime/symbolic-diff/constructors.js.map +1 -1
- package/dist/runtime/term-rewriting/term-utils.d.ts.map +1 -1
- package/dist/runtime/term-rewriting/term-utils.js +33 -2
- package/dist/runtime/term-rewriting/term-utils.js.map +1 -1
- package/dist/runtime/typecheck/checker.js +2 -2
- package/dist/runtime/typecheck/checker.js.map +1 -1
- package/dist/runtime/typecheck/levenshtein.js +1 -1
- package/dist/runtime/typecheck/levenshtein.js.map +1 -1
- package/dist/semantics/categorical/fin-set.d.ts.map +1 -1
- package/dist/semantics/categorical/fin-set.js +8 -1
- package/dist/semantics/categorical/fin-set.js.map +1 -1
- package/dist/semantics/categorical/free.d.ts.map +1 -1
- package/dist/semantics/categorical/free.js +8 -2
- package/dist/semantics/categorical/free.js.map +1 -1
- package/dist/semantics/categorical/limits.d.ts.map +1 -1
- package/dist/semantics/categorical/limits.js +13 -4
- package/dist/semantics/categorical/limits.js.map +1 -1
- package/dist/semantics/categorical/monoidal.d.ts.map +1 -1
- package/dist/semantics/categorical/monoidal.js +3 -1
- package/dist/semantics/categorical/monoidal.js.map +1 -1
- package/dist/semantics/text-layer/compiler.d.ts +46 -0
- package/dist/semantics/text-layer/compiler.d.ts.map +1 -1
- package/dist/semantics/text-layer/compiler.js +46 -11
- package/dist/semantics/text-layer/compiler.js.map +1 -1
- package/dist/solver/cdcl-v2/index.d.ts +8 -0
- package/dist/solver/cdcl-v2/index.d.ts.map +1 -1
- package/dist/solver/cdcl-v2/index.js +8 -0
- package/dist/solver/cdcl-v2/index.js.map +1 -1
- package/dist/solver/smt-z3/z3-wasm-backend.d.ts +0 -1
- package/dist/solver/smt-z3/z3-wasm-backend.d.ts.map +1 -1
- package/dist/solver/smt-z3/z3-wasm-backend.js +2 -3
- package/dist/solver/smt-z3/z3-wasm-backend.js.map +1 -1
- package/dist/tests/agora-integration-fixtures.test.js +7 -2
- package/dist/tests/agora-integration-fixtures.test.js.map +1 -1
- package/dist/tests/coverage-90/coverage-90-cdcl-v2-deep.test.d.ts +2 -0
- package/dist/tests/coverage-90/coverage-90-cdcl-v2-deep.test.d.ts.map +1 -0
- package/dist/tests/coverage-90/coverage-90-cdcl-v2-deep.test.js +123 -0
- package/dist/tests/coverage-90/coverage-90-cdcl-v2-deep.test.js.map +1 -0
- package/dist/tests/coverage-90/coverage-90-certificate-rules.test.d.ts +2 -0
- package/dist/tests/coverage-90/coverage-90-certificate-rules.test.d.ts.map +1 -0
- package/dist/tests/coverage-90/coverage-90-certificate-rules.test.js +172 -0
- package/dist/tests/coverage-90/coverage-90-certificate-rules.test.js.map +1 -0
- package/dist/tests/coverage-90/coverage-90-interpreter-extra.test.d.ts +2 -0
- package/dist/tests/coverage-90/coverage-90-interpreter-extra.test.d.ts.map +1 -0
- package/dist/tests/coverage-90/coverage-90-interpreter-extra.test.js +326 -0
- package/dist/tests/coverage-90/coverage-90-interpreter-extra.test.js.map +1 -0
- package/dist/tests/coverage-90/coverage-90-interpreter-features.test.d.ts +2 -0
- package/dist/tests/coverage-90/coverage-90-interpreter-features.test.d.ts.map +1 -0
- package/dist/tests/coverage-90/coverage-90-interpreter-features.test.js +418 -0
- package/dist/tests/coverage-90/coverage-90-interpreter-features.test.js.map +1 -0
- package/dist/tests/coverage-90/coverage-90-modal-temporal.test.d.ts +2 -0
- package/dist/tests/coverage-90/coverage-90-modal-temporal.test.d.ts.map +1 -0
- package/dist/tests/coverage-90/coverage-90-modal-temporal.test.js +162 -0
- package/dist/tests/coverage-90/coverage-90-modal-temporal.test.js.map +1 -0
- package/dist/tests/coverage-90/coverage-90-nk-prover.test.d.ts +2 -0
- package/dist/tests/coverage-90/coverage-90-nk-prover.test.d.ts.map +1 -0
- package/dist/tests/coverage-90/coverage-90-nk-prover.test.js +104 -0
- package/dist/tests/coverage-90/coverage-90-nk-prover.test.js.map +1 -0
- package/dist/tests/coverage-90/coverage-90-parser-deep.test.d.ts +2 -0
- package/dist/tests/coverage-90/coverage-90-parser-deep.test.d.ts.map +1 -0
- package/dist/tests/coverage-90/coverage-90-parser-deep.test.js +262 -0
- package/dist/tests/coverage-90/coverage-90-parser-deep.test.js.map +1 -0
- package/dist/tests/coverage-90/coverage-90-sat-engines.test.d.ts +2 -0
- package/dist/tests/coverage-90/coverage-90-sat-engines.test.d.ts.map +1 -0
- package/dist/tests/coverage-90/coverage-90-sat-engines.test.js +101 -0
- package/dist/tests/coverage-90/coverage-90-sat-engines.test.js.map +1 -0
- package/dist/tests/coverage-90/coverage-90-sequent-lk.test.d.ts +2 -0
- package/dist/tests/coverage-90/coverage-90-sequent-lk.test.d.ts.map +1 -0
- package/dist/tests/coverage-90/coverage-90-sequent-lk.test.js +219 -0
- package/dist/tests/coverage-90/coverage-90-sequent-lk.test.js.map +1 -0
- package/dist/tests/coverage-90/coverage-90-smt-lib-parser.test.d.ts +2 -0
- package/dist/tests/coverage-90/coverage-90-smt-lib-parser.test.d.ts.map +1 -0
- package/dist/tests/coverage-90/coverage-90-smt-lib-parser.test.js +154 -0
- package/dist/tests/coverage-90/coverage-90-smt-lib-parser.test.js.map +1 -0
- package/dist/tests/coverage-95/first-order.test.js.map +1 -1
- package/dist/tests/coverage-95/fol-prover.test.js.map +1 -1
- package/dist/tests/integration/cross-modules.test.js +43 -19
- package/dist/tests/integration/cross-modules.test.js.map +1 -1
- package/dist/tests/logic/ctl/check.test.js.map +1 -1
- package/dist/tests/logic/profile-bridge/translations.test.js +3 -3
- package/dist/tests/logic/profile-bridge/translations.test.js.map +1 -1
- package/dist/tests/logic/profiles/sequent-lj/lj.test.d.ts +2 -0
- package/dist/tests/logic/profiles/sequent-lj/lj.test.d.ts.map +1 -0
- package/dist/tests/logic/profiles/sequent-lj/lj.test.js +400 -0
- package/dist/tests/logic/profiles/sequent-lj/lj.test.js.map +1 -0
- package/dist/tests/logic/sequent-g3/prover.test.js.map +1 -1
- package/dist/tests/logic/substructural/prover.test.js.map +1 -1
- package/dist/tests/proof-systems/fol-prover-advanced/prover.test.js +40 -13
- package/dist/tests/proof-systems/fol-prover-advanced/prover.test.js.map +1 -1
- package/dist/tests/proof-systems/higher-order-unify/ho-unify.test.js.map +1 -1
- package/dist/tests/proof-systems/tableau-framework/tableau.test.js +8 -8
- package/dist/tests/proof-systems/tableau-framework/tableau.test.js.map +1 -1
- package/dist/tests/properties/agm.property.test.js +1 -1
- package/dist/tests/properties/agm.property.test.js.map +1 -1
- package/dist/tests/properties/anti-unification.property.test.js.map +1 -1
- package/dist/tests/properties/argumentation.property.test.js.map +1 -1
- package/dist/tests/properties/bisimulation.property.test.js.map +1 -1
- package/dist/tests/properties/cdcl.property.test.js.map +1 -1
- package/dist/tests/properties/coinduction.property.test.js.map +1 -1
- package/dist/tests/properties/constructive-reals.property.test.js.map +1 -1
- package/dist/tests/properties/csp.property.test.js +1 -3
- package/dist/tests/properties/csp.property.test.js.map +1 -1
- package/dist/tests/properties/generators.d.ts +1 -1
- package/dist/tests/properties/generators.d.ts.map +1 -1
- package/dist/tests/properties/generators.js +22 -30
- package/dist/tests/properties/generators.js.map +1 -1
- package/dist/tests/properties/intuit-nj.property.test.js +3 -1
- package/dist/tests/properties/intuit-nj.property.test.js.map +1 -1
- package/dist/tests/properties/lambda-calc.property.test.js.map +1 -1
- package/dist/tests/properties/mln.property.test.js +1 -3
- package/dist/tests/properties/mln.property.test.js.map +1 -1
- package/dist/tests/properties/planning.property.test.js.map +1 -1
- package/dist/tests/properties/profile-bridge.property.test.js.map +1 -1
- package/dist/tests/properties/theorem-cache.property.test.js.map +1 -1
- package/dist/tests/protocol-text-layer.test.js.map +1 -1
- package/dist/tests/reasoning/combinatorics/combinatorics.test.js +1 -1
- package/dist/tests/reasoning/constructive-analysis/constructive-analysis.test.js +9 -9
- package/dist/tests/reasoning/constructive-analysis/constructive-analysis.test.js.map +1 -1
- package/dist/tests/reasoning/linear-algebra/linear-algebra.test.js +80 -38
- package/dist/tests/reasoning/linear-algebra/linear-algebra.test.js.map +1 -1
- package/dist/tests/reasoning/order-theory/order-theory.test.d.ts +2 -0
- package/dist/tests/reasoning/order-theory/order-theory.test.d.ts.map +1 -0
- package/dist/tests/reasoning/order-theory/order-theory.test.js +211 -0
- package/dist/tests/reasoning/order-theory/order-theory.test.js.map +1 -0
- package/dist/tests/reasoning/peano-arithmetic/peano.test.d.ts +2 -0
- package/dist/tests/reasoning/peano-arithmetic/peano.test.d.ts.map +1 -0
- package/dist/tests/reasoning/peano-arithmetic/peano.test.js +159 -0
- package/dist/tests/reasoning/peano-arithmetic/peano.test.js.map +1 -0
- package/dist/tests/reasoning/set-theory/hf-functions.test.js +11 -11
- package/dist/tests/reasoning/set-theory/zfc-axioms.test.js +1 -1
- package/dist/tests/semantics/text-layer-v2/claim-graph.test.js.map +1 -1
- package/dist/tests/solver/smt-lib/emitter.test.js.map +1 -1
- package/dist/tests/solver/smt-z3/z3-wasm-backend.test.js.map +1 -1
- package/dist/tests/tooling/test-harness/test-harness.test.js +9 -6
- package/dist/tests/tooling/test-harness/test-harness.test.js.map +1 -1
- package/dist/tooling/lsp/types.d.ts +13 -0
- package/dist/tooling/lsp/types.d.ts.map +1 -1
- package/dist/tooling/lsp/types.js +1 -0
- package/dist/tooling/lsp/types.js.map +1 -1
- package/dist/tooling/test-harness/combinators.d.ts.map +1 -1
- package/dist/tooling/test-harness/combinators.js +4 -4
- package/dist/tooling/test-harness/combinators.js.map +1 -1
- package/dist/tooling/test-harness/coverage.js +1 -1
- package/dist/tooling/test-harness/generators.d.ts.map +1 -1
- package/dist/tooling/test-harness/generators.js.map +1 -1
- package/dist/tooling/test-harness/index.d.ts +1 -1
- package/dist/tooling/test-harness/index.d.ts.map +1 -1
- package/dist/tooling/test-harness/index.js.map +1 -1
- package/dist/tooling/test-harness/snapshot.d.ts.map +1 -1
- package/dist/tooling/test-harness/snapshot.js +2 -2
- package/dist/tooling/test-harness/snapshot.js.map +1 -1
- package/dist/type-theory/cubical/types.d.ts +25 -0
- package/dist/type-theory/cubical/types.d.ts.map +1 -1
- package/dist/type-theory/cubical/types.js +20 -0
- package/dist/type-theory/cubical/types.js.map +1 -1
- package/dist/type-theory/curry-howard/types.d.ts +27 -0
- package/dist/type-theory/curry-howard/types.d.ts.map +1 -1
- package/dist/type-theory/curry-howard/types.js +18 -0
- package/dist/type-theory/curry-howard/types.js.map +1 -1
- package/dist/type-theory/hindley-milner/substitution.d.ts +39 -0
- package/dist/type-theory/hindley-milner/substitution.d.ts.map +1 -1
- package/dist/type-theory/hindley-milner/substitution.js +37 -0
- package/dist/type-theory/hindley-milner/substitution.js.map +1 -1
- package/dist/type-theory/hindley-milner/types.d.ts +25 -0
- package/dist/type-theory/hindley-milner/types.d.ts.map +1 -1
- package/dist/type-theory/hindley-milner/types.js +22 -2
- package/dist/type-theory/hindley-milner/types.js.map +1 -1
- package/dist/type-theory/hol/rules.d.ts +36 -0
- package/dist/type-theory/hol/rules.d.ts.map +1 -1
- package/dist/type-theory/hol/rules.js +36 -0
- package/dist/type-theory/hol/rules.js.map +1 -1
- package/dist/type-theory/hott/types.d.ts +32 -0
- package/dist/type-theory/hott/types.d.ts.map +1 -1
- package/dist/type-theory/hott/types.js +31 -1
- package/dist/type-theory/hott/types.js.map +1 -1
- package/dist/type-theory/lambda-cube/types.d.ts +17 -0
- package/dist/type-theory/lambda-cube/types.d.ts.map +1 -1
- package/dist/type-theory/lambda-cube/types.js +13 -0
- package/dist/type-theory/lambda-cube/types.js.map +1 -1
- package/dist/type-theory/mltt/types.d.ts +19 -0
- package/dist/type-theory/mltt/types.d.ts.map +1 -1
- package/dist/type-theory/mltt/types.js +15 -1
- package/dist/type-theory/mltt/types.js.map +1 -1
- package/dist/type-theory/nbe/types.d.ts +21 -0
- package/dist/type-theory/nbe/types.d.ts.map +1 -1
- package/dist/type-theory/nbe/types.js +13 -1
- package/dist/type-theory/nbe/types.js.map +1 -1
- package/dist/type-theory/refinement-types/types.d.ts +38 -0
- package/dist/type-theory/refinement-types/types.d.ts.map +1 -1
- package/dist/type-theory/refinement-types/types.js +35 -0
- package/dist/type-theory/refinement-types/types.js.map +1 -1
- package/dist/type-theory/system-f/types.d.ts +30 -0
- package/dist/type-theory/system-f/types.d.ts.map +1 -1
- package/dist/type-theory/system-f/types.js +24 -3
- package/dist/type-theory/system-f/types.js.map +1 -1
- package/dist/types/index.d.ts +42 -0
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/index.js.map +1 -1
- package/package.json +1 -1
|
@@ -1,3 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Término de Martin-Löf Type Theory (MLTT): tipos y términos comparten el mismo universo.
|
|
3
|
+
* Cubre variables, universos jerárquicos, Π, Σ, λ, app, pares, identidad, Nat y constructores numéricos.
|
|
4
|
+
*/
|
|
1
5
|
export type MLTTTerm = {
|
|
2
6
|
kind: 'var';
|
|
3
7
|
name: string;
|
|
@@ -49,20 +53,35 @@ export type MLTTTerm = {
|
|
|
49
53
|
kind: 'succ';
|
|
50
54
|
arg: MLTTTerm;
|
|
51
55
|
};
|
|
56
|
+
/** Variable. */
|
|
52
57
|
export declare const mVar: (name: string) => MLTTTerm;
|
|
58
|
+
/** Universo `Type level`. */
|
|
53
59
|
export declare const mUniverse: (level?: number) => MLTTTerm;
|
|
60
|
+
/** Tipo Π dependiente `Π bind:domain. codomain`. */
|
|
54
61
|
export declare const mPi: (bind: string, domain: MLTTTerm, codomain: MLTTTerm) => MLTTTerm;
|
|
62
|
+
/** Abstracción dependiente `λ bind:domain. body`. */
|
|
55
63
|
export declare const mLam: (bind: string, domain: MLTTTerm, body: MLTTTerm) => MLTTTerm;
|
|
64
|
+
/** Aplicación `fn arg`. */
|
|
56
65
|
export declare const mApp: (fn: MLTTTerm, arg: MLTTTerm) => MLTTTerm;
|
|
66
|
+
/** Tipo Σ dependiente `Σ bind:first. second`. */
|
|
57
67
|
export declare const mSigma: (bind: string, first: MLTTTerm, second: MLTTTerm) => MLTTTerm;
|
|
68
|
+
/** Par dependiente `⟨fst, snd⟩`. */
|
|
58
69
|
export declare const mPair: (fst: MLTTTerm, snd: MLTTTerm) => MLTTTerm;
|
|
70
|
+
/** Proyección izquierda `fst pair`. */
|
|
59
71
|
export declare const mFst: (pair: MLTTTerm) => MLTTTerm;
|
|
72
|
+
/** Proyección derecha `snd pair`. */
|
|
60
73
|
export declare const mSnd: (pair: MLTTTerm) => MLTTTerm;
|
|
74
|
+
/** Tipo identidad `Id(type, left, right)`. */
|
|
61
75
|
export declare const mId: (type: MLTTTerm, left: MLTTTerm, right: MLTTTerm) => MLTTTerm;
|
|
76
|
+
/** Prueba de reflexividad `refl(term)`. */
|
|
62
77
|
export declare const mRefl: (term: MLTTTerm) => MLTTTerm;
|
|
78
|
+
/** Tipo de los números naturales `Nat`. */
|
|
63
79
|
export declare const mNat: () => MLTTTerm;
|
|
80
|
+
/** Constructor `zero : Nat`. */
|
|
64
81
|
export declare const mZero: () => MLTTTerm;
|
|
82
|
+
/** Sucesor `succ(arg) : Nat`. */
|
|
65
83
|
export declare const mSucc: (arg: MLTTTerm) => MLTTTerm;
|
|
84
|
+
/** Flecha no-dependiente `from → to` (azúcar: `Π _ : from. to`). */
|
|
66
85
|
export declare const mArrow: (from: MLTTTerm, to: MLTTTerm) => MLTTTerm;
|
|
67
86
|
/** ¿`name` aparece libre en `term`? */
|
|
68
87
|
export declare function occursFree(name: string, term: MLTTTerm): boolean;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/type-theory/mltt/types.ts"],"names":[],"mappings":"AAqBA,MAAM,MAAM,QAAQ,GAChB;IAAE,IAAI,EAAE,KAAK,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAC7B;IAAE,IAAI,EAAE,UAAU,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GACnC;IAAE,IAAI,EAAE,IAAI,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,QAAQ,CAAC;IAAC,QAAQ,EAAE,QAAQ,CAAA;CAAE,GAClE;IAAE,IAAI,EAAE,KAAK,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,QAAQ,CAAC;IAAC,IAAI,EAAE,QAAQ,CAAA;CAAE,GAC/D;IAAE,IAAI,EAAE,KAAK,CAAC;IAAC,EAAE,EAAE,QAAQ,CAAC;IAAC,GAAG,EAAE,QAAQ,CAAA;CAAE,GAC5C;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,QAAQ,CAAC;IAAC,MAAM,EAAE,QAAQ,CAAA;CAAE,GAClE;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,QAAQ,CAAC;IAAC,GAAG,EAAE,QAAQ,CAAA;CAAE,GAC9C;IAAE,IAAI,EAAE,KAAK,CAAC;IAAC,IAAI,EAAE,QAAQ,CAAA;CAAE,GAC/B;IAAE,IAAI,EAAE,KAAK,CAAC;IAAC,IAAI,EAAE,QAAQ,CAAA;CAAE,GAC/B;IAAE,IAAI,EAAE,UAAU,CAAC;IAAC,IAAI,EAAE,QAAQ,CAAC;IAAC,IAAI,EAAE,QAAQ,CAAC;IAAC,KAAK,EAAE,QAAQ,CAAA;CAAE,GACrE;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,QAAQ,CAAA;CAAE,GAChC;IAAE,IAAI,EAAE,KAAK,CAAA;CAAE,GACf;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,GAChB;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,QAAQ,CAAA;CAAE,CAAC;AAIpC,eAAO,MAAM,IAAI,GAAI,MAAM,MAAM,KAAG,QAAmC,CAAC;AACxE,eAAO,MAAM,SAAS,GAAI,cAAS,KAAG,QAAyC,CAAC;AAChF,eAAO,MAAM,GAAG,GAAI,MAAM,MAAM,EAAE,QAAQ,QAAQ,EAAE,UAAU,QAAQ,KAAG,QAKvE,CAAC;AACH,eAAO,MAAM,IAAI,GAAI,MAAM,MAAM,EAAE,QAAQ,QAAQ,EAAE,MAAM,QAAQ,KAAG,QAKpE,CAAC;AACH,eAAO,MAAM,IAAI,GAAI,IAAI,QAAQ,EAAE,KAAK,QAAQ,KAAG,QAAsC,CAAC;AAC1F,eAAO,MAAM,MAAM,GAAI,MAAM,MAAM,EAAE,OAAO,QAAQ,EAAE,QAAQ,QAAQ,KAAG,QAKvE,CAAC;AACH,eAAO,MAAM,KAAK,GAAI,KAAK,QAAQ,EAAE,KAAK,QAAQ,KAAG,QAAwC,CAAC;AAC9F,eAAO,MAAM,IAAI,GAAI,MAAM,QAAQ,KAAG,QAAmC,CAAC;AAC1E,eAAO,MAAM,IAAI,GAAI,MAAM,QAAQ,KAAG,QAAmC,CAAC;AAC1E,eAAO,MAAM,GAAG,GAAI,MAAM,QAAQ,EAAE,MAAM,QAAQ,EAAE,OAAO,QAAQ,KAAG,QAKpE,CAAC;AACH,eAAO,MAAM,KAAK,GAAI,MAAM,QAAQ,KAAG,QAAoC,CAAC;AAC5E,eAAO,MAAM,IAAI,QAAO,QAA6B,CAAC;AACtD,eAAO,MAAM,KAAK,QAAO,QAA8B,CAAC;AACxD,eAAO,MAAM,KAAK,GAAI,KAAK,QAAQ,KAAG,QAAmC,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/type-theory/mltt/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -25,10 +25,13 @@ exports.occursFree = occursFree;
|
|
|
25
25
|
exports.freeVars = freeVars;
|
|
26
26
|
exports.termToString = termToString;
|
|
27
27
|
// ---------- Constructores convenientes ----------
|
|
28
|
+
/** Variable. */
|
|
28
29
|
const mVar = (name) => ({ kind: 'var', name });
|
|
29
30
|
exports.mVar = mVar;
|
|
31
|
+
/** Universo `Type level`. */
|
|
30
32
|
const mUniverse = (level = 0) => ({ kind: 'universe', level });
|
|
31
33
|
exports.mUniverse = mUniverse;
|
|
34
|
+
/** Tipo Π dependiente `Π bind:domain. codomain`. */
|
|
32
35
|
const mPi = (bind, domain, codomain) => ({
|
|
33
36
|
kind: 'pi',
|
|
34
37
|
bind,
|
|
@@ -36,6 +39,7 @@ const mPi = (bind, domain, codomain) => ({
|
|
|
36
39
|
codomain,
|
|
37
40
|
});
|
|
38
41
|
exports.mPi = mPi;
|
|
42
|
+
/** Abstracción dependiente `λ bind:domain. body`. */
|
|
39
43
|
const mLam = (bind, domain, body) => ({
|
|
40
44
|
kind: 'lam',
|
|
41
45
|
bind,
|
|
@@ -43,8 +47,10 @@ const mLam = (bind, domain, body) => ({
|
|
|
43
47
|
body,
|
|
44
48
|
});
|
|
45
49
|
exports.mLam = mLam;
|
|
50
|
+
/** Aplicación `fn arg`. */
|
|
46
51
|
const mApp = (fn, arg) => ({ kind: 'app', fn, arg });
|
|
47
52
|
exports.mApp = mApp;
|
|
53
|
+
/** Tipo Σ dependiente `Σ bind:first. second`. */
|
|
48
54
|
const mSigma = (bind, first, second) => ({
|
|
49
55
|
kind: 'sigma',
|
|
50
56
|
bind,
|
|
@@ -52,12 +58,16 @@ const mSigma = (bind, first, second) => ({
|
|
|
52
58
|
second,
|
|
53
59
|
});
|
|
54
60
|
exports.mSigma = mSigma;
|
|
61
|
+
/** Par dependiente `⟨fst, snd⟩`. */
|
|
55
62
|
const mPair = (fst, snd) => ({ kind: 'pair', fst, snd });
|
|
56
63
|
exports.mPair = mPair;
|
|
64
|
+
/** Proyección izquierda `fst pair`. */
|
|
57
65
|
const mFst = (pair) => ({ kind: 'fst', pair });
|
|
58
66
|
exports.mFst = mFst;
|
|
67
|
+
/** Proyección derecha `snd pair`. */
|
|
59
68
|
const mSnd = (pair) => ({ kind: 'snd', pair });
|
|
60
69
|
exports.mSnd = mSnd;
|
|
70
|
+
/** Tipo identidad `Id(type, left, right)`. */
|
|
61
71
|
const mId = (type, left, right) => ({
|
|
62
72
|
kind: 'identity',
|
|
63
73
|
type,
|
|
@@ -65,15 +75,19 @@ const mId = (type, left, right) => ({
|
|
|
65
75
|
right,
|
|
66
76
|
});
|
|
67
77
|
exports.mId = mId;
|
|
78
|
+
/** Prueba de reflexividad `refl(term)`. */
|
|
68
79
|
const mRefl = (term) => ({ kind: 'refl', term });
|
|
69
80
|
exports.mRefl = mRefl;
|
|
81
|
+
/** Tipo de los números naturales `Nat`. */
|
|
70
82
|
const mNat = () => ({ kind: 'nat' });
|
|
71
83
|
exports.mNat = mNat;
|
|
84
|
+
/** Constructor `zero : Nat`. */
|
|
72
85
|
const mZero = () => ({ kind: 'zero' });
|
|
73
86
|
exports.mZero = mZero;
|
|
87
|
+
/** Sucesor `succ(arg) : Nat`. */
|
|
74
88
|
const mSucc = (arg) => ({ kind: 'succ', arg });
|
|
75
89
|
exports.mSucc = mSucc;
|
|
76
|
-
|
|
90
|
+
/** Flecha no-dependiente `from → to` (azúcar: `Π _ : from. to`). */
|
|
77
91
|
const mArrow = (from, to) => (0, exports.mPi)('_', from, to);
|
|
78
92
|
exports.mArrow = mArrow;
|
|
79
93
|
// ---------- Helpers de inspección ----------
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/type-theory/mltt/types.ts"],"names":[],"mappings":";AAAA,+DAA+D;AAC/D,gEAAgE;AAChE,+DAA+D;AAC/D,EAAE;AACF,oBAAoB;AACpB,mEAAmE;AACnE,oDAAoD;AACpD,oDAAoD;AACpD,qEAAqE;AACrE,oDAAoD;AACpD,EAAE;AACF,+DAA+D;AAC/D,gEAAgE;AAChE,4CAA4C;AAC5C,EAAE;AACF,gBAAgB;AAChB,kDAAkD;AAClD,sCAAsC;AACtC,+DAA+D;AAC/D,gEAAgE;;;
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/type-theory/mltt/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
/** Tipo del STLC para NbE: tipo base `base` o flecha `from → to`. */
|
|
1
2
|
export type Type = {
|
|
2
3
|
kind: 'base';
|
|
3
4
|
name: string;
|
|
@@ -6,6 +7,7 @@ export type Type = {
|
|
|
6
7
|
from: Type;
|
|
7
8
|
to: Type;
|
|
8
9
|
};
|
|
10
|
+
/** Término sintáctico del STLC: variable, abstracción λ o aplicación. */
|
|
9
11
|
export type Term = {
|
|
10
12
|
kind: 'var';
|
|
11
13
|
name: string;
|
|
@@ -19,6 +21,10 @@ export type Term = {
|
|
|
19
21
|
fn: Term;
|
|
20
22
|
arg: Term;
|
|
21
23
|
};
|
|
24
|
+
/**
|
|
25
|
+
* Valor semántico del NbE para STLC.
|
|
26
|
+
* `'neutral'` = variable libre o aplicación bloqueada; `'closure'` = λ capturada con entorno léxico.
|
|
27
|
+
*/
|
|
22
28
|
export type Value = {
|
|
23
29
|
kind: 'neutral';
|
|
24
30
|
head: Neutral;
|
|
@@ -29,6 +35,7 @@ export type Value = {
|
|
|
29
35
|
paramType: Type;
|
|
30
36
|
body: Term;
|
|
31
37
|
};
|
|
38
|
+
/** Término neutral: variable libre o aplicación cuya cabeza es neutral. */
|
|
32
39
|
export type Neutral = {
|
|
33
40
|
kind: 'var';
|
|
34
41
|
name: string;
|
|
@@ -37,18 +44,32 @@ export type Neutral = {
|
|
|
37
44
|
head: Neutral;
|
|
38
45
|
arg: Value;
|
|
39
46
|
};
|
|
47
|
+
/** Entorno léxico para NbE: mapa de variables a valores semánticos. */
|
|
40
48
|
export type Env = Map<string, Value>;
|
|
49
|
+
/** Tipo base (primitivo) con nombre. */
|
|
41
50
|
export declare const tBase: (name: string) => Type;
|
|
51
|
+
/** Tipo flecha `from → to`. */
|
|
42
52
|
export declare const tArr: (from: Type, to: Type) => Type;
|
|
53
|
+
/** Variable sintáctica. */
|
|
43
54
|
export declare const v: (name: string) => Term;
|
|
55
|
+
/** Abstracción λ sintáctica. */
|
|
44
56
|
export declare const lam: (param: string, paramType: Type, body: Term) => Term;
|
|
57
|
+
/** Aplicación binaria `fn arg`. */
|
|
45
58
|
export declare const ap: (fn: Term, arg: Term) => Term;
|
|
59
|
+
/** Aplicación n-aria: `apN(f, a, b, c)` = `((f a) b) c`. */
|
|
46
60
|
export declare const apN: (head: Term, ...args: Term[]) => Term;
|
|
61
|
+
/** Valor neutral de una variable libre `name`. */
|
|
47
62
|
export declare const vNeutralVar: (name: string) => Value;
|
|
63
|
+
/** Valor neutral a partir de una cabeza neutral. */
|
|
48
64
|
export declare const vNeutral: (head: Neutral) => Value;
|
|
65
|
+
/** Valor closure (λ semántica) con entorno léxico. */
|
|
49
66
|
export declare const vClosure: (env: Env, param: string, paramType: Type, body: Term) => Value;
|
|
67
|
+
/** Igualdad α-equivalente entre términos STLC (renombra binders a posiciones canónicas). */
|
|
50
68
|
export declare function alphaEq(a: Term, b: Term): boolean;
|
|
69
|
+
/** Igualdad estructural entre dos tipos STLC. */
|
|
51
70
|
export declare function typeEq(a: Type, b: Type): boolean;
|
|
71
|
+
/** Serializa un tipo STLC a texto (flechas asociativas a la derecha). */
|
|
52
72
|
export declare function typeToString(t: Type): string;
|
|
73
|
+
/** Serializa un término STLC a texto legible. */
|
|
53
74
|
export declare function termToString(t: Term): string;
|
|
54
75
|
//# sourceMappingURL=types.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/type-theory/nbe/types.ts"],"names":[],"mappings":"AAUA,MAAM,MAAM,IAAI,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAAG;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,IAAI,EAAE,IAAI,CAAC;IAAC,EAAE,EAAE,IAAI,CAAA;CAAE,CAAC;AAE5F,MAAM,MAAM,IAAI,GACZ;IAAE,IAAI,EAAE,KAAK,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAC7B;IAAE,IAAI,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,IAAI,CAAC;IAAC,IAAI,EAAE,IAAI,CAAA;CAAE,GAC3D;IAAE,IAAI,EAAE,KAAK,CAAC;IAAC,EAAE,EAAE,IAAI,CAAC;IAAC,GAAG,EAAE,IAAI,CAAA;CAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/type-theory/nbe/types.ts"],"names":[],"mappings":"AAUA,qEAAqE;AACrE,MAAM,MAAM,IAAI,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAAG;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,IAAI,EAAE,IAAI,CAAC;IAAC,EAAE,EAAE,IAAI,CAAA;CAAE,CAAC;AAE5F,yEAAyE;AACzE,MAAM,MAAM,IAAI,GACZ;IAAE,IAAI,EAAE,KAAK,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAC7B;IAAE,IAAI,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,IAAI,CAAC;IAAC,IAAI,EAAE,IAAI,CAAA;CAAE,GAC3D;IAAE,IAAI,EAAE,KAAK,CAAC;IAAC,EAAE,EAAE,IAAI,CAAC;IAAC,GAAG,EAAE,IAAI,CAAA;CAAE,CAAC;AAEzC;;;GAGG;AACH,MAAM,MAAM,KAAK,GACb;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,IAAI,EAAE,OAAO,CAAA;CAAE,GAClC;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,GAAG,EAAE,GAAG,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,IAAI,CAAC;IAAC,IAAI,EAAE,IAAI,CAAA;CAAE,CAAC;AAE9E,2EAA2E;AAC3E,MAAM,MAAM,OAAO,GAAG;IAAE,IAAI,EAAE,KAAK,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAAG;IAAE,IAAI,EAAE,KAAK,CAAC;IAAC,IAAI,EAAE,OAAO,CAAC;IAAC,GAAG,EAAE,KAAK,CAAA;CAAE,CAAC;AAEjG,uEAAuE;AACvE,MAAM,MAAM,GAAG,GAAG,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;AAGrC,wCAAwC;AACxC,eAAO,MAAM,KAAK,GAAI,MAAM,MAAM,KAAG,IAAgC,CAAC;AACtE,+BAA+B;AAC/B,eAAO,MAAM,IAAI,GAAI,MAAM,IAAI,EAAE,IAAI,IAAI,KAAG,IAAqC,CAAC;AAElF,2BAA2B;AAC3B,eAAO,MAAM,CAAC,GAAI,MAAM,MAAM,KAAG,IAA+B,CAAC;AACjE,gCAAgC;AAChC,eAAO,MAAM,GAAG,GAAI,OAAO,MAAM,EAAE,WAAW,IAAI,EAAE,MAAM,IAAI,KAAG,IAK/D,CAAC;AACH,mCAAmC;AACnC,eAAO,MAAM,EAAE,GAAI,IAAI,IAAI,EAAE,KAAK,IAAI,KAAG,IAAkC,CAAC;AAC5E,4DAA4D;AAC5D,eAAO,MAAM,GAAG,GAAI,MAAM,IAAI,EAAE,GAAG,MAAM,IAAI,EAAE,KAAG,IAA6B,CAAC;AAGhF,kDAAkD;AAClD,eAAO,MAAM,WAAW,GAAI,MAAM,MAAM,KAAG,KAGzC,CAAC;AACH,oDAAoD;AACpD,eAAO,MAAM,QAAQ,GAAI,MAAM,OAAO,KAAG,KAAoC,CAAC;AAC9E,sDAAsD;AACtD,eAAO,MAAM,QAAQ,GAAI,KAAK,GAAG,EAAE,OAAO,MAAM,EAAE,WAAW,IAAI,EAAE,MAAM,IAAI,KAAG,KAM9E,CAAC;AAGH,4FAA4F;AAC5F,wBAAgB,OAAO,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,GAAG,OAAO,CAEjD;AAsCD,iDAAiD;AACjD,wBAAgB,MAAM,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,GAAG,OAAO,CAOhD;AAGD,yEAAyE;AACzE,wBAAgB,YAAY,CAAC,CAAC,EAAE,IAAI,GAAG,MAAM,CAK5C;AAED,iDAAiD;AACjD,wBAAgB,YAAY,CAAC,CAAC,EAAE,IAAI,GAAG,MAAM,CAY5C"}
|
|
@@ -15,12 +15,16 @@ exports.typeEq = typeEq;
|
|
|
15
15
|
exports.typeToString = typeToString;
|
|
16
16
|
exports.termToString = termToString;
|
|
17
17
|
// ---------- Constructores sintácticos ----------
|
|
18
|
+
/** Tipo base (primitivo) con nombre. */
|
|
18
19
|
const tBase = (name) => ({ kind: 'base', name });
|
|
19
20
|
exports.tBase = tBase;
|
|
21
|
+
/** Tipo flecha `from → to`. */
|
|
20
22
|
const tArr = (from, to) => ({ kind: 'arrow', from, to });
|
|
21
23
|
exports.tArr = tArr;
|
|
24
|
+
/** Variable sintáctica. */
|
|
22
25
|
const v = (name) => ({ kind: 'var', name });
|
|
23
26
|
exports.v = v;
|
|
27
|
+
/** Abstracción λ sintáctica. */
|
|
24
28
|
const lam = (param, paramType, body) => ({
|
|
25
29
|
kind: 'abs',
|
|
26
30
|
param,
|
|
@@ -28,18 +32,23 @@ const lam = (param, paramType, body) => ({
|
|
|
28
32
|
body,
|
|
29
33
|
});
|
|
30
34
|
exports.lam = lam;
|
|
35
|
+
/** Aplicación binaria `fn arg`. */
|
|
31
36
|
const ap = (fn, arg) => ({ kind: 'app', fn, arg });
|
|
32
37
|
exports.ap = ap;
|
|
38
|
+
/** Aplicación n-aria: `apN(f, a, b, c)` = `((f a) b) c`. */
|
|
33
39
|
const apN = (head, ...args) => args.reduce(exports.ap, head);
|
|
34
40
|
exports.apN = apN;
|
|
35
41
|
// ---------- Constructores semánticos ----------
|
|
42
|
+
/** Valor neutral de una variable libre `name`. */
|
|
36
43
|
const vNeutralVar = (name) => ({
|
|
37
44
|
kind: 'neutral',
|
|
38
45
|
head: { kind: 'var', name },
|
|
39
46
|
});
|
|
40
47
|
exports.vNeutralVar = vNeutralVar;
|
|
48
|
+
/** Valor neutral a partir de una cabeza neutral. */
|
|
41
49
|
const vNeutral = (head) => ({ kind: 'neutral', head });
|
|
42
50
|
exports.vNeutral = vNeutral;
|
|
51
|
+
/** Valor closure (λ semántica) con entorno léxico. */
|
|
43
52
|
const vClosure = (env, param, paramType, body) => ({
|
|
44
53
|
kind: 'closure',
|
|
45
54
|
env,
|
|
@@ -49,7 +58,7 @@ const vClosure = (env, param, paramType, body) => ({
|
|
|
49
58
|
});
|
|
50
59
|
exports.vClosure = vClosure;
|
|
51
60
|
// ---------- Igualdad estructural módulo α ----------
|
|
52
|
-
|
|
61
|
+
/** Igualdad α-equivalente entre términos STLC (renombra binders a posiciones canónicas). */
|
|
53
62
|
function alphaEq(a, b) {
|
|
54
63
|
return alphaEqEnv(a, b, new Map(), new Map(), { n: 0 });
|
|
55
64
|
}
|
|
@@ -83,6 +92,7 @@ function alphaEqEnv(a, b, envA, envB, counter) {
|
|
|
83
92
|
}
|
|
84
93
|
}
|
|
85
94
|
}
|
|
95
|
+
/** Igualdad estructural entre dos tipos STLC. */
|
|
86
96
|
function typeEq(a, b) {
|
|
87
97
|
if (a.kind !== b.kind)
|
|
88
98
|
return false;
|
|
@@ -94,6 +104,7 @@ function typeEq(a, b) {
|
|
|
94
104
|
return false;
|
|
95
105
|
}
|
|
96
106
|
// Pretty-printer mínimo para términos y tipos (útil en tests/debug).
|
|
107
|
+
/** Serializa un tipo STLC a texto (flechas asociativas a la derecha). */
|
|
97
108
|
function typeToString(t) {
|
|
98
109
|
if (t.kind === 'base')
|
|
99
110
|
return t.name;
|
|
@@ -101,6 +112,7 @@ function typeToString(t) {
|
|
|
101
112
|
const from = t.from.kind === 'arrow' ? `(${typeToString(t.from)})` : typeToString(t.from);
|
|
102
113
|
return `${from} → ${typeToString(t.to)}`;
|
|
103
114
|
}
|
|
115
|
+
/** Serializa un término STLC a texto legible. */
|
|
104
116
|
function termToString(t) {
|
|
105
117
|
switch (t.kind) {
|
|
106
118
|
case 'var':
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/type-theory/nbe/types.ts"],"names":[],"mappings":";AAAA,+DAA+D;AAC/D,wDAAwD;AACxD,+DAA+D;AAC/D,EAAE;AACF,iEAAiE;AACjE,mEAAmE;AACnE,8DAA8D;AAC9D,mEAAmE;AACnE,+CAA+C;;;
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/type-theory/nbe/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,8 +1,10 @@
|
|
|
1
|
+
/** Tipo base de un tipo refinado: primitivo o flecha entre tipos refinados. */
|
|
1
2
|
export type BaseType = 'Int' | 'Bool' | 'String' | {
|
|
2
3
|
kind: 'arrow';
|
|
3
4
|
from: RefType;
|
|
4
5
|
to: RefType;
|
|
5
6
|
};
|
|
7
|
+
/** Tipo refinado `{ binding : base | predicate }`. */
|
|
6
8
|
export interface RefType {
|
|
7
9
|
base: BaseType;
|
|
8
10
|
/** Nombre de la variable de binding usada por el predicado (e.g. "x"). */
|
|
@@ -10,6 +12,7 @@ export interface RefType {
|
|
|
10
12
|
/** Predicado P(binding); cadena vacía o "true" significa "sin refinamiento". */
|
|
11
13
|
predicate: string;
|
|
12
14
|
}
|
|
15
|
+
/** Término del lenguaje de refinamiento (AST). */
|
|
13
16
|
export type RTerm = {
|
|
14
17
|
kind: 'lit';
|
|
15
18
|
value: number | boolean | string;
|
|
@@ -42,23 +45,58 @@ export type RTerm = {
|
|
|
42
45
|
value: RTerm;
|
|
43
46
|
body: RTerm;
|
|
44
47
|
};
|
|
48
|
+
/** Construye el tipo refinado `{ binding : Int | predicate }`. */
|
|
45
49
|
export declare const tInt: (binding?: string, predicate?: string) => RefType;
|
|
50
|
+
/** Construye el tipo refinado `{ binding : Bool | predicate }`. */
|
|
46
51
|
export declare const tBool: (binding?: string, predicate?: string) => RefType;
|
|
52
|
+
/** Construye el tipo refinado `{ binding : String | predicate }`. */
|
|
47
53
|
export declare const tString: (binding?: string, predicate?: string) => RefType;
|
|
54
|
+
/**
|
|
55
|
+
* Construye un tipo refinado flecha `{ binding : (from -> to) | predicate }`.
|
|
56
|
+
* @param from - Tipo del parámetro.
|
|
57
|
+
* @param to - Tipo del resultado.
|
|
58
|
+
*/
|
|
48
59
|
export declare const tArrow: (from: RefType, to: RefType, binding?: string, predicate?: string) => RefType;
|
|
60
|
+
/**
|
|
61
|
+
* Construye un tipo refinado a partir de sus partes.
|
|
62
|
+
* @param base - Tipo base (primitivo o flecha).
|
|
63
|
+
* @param binding - Nombre de la variable de binding.
|
|
64
|
+
* @param predicate - Predicado textual sobre la variable.
|
|
65
|
+
*/
|
|
49
66
|
export declare const refine: (base: BaseType, binding: string, predicate: string) => RefType;
|
|
67
|
+
/** Crea un literal (número, booleano o cadena). */
|
|
50
68
|
export declare const rLit: (value: number | boolean | string) => RTerm;
|
|
69
|
+
/** Crea una referencia a variable por nombre. */
|
|
51
70
|
export declare const rVar: (name: string) => RTerm;
|
|
71
|
+
/**
|
|
72
|
+
* Crea una expresión binaria con operador `op`.
|
|
73
|
+
* @param op - Operador aritmético, de comparación o lógico.
|
|
74
|
+
*/
|
|
52
75
|
export declare const rBinop: (op: Extract<RTerm, {
|
|
53
76
|
kind: "binop";
|
|
54
77
|
}>["op"], left: RTerm, right: RTerm) => RTerm;
|
|
78
|
+
/** Crea una expresión condicional `if cond then t else e`. */
|
|
55
79
|
export declare const rIf: (cond: RTerm, t: RTerm, e: RTerm) => RTerm;
|
|
80
|
+
/** Crea una abstracción lambda con tipo refinado para el parámetro. */
|
|
56
81
|
export declare const rLam: (param: string, paramType: RefType, body: RTerm) => RTerm;
|
|
82
|
+
/** Crea una aplicación de función a argumento. */
|
|
57
83
|
export declare const rApp: (fn: RTerm, arg: RTerm) => RTerm;
|
|
84
|
+
/** Crea un `let bind = value in body` con anotación de tipo opcional. */
|
|
58
85
|
export declare const rLet: (bind: string, value: RTerm, body: RTerm, bindType?: RefType) => RTerm;
|
|
86
|
+
/**
|
|
87
|
+
* Comprueba igualdad estructural de dos `BaseType`.
|
|
88
|
+
* Para flechas, delega en `eqRefType` para los subtipos.
|
|
89
|
+
*/
|
|
59
90
|
export declare function eqBase(a: BaseType, b: BaseType): boolean;
|
|
91
|
+
/**
|
|
92
|
+
* Comprueba igualdad estructural de dos `RefType` (ignora predicados;
|
|
93
|
+
* la equivalencia semántica la maneja el subtipado).
|
|
94
|
+
*/
|
|
60
95
|
export declare function eqRefType(a: RefType, b: RefType): boolean;
|
|
96
|
+
/** Serializa un `BaseType` en notación legible (e.g. `Int`, `(T) -> (U)`). */
|
|
61
97
|
export declare function baseToString(b: BaseType): string;
|
|
98
|
+
/** Serializa un `RefType` como `{ v : B | P }` (sin predicado si es trivial). */
|
|
62
99
|
export declare function refTypeToString(t: RefType): string;
|
|
100
|
+
/** Serializa un `RTerm` en notación legible para debugging y mensajes de error. */
|
|
63
101
|
export declare function termToString(t: RTerm): string;
|
|
64
102
|
//# sourceMappingURL=types.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/type-theory/refinement-types/types.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/type-theory/refinement-types/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -21,30 +21,44 @@ exports.baseToString = baseToString;
|
|
|
21
21
|
exports.refTypeToString = refTypeToString;
|
|
22
22
|
exports.termToString = termToString;
|
|
23
23
|
// ---------- Constructores convenientes ----------
|
|
24
|
+
/** Construye el tipo refinado `{ binding : Int | predicate }`. */
|
|
24
25
|
const tInt = (binding = '_v', predicate = 'true') => ({
|
|
25
26
|
base: 'Int',
|
|
26
27
|
binding,
|
|
27
28
|
predicate,
|
|
28
29
|
});
|
|
29
30
|
exports.tInt = tInt;
|
|
31
|
+
/** Construye el tipo refinado `{ binding : Bool | predicate }`. */
|
|
30
32
|
const tBool = (binding = '_v', predicate = 'true') => ({
|
|
31
33
|
base: 'Bool',
|
|
32
34
|
binding,
|
|
33
35
|
predicate,
|
|
34
36
|
});
|
|
35
37
|
exports.tBool = tBool;
|
|
38
|
+
/** Construye el tipo refinado `{ binding : String | predicate }`. */
|
|
36
39
|
const tString = (binding = '_v', predicate = 'true') => ({
|
|
37
40
|
base: 'String',
|
|
38
41
|
binding,
|
|
39
42
|
predicate,
|
|
40
43
|
});
|
|
41
44
|
exports.tString = tString;
|
|
45
|
+
/**
|
|
46
|
+
* Construye un tipo refinado flecha `{ binding : (from -> to) | predicate }`.
|
|
47
|
+
* @param from - Tipo del parámetro.
|
|
48
|
+
* @param to - Tipo del resultado.
|
|
49
|
+
*/
|
|
42
50
|
const tArrow = (from, to, binding = '_v', predicate = 'true') => ({
|
|
43
51
|
base: { kind: 'arrow', from, to },
|
|
44
52
|
binding,
|
|
45
53
|
predicate,
|
|
46
54
|
});
|
|
47
55
|
exports.tArrow = tArrow;
|
|
56
|
+
/**
|
|
57
|
+
* Construye un tipo refinado a partir de sus partes.
|
|
58
|
+
* @param base - Tipo base (primitivo o flecha).
|
|
59
|
+
* @param binding - Nombre de la variable de binding.
|
|
60
|
+
* @param predicate - Predicado textual sobre la variable.
|
|
61
|
+
*/
|
|
48
62
|
const refine = (base, binding, predicate) => ({
|
|
49
63
|
base,
|
|
50
64
|
binding,
|
|
@@ -52,12 +66,19 @@ const refine = (base, binding, predicate) => ({
|
|
|
52
66
|
});
|
|
53
67
|
exports.refine = refine;
|
|
54
68
|
// ---------- Constructores de términos ----------
|
|
69
|
+
/** Crea un literal (número, booleano o cadena). */
|
|
55
70
|
const rLit = (value) => ({ kind: 'lit', value });
|
|
56
71
|
exports.rLit = rLit;
|
|
72
|
+
/** Crea una referencia a variable por nombre. */
|
|
57
73
|
const rVar = (name) => ({ kind: 'var', name });
|
|
58
74
|
exports.rVar = rVar;
|
|
75
|
+
/**
|
|
76
|
+
* Crea una expresión binaria con operador `op`.
|
|
77
|
+
* @param op - Operador aritmético, de comparación o lógico.
|
|
78
|
+
*/
|
|
59
79
|
const rBinop = (op, left, right) => ({ kind: 'binop', op, left, right });
|
|
60
80
|
exports.rBinop = rBinop;
|
|
81
|
+
/** Crea una expresión condicional `if cond then t else e`. */
|
|
61
82
|
const rIf = (cond, t, e) => ({
|
|
62
83
|
kind: 'if',
|
|
63
84
|
cond,
|
|
@@ -65,6 +86,7 @@ const rIf = (cond, t, e) => ({
|
|
|
65
86
|
else: e,
|
|
66
87
|
});
|
|
67
88
|
exports.rIf = rIf;
|
|
89
|
+
/** Crea una abstracción lambda con tipo refinado para el parámetro. */
|
|
68
90
|
const rLam = (param, paramType, body) => ({
|
|
69
91
|
kind: 'lam',
|
|
70
92
|
param,
|
|
@@ -72,8 +94,10 @@ const rLam = (param, paramType, body) => ({
|
|
|
72
94
|
body,
|
|
73
95
|
});
|
|
74
96
|
exports.rLam = rLam;
|
|
97
|
+
/** Crea una aplicación de función a argumento. */
|
|
75
98
|
const rApp = (fn, arg) => ({ kind: 'app', fn, arg });
|
|
76
99
|
exports.rApp = rApp;
|
|
100
|
+
/** Crea un `let bind = value in body` con anotación de tipo opcional. */
|
|
77
101
|
const rLet = (bind, value, body, bindType) => ({
|
|
78
102
|
kind: 'let',
|
|
79
103
|
bind,
|
|
@@ -83,12 +107,20 @@ const rLet = (bind, value, body, bindType) => ({
|
|
|
83
107
|
});
|
|
84
108
|
exports.rLet = rLet;
|
|
85
109
|
// ---------- Igualdad estructural de tipos base ----------
|
|
110
|
+
/**
|
|
111
|
+
* Comprueba igualdad estructural de dos `BaseType`.
|
|
112
|
+
* Para flechas, delega en `eqRefType` para los subtipos.
|
|
113
|
+
*/
|
|
86
114
|
function eqBase(a, b) {
|
|
87
115
|
if (typeof a === 'string' || typeof b === 'string')
|
|
88
116
|
return a === b;
|
|
89
117
|
// both arrows
|
|
90
118
|
return eqRefType(a.from, b.from) && eqRefType(a.to, b.to);
|
|
91
119
|
}
|
|
120
|
+
/**
|
|
121
|
+
* Comprueba igualdad estructural de dos `RefType` (ignora predicados;
|
|
122
|
+
* la equivalencia semántica la maneja el subtipado).
|
|
123
|
+
*/
|
|
92
124
|
function eqRefType(a, b) {
|
|
93
125
|
if (!eqBase(a.base, b.base))
|
|
94
126
|
return false;
|
|
@@ -97,11 +129,13 @@ function eqRefType(a, b) {
|
|
|
97
129
|
return true;
|
|
98
130
|
}
|
|
99
131
|
// ---------- Serialización legible ----------
|
|
132
|
+
/** Serializa un `BaseType` en notación legible (e.g. `Int`, `(T) -> (U)`). */
|
|
100
133
|
function baseToString(b) {
|
|
101
134
|
if (typeof b === 'string')
|
|
102
135
|
return b;
|
|
103
136
|
return `(${refTypeToString(b.from)}) -> (${refTypeToString(b.to)})`;
|
|
104
137
|
}
|
|
138
|
+
/** Serializa un `RefType` como `{ v : B | P }` (sin predicado si es trivial). */
|
|
105
139
|
function refTypeToString(t) {
|
|
106
140
|
const pred = t.predicate.trim();
|
|
107
141
|
if (pred === '' || pred === 'true') {
|
|
@@ -109,6 +143,7 @@ function refTypeToString(t) {
|
|
|
109
143
|
}
|
|
110
144
|
return `{ ${t.binding} : ${baseToString(t.base)} | ${pred} }`;
|
|
111
145
|
}
|
|
146
|
+
/** Serializa un `RTerm` en notación legible para debugging y mensajes de error. */
|
|
112
147
|
function termToString(t) {
|
|
113
148
|
switch (t.kind) {
|
|
114
149
|
case 'lit':
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/type-theory/refinement-types/types.ts"],"names":[],"mappings":";AAAA,+DAA+D;AAC/D,qDAAqD;AACrD,+DAA+D;AAC/D,EAAE;AACF,mDAAmD;AACnD,sDAAsD;AACtD,kCAAkC;AAClC,6DAA6D;AAC7D,gDAAgD;AAChD,EAAE;AACF,iEAAiE;AACjE,+DAA+D;AAC/D,4DAA4D;AAC5D,8DAA8D;;;
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/type-theory/refinement-types/types.ts"],"names":[],"mappings":";AAAA,+DAA+D;AAC/D,qDAAqD;AACrD,+DAA+D;AAC/D,EAAE;AACF,mDAAmD;AACnD,sDAAsD;AACtD,kCAAkC;AAClC,6DAA6D;AAC7D,gDAAgD;AAChD,EAAE;AACF,iEAAiE;AACjE,+DAA+D;AAC/D,4DAA4D;AAC5D,8DAA8D;;;AA8H9D,wBAIC;AAMD,8BAKC;AAKD,oCAGC;AAGD,0CAMC;AAGD,oCAiBC;AArJD,mDAAmD;AAEnD,kEAAkE;AAC3D,MAAM,IAAI,GAAG,CAAC,OAAO,GAAG,IAAI,EAAE,SAAS,GAAG,MAAM,EAAW,EAAE,CAAC,CAAC;IACpE,IAAI,EAAE,KAAK;IACX,OAAO;IACP,SAAS;CACV,CAAC,CAAC;AAJU,QAAA,IAAI,QAId;AAEH,mEAAmE;AAC5D,MAAM,KAAK,GAAG,CAAC,OAAO,GAAG,IAAI,EAAE,SAAS,GAAG,MAAM,EAAW,EAAE,CAAC,CAAC;IACrE,IAAI,EAAE,MAAM;IACZ,OAAO;IACP,SAAS;CACV,CAAC,CAAC;AAJU,QAAA,KAAK,SAIf;AAEH,qEAAqE;AAC9D,MAAM,OAAO,GAAG,CAAC,OAAO,GAAG,IAAI,EAAE,SAAS,GAAG,MAAM,EAAW,EAAE,CAAC,CAAC;IACvE,IAAI,EAAE,QAAQ;IACd,OAAO;IACP,SAAS;CACV,CAAC,CAAC;AAJU,QAAA,OAAO,WAIjB;AAEH;;;;GAIG;AACI,MAAM,MAAM,GAAG,CACpB,IAAa,EACb,EAAW,EACX,OAAO,GAAG,IAAI,EACd,SAAS,GAAG,MAAM,EACT,EAAE,CAAC,CAAC;IACb,IAAI,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE,EAAE;IACjC,OAAO;IACP,SAAS;CACV,CAAC,CAAC;AATU,QAAA,MAAM,UAShB;AAEH;;;;;GAKG;AACI,MAAM,MAAM,GAAG,CAAC,IAAc,EAAE,OAAe,EAAE,SAAiB,EAAW,EAAE,CAAC,CAAC;IACtF,IAAI;IACJ,OAAO;IACP,SAAS;CACV,CAAC,CAAC;AAJU,QAAA,MAAM,UAIhB;AAEH,kDAAkD;AAElD,mDAAmD;AAC5C,MAAM,IAAI,GAAG,CAAC,KAAgC,EAAS,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC;AAA7E,QAAA,IAAI,QAAyE;AAC1F,iDAAiD;AAC1C,MAAM,IAAI,GAAG,CAAC,IAAY,EAAS,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;AAAxD,QAAA,IAAI,QAAoD;AACrE;;;GAGG;AACI,MAAM,MAAM,GAAG,CACpB,EAA2C,EAC3C,IAAW,EACX,KAAY,EACL,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;AAJpC,QAAA,MAAM,UAI8B;AACjD,8DAA8D;AACvD,MAAM,GAAG,GAAG,CAAC,IAAW,EAAE,CAAQ,EAAE,CAAQ,EAAS,EAAE,CAAC,CAAC;IAC9D,IAAI,EAAE,IAAI;IACV,IAAI;IACJ,IAAI,EAAE,CAAC;IACP,IAAI,EAAE,CAAC;CACR,CAAC,CAAC;AALU,QAAA,GAAG,OAKb;AACH,uEAAuE;AAChE,MAAM,IAAI,GAAG,CAAC,KAAa,EAAE,SAAkB,EAAE,IAAW,EAAS,EAAE,CAAC,CAAC;IAC9E,IAAI,EAAE,KAAK;IACX,KAAK;IACL,SAAS;IACT,IAAI;CACL,CAAC,CAAC;AALU,QAAA,IAAI,QAKd;AACH,kDAAkD;AAC3C,MAAM,IAAI,GAAG,CAAC,EAAS,EAAE,GAAU,EAAS,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC;AAApE,QAAA,IAAI,QAAgE;AACjF,yEAAyE;AAClE,MAAM,IAAI,GAAG,CAAC,IAAY,EAAE,KAAY,EAAE,IAAW,EAAE,QAAkB,EAAS,EAAE,CAAC,CAAC;IAC3F,IAAI,EAAE,KAAK;IACX,IAAI;IACJ,QAAQ;IACR,KAAK;IACL,IAAI;CACL,CAAC,CAAC;AANU,QAAA,IAAI,QAMd;AAEH,2DAA2D;AAE3D;;;GAGG;AACH,SAAgB,MAAM,CAAC,CAAW,EAAE,CAAW;IAC7C,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,OAAO,CAAC,KAAK,QAAQ;QAAE,OAAO,CAAC,KAAK,CAAC,CAAC;IACnE,cAAc;IACd,OAAO,SAAS,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;AAC5D,CAAC;AAED;;;GAGG;AACH,SAAgB,SAAS,CAAC,CAAU,EAAE,CAAU;IAC9C,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC;QAAE,OAAO,KAAK,CAAC;IAC1C,4EAA4E;IAC5E,2DAA2D;IAC3D,OAAO,IAAI,CAAC;AACd,CAAC;AAED,8CAA8C;AAE9C,8EAA8E;AAC9E,SAAgB,YAAY,CAAC,CAAW;IACtC,IAAI,OAAO,CAAC,KAAK,QAAQ;QAAE,OAAO,CAAC,CAAC;IACpC,OAAO,IAAI,eAAe,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,eAAe,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC;AACtE,CAAC;AAED,iFAAiF;AACjF,SAAgB,eAAe,CAAC,CAAU;IACxC,MAAM,IAAI,GAAG,CAAC,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;IAChC,IAAI,IAAI,KAAK,EAAE,IAAI,IAAI,KAAK,MAAM,EAAE,CAAC;QACnC,OAAO,KAAK,CAAC,CAAC,OAAO,MAAM,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;IACtD,CAAC;IACD,OAAO,KAAK,CAAC,CAAC,OAAO,MAAM,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC;AAChE,CAAC;AAED,mFAAmF;AACnF,SAAgB,YAAY,CAAC,CAAQ;IACnC,QAAQ,CAAC,CAAC,IAAI,EAAE,CAAC;QACf,KAAK,KAAK;YACR,OAAO,OAAO,CAAC,CAAC,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;QACjF,KAAK,KAAK;YACR,OAAO,CAAC,CAAC,IAAI,CAAC;QAChB,KAAK,OAAO;YACV,OAAO,IAAI,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,YAAY,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC;QACtE,KAAK,IAAI;YACP,OAAO,MAAM,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC;QAChG,KAAK,KAAK;YACR,OAAO,MAAM,CAAC,CAAC,KAAK,MAAM,eAAe,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;QACtF,KAAK,KAAK;YACR,OAAO,IAAI,YAAY,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,YAAY,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC;QAC1D,KAAK,KAAK;YACR,OAAO,OAAO,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,eAAe,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,YAAY,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC;IACzI,CAAC;AACH,CAAC"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
/** Tipo en System F: variable atómica, función o cuantificación universal ∀X. */
|
|
1
2
|
export type FType = {
|
|
2
3
|
kind: 'atom';
|
|
3
4
|
name: string;
|
|
@@ -10,6 +11,7 @@ export type FType = {
|
|
|
10
11
|
bind: string;
|
|
11
12
|
body: FType;
|
|
12
13
|
};
|
|
14
|
+
/** Término en System F: variable, abstracción, aplicación, Λ-abstracción y aplicación de tipo. */
|
|
13
15
|
export type FTerm = {
|
|
14
16
|
kind: 'var';
|
|
15
17
|
name: string;
|
|
@@ -31,23 +33,51 @@ export type FTerm = {
|
|
|
31
33
|
fn: FTerm;
|
|
32
34
|
typeArg: FType;
|
|
33
35
|
};
|
|
36
|
+
/** Crea una variable de tipo atómica con nombre `name`. */
|
|
34
37
|
export declare const fAtom: (name: string) => FType;
|
|
38
|
+
/** Crea el tipo función `from → to`. */
|
|
35
39
|
export declare const fArrow: (from: FType, to: FType) => FType;
|
|
40
|
+
/** Crea el tipo `∀bind. body`. */
|
|
36
41
|
export declare const fForall: (bind: string, body: FType) => FType;
|
|
42
|
+
/** Crea una referencia a variable de término. */
|
|
37
43
|
export declare const fVar: (name: string) => FTerm;
|
|
44
|
+
/** Crea una abstracción `λparam:paramType. body`. */
|
|
38
45
|
export declare const fAbs: (param: string, paramType: FType, body: FTerm) => FTerm;
|
|
46
|
+
/** Crea una aplicación de término `fn arg`. */
|
|
39
47
|
export declare const fApp: (fn: FTerm, arg: FTerm) => FTerm;
|
|
48
|
+
/** Crea una abstracción de tipo `Λbind. body`. */
|
|
40
49
|
export declare const fTAbs: (bind: string, body: FTerm) => FTerm;
|
|
50
|
+
/** Crea una aplicación de tipo `fn [typeArg]`. */
|
|
41
51
|
export declare const fTApp: (fn: FTerm, typeArg: FType) => FTerm;
|
|
52
|
+
/**
|
|
53
|
+
* Calcula el conjunto de variables de tipo libres en `t`.
|
|
54
|
+
* @param acc - Acumulador (se modifica in-place y se retorna).
|
|
55
|
+
*/
|
|
42
56
|
export declare function freeTypeVars(t: FType, acc?: Set<string>): Set<string>;
|
|
57
|
+
/**
|
|
58
|
+
* Comprueba α-equivalencia entre dos tipos de System F.
|
|
59
|
+
* `∀X. T` y `∀Y. T[X:=Y]` se consideran iguales.
|
|
60
|
+
*/
|
|
43
61
|
export declare function alphaEqType(a: FType, b: FType): boolean;
|
|
62
|
+
/**
|
|
63
|
+
* Indica si `type` está bien formado: todas sus variables libres están
|
|
64
|
+
* declaradas en el contexto de tipos `ctx`.
|
|
65
|
+
*/
|
|
44
66
|
export declare function isWellFormed(type: FType, ctx?: Set<string>): boolean;
|
|
67
|
+
/** Serializa un `FType` en notación matemática (`∀X. …`, `A → B`). */
|
|
45
68
|
export declare function fTypeToString(t: FType): string;
|
|
69
|
+
/** Serializa un `FTerm` en notación legible para debugging y mensajes de error. */
|
|
46
70
|
export declare function fTermToString(t: FTerm): string;
|
|
71
|
+
/**
|
|
72
|
+
* Contexto de tipado de System F.
|
|
73
|
+
* Contiene variables de término (con su tipo) y variables de tipo declaradas (Λ las introduce).
|
|
74
|
+
*/
|
|
47
75
|
export interface FContext {
|
|
48
76
|
term: Map<string, FType>;
|
|
49
77
|
type: Set<string>;
|
|
50
78
|
}
|
|
79
|
+
/** Crea un contexto de tipado vacío. */
|
|
51
80
|
export declare function emptyContext(): FContext;
|
|
81
|
+
/** Crea una copia independiente del contexto para extensiones locales. */
|
|
52
82
|
export declare function cloneContext(ctx: FContext): FContext;
|
|
53
83
|
//# sourceMappingURL=types.d.ts.map
|