@stevenvo780/st-lang 4.5.1 → 4.6.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/bdd/index.d.ts +4 -0
- package/dist/bdd/index.d.ts.map +1 -0
- package/dist/bdd/index.js +29 -0
- package/dist/bdd/index.js.map +1 -0
- package/dist/bdd/manager.d.ts +122 -0
- package/dist/bdd/manager.d.ts.map +1 -0
- package/dist/bdd/manager.js +524 -0
- package/dist/bdd/manager.js.map +1 -0
- package/dist/bdd/types.d.ts +20 -0
- package/dist/bdd/types.d.ts.map +1 -0
- package/dist/bdd/types.js +28 -0
- package/dist/bdd/types.js.map +1 -0
- package/dist/categorical/fin-set.d.ts +39 -0
- package/dist/categorical/fin-set.d.ts.map +1 -0
- package/dist/categorical/fin-set.js +217 -0
- package/dist/categorical/fin-set.js.map +1 -0
- package/dist/categorical/free.d.ts +23 -0
- package/dist/categorical/free.d.ts.map +1 -0
- package/dist/categorical/free.js +168 -0
- package/dist/categorical/free.js.map +1 -0
- package/dist/categorical/functor.d.ts +40 -0
- package/dist/categorical/functor.d.ts.map +1 -0
- package/dist/categorical/functor.js +139 -0
- package/dist/categorical/functor.js.map +1 -0
- package/dist/categorical/index.d.ts +11 -0
- package/dist/categorical/index.d.ts.map +1 -0
- package/dist/categorical/index.js +33 -0
- package/dist/categorical/index.js.map +1 -0
- package/dist/categorical/limits.d.ts +64 -0
- package/dist/categorical/limits.d.ts.map +1 -0
- package/dist/categorical/limits.js +248 -0
- package/dist/categorical/limits.js.map +1 -0
- package/dist/categorical/monoidal.d.ts +14 -0
- package/dist/categorical/monoidal.d.ts.map +1 -0
- package/dist/categorical/monoidal.js +148 -0
- package/dist/categorical/monoidal.js.map +1 -0
- package/dist/categorical/poset.d.ts +14 -0
- package/dist/categorical/poset.d.ts.map +1 -0
- package/dist/categorical/poset.js +115 -0
- package/dist/categorical/poset.js.map +1 -0
- package/dist/categorical/types.d.ts +111 -0
- package/dist/categorical/types.d.ts.map +1 -0
- package/dist/categorical/types.js +15 -0
- package/dist/categorical/types.js.map +1 -0
- package/dist/csp-hoare/analysis.d.ts +51 -0
- package/dist/csp-hoare/analysis.d.ts.map +1 -0
- package/dist/csp-hoare/analysis.js +317 -0
- package/dist/csp-hoare/analysis.js.map +1 -0
- package/dist/csp-hoare/examples.d.ts +33 -0
- package/dist/csp-hoare/examples.d.ts.map +1 -0
- package/dist/csp-hoare/examples.js +108 -0
- package/dist/csp-hoare/examples.js.map +1 -0
- package/dist/csp-hoare/index.d.ts +6 -0
- package/dist/csp-hoare/index.d.ts.map +1 -0
- package/dist/csp-hoare/index.js +50 -0
- package/dist/csp-hoare/index.js.map +1 -0
- package/dist/csp-hoare/semantics.d.ts +49 -0
- package/dist/csp-hoare/semantics.d.ts.map +1 -0
- package/dist/csp-hoare/semantics.js +494 -0
- package/dist/csp-hoare/semantics.js.map +1 -0
- package/dist/csp-hoare/types.d.ts +60 -0
- package/dist/csp-hoare/types.d.ts.map +1 -0
- package/dist/csp-hoare/types.js +31 -0
- package/dist/csp-hoare/types.js.map +1 -0
- package/dist/game-theory/common-games.d.ts +50 -0
- package/dist/game-theory/common-games.d.ts.map +1 -0
- package/dist/game-theory/common-games.js +112 -0
- package/dist/game-theory/common-games.js.map +1 -0
- package/dist/game-theory/dominance.d.ts +26 -0
- package/dist/game-theory/dominance.d.ts.map +1 -0
- package/dist/game-theory/dominance.js +203 -0
- package/dist/game-theory/dominance.js.map +1 -0
- package/dist/game-theory/index.d.ts +8 -0
- package/dist/game-theory/index.d.ts.map +1 -0
- package/dist/game-theory/index.js +47 -0
- package/dist/game-theory/index.js.map +1 -0
- package/dist/game-theory/lemke-howson.d.ts +3 -0
- package/dist/game-theory/lemke-howson.d.ts.map +1 -0
- package/dist/game-theory/lemke-howson.js +269 -0
- package/dist/game-theory/lemke-howson.js.map +1 -0
- package/dist/game-theory/linalg.d.ts +7 -0
- package/dist/game-theory/linalg.d.ts.map +1 -0
- package/dist/game-theory/linalg.js +69 -0
- package/dist/game-theory/linalg.js.map +1 -0
- package/dist/game-theory/pure-nash.d.ts +3 -0
- package/dist/game-theory/pure-nash.d.ts.map +1 -0
- package/dist/game-theory/pure-nash.js +86 -0
- package/dist/game-theory/pure-nash.js.map +1 -0
- package/dist/game-theory/support-enumeration.d.ts +3 -0
- package/dist/game-theory/support-enumeration.d.ts.map +1 -0
- package/dist/game-theory/support-enumeration.js +214 -0
- package/dist/game-theory/support-enumeration.js.map +1 -0
- package/dist/game-theory/types.d.ts +57 -0
- package/dist/game-theory/types.d.ts.map +1 -0
- package/dist/game-theory/types.js +191 -0
- package/dist/game-theory/types.js.map +1 -0
- package/dist/hindley-milner/index.d.ts +7 -0
- package/dist/hindley-milner/index.d.ts.map +1 -0
- package/dist/hindley-milner/index.js +60 -0
- package/dist/hindley-milner/index.js.map +1 -0
- package/dist/hindley-milner/infer.d.ts +26 -0
- package/dist/hindley-milner/infer.d.ts.map +1 -0
- package/dist/hindley-milner/infer.js +278 -0
- package/dist/hindley-milner/infer.js.map +1 -0
- package/dist/hindley-milner/substitution.d.ts +21 -0
- package/dist/hindley-milner/substitution.d.ts.map +1 -0
- package/dist/hindley-milner/substitution.js +215 -0
- package/dist/hindley-milner/substitution.js.map +1 -0
- package/dist/hindley-milner/types.d.ts +84 -0
- package/dist/hindley-milner/types.d.ts.map +1 -0
- package/dist/hindley-milner/types.js +166 -0
- package/dist/hindley-milner/types.js.map +1 -0
- package/dist/hott/equality.d.ts +4 -0
- package/dist/hott/equality.d.ts.map +1 -0
- package/dist/hott/equality.js +108 -0
- package/dist/hott/equality.js.map +1 -0
- package/dist/hott/index.d.ts +13 -0
- package/dist/hott/index.d.ts.map +1 -0
- package/dist/hott/index.js +77 -0
- package/dist/hott/index.js.map +1 -0
- package/dist/hott/infer.d.ts +11 -0
- package/dist/hott/infer.d.ts.map +1 -0
- package/dist/hott/infer.js +465 -0
- package/dist/hott/infer.js.map +1 -0
- package/dist/hott/normalize.d.ts +5 -0
- package/dist/hott/normalize.d.ts.map +1 -0
- package/dist/hott/normalize.js +240 -0
- package/dist/hott/normalize.js.map +1 -0
- package/dist/hott/path-algebra.d.ts +25 -0
- package/dist/hott/path-algebra.d.ts.map +1 -0
- package/dist/hott/path-algebra.js +67 -0
- package/dist/hott/path-algebra.js.map +1 -0
- package/dist/hott/substitute.d.ts +3 -0
- package/dist/hott/substitute.d.ts.map +1 -0
- package/dist/hott/substitute.js +131 -0
- package/dist/hott/substitute.js.map +1 -0
- package/dist/hott/types.d.ts +126 -0
- package/dist/hott/types.d.ts.map +1 -0
- package/dist/hott/types.js +346 -0
- package/dist/hott/types.js.map +1 -0
- package/dist/index.d.ts +16 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +83 -3
- package/dist/index.js.map +1 -1
- package/dist/information-theory/index.d.ts +29 -0
- package/dist/information-theory/index.d.ts.map +1 -0
- package/dist/information-theory/index.js +323 -0
- package/dist/information-theory/index.js.map +1 -0
- package/dist/lemma-synthesis/index.d.ts +124 -0
- package/dist/lemma-synthesis/index.d.ts.map +1 -0
- package/dist/lemma-synthesis/index.js +640 -0
- package/dist/lemma-synthesis/index.js.map +1 -0
- package/dist/namespaces/logic.d.ts +42 -0
- package/dist/namespaces/logic.d.ts.map +1 -0
- package/dist/namespaces/logic.js +112 -0
- package/dist/namespaces/logic.js.map +1 -0
- package/dist/namespaces/proof-systems.d.ts +18 -0
- package/dist/namespaces/proof-systems.d.ts.map +1 -0
- package/dist/namespaces/proof-systems.js +59 -0
- package/dist/namespaces/proof-systems.js.map +1 -0
- package/dist/namespaces/reasoning.d.ts +26 -0
- package/dist/namespaces/reasoning.d.ts.map +1 -0
- package/dist/namespaces/reasoning.js +72 -0
- package/dist/namespaces/reasoning.js.map +1 -0
- package/dist/namespaces/semantics.d.ts +21 -0
- package/dist/namespaces/semantics.d.ts.map +1 -0
- package/dist/namespaces/semantics.js +64 -0
- package/dist/namespaces/semantics.js.map +1 -0
- package/dist/namespaces/solvers.d.ts +22 -0
- package/dist/namespaces/solvers.d.ts.map +1 -0
- package/dist/namespaces/solvers.js +66 -0
- package/dist/namespaces/solvers.js.map +1 -0
- package/dist/namespaces/type-theory.d.ts +22 -0
- package/dist/namespaces/type-theory.d.ts.map +1 -0
- package/dist/namespaces/type-theory.js +65 -0
- package/dist/namespaces/type-theory.js.map +1 -0
- package/dist/optimization/branch-and-bound.d.ts +11 -0
- package/dist/optimization/branch-and-bound.d.ts.map +1 -0
- package/dist/optimization/branch-and-bound.js +311 -0
- package/dist/optimization/branch-and-bound.js.map +1 -0
- package/dist/optimization/index.d.ts +5 -0
- package/dist/optimization/index.d.ts.map +1 -0
- package/dist/optimization/index.js +20 -0
- package/dist/optimization/index.js.map +1 -0
- package/dist/optimization/simplex.d.ts +8 -0
- package/dist/optimization/simplex.d.ts.map +1 -0
- package/dist/optimization/simplex.js +408 -0
- package/dist/optimization/simplex.js.map +1 -0
- package/dist/optimization/standard-form.d.ts +11 -0
- package/dist/optimization/standard-form.d.ts.map +1 -0
- package/dist/optimization/standard-form.js +112 -0
- package/dist/optimization/standard-form.js.map +1 -0
- package/dist/optimization/types.d.ts +44 -0
- package/dist/optimization/types.d.ts.map +1 -0
- package/dist/optimization/types.js +15 -0
- package/dist/optimization/types.js.map +1 -0
- package/dist/profiles/hol/connectives.d.ts +46 -0
- package/dist/profiles/hol/connectives.d.ts.map +1 -0
- package/dist/profiles/hol/connectives.js +104 -0
- package/dist/profiles/hol/connectives.js.map +1 -0
- package/dist/profiles/hol/index.d.ts +7 -0
- package/dist/profiles/hol/index.d.ts.map +1 -0
- package/dist/profiles/hol/index.js +77 -0
- package/dist/profiles/hol/index.js.map +1 -0
- package/dist/profiles/hol/rules.d.ts +31 -0
- package/dist/profiles/hol/rules.d.ts.map +1 -0
- package/dist/profiles/hol/rules.js +258 -0
- package/dist/profiles/hol/rules.js.map +1 -0
- package/dist/profiles/hol/term.d.ts +52 -0
- package/dist/profiles/hol/term.d.ts.map +1 -0
- package/dist/profiles/hol/term.js +345 -0
- package/dist/profiles/hol/term.js.map +1 -0
- package/dist/profiles/hol/type-system.d.ts +38 -0
- package/dist/profiles/hol/type-system.d.ts.map +1 -0
- package/dist/profiles/hol/type-system.js +133 -0
- package/dist/profiles/hol/type-system.js.map +1 -0
- package/dist/profiles/hol/types.d.ts +59 -0
- package/dist/profiles/hol/types.d.ts.map +1 -0
- package/dist/profiles/hol/types.js +26 -0
- package/dist/profiles/hol/types.js.map +1 -0
- package/dist/smt-lib/ast.d.ts +138 -0
- package/dist/smt-lib/ast.d.ts.map +1 -0
- package/dist/smt-lib/ast.js +73 -0
- package/dist/smt-lib/ast.js.map +1 -0
- package/dist/smt-lib/emitter.d.ts +12 -0
- package/dist/smt-lib/emitter.d.ts.map +1 -0
- package/dist/smt-lib/emitter.js +174 -0
- package/dist/smt-lib/emitter.js.map +1 -0
- package/dist/smt-lib/index.d.ts +6 -0
- package/dist/smt-lib/index.d.ts.map +1 -0
- package/dist/smt-lib/index.js +31 -0
- package/dist/smt-lib/index.js.map +1 -0
- package/dist/smt-lib/parser.d.ts +13 -0
- package/dist/smt-lib/parser.d.ts.map +1 -0
- package/dist/smt-lib/parser.js +614 -0
- package/dist/smt-lib/parser.js.map +1 -0
- package/dist/smt-lib/tokenizer.d.ts +16 -0
- package/dist/smt-lib/tokenizer.d.ts.map +1 -0
- package/dist/smt-lib/tokenizer.js +234 -0
- package/dist/smt-lib/tokenizer.js.map +1 -0
- package/dist/tactic-dsl/combinators.d.ts +6 -0
- package/dist/tactic-dsl/combinators.d.ts.map +1 -0
- package/dist/tactic-dsl/combinators.js +98 -0
- package/dist/tactic-dsl/combinators.js.map +1 -0
- package/dist/tactic-dsl/index.d.ts +39 -0
- package/dist/tactic-dsl/index.d.ts.map +1 -0
- package/dist/tactic-dsl/index.js +162 -0
- package/dist/tactic-dsl/index.js.map +1 -0
- package/dist/tactic-dsl/tactics.d.ts +21 -0
- package/dist/tactic-dsl/tactics.d.ts.map +1 -0
- package/dist/tactic-dsl/tactics.js +536 -0
- package/dist/tactic-dsl/tactics.js.map +1 -0
- package/dist/tactic-dsl/types.d.ts +54 -0
- package/dist/tactic-dsl/types.d.ts.map +1 -0
- package/dist/tactic-dsl/types.js +226 -0
- package/dist/tactic-dsl/types.js.map +1 -0
- package/dist/tests/api/namespaces.test.d.ts +9 -0
- package/dist/tests/api/namespaces.test.d.ts.map +1 -0
- package/dist/tests/api/namespaces.test.js +218 -0
- package/dist/tests/api/namespaces.test.js.map +1 -0
- package/dist/tests/bdd/manager.test.d.ts +2 -0
- package/dist/tests/bdd/manager.test.d.ts.map +1 -0
- package/dist/tests/bdd/manager.test.js +472 -0
- package/dist/tests/bdd/manager.test.js.map +1 -0
- package/dist/tests/categorical/categorical.test.d.ts +2 -0
- package/dist/tests/categorical/categorical.test.d.ts.map +1 -0
- package/dist/tests/categorical/categorical.test.js +300 -0
- package/dist/tests/categorical/categorical.test.js.map +1 -0
- package/dist/tests/csp-hoare/csp-hoare.test.d.ts +2 -0
- package/dist/tests/csp-hoare/csp-hoare.test.d.ts.map +1 -0
- package/dist/tests/csp-hoare/csp-hoare.test.js +313 -0
- package/dist/tests/csp-hoare/csp-hoare.test.js.map +1 -0
- package/dist/tests/game-theory/game-theory.test.d.ts +2 -0
- package/dist/tests/game-theory/game-theory.test.d.ts.map +1 -0
- package/dist/tests/game-theory/game-theory.test.js +252 -0
- package/dist/tests/game-theory/game-theory.test.js.map +1 -0
- package/dist/tests/hindley-milner/hindley-milner.test.d.ts +2 -0
- package/dist/tests/hindley-milner/hindley-milner.test.d.ts.map +1 -0
- package/dist/tests/hindley-milner/hindley-milner.test.js +327 -0
- package/dist/tests/hindley-milner/hindley-milner.test.js.map +1 -0
- package/dist/tests/hol/hol.test.d.ts +2 -0
- package/dist/tests/hol/hol.test.d.ts.map +1 -0
- package/dist/tests/hol/hol.test.js +340 -0
- package/dist/tests/hol/hol.test.js.map +1 -0
- package/dist/tests/hott/hott.test.d.ts +2 -0
- package/dist/tests/hott/hott.test.d.ts.map +1 -0
- package/dist/tests/hott/hott.test.js +271 -0
- package/dist/tests/hott/hott.test.js.map +1 -0
- package/dist/tests/information-theory/information-theory.test.d.ts +2 -0
- package/dist/tests/information-theory/information-theory.test.d.ts.map +1 -0
- package/dist/tests/information-theory/information-theory.test.js +291 -0
- package/dist/tests/information-theory/information-theory.test.js.map +1 -0
- package/dist/tests/lemma-synthesis/lemma-synthesis.test.d.ts +2 -0
- package/dist/tests/lemma-synthesis/lemma-synthesis.test.d.ts.map +1 -0
- package/dist/tests/lemma-synthesis/lemma-synthesis.test.js +460 -0
- package/dist/tests/lemma-synthesis/lemma-synthesis.test.js.map +1 -0
- package/dist/tests/optimization/ilp.test.d.ts +2 -0
- package/dist/tests/optimization/ilp.test.d.ts.map +1 -0
- package/dist/tests/optimization/ilp.test.js +204 -0
- package/dist/tests/optimization/ilp.test.js.map +1 -0
- package/dist/tests/optimization/lp.test.d.ts +2 -0
- package/dist/tests/optimization/lp.test.d.ts.map +1 -0
- package/dist/tests/optimization/lp.test.js +224 -0
- package/dist/tests/optimization/lp.test.js.map +1 -0
- package/dist/tests/properties/agm.property.test.d.ts +2 -0
- package/dist/tests/properties/agm.property.test.d.ts.map +1 -0
- package/dist/tests/properties/agm.property.test.js +75 -0
- package/dist/tests/properties/agm.property.test.js.map +1 -0
- package/dist/tests/properties/anti-unification.property.test.d.ts +2 -0
- package/dist/tests/properties/anti-unification.property.test.d.ts.map +1 -0
- package/dist/tests/properties/anti-unification.property.test.js +43 -0
- package/dist/tests/properties/anti-unification.property.test.js.map +1 -0
- package/dist/tests/properties/argumentation.property.test.d.ts +2 -0
- package/dist/tests/properties/argumentation.property.test.d.ts.map +1 -0
- package/dist/tests/properties/argumentation.property.test.js +51 -0
- package/dist/tests/properties/argumentation.property.test.js.map +1 -0
- package/dist/tests/properties/bayesian.property.test.d.ts +2 -0
- package/dist/tests/properties/bayesian.property.test.d.ts.map +1 -0
- package/dist/tests/properties/bayesian.property.test.js +32 -0
- package/dist/tests/properties/bayesian.property.test.js.map +1 -0
- package/dist/tests/properties/bisimulation.property.test.d.ts +2 -0
- package/dist/tests/properties/bisimulation.property.test.d.ts.map +1 -0
- package/dist/tests/properties/bisimulation.property.test.js +50 -0
- package/dist/tests/properties/bisimulation.property.test.js.map +1 -0
- package/dist/tests/properties/cdcl.property.test.d.ts +2 -0
- package/dist/tests/properties/cdcl.property.test.d.ts.map +1 -0
- package/dist/tests/properties/cdcl.property.test.js +70 -0
- package/dist/tests/properties/cdcl.property.test.js.map +1 -0
- package/dist/tests/properties/coinduction.property.test.d.ts +2 -0
- package/dist/tests/properties/coinduction.property.test.d.ts.map +1 -0
- package/dist/tests/properties/coinduction.property.test.js +34 -0
- package/dist/tests/properties/coinduction.property.test.js.map +1 -0
- package/dist/tests/properties/constructive-reals.property.test.d.ts +2 -0
- package/dist/tests/properties/constructive-reals.property.test.d.ts.map +1 -0
- package/dist/tests/properties/constructive-reals.property.test.js +59 -0
- package/dist/tests/properties/constructive-reals.property.test.js.map +1 -0
- package/dist/tests/properties/csp.property.test.d.ts +2 -0
- package/dist/tests/properties/csp.property.test.d.ts.map +1 -0
- package/dist/tests/properties/csp.property.test.js +58 -0
- package/dist/tests/properties/csp.property.test.js.map +1 -0
- package/dist/tests/properties/generators.d.ts +78 -0
- package/dist/tests/properties/generators.d.ts.map +1 -0
- package/dist/tests/properties/generators.js +348 -0
- package/dist/tests/properties/generators.js.map +1 -0
- package/dist/tests/properties/ho-unify.property.test.d.ts +2 -0
- package/dist/tests/properties/ho-unify.property.test.d.ts.map +1 -0
- package/dist/tests/properties/ho-unify.property.test.js +46 -0
- package/dist/tests/properties/ho-unify.property.test.js.map +1 -0
- package/dist/tests/properties/hyperreal.property.test.d.ts +2 -0
- package/dist/tests/properties/hyperreal.property.test.d.ts.map +1 -0
- package/dist/tests/properties/hyperreal.property.test.js +33 -0
- package/dist/tests/properties/hyperreal.property.test.js.map +1 -0
- package/dist/tests/properties/intuit-nj.property.test.d.ts +2 -0
- package/dist/tests/properties/intuit-nj.property.test.d.ts.map +1 -0
- package/dist/tests/properties/intuit-nj.property.test.js +57 -0
- package/dist/tests/properties/intuit-nj.property.test.js.map +1 -0
- package/dist/tests/properties/lambda-calc.property.test.d.ts +2 -0
- package/dist/tests/properties/lambda-calc.property.test.d.ts.map +1 -0
- package/dist/tests/properties/lambda-calc.property.test.js +35 -0
- package/dist/tests/properties/lambda-calc.property.test.js.map +1 -0
- package/dist/tests/properties/mln.property.test.d.ts +2 -0
- package/dist/tests/properties/mln.property.test.d.ts.map +1 -0
- package/dist/tests/properties/mln.property.test.js +41 -0
- package/dist/tests/properties/mln.property.test.js.map +1 -0
- package/dist/tests/properties/mltt.property.test.d.ts +2 -0
- package/dist/tests/properties/mltt.property.test.d.ts.map +1 -0
- package/dist/tests/properties/mltt.property.test.js +33 -0
- package/dist/tests/properties/mltt.property.test.js.map +1 -0
- package/dist/tests/properties/nbe.property.test.d.ts +2 -0
- package/dist/tests/properties/nbe.property.test.d.ts.map +1 -0
- package/dist/tests/properties/nbe.property.test.js +44 -0
- package/dist/tests/properties/nbe.property.test.js.map +1 -0
- package/dist/tests/properties/planning.property.test.d.ts +2 -0
- package/dist/tests/properties/planning.property.test.d.ts.map +1 -0
- package/dist/tests/properties/planning.property.test.js +51 -0
- package/dist/tests/properties/planning.property.test.js.map +1 -0
- package/dist/tests/properties/profile-bridge.property.test.d.ts +2 -0
- package/dist/tests/properties/profile-bridge.property.test.d.ts.map +1 -0
- package/dist/tests/properties/profile-bridge.property.test.js +71 -0
- package/dist/tests/properties/profile-bridge.property.test.js.map +1 -0
- package/dist/tests/properties/refinement-types.property.test.d.ts +2 -0
- package/dist/tests/properties/refinement-types.property.test.d.ts.map +1 -0
- package/dist/tests/properties/refinement-types.property.test.js +37 -0
- package/dist/tests/properties/refinement-types.property.test.js.map +1 -0
- package/dist/tests/properties/sequent-g3.property.test.d.ts +2 -0
- package/dist/tests/properties/sequent-g3.property.test.d.ts.map +1 -0
- package/dist/tests/properties/sequent-g3.property.test.js +34 -0
- package/dist/tests/properties/sequent-g3.property.test.js.map +1 -0
- package/dist/tests/properties/symbolic-diff.property.test.d.ts +2 -0
- package/dist/tests/properties/symbolic-diff.property.test.d.ts.map +1 -0
- package/dist/tests/properties/symbolic-diff.property.test.js +49 -0
- package/dist/tests/properties/symbolic-diff.property.test.js.map +1 -0
- package/dist/tests/properties/system-f.property.test.d.ts +2 -0
- package/dist/tests/properties/system-f.property.test.d.ts.map +1 -0
- package/dist/tests/properties/system-f.property.test.js +37 -0
- package/dist/tests/properties/system-f.property.test.js.map +1 -0
- package/dist/tests/properties/theorem-cache.property.test.d.ts +2 -0
- package/dist/tests/properties/theorem-cache.property.test.d.ts.map +1 -0
- package/dist/tests/properties/theorem-cache.property.test.js +38 -0
- package/dist/tests/properties/theorem-cache.property.test.js.map +1 -0
- package/dist/tests/properties/trs.property.test.d.ts +2 -0
- package/dist/tests/properties/trs.property.test.d.ts.map +1 -0
- package/dist/tests/properties/trs.property.test.js +34 -0
- package/dist/tests/properties/trs.property.test.js.map +1 -0
- package/dist/tests/properties/unification.property.test.d.ts +2 -0
- package/dist/tests/properties/unification.property.test.d.ts.map +1 -0
- package/dist/tests/properties/unification.property.test.js +42 -0
- package/dist/tests/properties/unification.property.test.js.map +1 -0
- package/dist/tests/smt-lib/emitter.test.d.ts +2 -0
- package/dist/tests/smt-lib/emitter.test.d.ts.map +1 -0
- package/dist/tests/smt-lib/emitter.test.js +155 -0
- package/dist/tests/smt-lib/emitter.test.js.map +1 -0
- package/dist/tests/smt-lib/parser.test.d.ts +2 -0
- package/dist/tests/smt-lib/parser.test.d.ts.map +1 -0
- package/dist/tests/smt-lib/parser.test.js +164 -0
- package/dist/tests/smt-lib/parser.test.js.map +1 -0
- package/dist/tests/smt-lib/tokenizer.test.d.ts +2 -0
- package/dist/tests/smt-lib/tokenizer.test.d.ts.map +1 -0
- package/dist/tests/smt-lib/tokenizer.test.js +59 -0
- package/dist/tests/smt-lib/tokenizer.test.js.map +1 -0
- package/dist/tests/tactic-dsl/tactic-dsl.test.d.ts +2 -0
- package/dist/tests/tactic-dsl/tactic-dsl.test.d.ts.map +1 -0
- package/dist/tests/tactic-dsl/tactic-dsl.test.js +259 -0
- package/dist/tests/tactic-dsl/tactic-dsl.test.js.map +1 -0
- package/dist/tests/tptp/bridge.test.d.ts +2 -0
- package/dist/tests/tptp/bridge.test.d.ts.map +1 -0
- package/dist/tests/tptp/bridge.test.js +154 -0
- package/dist/tests/tptp/bridge.test.js.map +1 -0
- package/dist/tests/tptp/emitter.test.d.ts +2 -0
- package/dist/tests/tptp/emitter.test.d.ts.map +1 -0
- package/dist/tests/tptp/emitter.test.js +128 -0
- package/dist/tests/tptp/emitter.test.js.map +1 -0
- package/dist/tests/tptp/parser.test.d.ts +2 -0
- package/dist/tests/tptp/parser.test.d.ts.map +1 -0
- package/dist/tests/tptp/parser.test.js +192 -0
- package/dist/tests/tptp/parser.test.js.map +1 -0
- package/dist/tests/tptp/tokenizer.test.d.ts +2 -0
- package/dist/tests/tptp/tokenizer.test.d.ts.map +1 -0
- package/dist/tests/tptp/tokenizer.test.js +60 -0
- package/dist/tests/tptp/tokenizer.test.js.map +1 -0
- package/dist/tptp/ast.d.ts +73 -0
- package/dist/tptp/ast.d.ts.map +1 -0
- package/dist/tptp/ast.js +35 -0
- package/dist/tptp/ast.js.map +1 -0
- package/dist/tptp/bridge.d.ts +14 -0
- package/dist/tptp/bridge.d.ts.map +1 -0
- package/dist/tptp/bridge.js +146 -0
- package/dist/tptp/bridge.js.map +1 -0
- package/dist/tptp/emitter.d.ts +5 -0
- package/dist/tptp/emitter.d.ts.map +1 -0
- package/dist/tptp/emitter.js +103 -0
- package/dist/tptp/emitter.js.map +1 -0
- package/dist/tptp/index.d.ts +7 -0
- package/dist/tptp/index.d.ts.map +1 -0
- package/dist/tptp/index.js +31 -0
- package/dist/tptp/index.js.map +1 -0
- package/dist/tptp/parser.d.ts +23 -0
- package/dist/tptp/parser.d.ts.map +1 -0
- package/dist/tptp/parser.js +440 -0
- package/dist/tptp/parser.js.map +1 -0
- package/dist/tptp/tokenizer.d.ts +14 -0
- package/dist/tptp/tokenizer.d.ts.map +1 -0
- package/dist/tptp/tokenizer.js +264 -0
- package/dist/tptp/tokenizer.js.map +1 -0
- package/package.json +5 -1
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// ============================================================
|
|
3
|
+
// Property: TRS normalize — punto fijo
|
|
4
|
+
// ============================================================
|
|
5
|
+
//
|
|
6
|
+
// ∀ term t, rules R: normalize(t, R) es punto fijo —
|
|
7
|
+
// rewriteStep(normalize(t,R), R) === null (no más reducible).
|
|
8
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
+
const vitest_1 = require("vitest");
|
|
10
|
+
const generators_1 = require("./generators");
|
|
11
|
+
const term_rewriting_1 = require("../../runtime/term-rewriting");
|
|
12
|
+
const term_rewriting_2 = require("../../runtime/term-rewriting");
|
|
13
|
+
// Reglas TRS pequeñas, simples y terminantes:
|
|
14
|
+
// f(x) → g(x) — renombrado
|
|
15
|
+
// h(c, x) → x — proyección (elimina la c)
|
|
16
|
+
// g(A) → B — reducción ground
|
|
17
|
+
const RULES = [
|
|
18
|
+
{ lhs: (0, term_rewriting_2.f)('f', (0, term_rewriting_2.v)('x')), rhs: (0, term_rewriting_2.f)('g', (0, term_rewriting_2.v)('x')) },
|
|
19
|
+
{ lhs: (0, term_rewriting_2.f)('h', (0, term_rewriting_2.c)('A'), (0, term_rewriting_2.v)('x')), rhs: (0, term_rewriting_2.v)('x') },
|
|
20
|
+
{ lhs: (0, term_rewriting_2.f)('g', (0, term_rewriting_2.c)('A')), rhs: (0, term_rewriting_2.c)('B') },
|
|
21
|
+
];
|
|
22
|
+
(0, vitest_1.describe)('property: TRS normalize is a fixed point', () => {
|
|
23
|
+
(0, vitest_1.it)('rewriteStep(normalize(t, R), R) === null', () => {
|
|
24
|
+
generators_1.fc.assert(generators_1.fc.property((0, generators_1.trsTerm)(3), (t) => {
|
|
25
|
+
const normal = (0, term_rewriting_1.normalize)(t, RULES, 2000);
|
|
26
|
+
const step = (0, term_rewriting_1.rewriteStep)(normal, RULES);
|
|
27
|
+
if (step !== null) {
|
|
28
|
+
throw new Error(`normalize no punto fijo: t=${JSON.stringify(t)}, normal=${JSON.stringify(normal)}, step=${JSON.stringify(step)}`);
|
|
29
|
+
}
|
|
30
|
+
return true;
|
|
31
|
+
}), { numRuns: 100 });
|
|
32
|
+
});
|
|
33
|
+
});
|
|
34
|
+
//# sourceMappingURL=trs.property.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"trs.property.test.js","sourceRoot":"","sources":["../../../src/tests/properties/trs.property.test.ts"],"names":[],"mappings":";AAAA,+DAA+D;AAC/D,uCAAuC;AACvC,+DAA+D;AAC/D,EAAE;AACF,qDAAqD;AACrD,8DAA8D;;AAE9D,mCAAsC;AACtC,6CAA2C;AAC3C,iEAAsE;AACtE,iEAAuD;AAEvD,8CAA8C;AAC9C,qCAAqC;AACrC,oDAAoD;AACpD,2CAA2C;AAC3C,MAAM,KAAK,GAAG;IACZ,EAAE,GAAG,EAAE,IAAA,kBAAC,EAAC,GAAG,EAAE,IAAA,kBAAC,EAAC,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,IAAA,kBAAC,EAAC,GAAG,EAAE,IAAA,kBAAC,EAAC,GAAG,CAAC,CAAC,EAAE;IAC5C,EAAE,GAAG,EAAE,IAAA,kBAAC,EAAC,GAAG,EAAE,IAAA,kBAAC,EAAC,GAAG,CAAC,EAAE,IAAA,kBAAC,EAAC,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,IAAA,kBAAC,EAAC,GAAG,CAAC,EAAE;IAC5C,EAAE,GAAG,EAAE,IAAA,kBAAC,EAAC,GAAG,EAAE,IAAA,kBAAC,EAAC,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,IAAA,kBAAC,EAAC,GAAG,CAAC,EAAE;CACrC,CAAC;AAEF,IAAA,iBAAQ,EAAC,0CAA0C,EAAE,GAAG,EAAE;IACxD,IAAA,WAAE,EAAC,0CAA0C,EAAE,GAAG,EAAE;QAClD,eAAE,CAAC,MAAM,CACP,eAAE,CAAC,QAAQ,CAAC,IAAA,oBAAO,EAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE;YAC5B,MAAM,MAAM,GAAG,IAAA,0BAAS,EAAC,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;YACzC,MAAM,IAAI,GAAG,IAAA,4BAAW,EAAC,MAAM,EAAE,KAAK,CAAC,CAAC;YACxC,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;gBAClB,MAAM,IAAI,KAAK,CACb,8BAA8B,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,YAAY,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,UAAU,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAClH,CAAC;YACJ,CAAC;YACD,OAAO,IAAI,CAAC;QACd,CAAC,CAAC,EACF,EAAE,OAAO,EAAE,GAAG,EAAE,CACjB,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"unification.property.test.d.ts","sourceRoot":"","sources":["../../../src/tests/properties/unification.property.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// ============================================================
|
|
3
|
+
// Property: Unification first-order (TRS) — reflexividad
|
|
4
|
+
// ============================================================
|
|
5
|
+
//
|
|
6
|
+
// ∀ random term t, unify(t, t) tiene éxito y devuelve sub vacía.
|
|
7
|
+
// Y para términos arbitrarios, si unify(s, t) = σ, entonces
|
|
8
|
+
// σ(s) === σ(t) estructuralmente.
|
|
9
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
10
|
+
const vitest_1 = require("vitest");
|
|
11
|
+
const generators_1 = require("./generators");
|
|
12
|
+
const term_rewriting_1 = require("../../runtime/term-rewriting");
|
|
13
|
+
(0, vitest_1.describe)('property: TRS unification reflexivity & coherence', () => {
|
|
14
|
+
(0, vitest_1.it)('unify(t, t) succeeds with empty substitution', () => {
|
|
15
|
+
generators_1.fc.assert(generators_1.fc.property((0, generators_1.trsTerm)(3), (t) => {
|
|
16
|
+
const sub = (0, term_rewriting_1.unify)(t, t);
|
|
17
|
+
if (sub === null) {
|
|
18
|
+
throw new Error(`unify(t, t) === null para t=${JSON.stringify(t)}`);
|
|
19
|
+
}
|
|
20
|
+
// No es estrictamente vacío si t tiene vars (la unif puede generar
|
|
21
|
+
// bindings triviales como x→x), pero applySubst debería preservar t.
|
|
22
|
+
if (!(0, term_rewriting_1.termEquals)((0, term_rewriting_1.applySubst)(t, sub), t)) {
|
|
23
|
+
throw new Error(`unify(t,t) σ tal que σt ≠ t: t=${JSON.stringify(t)}, σ=${JSON.stringify(Array.from(sub.entries()))}`);
|
|
24
|
+
}
|
|
25
|
+
return true;
|
|
26
|
+
}), { numRuns: 200 });
|
|
27
|
+
});
|
|
28
|
+
(0, vitest_1.it)('if unify(s,t) = σ then σ(s) ≡ σ(t)', () => {
|
|
29
|
+
generators_1.fc.assert(generators_1.fc.property((0, generators_1.trsTerm)(3), (0, generators_1.trsTerm)(3), (s, t) => {
|
|
30
|
+
const sub = (0, term_rewriting_1.unify)(s, t);
|
|
31
|
+
if (sub === null)
|
|
32
|
+
return true; // skip no-unifiable
|
|
33
|
+
const lhs = (0, term_rewriting_1.applySubst)(s, sub);
|
|
34
|
+
const rhs = (0, term_rewriting_1.applySubst)(t, sub);
|
|
35
|
+
if (!(0, term_rewriting_1.termEquals)(lhs, rhs)) {
|
|
36
|
+
throw new Error(`unify(s,t)=σ pero σs≠σt: s=${JSON.stringify(s)}, t=${JSON.stringify(t)}, σs=${JSON.stringify(lhs)}, σt=${JSON.stringify(rhs)}`);
|
|
37
|
+
}
|
|
38
|
+
return true;
|
|
39
|
+
}), { numRuns: 200 });
|
|
40
|
+
});
|
|
41
|
+
});
|
|
42
|
+
//# sourceMappingURL=unification.property.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"unification.property.test.js","sourceRoot":"","sources":["../../../src/tests/properties/unification.property.test.ts"],"names":[],"mappings":";AAAA,+DAA+D;AAC/D,yDAAyD;AACzD,+DAA+D;AAC/D,EAAE;AACF,iEAAiE;AACjE,4DAA4D;AAC5D,kCAAkC;;AAElC,mCAAsC;AACtC,6CAA2C;AAC3C,iEAA6E;AAE7E,IAAA,iBAAQ,EAAC,mDAAmD,EAAE,GAAG,EAAE;IACjE,IAAA,WAAE,EAAC,8CAA8C,EAAE,GAAG,EAAE;QACtD,eAAE,CAAC,MAAM,CACP,eAAE,CAAC,QAAQ,CAAC,IAAA,oBAAO,EAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE;YAC5B,MAAM,GAAG,GAAG,IAAA,sBAAK,EAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YACxB,IAAI,GAAG,KAAK,IAAI,EAAE,CAAC;gBACjB,MAAM,IAAI,KAAK,CAAC,+BAA+B,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;YACtE,CAAC;YACD,mEAAmE;YACnE,qEAAqE;YACrE,IAAI,CAAC,IAAA,2BAAU,EAAC,IAAA,2BAAU,EAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;gBACvC,MAAM,IAAI,KAAK,CACb,kCAAkC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC,EAAE,CACtG,CAAC;YACJ,CAAC;YACD,OAAO,IAAI,CAAC;QACd,CAAC,CAAC,EACF,EAAE,OAAO,EAAE,GAAG,EAAE,CACjB,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,IAAA,WAAE,EAAC,oCAAoC,EAAE,GAAG,EAAE;QAC5C,eAAE,CAAC,MAAM,CACP,eAAE,CAAC,QAAQ,CAAC,IAAA,oBAAO,EAAC,CAAC,CAAC,EAAE,IAAA,oBAAO,EAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;YAC3C,MAAM,GAAG,GAAG,IAAA,sBAAK,EAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YACxB,IAAI,GAAG,KAAK,IAAI;gBAAE,OAAO,IAAI,CAAC,CAAC,oBAAoB;YACnD,MAAM,GAAG,GAAG,IAAA,2BAAU,EAAC,CAAC,EAAE,GAAG,CAAC,CAAC;YAC/B,MAAM,GAAG,GAAG,IAAA,2BAAU,EAAC,CAAC,EAAE,GAAG,CAAC,CAAC;YAC/B,IAAI,CAAC,IAAA,2BAAU,EAAC,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC;gBAC1B,MAAM,IAAI,KAAK,CACb,8BAA8B,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,CAChI,CAAC;YACJ,CAAC;YACD,OAAO,IAAI,CAAC;QACd,CAAC,CAAC,EACF,EAAE,OAAO,EAAE,GAAG,EAAE,CACjB,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"emitter.test.d.ts","sourceRoot":"","sources":["../../../src/tests/smt-lib/emitter.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,155 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// ============================================================
|
|
3
|
+
// SMT-LIB v2 Tests — Emitter y round-trip
|
|
4
|
+
// ============================================================
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
const vitest_1 = require("vitest");
|
|
7
|
+
const emitter_1 = require("../../smt-lib/emitter");
|
|
8
|
+
const parser_1 = require("../../smt-lib/parser");
|
|
9
|
+
(0, vitest_1.describe)('SMT-LIB emitter', () => {
|
|
10
|
+
(0, vitest_1.it)('emite (check-sat) y (exit)', () => {
|
|
11
|
+
(0, vitest_1.expect)((0, emitter_1.emitCommand)({ kind: 'check-sat' })).toBe('(check-sat)');
|
|
12
|
+
(0, vitest_1.expect)((0, emitter_1.emitCommand)({ kind: 'exit' })).toBe('(exit)');
|
|
13
|
+
});
|
|
14
|
+
(0, vitest_1.it)('emite declare-fun con varios sorts', () => {
|
|
15
|
+
const out = (0, emitter_1.emitCommand)({
|
|
16
|
+
kind: 'declare-fun',
|
|
17
|
+
name: 'f',
|
|
18
|
+
paramSorts: [
|
|
19
|
+
{ kind: 'symbol', name: 'Int' },
|
|
20
|
+
{ kind: 'symbol', name: 'Int' },
|
|
21
|
+
],
|
|
22
|
+
resultSort: { kind: 'symbol', name: 'Bool' },
|
|
23
|
+
});
|
|
24
|
+
(0, vitest_1.expect)(out).toBe('(declare-fun f (Int Int) Bool)');
|
|
25
|
+
});
|
|
26
|
+
(0, vitest_1.it)('emite define-fun con cuerpo', () => {
|
|
27
|
+
const out = (0, emitter_1.emitCommand)({
|
|
28
|
+
kind: 'define-fun',
|
|
29
|
+
name: 'sq',
|
|
30
|
+
params: [{ name: 'x', sort: { kind: 'symbol', name: 'Int' } }],
|
|
31
|
+
resultSort: { kind: 'symbol', name: 'Int' },
|
|
32
|
+
body: {
|
|
33
|
+
kind: 'app',
|
|
34
|
+
fn: '*',
|
|
35
|
+
args: [
|
|
36
|
+
{ kind: 'symbol', name: 'x' },
|
|
37
|
+
{ kind: 'symbol', name: 'x' },
|
|
38
|
+
],
|
|
39
|
+
},
|
|
40
|
+
});
|
|
41
|
+
(0, vitest_1.expect)(out).toBe('(define-fun sq ((x Int)) Int (* x x))');
|
|
42
|
+
});
|
|
43
|
+
(0, vitest_1.it)('emite (push N) y (pop N)', () => {
|
|
44
|
+
(0, vitest_1.expect)((0, emitter_1.emitCommand)({ kind: 'push', levels: 3 })).toBe('(push 3)');
|
|
45
|
+
(0, vitest_1.expect)((0, emitter_1.emitCommand)({ kind: 'pop', levels: 1 })).toBe('(pop 1)');
|
|
46
|
+
});
|
|
47
|
+
(0, vitest_1.it)('emite hex y binary preservando prefijos', () => {
|
|
48
|
+
(0, vitest_1.expect)((0, emitter_1.emitTerm)({ kind: 'spec-constant', type: 'hex', value: 'AB' })).toBe('#xAB');
|
|
49
|
+
(0, vitest_1.expect)((0, emitter_1.emitTerm)({ kind: 'spec-constant', type: 'binary', value: '101' })).toBe('#b101');
|
|
50
|
+
});
|
|
51
|
+
(0, vitest_1.it)('cita símbolos con caracteres especiales con | ... |', () => {
|
|
52
|
+
(0, vitest_1.expect)((0, emitter_1.quoteSymbol)('hola mundo')).toBe('|hola mundo|');
|
|
53
|
+
(0, vitest_1.expect)((0, emitter_1.quoteSymbol)('x')).toBe('x');
|
|
54
|
+
(0, vitest_1.expect)((0, emitter_1.quoteSymbol)('')).toBe('||');
|
|
55
|
+
});
|
|
56
|
+
(0, vitest_1.it)('emite sorts indexados (_ BitVec 32)', () => {
|
|
57
|
+
const sort = (0, parser_1.parseSort)('(_ BitVec 32)');
|
|
58
|
+
(0, vitest_1.expect)((0, emitter_1.emitSort)(sort)).toBe('(_ BitVec 32)');
|
|
59
|
+
});
|
|
60
|
+
(0, vitest_1.it)('emite sorts aplicados (Array Int Int)', () => {
|
|
61
|
+
const sort = (0, parser_1.parseSort)('(Array Int Int)');
|
|
62
|
+
(0, vitest_1.expect)((0, emitter_1.emitSort)(sort)).toBe('(Array Int Int)');
|
|
63
|
+
});
|
|
64
|
+
(0, vitest_1.it)('emite strings escapando comilla doble', () => {
|
|
65
|
+
(0, vitest_1.expect)((0, emitter_1.emitTerm)({ kind: 'spec-constant', type: 'string', value: 'hi "bob"' })).toBe('"hi ""bob"""');
|
|
66
|
+
});
|
|
67
|
+
});
|
|
68
|
+
(0, vitest_1.describe)('SMT-LIB round-trip', () => {
|
|
69
|
+
function roundTrip(src) {
|
|
70
|
+
const cmds = (0, parser_1.parseSmtLib)(src);
|
|
71
|
+
return (0, emitter_1.emitSmtLib)(cmds);
|
|
72
|
+
}
|
|
73
|
+
(0, vitest_1.it)('round-trip: programa QF_LIA mínimo', () => {
|
|
74
|
+
const src = [
|
|
75
|
+
'(set-logic QF_LIA)',
|
|
76
|
+
'(declare-const x Int)',
|
|
77
|
+
'(declare-const y Int)',
|
|
78
|
+
'(assert (= (+ x y) 10))',
|
|
79
|
+
'(assert (> x 0))',
|
|
80
|
+
'(check-sat)',
|
|
81
|
+
'(get-model)',
|
|
82
|
+
'(exit)',
|
|
83
|
+
].join('\n');
|
|
84
|
+
const out1 = roundTrip(src);
|
|
85
|
+
const out2 = roundTrip(out1);
|
|
86
|
+
(0, vitest_1.expect)(out2).toBe(out1);
|
|
87
|
+
});
|
|
88
|
+
(0, vitest_1.it)('round-trip: idempotente sobre forall + let', () => {
|
|
89
|
+
const src = '(assert (forall ((x Int)) (let ((y (* x 2))) (>= y 0))))';
|
|
90
|
+
const out1 = roundTrip(src);
|
|
91
|
+
const out2 = roundTrip(out1);
|
|
92
|
+
(0, vitest_1.expect)(out2).toBe(out1);
|
|
93
|
+
});
|
|
94
|
+
(0, vitest_1.it)('round-trip: programa QF_LRA con 10 comandos', () => {
|
|
95
|
+
const src = [
|
|
96
|
+
'(set-logic QF_LRA)',
|
|
97
|
+
'(set-option :produce-models true)',
|
|
98
|
+
'(declare-const a Real)',
|
|
99
|
+
'(declare-const b Real)',
|
|
100
|
+
'(declare-const c Real)',
|
|
101
|
+
'(assert (> a 0.0))',
|
|
102
|
+
'(assert (< b 1.0))',
|
|
103
|
+
'(assert (= c (+ a b)))',
|
|
104
|
+
'(push 1)',
|
|
105
|
+
'(check-sat)',
|
|
106
|
+
].join('\n');
|
|
107
|
+
const cmds = (0, parser_1.parseSmtLib)(src);
|
|
108
|
+
(0, vitest_1.expect)(cmds).toHaveLength(10);
|
|
109
|
+
const out1 = (0, emitter_1.emitSmtLib)(cmds);
|
|
110
|
+
const cmds2 = (0, parser_1.parseSmtLib)(out1);
|
|
111
|
+
const out2 = (0, emitter_1.emitSmtLib)(cmds2);
|
|
112
|
+
(0, vitest_1.expect)(out2).toBe(out1);
|
|
113
|
+
});
|
|
114
|
+
(0, vitest_1.it)('round-trip: programa con bit-vectors', () => {
|
|
115
|
+
const src = [
|
|
116
|
+
'(set-logic QF_BV)',
|
|
117
|
+
'(declare-const x (_ BitVec 8))',
|
|
118
|
+
'(assert (= x #xFF))',
|
|
119
|
+
'(check-sat)',
|
|
120
|
+
].join('\n');
|
|
121
|
+
const cmds = (0, parser_1.parseSmtLib)(src);
|
|
122
|
+
const out1 = (0, emitter_1.emitSmtLib)(cmds);
|
|
123
|
+
const out2 = (0, emitter_1.emitSmtLib)((0, parser_1.parseSmtLib)(out1));
|
|
124
|
+
(0, vitest_1.expect)(out2).toBe(out1);
|
|
125
|
+
});
|
|
126
|
+
(0, vitest_1.it)('round-trip: ignora comentarios y whitespace variable', () => {
|
|
127
|
+
const src = `
|
|
128
|
+
; inicio del programa
|
|
129
|
+
(set-logic QF_UF)
|
|
130
|
+
(declare-sort A 0)
|
|
131
|
+
(declare-fun f (A) A)
|
|
132
|
+
(assert (= (f (f (f x))) x)) ; un ciclo de orden 3
|
|
133
|
+
(check-sat)
|
|
134
|
+
`;
|
|
135
|
+
const out1 = (0, emitter_1.emitSmtLib)((0, parser_1.parseSmtLib)(src));
|
|
136
|
+
const out2 = (0, emitter_1.emitSmtLib)((0, parser_1.parseSmtLib)(out1));
|
|
137
|
+
(0, vitest_1.expect)(out2).toBe(out1);
|
|
138
|
+
(0, vitest_1.expect)(out1).toContain('(declare-sort A 0)');
|
|
139
|
+
(0, vitest_1.expect)(out1).not.toContain(';');
|
|
140
|
+
});
|
|
141
|
+
(0, vitest_1.it)('round-trip: símbolos pipe-quoted preservados', () => {
|
|
142
|
+
const src = '(declare-const |x con espacios| Real)';
|
|
143
|
+
const out1 = (0, emitter_1.emitSmtLib)((0, parser_1.parseSmtLib)(src));
|
|
144
|
+
(0, vitest_1.expect)(out1).toBe('(declare-const |x con espacios| Real)');
|
|
145
|
+
const out2 = (0, emitter_1.emitSmtLib)((0, parser_1.parseSmtLib)(out1));
|
|
146
|
+
(0, vitest_1.expect)(out2).toBe(out1);
|
|
147
|
+
});
|
|
148
|
+
(0, vitest_1.it)('round-trip: set-info y set-option con valores', () => {
|
|
149
|
+
const src = '(set-info :status sat)(set-option :produce-models true)';
|
|
150
|
+
const out1 = (0, emitter_1.emitSmtLib)((0, parser_1.parseSmtLib)(src));
|
|
151
|
+
(0, vitest_1.expect)(out1).toContain('(set-info :status sat)');
|
|
152
|
+
(0, vitest_1.expect)(out1).toContain('(set-option :produce-models true)');
|
|
153
|
+
});
|
|
154
|
+
});
|
|
155
|
+
//# sourceMappingURL=emitter.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"emitter.test.js","sourceRoot":"","sources":["../../../src/tests/smt-lib/emitter.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parser.test.d.ts","sourceRoot":"","sources":["../../../src/tests/smt-lib/parser.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,164 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// ============================================================
|
|
3
|
+
// SMT-LIB v2 Tests — Parser
|
|
4
|
+
// ============================================================
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
const vitest_1 = require("vitest");
|
|
7
|
+
const parser_1 = require("../../smt-lib/parser");
|
|
8
|
+
(0, vitest_1.describe)('SMT-LIB parser — comandos', () => {
|
|
9
|
+
(0, vitest_1.it)('parsea (check-sat) como comando único', () => {
|
|
10
|
+
const cmds = (0, parser_1.parseSmtLib)('(check-sat)');
|
|
11
|
+
(0, vitest_1.expect)(cmds).toEqual([{ kind: 'check-sat' }]);
|
|
12
|
+
});
|
|
13
|
+
(0, vitest_1.it)('parsea (set-logic QF_LRA)', () => {
|
|
14
|
+
const cmds = (0, parser_1.parseSmtLib)('(set-logic QF_LRA)');
|
|
15
|
+
(0, vitest_1.expect)(cmds).toEqual([{ kind: 'set-logic', logic: 'QF_LRA' }]);
|
|
16
|
+
});
|
|
17
|
+
(0, vitest_1.it)('parsea (declare-const x Real)', () => {
|
|
18
|
+
const cmds = (0, parser_1.parseSmtLib)('(declare-const x Real)');
|
|
19
|
+
const cmd = cmds[0];
|
|
20
|
+
(0, vitest_1.expect)(cmd.kind).toBe('declare-const');
|
|
21
|
+
(0, vitest_1.expect)(cmd.name).toBe('x');
|
|
22
|
+
(0, vitest_1.expect)(cmd.sort).toEqual({ kind: 'symbol', name: 'Real' });
|
|
23
|
+
});
|
|
24
|
+
(0, vitest_1.it)('parsea (declare-fun f (Int Int) Bool)', () => {
|
|
25
|
+
const cmds = (0, parser_1.parseSmtLib)('(declare-fun f (Int Int) Bool)');
|
|
26
|
+
const cmd = cmds[0];
|
|
27
|
+
(0, vitest_1.expect)(cmd.kind).toBe('declare-fun');
|
|
28
|
+
(0, vitest_1.expect)(cmd.name).toBe('f');
|
|
29
|
+
(0, vitest_1.expect)(cmd.paramSorts).toHaveLength(2);
|
|
30
|
+
(0, vitest_1.expect)(cmd.paramSorts[0]).toEqual({ kind: 'symbol', name: 'Int' });
|
|
31
|
+
(0, vitest_1.expect)(cmd.resultSort).toEqual({ kind: 'symbol', name: 'Bool' });
|
|
32
|
+
});
|
|
33
|
+
(0, vitest_1.it)('parsea (assert (= x 5))', () => {
|
|
34
|
+
const cmds = (0, parser_1.parseSmtLib)('(assert (= x 5))');
|
|
35
|
+
const cmd = cmds[0];
|
|
36
|
+
(0, vitest_1.expect)(cmd.kind).toBe('assert');
|
|
37
|
+
(0, vitest_1.expect)(cmd.formula.kind).toBe('app');
|
|
38
|
+
});
|
|
39
|
+
(0, vitest_1.it)('parsea (push 2) y (pop 1)', () => {
|
|
40
|
+
const cmds = (0, parser_1.parseSmtLib)('(push 2)(pop 1)');
|
|
41
|
+
(0, vitest_1.expect)(cmds).toEqual([
|
|
42
|
+
{ kind: 'push', levels: 2 },
|
|
43
|
+
{ kind: 'pop', levels: 1 },
|
|
44
|
+
]);
|
|
45
|
+
});
|
|
46
|
+
(0, vitest_1.it)('parsea (declare-sort A 0)', () => {
|
|
47
|
+
const cmds = (0, parser_1.parseSmtLib)('(declare-sort A 0)');
|
|
48
|
+
(0, vitest_1.expect)(cmds).toEqual([{ kind: 'declare-sort', name: 'A', arity: 0 }]);
|
|
49
|
+
});
|
|
50
|
+
(0, vitest_1.it)('parsea (set-option :produce-models true)', () => {
|
|
51
|
+
const cmds = (0, parser_1.parseSmtLib)('(set-option :produce-models true)');
|
|
52
|
+
const cmd = cmds[0];
|
|
53
|
+
(0, vitest_1.expect)(cmd.kind).toBe('set-option');
|
|
54
|
+
(0, vitest_1.expect)(cmd.key).toBe('produce-models');
|
|
55
|
+
(0, vitest_1.expect)(cmd.value).toBe('true');
|
|
56
|
+
});
|
|
57
|
+
(0, vitest_1.it)('parsea (set-info :status sat)', () => {
|
|
58
|
+
const cmds = (0, parser_1.parseSmtLib)('(set-info :status sat)');
|
|
59
|
+
const cmd = cmds[0];
|
|
60
|
+
(0, vitest_1.expect)(cmd.kind).toBe('set-info');
|
|
61
|
+
(0, vitest_1.expect)(cmd.key).toBe('status');
|
|
62
|
+
});
|
|
63
|
+
(0, vitest_1.it)('parsea (define-fun double ((x Int)) Int (+ x x))', () => {
|
|
64
|
+
const cmds = (0, parser_1.parseSmtLib)('(define-fun double ((x Int)) Int (+ x x))');
|
|
65
|
+
const cmd = cmds[0];
|
|
66
|
+
(0, vitest_1.expect)(cmd.kind).toBe('define-fun');
|
|
67
|
+
(0, vitest_1.expect)(cmd.name).toBe('double');
|
|
68
|
+
(0, vitest_1.expect)(cmd.params).toEqual([{ name: 'x', sort: { kind: 'symbol', name: 'Int' } }]);
|
|
69
|
+
(0, vitest_1.expect)(cmd.resultSort).toEqual({ kind: 'symbol', name: 'Int' });
|
|
70
|
+
(0, vitest_1.expect)(cmd.body.kind).toBe('app');
|
|
71
|
+
});
|
|
72
|
+
(0, vitest_1.it)('parsea (echo "hola")', () => {
|
|
73
|
+
const cmds = (0, parser_1.parseSmtLib)('(echo "hola")');
|
|
74
|
+
(0, vitest_1.expect)(cmds).toEqual([{ kind: 'echo', message: 'hola' }]);
|
|
75
|
+
});
|
|
76
|
+
(0, vitest_1.it)('parsea (get-value (x y z))', () => {
|
|
77
|
+
const cmds = (0, parser_1.parseSmtLib)('(get-value (x y z))');
|
|
78
|
+
const cmd = cmds[0];
|
|
79
|
+
(0, vitest_1.expect)(cmd.kind).toBe('get-value');
|
|
80
|
+
(0, vitest_1.expect)(cmd.terms).toHaveLength(3);
|
|
81
|
+
});
|
|
82
|
+
(0, vitest_1.it)('parsea (check-sat-assuming (p (not q)))', () => {
|
|
83
|
+
const cmds = (0, parser_1.parseSmtLib)('(check-sat-assuming (p (not q)))');
|
|
84
|
+
const cmd = cmds[0];
|
|
85
|
+
(0, vitest_1.expect)(cmd.kind).toBe('check-sat-assuming');
|
|
86
|
+
(0, vitest_1.expect)(cmd.assumptions).toHaveLength(2);
|
|
87
|
+
});
|
|
88
|
+
(0, vitest_1.it)('parsea (reset), (reset-assertions), (exit), (get-model), (get-proof), (get-unsat-core), (get-assertions)', () => {
|
|
89
|
+
const cmds = (0, parser_1.parseSmtLib)('(reset)(reset-assertions)(exit)(get-model)(get-proof)(get-unsat-core)(get-assertions)');
|
|
90
|
+
(0, vitest_1.expect)(cmds.map((c) => c.kind)).toEqual([
|
|
91
|
+
'reset',
|
|
92
|
+
'reset-assertions',
|
|
93
|
+
'exit',
|
|
94
|
+
'get-model',
|
|
95
|
+
'get-proof',
|
|
96
|
+
'get-unsat-core',
|
|
97
|
+
'get-assertions',
|
|
98
|
+
]);
|
|
99
|
+
});
|
|
100
|
+
(0, vitest_1.it)('arroja error en comando desconocido', () => {
|
|
101
|
+
(0, vitest_1.expect)(() => (0, parser_1.parseSmtLib)('(foobar 1)')).toThrow(parser_1.SmtParserError);
|
|
102
|
+
});
|
|
103
|
+
});
|
|
104
|
+
(0, vitest_1.describe)('SMT-LIB parser — términos', () => {
|
|
105
|
+
(0, vitest_1.it)('parsea let: (let ((y 5)) (+ x y))', () => {
|
|
106
|
+
const term = (0, parser_1.parseTerm)('(let ((y 5)) (+ x y))');
|
|
107
|
+
(0, vitest_1.expect)(term.kind).toBe('let');
|
|
108
|
+
if (term.kind === 'let') {
|
|
109
|
+
(0, vitest_1.expect)(term.bindings).toHaveLength(1);
|
|
110
|
+
(0, vitest_1.expect)(term.bindings[0].name).toBe('y');
|
|
111
|
+
(0, vitest_1.expect)(term.body.kind).toBe('app');
|
|
112
|
+
}
|
|
113
|
+
});
|
|
114
|
+
(0, vitest_1.it)('parsea forall: (forall ((x Int)) (>= x 0))', () => {
|
|
115
|
+
const term = (0, parser_1.parseTerm)('(forall ((x Int)) (>= x 0))');
|
|
116
|
+
(0, vitest_1.expect)(term.kind).toBe('forall');
|
|
117
|
+
if (term.kind === 'forall') {
|
|
118
|
+
(0, vitest_1.expect)(term.vars).toEqual([{ name: 'x', sort: { kind: 'symbol', name: 'Int' } }]);
|
|
119
|
+
(0, vitest_1.expect)(term.body.kind).toBe('app');
|
|
120
|
+
}
|
|
121
|
+
});
|
|
122
|
+
(0, vitest_1.it)('parsea exists con múltiples variables', () => {
|
|
123
|
+
const term = (0, parser_1.parseTerm)('(exists ((x Int) (y Real)) (= x y))');
|
|
124
|
+
(0, vitest_1.expect)(term.kind).toBe('exists');
|
|
125
|
+
if (term.kind === 'exists') {
|
|
126
|
+
(0, vitest_1.expect)(term.vars).toHaveLength(2);
|
|
127
|
+
(0, vitest_1.expect)(term.vars[1].sort).toEqual({ kind: 'symbol', name: 'Real' });
|
|
128
|
+
}
|
|
129
|
+
});
|
|
130
|
+
(0, vitest_1.it)('parsea identificadores indexados (_ BitVec 32)', () => {
|
|
131
|
+
const sort = (0, parser_1.parseSort)('(_ BitVec 32)');
|
|
132
|
+
(0, vitest_1.expect)(sort.kind).toBe('app');
|
|
133
|
+
if (sort.kind === 'app') {
|
|
134
|
+
(0, vitest_1.expect)(sort.name).toBe('_ BitVec');
|
|
135
|
+
(0, vitest_1.expect)(sort.args).toHaveLength(1);
|
|
136
|
+
}
|
|
137
|
+
});
|
|
138
|
+
(0, vitest_1.it)('parsea sorts aplicados (Array Int Int)', () => {
|
|
139
|
+
const sort = (0, parser_1.parseSort)('(Array Int Int)');
|
|
140
|
+
(0, vitest_1.expect)(sort).toEqual({
|
|
141
|
+
kind: 'app',
|
|
142
|
+
name: 'Array',
|
|
143
|
+
args: [
|
|
144
|
+
{ kind: 'symbol', name: 'Int' },
|
|
145
|
+
{ kind: 'symbol', name: 'Int' },
|
|
146
|
+
],
|
|
147
|
+
});
|
|
148
|
+
});
|
|
149
|
+
(0, vitest_1.it)('parsea numerales, decimales, hex y binary como spec-constants', () => {
|
|
150
|
+
(0, vitest_1.expect)((0, parser_1.parseTerm)('42')).toEqual({ kind: 'spec-constant', type: 'numeral', value: '42' });
|
|
151
|
+
(0, vitest_1.expect)((0, parser_1.parseTerm)('3.14')).toEqual({ kind: 'spec-constant', type: 'decimal', value: '3.14' });
|
|
152
|
+
(0, vitest_1.expect)((0, parser_1.parseTerm)('#xFF')).toEqual({ kind: 'spec-constant', type: 'hex', value: 'FF' });
|
|
153
|
+
(0, vitest_1.expect)((0, parser_1.parseTerm)('#b101')).toEqual({ kind: 'spec-constant', type: 'binary', value: '101' });
|
|
154
|
+
(0, vitest_1.expect)((0, parser_1.parseTerm)('"hola"')).toEqual({ kind: 'spec-constant', type: 'string', value: 'hola' });
|
|
155
|
+
});
|
|
156
|
+
(0, vitest_1.it)('parsea término anotado (! x :named foo)', () => {
|
|
157
|
+
const term = (0, parser_1.parseTerm)('(! x :named foo)');
|
|
158
|
+
(0, vitest_1.expect)(term.kind).toBe('annotated');
|
|
159
|
+
if (term.kind === 'annotated') {
|
|
160
|
+
(0, vitest_1.expect)(term.attrs).toEqual([{ key: 'named', value: 'foo' }]);
|
|
161
|
+
}
|
|
162
|
+
});
|
|
163
|
+
});
|
|
164
|
+
//# sourceMappingURL=parser.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parser.test.js","sourceRoot":"","sources":["../../../src/tests/smt-lib/parser.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tokenizer.test.d.ts","sourceRoot":"","sources":["../../../src/tests/smt-lib/tokenizer.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// ============================================================
|
|
3
|
+
// SMT-LIB v2 Tests — Tokenizer
|
|
4
|
+
// ============================================================
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
const vitest_1 = require("vitest");
|
|
7
|
+
const tokenizer_1 = require("../../smt-lib/tokenizer");
|
|
8
|
+
(0, vitest_1.describe)('SMT-LIB tokenizer', () => {
|
|
9
|
+
(0, vitest_1.it)('tokeniza paréntesis y símbolos básicos', () => {
|
|
10
|
+
const tokens = (0, tokenizer_1.tokenize)('(check-sat)');
|
|
11
|
+
(0, vitest_1.expect)(tokens.map((t) => t.kind)).toEqual(['lparen', 'symbol', 'rparen']);
|
|
12
|
+
(0, vitest_1.expect)(tokens[1].value).toBe('check-sat');
|
|
13
|
+
});
|
|
14
|
+
(0, vitest_1.it)('ignora comentarios de línea', () => {
|
|
15
|
+
const tokens = (0, tokenizer_1.tokenize)('; un comentario\n(assert true)');
|
|
16
|
+
(0, vitest_1.expect)(tokens.map((t) => t.value)).toEqual(['(', 'assert', 'true', ')']);
|
|
17
|
+
});
|
|
18
|
+
(0, vitest_1.it)('reconoce keywords con `:`', () => {
|
|
19
|
+
const tokens = (0, tokenizer_1.tokenize)('(set-option :produce-models true)');
|
|
20
|
+
(0, vitest_1.expect)(tokens[2].kind).toBe('keyword');
|
|
21
|
+
(0, vitest_1.expect)(tokens[2].value).toBe('produce-models');
|
|
22
|
+
});
|
|
23
|
+
(0, vitest_1.it)('reconoce literales hex y binary', () => {
|
|
24
|
+
const tokens = (0, tokenizer_1.tokenize)('#xAB12 #b1010');
|
|
25
|
+
(0, vitest_1.expect)(tokens[0].kind).toBe('hex');
|
|
26
|
+
(0, vitest_1.expect)(tokens[0].value).toBe('AB12');
|
|
27
|
+
(0, vitest_1.expect)(tokens[1].kind).toBe('binary');
|
|
28
|
+
(0, vitest_1.expect)(tokens[1].value).toBe('1010');
|
|
29
|
+
});
|
|
30
|
+
(0, vitest_1.it)('reconoce numerales y decimales', () => {
|
|
31
|
+
const tokens = (0, tokenizer_1.tokenize)('42 3.14');
|
|
32
|
+
(0, vitest_1.expect)(tokens[0].kind).toBe('numeral');
|
|
33
|
+
(0, vitest_1.expect)(tokens[0].value).toBe('42');
|
|
34
|
+
(0, vitest_1.expect)(tokens[1].kind).toBe('decimal');
|
|
35
|
+
(0, vitest_1.expect)(tokens[1].value).toBe('3.14');
|
|
36
|
+
});
|
|
37
|
+
(0, vitest_1.it)('parsea strings con escape de comilla doble', () => {
|
|
38
|
+
const tokens = (0, tokenizer_1.tokenize)('"hola ""mundo"" fin"');
|
|
39
|
+
(0, vitest_1.expect)(tokens[0].kind).toBe('string');
|
|
40
|
+
(0, vitest_1.expect)(tokens[0].value).toBe('hola "mundo" fin');
|
|
41
|
+
});
|
|
42
|
+
(0, vitest_1.it)('parsea símbolos pipe-quoted', () => {
|
|
43
|
+
const tokens = (0, tokenizer_1.tokenize)('|símbolo con espacios|');
|
|
44
|
+
(0, vitest_1.expect)(tokens[0].kind).toBe('symbol');
|
|
45
|
+
(0, vitest_1.expect)(tokens[0].value).toBe('símbolo con espacios');
|
|
46
|
+
});
|
|
47
|
+
(0, vitest_1.it)('arroja error en string sin cerrar', () => {
|
|
48
|
+
(0, vitest_1.expect)(() => (0, tokenizer_1.tokenize)('"hola')).toThrow(tokenizer_1.SmtTokenizerError);
|
|
49
|
+
});
|
|
50
|
+
(0, vitest_1.it)('arroja error en |...| sin cerrar', () => {
|
|
51
|
+
(0, vitest_1.expect)(() => (0, tokenizer_1.tokenize)('|abc')).toThrow(tokenizer_1.SmtTokenizerError);
|
|
52
|
+
});
|
|
53
|
+
(0, vitest_1.it)('mantiene line/col en cada token', () => {
|
|
54
|
+
const tokens = (0, tokenizer_1.tokenize)('(foo\n bar)');
|
|
55
|
+
(0, vitest_1.expect)(tokens[2].line).toBe(2);
|
|
56
|
+
(0, vitest_1.expect)(tokens[2].col).toBe(3);
|
|
57
|
+
});
|
|
58
|
+
});
|
|
59
|
+
//# sourceMappingURL=tokenizer.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tokenizer.test.js","sourceRoot":"","sources":["../../../src/tests/smt-lib/tokenizer.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tactic-dsl.test.d.ts","sourceRoot":"","sources":["../../../src/tests/tactic-dsl/tactic-dsl.test.ts"],"names":[],"mappings":""}
|