@stevenvo780/st-lang 4.5.2 → 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/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/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 +7 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +48 -3
- package/dist/index.js.map +1 -1
- 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/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/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/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/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/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/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 +4 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"functor.js","sourceRoot":"","sources":["../../src/categorical/functor.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export type { Category, Functor, NaturalTransformation, Cone, Cocone, Diagram, MonoidalCategory, MorId, } from './types';
|
|
2
|
+
export { FinSet, mkFinSetMor } from './fin-set';
|
|
3
|
+
export type { FinSetObj, FinSetMor } from './fin-set';
|
|
4
|
+
export { Poset } from './poset';
|
|
5
|
+
export type { PosetMor } from './poset';
|
|
6
|
+
export { Free } from './free';
|
|
7
|
+
export type { FreeMor } from './free';
|
|
8
|
+
export { mkFunctor, identityFunctor, composeFunctors, mkNaturalTransformation, identityNT, } from './functor';
|
|
9
|
+
export { isCone, isLimit, product, coproduct, equalizer, coequalizer } from './limits';
|
|
10
|
+
export { FinSetMonoidal } from './monoidal';
|
|
11
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/categorical/index.ts"],"names":[],"mappings":"AAQA,YAAY,EACV,QAAQ,EACR,OAAO,EACP,qBAAqB,EACrB,IAAI,EACJ,MAAM,EACN,OAAO,EACP,gBAAgB,EAChB,KAAK,GACN,MAAM,SAAS,CAAC;AAEjB,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAChD,YAAY,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAEtD,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAChC,YAAY,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAExC,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAC9B,YAAY,EAAE,OAAO,EAAE,MAAM,QAAQ,CAAC;AAEtC,OAAO,EACL,SAAS,EACT,eAAe,EACf,eAAe,EACf,uBAAuB,EACvB,UAAU,GACX,MAAM,WAAW,CAAC;AAEnB,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAEvF,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// ============================================================
|
|
3
|
+
// ST Categorical — Punto de entrada público
|
|
4
|
+
// ============================================================
|
|
5
|
+
// Re-exporta primitivas de teoría de categorías: Category,
|
|
6
|
+
// Functor, NaturalTransformation, límites/colímites concretos
|
|
7
|
+
// en FinSet, y estructura monoidal estricta sobre FinSet.
|
|
8
|
+
// ============================================================
|
|
9
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
10
|
+
exports.FinSetMonoidal = exports.coequalizer = exports.equalizer = exports.coproduct = exports.product = exports.isLimit = exports.isCone = exports.identityNT = exports.mkNaturalTransformation = exports.composeFunctors = exports.identityFunctor = exports.mkFunctor = exports.Free = exports.Poset = exports.mkFinSetMor = exports.FinSet = void 0;
|
|
11
|
+
var fin_set_1 = require("./fin-set");
|
|
12
|
+
Object.defineProperty(exports, "FinSet", { enumerable: true, get: function () { return fin_set_1.FinSet; } });
|
|
13
|
+
Object.defineProperty(exports, "mkFinSetMor", { enumerable: true, get: function () { return fin_set_1.mkFinSetMor; } });
|
|
14
|
+
var poset_1 = require("./poset");
|
|
15
|
+
Object.defineProperty(exports, "Poset", { enumerable: true, get: function () { return poset_1.Poset; } });
|
|
16
|
+
var free_1 = require("./free");
|
|
17
|
+
Object.defineProperty(exports, "Free", { enumerable: true, get: function () { return free_1.Free; } });
|
|
18
|
+
var functor_1 = require("./functor");
|
|
19
|
+
Object.defineProperty(exports, "mkFunctor", { enumerable: true, get: function () { return functor_1.mkFunctor; } });
|
|
20
|
+
Object.defineProperty(exports, "identityFunctor", { enumerable: true, get: function () { return functor_1.identityFunctor; } });
|
|
21
|
+
Object.defineProperty(exports, "composeFunctors", { enumerable: true, get: function () { return functor_1.composeFunctors; } });
|
|
22
|
+
Object.defineProperty(exports, "mkNaturalTransformation", { enumerable: true, get: function () { return functor_1.mkNaturalTransformation; } });
|
|
23
|
+
Object.defineProperty(exports, "identityNT", { enumerable: true, get: function () { return functor_1.identityNT; } });
|
|
24
|
+
var limits_1 = require("./limits");
|
|
25
|
+
Object.defineProperty(exports, "isCone", { enumerable: true, get: function () { return limits_1.isCone; } });
|
|
26
|
+
Object.defineProperty(exports, "isLimit", { enumerable: true, get: function () { return limits_1.isLimit; } });
|
|
27
|
+
Object.defineProperty(exports, "product", { enumerable: true, get: function () { return limits_1.product; } });
|
|
28
|
+
Object.defineProperty(exports, "coproduct", { enumerable: true, get: function () { return limits_1.coproduct; } });
|
|
29
|
+
Object.defineProperty(exports, "equalizer", { enumerable: true, get: function () { return limits_1.equalizer; } });
|
|
30
|
+
Object.defineProperty(exports, "coequalizer", { enumerable: true, get: function () { return limits_1.coequalizer; } });
|
|
31
|
+
var monoidal_1 = require("./monoidal");
|
|
32
|
+
Object.defineProperty(exports, "FinSetMonoidal", { enumerable: true, get: function () { return monoidal_1.FinSetMonoidal; } });
|
|
33
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/categorical/index.ts"],"names":[],"mappings":";AAAA,+DAA+D;AAC/D,4CAA4C;AAC5C,+DAA+D;AAC/D,2DAA2D;AAC3D,8DAA8D;AAC9D,0DAA0D;AAC1D,+DAA+D;;;AAa/D,qCAAgD;AAAvC,iGAAA,MAAM,OAAA;AAAE,sGAAA,WAAW,OAAA;AAG5B,iCAAgC;AAAvB,8FAAA,KAAK,OAAA;AAGd,+BAA8B;AAArB,4FAAA,IAAI,OAAA;AAGb,qCAMmB;AALjB,oGAAA,SAAS,OAAA;AACT,0GAAA,eAAe,OAAA;AACf,0GAAA,eAAe,OAAA;AACf,kHAAA,uBAAuB,OAAA;AACvB,qGAAA,UAAU,OAAA;AAGZ,mCAAuF;AAA9E,gGAAA,MAAM,OAAA;AAAE,iGAAA,OAAO,OAAA;AAAE,iGAAA,OAAO,OAAA;AAAE,mGAAA,SAAS,OAAA;AAAE,mGAAA,SAAS,OAAA;AAAE,qGAAA,WAAW,OAAA;AAEpE,uCAA4C;AAAnC,0GAAA,cAAc,OAAA"}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
import type { Category, Cone, Diagram } from './types';
|
|
2
|
+
import { type FinSetMor, type FinSetObj } from './fin-set';
|
|
3
|
+
/**
|
|
4
|
+
* Verifica que `cone` sea un cono sobre `diagram` en `cat`:
|
|
5
|
+
* para cada arista `e: i→j` del diagrama, `e ∘ leg(i) = leg(j)`.
|
|
6
|
+
*/
|
|
7
|
+
export declare function isCone<O, M>(cat: Category<O, M>, diagram: Diagram<O, M>, cone: Cone<O, M>): boolean;
|
|
8
|
+
/**
|
|
9
|
+
* Comprueba si `cone` es límite del diagrama: para cada otro cono
|
|
10
|
+
* candidato sobre el diagrama, existe un único morfismo `u : apex' → apex`
|
|
11
|
+
* que conmuta con las patas. La búsqueda es por enumeración sobre
|
|
12
|
+
* los morfismos registrados en `cat`; sirve bien para categorías finitas
|
|
13
|
+
* pequeñas (FinSet con objetos chicos).
|
|
14
|
+
*/
|
|
15
|
+
export declare function isLimit<O, M>(cat: Category<O, M>, diagram: Diagram<O, M>, cone: Cone<O, M>): boolean;
|
|
16
|
+
/**
|
|
17
|
+
* Producto binario en FinSet: A×B con proyecciones π1, π2.
|
|
18
|
+
* Construye el objeto producto como un nuevo `FinSetObj` con
|
|
19
|
+
* elementos `(a,b)` codificados como `"a∥b"` y lo registra en `cat`.
|
|
20
|
+
*
|
|
21
|
+
* Devuelve `null` si los objetos no pertenecen a la categoría.
|
|
22
|
+
*
|
|
23
|
+
* Nota: la categoría `cat` debe poder admitir nuevos objetos. Para
|
|
24
|
+
* nuestro uso pedimos que sea una `FinSet`-categoría construida con
|
|
25
|
+
* los carriers explícitos. En lugar de mutar `cat`, esta función
|
|
26
|
+
* regresa el producto + las proyecciones y deja al cliente
|
|
27
|
+
* reconstruir una categoría extendida si lo necesita.
|
|
28
|
+
*/
|
|
29
|
+
export declare function product(cat: Category<FinSetObj, FinSetMor>, a: FinSetObj, b: FinSetObj): {
|
|
30
|
+
obj: FinSetObj;
|
|
31
|
+
pi1: FinSetMor;
|
|
32
|
+
pi2: FinSetMor;
|
|
33
|
+
cat: Category<FinSetObj, FinSetMor>;
|
|
34
|
+
} | null;
|
|
35
|
+
/**
|
|
36
|
+
* Coproducto binario en FinSet: unión disjunta A⊔B. Usa prefijos
|
|
37
|
+
* `L:` y `R:` para tag-ear los elementos y produce las inyecciones
|
|
38
|
+
* canónicas in1, in2.
|
|
39
|
+
*/
|
|
40
|
+
export declare function coproduct(cat: Category<FinSetObj, FinSetMor>, a: FinSetObj, b: FinSetObj): {
|
|
41
|
+
obj: FinSetObj;
|
|
42
|
+
in1: FinSetMor;
|
|
43
|
+
in2: FinSetMor;
|
|
44
|
+
cat: Category<FinSetObj, FinSetMor>;
|
|
45
|
+
} | null;
|
|
46
|
+
/**
|
|
47
|
+
* Igualador en FinSet de un par paralelo `f, g : A → B`. El igualador
|
|
48
|
+
* es el subconjunto `E = { x ∈ A | f(x) = g(x) }` con inclusión `eq : E ↪ A`.
|
|
49
|
+
*/
|
|
50
|
+
export declare function equalizer(cat: Category<FinSetObj, FinSetMor>, f: FinSetMor, g: FinSetMor): {
|
|
51
|
+
obj: FinSetObj;
|
|
52
|
+
eq: FinSetMor;
|
|
53
|
+
cat: Category<FinSetObj, FinSetMor>;
|
|
54
|
+
} | null;
|
|
55
|
+
/**
|
|
56
|
+
* Coigualador (colimite dual): cociente A/~ donde x ~ y si existe
|
|
57
|
+
* z ∈ S con f(z)=x ∧ g(z)=y (cierre transitivo-simétrico).
|
|
58
|
+
*/
|
|
59
|
+
export declare function coequalizer(cat: Category<FinSetObj, FinSetMor>, f: FinSetMor, g: FinSetMor): {
|
|
60
|
+
obj: FinSetObj;
|
|
61
|
+
q: FinSetMor;
|
|
62
|
+
cat: Category<FinSetObj, FinSetMor>;
|
|
63
|
+
} | null;
|
|
64
|
+
//# sourceMappingURL=limits.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"limits.d.ts","sourceRoot":"","sources":["../../src/categorical/limits.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AACvD,OAAO,EAAuB,KAAK,SAAS,EAAE,KAAK,SAAS,EAAE,MAAM,WAAW,CAAC;AAEhF;;;GAGG;AACH,wBAAgB,MAAM,CAAC,CAAC,EAAE,CAAC,EACzB,GAAG,EAAE,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,EACnB,OAAO,EAAE,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,EACtB,IAAI,EAAE,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,GACf,OAAO,CAYT;AAED;;;;;;GAMG;AACH,wBAAgB,OAAO,CAAC,CAAC,EAAE,CAAC,EAC1B,GAAG,EAAE,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,EACnB,OAAO,EAAE,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,EACtB,IAAI,EAAE,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,GACf,OAAO,CA2BT;AAgCD;;;;;;;;;;;;GAYG;AACH,wBAAgB,OAAO,CACrB,GAAG,EAAE,QAAQ,CAAC,SAAS,EAAE,SAAS,CAAC,EACnC,CAAC,EAAE,SAAS,EACZ,CAAC,EAAE,SAAS,GACX;IAAE,GAAG,EAAE,SAAS,CAAC;IAAC,GAAG,EAAE,SAAS,CAAC;IAAC,GAAG,EAAE,SAAS,CAAC;IAAC,GAAG,EAAE,QAAQ,CAAC,SAAS,EAAE,SAAS,CAAC,CAAA;CAAE,GAAG,IAAI,CAuBhG;AAED;;;;GAIG;AACH,wBAAgB,SAAS,CACvB,GAAG,EAAE,QAAQ,CAAC,SAAS,EAAE,SAAS,CAAC,EACnC,CAAC,EAAE,SAAS,EACZ,CAAC,EAAE,SAAS,GACX;IAAE,GAAG,EAAE,SAAS,CAAC;IAAC,GAAG,EAAE,SAAS,CAAC;IAAC,GAAG,EAAE,SAAS,CAAC;IAAC,GAAG,EAAE,QAAQ,CAAC,SAAS,EAAE,SAAS,CAAC,CAAA;CAAE,GAAG,IAAI,CAsBhG;AAED;;;GAGG;AACH,wBAAgB,SAAS,CACvB,GAAG,EAAE,QAAQ,CAAC,SAAS,EAAE,SAAS,CAAC,EACnC,CAAC,EAAE,SAAS,EACZ,CAAC,EAAE,SAAS,GACX;IAAE,GAAG,EAAE,SAAS,CAAC;IAAC,EAAE,EAAE,SAAS,CAAC;IAAC,GAAG,EAAE,QAAQ,CAAC,SAAS,EAAE,SAAS,CAAC,CAAA;CAAE,GAAG,IAAI,CAkB/E;AAED;;;GAGG;AACH,wBAAgB,WAAW,CACzB,GAAG,EAAE,QAAQ,CAAC,SAAS,EAAE,SAAS,CAAC,EACnC,CAAC,EAAE,SAAS,EACZ,CAAC,EAAE,SAAS,GACX;IAAE,GAAG,EAAE,SAAS,CAAC;IAAC,CAAC,EAAE,SAAS,CAAC;IAAC,GAAG,EAAE,QAAQ,CAAC,SAAS,EAAE,SAAS,CAAC,CAAA;CAAE,GAAG,IAAI,CAkC9E"}
|
|
@@ -0,0 +1,248 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// ============================================================
|
|
3
|
+
// ST Categorical — Límites y colímites
|
|
4
|
+
// ============================================================
|
|
5
|
+
// Construcciones universales en FinSet (las más usadas):
|
|
6
|
+
// • product(a, b) — producto binario A×B
|
|
7
|
+
// • coproduct(a, b) — coproducto binario A⊔B
|
|
8
|
+
// • equalizer(f, g) — igualador de un par paralelo
|
|
9
|
+
//
|
|
10
|
+
// Para casos generales también exponemos `isLimit` que recibe un
|
|
11
|
+
// diagrama y un cono y verifica la propiedad universal por
|
|
12
|
+
// muestreo sobre los conos candidatos del diagrama.
|
|
13
|
+
// ============================================================
|
|
14
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
+
exports.isCone = isCone;
|
|
16
|
+
exports.isLimit = isLimit;
|
|
17
|
+
exports.product = product;
|
|
18
|
+
exports.coproduct = coproduct;
|
|
19
|
+
exports.equalizer = equalizer;
|
|
20
|
+
exports.coequalizer = coequalizer;
|
|
21
|
+
const fin_set_1 = require("./fin-set");
|
|
22
|
+
/**
|
|
23
|
+
* Verifica que `cone` sea un cono sobre `diagram` en `cat`:
|
|
24
|
+
* para cada arista `e: i→j` del diagrama, `e ∘ leg(i) = leg(j)`.
|
|
25
|
+
*/
|
|
26
|
+
function isCone(cat, diagram, cone) {
|
|
27
|
+
for (const v of diagram.vertices.keys()) {
|
|
28
|
+
if (!cone.legs.has(v))
|
|
29
|
+
return false;
|
|
30
|
+
}
|
|
31
|
+
for (const { from, to, mor } of diagram.edges) {
|
|
32
|
+
const legFrom = cone.legs.get(from);
|
|
33
|
+
const legTo = cone.legs.get(to);
|
|
34
|
+
if (!legFrom || !legTo)
|
|
35
|
+
return false;
|
|
36
|
+
const composed = cat.compose(mor, legFrom);
|
|
37
|
+
if (!cat.eqMor(composed, legTo))
|
|
38
|
+
return false;
|
|
39
|
+
}
|
|
40
|
+
return true;
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Comprueba si `cone` es límite del diagrama: para cada otro cono
|
|
44
|
+
* candidato sobre el diagrama, existe un único morfismo `u : apex' → apex`
|
|
45
|
+
* que conmuta con las patas. La búsqueda es por enumeración sobre
|
|
46
|
+
* los morfismos registrados en `cat`; sirve bien para categorías finitas
|
|
47
|
+
* pequeñas (FinSet con objetos chicos).
|
|
48
|
+
*/
|
|
49
|
+
function isLimit(cat, diagram, cone) {
|
|
50
|
+
if (!isCone(cat, diagram, cone))
|
|
51
|
+
return false;
|
|
52
|
+
// Enumerar otros conos candidatos: para cada objeto X en cat,
|
|
53
|
+
// todos los tuples de morfismos X→vertices que respeten edges.
|
|
54
|
+
for (const X of cat.objects) {
|
|
55
|
+
const candidates = enumerateCones(cat, diagram, X);
|
|
56
|
+
for (const cand of candidates) {
|
|
57
|
+
// Buscar u : X → apex tal que ∀ v: leg(v) ∘ u = cand.legs(v)
|
|
58
|
+
const candidatesU = cat.hom(X, cone.apex);
|
|
59
|
+
let found = 0;
|
|
60
|
+
for (const u of candidatesU) {
|
|
61
|
+
let ok = true;
|
|
62
|
+
for (const [v, leg] of cone.legs) {
|
|
63
|
+
const composed = cat.compose(leg, u);
|
|
64
|
+
const expected = cand.legs.get(v);
|
|
65
|
+
if (!cat.eqMor(composed, expected)) {
|
|
66
|
+
ok = false;
|
|
67
|
+
break;
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
if (ok)
|
|
71
|
+
found++;
|
|
72
|
+
if (found > 1)
|
|
73
|
+
return false; // no único
|
|
74
|
+
}
|
|
75
|
+
if (found !== 1)
|
|
76
|
+
return false;
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
return true;
|
|
80
|
+
}
|
|
81
|
+
function enumerateCones(cat, diagram, apex) {
|
|
82
|
+
const vNames = Array.from(diagram.vertices.keys());
|
|
83
|
+
// Para cada vértice, lista de posibles legs apex→vertice.
|
|
84
|
+
const optionsPerVertex = vNames.map((v) => {
|
|
85
|
+
const obj = diagram.vertices.get(v);
|
|
86
|
+
return cat.hom(apex, obj).map((leg) => ({ vName: v, leg }));
|
|
87
|
+
});
|
|
88
|
+
// Producto cartesiano. Para diagramas pequeños es manejable.
|
|
89
|
+
let combos = [new Map()];
|
|
90
|
+
for (const opts of optionsPerVertex) {
|
|
91
|
+
const next = [];
|
|
92
|
+
for (const partial of combos) {
|
|
93
|
+
for (const o of opts) {
|
|
94
|
+
const nm = new Map(partial);
|
|
95
|
+
nm.set(o.vName, o.leg);
|
|
96
|
+
next.push(nm);
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
combos = next;
|
|
100
|
+
}
|
|
101
|
+
const out = [];
|
|
102
|
+
for (const legs of combos) {
|
|
103
|
+
const cand = { apex, legs };
|
|
104
|
+
if (isCone(cat, diagram, cand))
|
|
105
|
+
out.push(cand);
|
|
106
|
+
}
|
|
107
|
+
return out;
|
|
108
|
+
}
|
|
109
|
+
// ── Construcciones concretas en FinSet ───────────────────────
|
|
110
|
+
/**
|
|
111
|
+
* Producto binario en FinSet: A×B con proyecciones π1, π2.
|
|
112
|
+
* Construye el objeto producto como un nuevo `FinSetObj` con
|
|
113
|
+
* elementos `(a,b)` codificados como `"a∥b"` y lo registra en `cat`.
|
|
114
|
+
*
|
|
115
|
+
* Devuelve `null` si los objetos no pertenecen a la categoría.
|
|
116
|
+
*
|
|
117
|
+
* Nota: la categoría `cat` debe poder admitir nuevos objetos. Para
|
|
118
|
+
* nuestro uso pedimos que sea una `FinSet`-categoría construida con
|
|
119
|
+
* los carriers explícitos. En lugar de mutar `cat`, esta función
|
|
120
|
+
* regresa el producto + las proyecciones y deja al cliente
|
|
121
|
+
* reconstruir una categoría extendida si lo necesita.
|
|
122
|
+
*/
|
|
123
|
+
function product(cat, a, b) {
|
|
124
|
+
if (!cat.objects.has(a) || !cat.objects.has(b))
|
|
125
|
+
return null;
|
|
126
|
+
const sep = '∥';
|
|
127
|
+
const elements = [];
|
|
128
|
+
const pi1Table = {};
|
|
129
|
+
const pi2Table = {};
|
|
130
|
+
for (const x of a.elements) {
|
|
131
|
+
for (const y of b.elements) {
|
|
132
|
+
const tag = `${x}${sep}${y}`;
|
|
133
|
+
elements.push(tag);
|
|
134
|
+
pi1Table[tag] = x;
|
|
135
|
+
pi2Table[tag] = y;
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
const prod = { name: `${a.name}×${b.name}`, elements };
|
|
139
|
+
const extendedObjs = [...cat.objects, prod];
|
|
140
|
+
// Construimos categoría extendida con los morfismos previos como
|
|
141
|
+
// generadores + π1, π2.
|
|
142
|
+
const oldGens = Array.from(cat.morphisms.values()).filter((m) => !m.id.endsWith(':id'));
|
|
143
|
+
const pi1 = (0, fin_set_1.mkFinSetMor)('π1', prod, a, pi1Table);
|
|
144
|
+
const pi2 = (0, fin_set_1.mkFinSetMor)('π2', prod, b, pi2Table);
|
|
145
|
+
const newCat = (0, fin_set_1.FinSet)(extendedObjs, [...oldGens, pi1, pi2]);
|
|
146
|
+
return { obj: prod, pi1, pi2, cat: newCat };
|
|
147
|
+
}
|
|
148
|
+
/**
|
|
149
|
+
* Coproducto binario en FinSet: unión disjunta A⊔B. Usa prefijos
|
|
150
|
+
* `L:` y `R:` para tag-ear los elementos y produce las inyecciones
|
|
151
|
+
* canónicas in1, in2.
|
|
152
|
+
*/
|
|
153
|
+
function coproduct(cat, a, b) {
|
|
154
|
+
if (!cat.objects.has(a) || !cat.objects.has(b))
|
|
155
|
+
return null;
|
|
156
|
+
const elements = [];
|
|
157
|
+
const in1Table = {};
|
|
158
|
+
const in2Table = {};
|
|
159
|
+
for (const x of a.elements) {
|
|
160
|
+
const tag = `L:${x}`;
|
|
161
|
+
elements.push(tag);
|
|
162
|
+
in1Table[x] = tag;
|
|
163
|
+
}
|
|
164
|
+
for (const y of b.elements) {
|
|
165
|
+
const tag = `R:${y}`;
|
|
166
|
+
elements.push(tag);
|
|
167
|
+
in2Table[y] = tag;
|
|
168
|
+
}
|
|
169
|
+
const cop = { name: `${a.name}⊔${b.name}`, elements };
|
|
170
|
+
const extendedObjs = [...cat.objects, cop];
|
|
171
|
+
const oldGens = Array.from(cat.morphisms.values()).filter((m) => !m.id.endsWith(':id'));
|
|
172
|
+
const in1 = (0, fin_set_1.mkFinSetMor)('in1', a, cop, in1Table);
|
|
173
|
+
const in2 = (0, fin_set_1.mkFinSetMor)('in2', b, cop, in2Table);
|
|
174
|
+
const newCat = (0, fin_set_1.FinSet)(extendedObjs, [...oldGens, in1, in2]);
|
|
175
|
+
return { obj: cop, in1, in2, cat: newCat };
|
|
176
|
+
}
|
|
177
|
+
/**
|
|
178
|
+
* Igualador en FinSet de un par paralelo `f, g : A → B`. El igualador
|
|
179
|
+
* es el subconjunto `E = { x ∈ A | f(x) = g(x) }` con inclusión `eq : E ↪ A`.
|
|
180
|
+
*/
|
|
181
|
+
function equalizer(cat, f, g) {
|
|
182
|
+
if (f.src !== g.src || f.tgt !== g.tgt)
|
|
183
|
+
return null;
|
|
184
|
+
const aObj = Array.from(cat.objects).find((o) => o.name === f.src);
|
|
185
|
+
if (!aObj)
|
|
186
|
+
return null;
|
|
187
|
+
const elements = [];
|
|
188
|
+
const eqTable = {};
|
|
189
|
+
for (const x of aObj.elements) {
|
|
190
|
+
if (f.fn.get(x) === g.fn.get(x)) {
|
|
191
|
+
elements.push(x);
|
|
192
|
+
eqTable[x] = x;
|
|
193
|
+
}
|
|
194
|
+
}
|
|
195
|
+
const eObj = { name: `Eq(${f.id},${g.id})`, elements };
|
|
196
|
+
const extendedObjs = [...cat.objects, eObj];
|
|
197
|
+
const oldGens = Array.from(cat.morphisms.values()).filter((m) => !m.id.endsWith(':id'));
|
|
198
|
+
const eq = (0, fin_set_1.mkFinSetMor)('eq', eObj, aObj, eqTable);
|
|
199
|
+
const newCat = (0, fin_set_1.FinSet)(extendedObjs, [...oldGens, eq]);
|
|
200
|
+
return { obj: eObj, eq, cat: newCat };
|
|
201
|
+
}
|
|
202
|
+
/**
|
|
203
|
+
* Coigualador (colimite dual): cociente A/~ donde x ~ y si existe
|
|
204
|
+
* z ∈ S con f(z)=x ∧ g(z)=y (cierre transitivo-simétrico).
|
|
205
|
+
*/
|
|
206
|
+
function coequalizer(cat, f, g) {
|
|
207
|
+
if (f.src !== g.src || f.tgt !== g.tgt)
|
|
208
|
+
return null;
|
|
209
|
+
const aObj = Array.from(cat.objects).find((o) => o.name === f.src);
|
|
210
|
+
const bObj = Array.from(cat.objects).find((o) => o.name === f.tgt);
|
|
211
|
+
if (!aObj || !bObj)
|
|
212
|
+
return null;
|
|
213
|
+
// Union-find sobre elementos de B
|
|
214
|
+
const parent = new Map();
|
|
215
|
+
for (const y of bObj.elements)
|
|
216
|
+
parent.set(y, y);
|
|
217
|
+
function find(x) {
|
|
218
|
+
let p = parent.get(x);
|
|
219
|
+
while (p !== parent.get(p))
|
|
220
|
+
p = parent.get(p);
|
|
221
|
+
parent.set(x, p);
|
|
222
|
+
return p;
|
|
223
|
+
}
|
|
224
|
+
function union(x, y) {
|
|
225
|
+
const px = find(x);
|
|
226
|
+
const py = find(y);
|
|
227
|
+
if (px !== py)
|
|
228
|
+
parent.set(px, py);
|
|
229
|
+
}
|
|
230
|
+
for (const z of aObj.elements) {
|
|
231
|
+
union(f.fn.get(z), g.fn.get(z));
|
|
232
|
+
}
|
|
233
|
+
// Clases canónicas
|
|
234
|
+
const reps = new Set();
|
|
235
|
+
for (const y of bObj.elements)
|
|
236
|
+
reps.add(find(y));
|
|
237
|
+
const elements = Array.from(reps).sort();
|
|
238
|
+
const qTable = {};
|
|
239
|
+
for (const y of bObj.elements)
|
|
240
|
+
qTable[y] = find(y);
|
|
241
|
+
const cObj = { name: `Coeq(${f.id},${g.id})`, elements };
|
|
242
|
+
const extendedObjs = [...cat.objects, cObj];
|
|
243
|
+
const oldGens = Array.from(cat.morphisms.values()).filter((m) => !m.id.endsWith(':id'));
|
|
244
|
+
const q = (0, fin_set_1.mkFinSetMor)('q', bObj, cObj, qTable);
|
|
245
|
+
const newCat = (0, fin_set_1.FinSet)(extendedObjs, [...oldGens, q]);
|
|
246
|
+
return { obj: cObj, q, cat: newCat };
|
|
247
|
+
}
|
|
248
|
+
//# sourceMappingURL=limits.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"limits.js","sourceRoot":"","sources":["../../src/categorical/limits.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { MonoidalCategory } from './types';
|
|
2
|
+
import { type FinSetMor, type FinSetObj } from './fin-set';
|
|
3
|
+
/**
|
|
4
|
+
* Construye la categoría monoidal (FinSet, ×, 1). Recibe la lista
|
|
5
|
+
* de objetos generadores; añade automáticamente la unidad 1.
|
|
6
|
+
*
|
|
7
|
+
* Esta versión es estricta hasta isomorfismo canónico: los unitores
|
|
8
|
+
* y asociador se comprueban por igualdad estructural de los
|
|
9
|
+
* elementos serializados (`x` vs `*∥x` vs `x∥*`), siguiendo la
|
|
10
|
+
* convención `mkProductObj`. En lugar de verificar conmutatividad
|
|
11
|
+
* de diagramas complejos, comparamos los carriers normalizados.
|
|
12
|
+
*/
|
|
13
|
+
export declare function FinSetMonoidal(objs: ReadonlyArray<FinSetObj>, generators?: ReadonlyArray<FinSetMor>): MonoidalCategory<FinSetObj, FinSetMor>;
|
|
14
|
+
//# sourceMappingURL=monoidal.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"monoidal.d.ts","sourceRoot":"","sources":["../../src/categorical/monoidal.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAChD,OAAO,EAAuB,KAAK,SAAS,EAAE,KAAK,SAAS,EAAE,MAAM,WAAW,CAAC;AAEhF;;;;;;;;;GASG;AACH,wBAAgB,cAAc,CAC5B,IAAI,EAAE,aAAa,CAAC,SAAS,CAAC,EAC9B,UAAU,GAAE,aAAa,CAAC,SAAS,CAAM,GACxC,gBAAgB,CAAC,SAAS,EAAE,SAAS,CAAC,CA+HxC"}
|
|
@@ -0,0 +1,148 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// ============================================================
|
|
3
|
+
// ST Categorical — Monoidal Category (FinSet con producto ×)
|
|
4
|
+
// ============================================================
|
|
5
|
+
// Construcción concreta de la categoría monoidal estricta
|
|
6
|
+
// (FinSet, ×, 1) donde 1 = {*} y A×B se define elemento a elemento.
|
|
7
|
+
// Verifica unitor izquierdo / derecho y asociador por igualdad
|
|
8
|
+
// estricta sobre los carriers (suficiente porque elegimos los
|
|
9
|
+
// nombres canónicos: "*∥x" se mapea a "x", etc.).
|
|
10
|
+
// ============================================================
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.FinSetMonoidal = FinSetMonoidal;
|
|
13
|
+
const fin_set_1 = require("./fin-set");
|
|
14
|
+
/**
|
|
15
|
+
* Construye la categoría monoidal (FinSet, ×, 1). Recibe la lista
|
|
16
|
+
* de objetos generadores; añade automáticamente la unidad 1.
|
|
17
|
+
*
|
|
18
|
+
* Esta versión es estricta hasta isomorfismo canónico: los unitores
|
|
19
|
+
* y asociador se comprueban por igualdad estructural de los
|
|
20
|
+
* elementos serializados (`x` vs `*∥x` vs `x∥*`), siguiendo la
|
|
21
|
+
* convención `mkProductObj`. En lugar de verificar conmutatividad
|
|
22
|
+
* de diagramas complejos, comparamos los carriers normalizados.
|
|
23
|
+
*/
|
|
24
|
+
function FinSetMonoidal(objs, generators = []) {
|
|
25
|
+
const unit = { name: '1', elements: ['*'] };
|
|
26
|
+
const allObjs = [unit, ...objs];
|
|
27
|
+
// Cerramos productos relevantes para que verifyAssociator/unitors
|
|
28
|
+
// puedan buscar objetos producto sin construir uno nuevo cada vez.
|
|
29
|
+
const objsByName = new Map();
|
|
30
|
+
for (const o of allObjs)
|
|
31
|
+
objsByName.set(o.name, o);
|
|
32
|
+
function productObj(a, b) {
|
|
33
|
+
const name = `${a.name}×${b.name}`;
|
|
34
|
+
const cached = objsByName.get(name);
|
|
35
|
+
if (cached)
|
|
36
|
+
return cached;
|
|
37
|
+
const elements = [];
|
|
38
|
+
for (const x of a.elements) {
|
|
39
|
+
for (const y of b.elements) {
|
|
40
|
+
elements.push(`${x}∥${y}`);
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
const o = { name, elements };
|
|
44
|
+
objsByName.set(name, o);
|
|
45
|
+
return o;
|
|
46
|
+
}
|
|
47
|
+
// Generar tensorial de unidades y de generators para asegurar
|
|
48
|
+
// que la categoría base tenga las identidades para esos objetos.
|
|
49
|
+
const expandedObjs = [...allObjs];
|
|
50
|
+
for (const a of allObjs) {
|
|
51
|
+
for (const b of allObjs) {
|
|
52
|
+
const p = productObj(a, b);
|
|
53
|
+
if (!expandedObjs.some((o) => o.name === p.name))
|
|
54
|
+
expandedObjs.push(p);
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
const baseCat = (0, fin_set_1.FinSet)(expandedObjs, generators);
|
|
58
|
+
function tensor(a, b) {
|
|
59
|
+
return productObj(a, b);
|
|
60
|
+
}
|
|
61
|
+
function tensorMor(f, g) {
|
|
62
|
+
// f×g : A×B → A'×B', (a,b) ↦ (f(a), g(b))
|
|
63
|
+
const aObj = Array.from(baseCat.objects).find((o) => o.name === f.src);
|
|
64
|
+
const bObj = Array.from(baseCat.objects).find((o) => o.name === g.src);
|
|
65
|
+
const aTgt = Array.from(baseCat.objects).find((o) => o.name === f.tgt);
|
|
66
|
+
const bTgt = Array.from(baseCat.objects).find((o) => o.name === g.tgt);
|
|
67
|
+
const prodSrc = productObj(aObj, bObj);
|
|
68
|
+
const prodTgt = productObj(aTgt, bTgt);
|
|
69
|
+
const table = {};
|
|
70
|
+
for (const x of aObj.elements) {
|
|
71
|
+
for (const y of bObj.elements) {
|
|
72
|
+
table[`${x}∥${y}`] = `${f.fn.get(x)}∥${g.fn.get(y)}`;
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
// Asegurar que los objetos producto existan en la categoría base.
|
|
76
|
+
if (!baseCat.objects.has(prodSrc) || !baseCat.objects.has(prodTgt)) {
|
|
77
|
+
// No deberían faltar con expandedObjs, pero como salvaguarda
|
|
78
|
+
// devolvemos un morfismo standalone.
|
|
79
|
+
}
|
|
80
|
+
return (0, fin_set_1.mkFinSetMor)(`${f.id.split(':').pop()}×${g.id.split(':').pop()}`, prodSrc, prodTgt, table);
|
|
81
|
+
}
|
|
82
|
+
function verifyLeftUnitor() {
|
|
83
|
+
// 1⊗A debe ser isomorfo a A. Concretamente: el carrier de 1×A es
|
|
84
|
+
// { "*∥a" | a∈A }, en biyección con A vía "*∥a" ↔ a.
|
|
85
|
+
for (const a of allObjs) {
|
|
86
|
+
const oneA = tensor(unit, a);
|
|
87
|
+
if (oneA.elements.length !== a.elements.length)
|
|
88
|
+
return false;
|
|
89
|
+
// Cada elemento "*∥a" debe corresponder con un a en A.
|
|
90
|
+
const matches = oneA.elements.every((el) => {
|
|
91
|
+
const [u, x] = el.split('∥');
|
|
92
|
+
return u === '*' && a.elements.includes(x ?? '');
|
|
93
|
+
});
|
|
94
|
+
if (!matches)
|
|
95
|
+
return false;
|
|
96
|
+
}
|
|
97
|
+
return true;
|
|
98
|
+
}
|
|
99
|
+
function verifyRightUnitor() {
|
|
100
|
+
for (const a of allObjs) {
|
|
101
|
+
const aOne = tensor(a, unit);
|
|
102
|
+
if (aOne.elements.length !== a.elements.length)
|
|
103
|
+
return false;
|
|
104
|
+
const matches = aOne.elements.every((el) => {
|
|
105
|
+
const [x, u] = el.split('∥');
|
|
106
|
+
return u === '*' && a.elements.includes(x ?? '');
|
|
107
|
+
});
|
|
108
|
+
if (!matches)
|
|
109
|
+
return false;
|
|
110
|
+
}
|
|
111
|
+
return true;
|
|
112
|
+
}
|
|
113
|
+
function verifyAssociator() {
|
|
114
|
+
// (A⊗B)⊗C y A⊗(B⊗C) deben tener carriers en biyección canónica.
|
|
115
|
+
for (const a of allObjs) {
|
|
116
|
+
for (const b of allObjs) {
|
|
117
|
+
for (const c of allObjs) {
|
|
118
|
+
const lhs = tensor(tensor(a, b), c);
|
|
119
|
+
const rhs = tensor(a, tensor(b, c));
|
|
120
|
+
if (lhs.elements.length !== rhs.elements.length)
|
|
121
|
+
return false;
|
|
122
|
+
// Asociador: "(x∥y)∥z" ↔ "x∥(y∥z)". Como nuestro encoding es
|
|
123
|
+
// strings con ∥ izquierda-asociativo, normalizamos quitando
|
|
124
|
+
// separadores y comparando.
|
|
125
|
+
const lset = new Set(lhs.elements.map((s) => s.replaceAll('∥', '|')));
|
|
126
|
+
const rset = new Set(rhs.elements.map((s) => s.replaceAll('∥', '|')));
|
|
127
|
+
if (lset.size !== rset.size)
|
|
128
|
+
return false;
|
|
129
|
+
for (const s of lset)
|
|
130
|
+
if (!rset.has(s))
|
|
131
|
+
return false;
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
return true;
|
|
136
|
+
}
|
|
137
|
+
return {
|
|
138
|
+
...baseCat,
|
|
139
|
+
name: 'FinSet⊗',
|
|
140
|
+
unit,
|
|
141
|
+
tensor,
|
|
142
|
+
tensorMor,
|
|
143
|
+
verifyLeftUnitor,
|
|
144
|
+
verifyRightUnitor,
|
|
145
|
+
verifyAssociator,
|
|
146
|
+
};
|
|
147
|
+
}
|
|
148
|
+
//# sourceMappingURL=monoidal.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"monoidal.js","sourceRoot":"","sources":["../../src/categorical/monoidal.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { Category, MorId } from './types';
|
|
2
|
+
/** Morfismo del poset: par origen/destino. Único entre dos objetos. */
|
|
3
|
+
export interface PosetMor {
|
|
4
|
+
readonly id: MorId;
|
|
5
|
+
readonly src: string;
|
|
6
|
+
readonly tgt: string;
|
|
7
|
+
}
|
|
8
|
+
/**
|
|
9
|
+
* Construye la categoría poset. `elements` define los objetos y
|
|
10
|
+
* `leq` los pares a≤b explícitos. La clausura reflexivo-transitiva
|
|
11
|
+
* se calcula y se realiza como morfismos del Category resultante.
|
|
12
|
+
*/
|
|
13
|
+
export declare function Poset(elements: ReadonlyArray<string>, leq: ReadonlyArray<readonly [string, string]>): Category<string, PosetMor>;
|
|
14
|
+
//# sourceMappingURL=poset.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"poset.d.ts","sourceRoot":"","sources":["../../src/categorical/poset.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAE/C,uEAAuE;AACvE,MAAM,WAAW,QAAQ;IACvB,QAAQ,CAAC,EAAE,EAAE,KAAK,CAAC;IACnB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;CACtB;AAED;;;;GAIG;AACH,wBAAgB,KAAK,CACnB,QAAQ,EAAE,aAAa,CAAC,MAAM,CAAC,EAC/B,GAAG,EAAE,aAAa,CAAC,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,GAC5C,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC,CAmG5B"}
|