@stevenvo780/st-lang 4.12.0 → 4.13.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/reasoning/datalog/index.d.ts +131 -0
- package/dist/reasoning/datalog/index.d.ts.map +1 -0
- package/dist/reasoning/datalog/index.js +706 -0
- package/dist/reasoning/datalog/index.js.map +1 -0
- package/dist/reasoning/galois-fields/index.d.ts +29 -0
- package/dist/reasoning/galois-fields/index.d.ts.map +1 -0
- package/dist/reasoning/galois-fields/index.js +522 -0
- package/dist/reasoning/galois-fields/index.js.map +1 -0
- package/dist/reasoning/lattice/index.d.ts +165 -0
- package/dist/reasoning/lattice/index.d.ts.map +1 -0
- package/dist/reasoning/lattice/index.js +587 -0
- package/dist/reasoning/lattice/index.js.map +1 -0
- package/dist/reasoning/polynomial-ring/index.d.ts +30 -0
- package/dist/reasoning/polynomial-ring/index.d.ts.map +1 -0
- package/dist/reasoning/polynomial-ring/index.js +797 -0
- package/dist/reasoning/polynomial-ring/index.js.map +1 -0
- package/dist/tests/reasoning/datalog/datalog.test.d.ts +2 -0
- package/dist/tests/reasoning/datalog/datalog.test.d.ts.map +1 -0
- package/dist/tests/reasoning/datalog/datalog.test.js +333 -0
- package/dist/tests/reasoning/datalog/datalog.test.js.map +1 -0
- package/dist/tests/reasoning/galois-fields/galois-fields.test.d.ts +2 -0
- package/dist/tests/reasoning/galois-fields/galois-fields.test.d.ts.map +1 -0
- package/dist/tests/reasoning/galois-fields/galois-fields.test.js +226 -0
- package/dist/tests/reasoning/galois-fields/galois-fields.test.js.map +1 -0
- package/dist/tests/reasoning/lattice/lattice.test.d.ts +2 -0
- package/dist/tests/reasoning/lattice/lattice.test.d.ts.map +1 -0
- package/dist/tests/reasoning/lattice/lattice.test.js +238 -0
- package/dist/tests/reasoning/lattice/lattice.test.js.map +1 -0
- package/dist/tests/reasoning/polynomial-ring/polynomial-ring.test.d.ts +2 -0
- package/dist/tests/reasoning/polynomial-ring/polynomial-ring.test.d.ts.map +1 -0
- package/dist/tests/reasoning/polynomial-ring/polynomial-ring.test.js +230 -0
- package/dist/tests/reasoning/polynomial-ring/polynomial-ring.test.js.map +1 -0
- package/dist/tests/type-theory/lambda-cube/lambda-cube.test.d.ts +2 -0
- package/dist/tests/type-theory/lambda-cube/lambda-cube.test.d.ts.map +1 -0
- package/dist/tests/type-theory/lambda-cube/lambda-cube.test.js +266 -0
- package/dist/tests/type-theory/lambda-cube/lambda-cube.test.js.map +1 -0
- package/dist/type-theory/lambda-cube/erase.d.ts +26 -0
- package/dist/type-theory/lambda-cube/erase.d.ts.map +1 -0
- package/dist/type-theory/lambda-cube/erase.js +68 -0
- package/dist/type-theory/lambda-cube/erase.js.map +1 -0
- package/dist/type-theory/lambda-cube/examples.d.ts +59 -0
- package/dist/type-theory/lambda-cube/examples.d.ts.map +1 -0
- package/dist/type-theory/lambda-cube/examples.js +110 -0
- package/dist/type-theory/lambda-cube/examples.js.map +1 -0
- package/dist/type-theory/lambda-cube/index.d.ts +11 -0
- package/dist/type-theory/lambda-cube/index.d.ts.map +1 -0
- package/dist/type-theory/lambda-cube/index.js +64 -0
- package/dist/type-theory/lambda-cube/index.js.map +1 -0
- package/dist/type-theory/lambda-cube/normalize.d.ts +17 -0
- package/dist/type-theory/lambda-cube/normalize.d.ts.map +1 -0
- package/dist/type-theory/lambda-cube/normalize.js +134 -0
- package/dist/type-theory/lambda-cube/normalize.js.map +1 -0
- package/dist/type-theory/lambda-cube/rules.d.ts +26 -0
- package/dist/type-theory/lambda-cube/rules.d.ts.map +1 -0
- package/dist/type-theory/lambda-cube/rules.js +67 -0
- package/dist/type-theory/lambda-cube/rules.js.map +1 -0
- package/dist/type-theory/lambda-cube/typecheck.d.ts +20 -0
- package/dist/type-theory/lambda-cube/typecheck.d.ts.map +1 -0
- package/dist/type-theory/lambda-cube/typecheck.js +168 -0
- package/dist/type-theory/lambda-cube/typecheck.js.map +1 -0
- package/dist/type-theory/lambda-cube/types.d.ts +40 -0
- package/dist/type-theory/lambda-cube/types.d.ts.map +1 -0
- package/dist/type-theory/lambda-cube/types.js +192 -0
- package/dist/type-theory/lambda-cube/types.js.map +1 -0
- package/package.json +1 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"typecheck.d.ts","sourceRoot":"","sources":["../../../src/type-theory/lambda-cube/typecheck.ts"],"names":[],"mappings":"AAkCA,OAAO,EACL,KAAK,QAAQ,EACb,KAAK,WAAW,EAMjB,MAAM,SAAS,CAAC;AACjB,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAI1C,MAAM,MAAM,UAAU,GAAG;IAAE,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC;AAC3C,MAAM,MAAM,WAAW,GAAG,QAAQ,GAAG,UAAU,CAAC;AAEhD,wBAAgB,YAAY,CAAC,CAAC,EAAE,WAAW,GAAG,CAAC,IAAI,UAAU,CAE5D;AAWD;;;GAGG;AACH,wBAAgB,SAAS,CACvB,IAAI,EAAE,QAAQ,EACd,GAAG,GAAE,WAAuB,EAC5B,MAAM,GAAE,UAAuB,GAC9B,WAAW,CAoFb;AAED;;;GAGG;AACH,wBAAgB,SAAS,CACvB,IAAI,EAAE,QAAQ,EACd,QAAQ,EAAE,QAAQ,EAClB,GAAG,GAAE,WAAuB,EAC5B,MAAM,GAAE,UAAuB,GAC9B,OAAO,CAIT;AAED,0EAA0E;AAC1E,wBAAgB,aAAa,CAAC,IAAI,EAAE,QAAQ,EAAE,GAAG,EAAE,WAAW,GAAG,OAAO,CAKvE"}
|
|
@@ -0,0 +1,168 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// ============================================================
|
|
3
|
+
// Lambda Cube — Pure Type System type-checker
|
|
4
|
+
// ============================================================
|
|
5
|
+
//
|
|
6
|
+
// Algoritmo bidireccional uniforme para los 8 vértices del cubo. El
|
|
7
|
+
// sistema activo se pasa como parámetro y restringe qué Π / λ son
|
|
8
|
+
// legales mediante sus reglas de formación.
|
|
9
|
+
//
|
|
10
|
+
// Reglas PTS (versión cubo de Barendregt):
|
|
11
|
+
//
|
|
12
|
+
// AX: ⊢ * : ◻
|
|
13
|
+
// VAR: Γ, x:A ⊢ x : A (si A está bien formado)
|
|
14
|
+
// APP: Γ ⊢ f : (Π x:A. B)
|
|
15
|
+
// Γ ⊢ a : A
|
|
16
|
+
// ───────────────────
|
|
17
|
+
// Γ ⊢ f a : B[a/x]
|
|
18
|
+
//
|
|
19
|
+
// LAM: Γ, x:A ⊢ b : B
|
|
20
|
+
// Γ ⊢ (Π x:A. B) : s (well-formed)
|
|
21
|
+
// ───────────────────────────
|
|
22
|
+
// Γ ⊢ (λ x:A. b) : (Π x:A. B)
|
|
23
|
+
//
|
|
24
|
+
// PI: Γ ⊢ A : s1
|
|
25
|
+
// Γ, x:A ⊢ B : s2
|
|
26
|
+
// (s1, s2) ∈ R(system)
|
|
27
|
+
// ───────────────────────
|
|
28
|
+
// Γ ⊢ (Π x:A. B) : s2
|
|
29
|
+
//
|
|
30
|
+
// CONV: Γ ⊢ t : A, A =βη B, Γ ⊢ B : s
|
|
31
|
+
// ──────────────────────────────────
|
|
32
|
+
// Γ ⊢ t : B
|
|
33
|
+
//
|
|
34
|
+
// Sin η, sin universos jerárquicos.
|
|
35
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
+
exports.isInferError = isInferError;
|
|
37
|
+
exports.inferType = inferType;
|
|
38
|
+
exports.checkType = checkType;
|
|
39
|
+
exports.isClosedUnder = isClosedUnder;
|
|
40
|
+
const types_1 = require("./types");
|
|
41
|
+
const rules_1 = require("./rules");
|
|
42
|
+
const normalize_1 = require("./normalize");
|
|
43
|
+
function isInferError(r) {
|
|
44
|
+
return typeof r === 'object' && r !== null && 'error' in r && typeof r.error === 'string';
|
|
45
|
+
}
|
|
46
|
+
/** Whnf parcial: normaliza solo lo necesario para revelar el head. */
|
|
47
|
+
function whnf(term, system) {
|
|
48
|
+
return (0, normalize_1.normalize)(term, system);
|
|
49
|
+
}
|
|
50
|
+
function getSort(term) {
|
|
51
|
+
return term.kind === 'sort' ? term.sort : undefined;
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Infiere el tipo de `term` bajo `ctx` en el sistema dado. Devuelve
|
|
55
|
+
* el tipo, o `{ error }` si no es tipable.
|
|
56
|
+
*/
|
|
57
|
+
function inferType(term, ctx = new Map(), system = 'lambda-C') {
|
|
58
|
+
switch (term.kind) {
|
|
59
|
+
case 'sort': {
|
|
60
|
+
const axiom = (0, rules_1.axiomFor)(term.sort);
|
|
61
|
+
if (axiom === undefined) {
|
|
62
|
+
return { error: `sort '${term.sort}' no tiene axioma de tipado` };
|
|
63
|
+
}
|
|
64
|
+
return (0, types_1.cSort)(axiom);
|
|
65
|
+
}
|
|
66
|
+
case 'var': {
|
|
67
|
+
const t = ctx.get(term.name);
|
|
68
|
+
if (!t)
|
|
69
|
+
return { error: `variable libre sin tipo: ${term.name}` };
|
|
70
|
+
return t;
|
|
71
|
+
}
|
|
72
|
+
case 'pi': {
|
|
73
|
+
// (PI) Γ ⊢ A : s1 ; Γ, x:A ⊢ B : s2 ; (s1,s2) ∈ R
|
|
74
|
+
const domType = inferType(term.domain, ctx, system);
|
|
75
|
+
if (isInferError(domType))
|
|
76
|
+
return domType;
|
|
77
|
+
const s1 = getSort(whnf(domType, system));
|
|
78
|
+
if (!s1) {
|
|
79
|
+
return {
|
|
80
|
+
error: `dominio de Π debe ser un sort, pero ${(0, types_1.termToString)(term.domain)} : ${(0, types_1.termToString)(domType)}`,
|
|
81
|
+
};
|
|
82
|
+
}
|
|
83
|
+
const ctx2 = (0, types_1.extendContext)(ctx, term.bind, term.domain);
|
|
84
|
+
const codType = inferType(term.codomain, ctx2, system);
|
|
85
|
+
if (isInferError(codType))
|
|
86
|
+
return codType;
|
|
87
|
+
const s2 = getSort(whnf(codType, system));
|
|
88
|
+
if (!s2) {
|
|
89
|
+
return {
|
|
90
|
+
error: `codominio de Π debe ser un sort, pero ${(0, types_1.termToString)(term.codomain)} : ${(0, types_1.termToString)(codType)}`,
|
|
91
|
+
};
|
|
92
|
+
}
|
|
93
|
+
if (!(0, rules_1.hasRule)(system, s1, s2)) {
|
|
94
|
+
return {
|
|
95
|
+
error: `regla de formación (${s1}, ${s2}) no disponible en el sistema ${system}`,
|
|
96
|
+
};
|
|
97
|
+
}
|
|
98
|
+
return (0, types_1.cSort)(s2);
|
|
99
|
+
}
|
|
100
|
+
case 'lam': {
|
|
101
|
+
// (LAM) Γ, x:A ⊢ b : B ; Γ ⊢ Π x:A. B : s
|
|
102
|
+
const domType = inferType(term.domain, ctx, system);
|
|
103
|
+
if (isInferError(domType))
|
|
104
|
+
return domType;
|
|
105
|
+
const s1 = getSort(whnf(domType, system));
|
|
106
|
+
if (!s1) {
|
|
107
|
+
return {
|
|
108
|
+
error: `parámetro de λ debe tener un tipo (sort), pero ${(0, types_1.termToString)(term.domain)} : ${(0, types_1.termToString)(domType)}`,
|
|
109
|
+
};
|
|
110
|
+
}
|
|
111
|
+
const ctx2 = (0, types_1.extendContext)(ctx, term.bind, term.domain);
|
|
112
|
+
const bodyType = inferType(term.body, ctx2, system);
|
|
113
|
+
if (isInferError(bodyType))
|
|
114
|
+
return bodyType;
|
|
115
|
+
// El Π reconstruido debe ser bien-formado en el sistema activo.
|
|
116
|
+
const piType = {
|
|
117
|
+
kind: 'pi',
|
|
118
|
+
bind: term.bind,
|
|
119
|
+
domain: term.domain,
|
|
120
|
+
codomain: bodyType,
|
|
121
|
+
};
|
|
122
|
+
const piSort = inferType(piType, ctx, system);
|
|
123
|
+
if (isInferError(piSort))
|
|
124
|
+
return piSort;
|
|
125
|
+
return piType;
|
|
126
|
+
}
|
|
127
|
+
case 'app': {
|
|
128
|
+
// (APP) f : (Π x:A. B) ; a : A ⟹ f a : B[a/x]
|
|
129
|
+
const fnType = inferType(term.fn, ctx, system);
|
|
130
|
+
if (isInferError(fnType))
|
|
131
|
+
return fnType;
|
|
132
|
+
const fnWhnf = whnf(fnType, system);
|
|
133
|
+
if (fnWhnf.kind !== 'pi') {
|
|
134
|
+
return {
|
|
135
|
+
error: `aplicación requiere función Π, pero ${(0, types_1.termToString)(term.fn)} : ${(0, types_1.termToString)(fnType)}`,
|
|
136
|
+
};
|
|
137
|
+
}
|
|
138
|
+
const argType = inferType(term.arg, ctx, system);
|
|
139
|
+
if (isInferError(argType))
|
|
140
|
+
return argType;
|
|
141
|
+
if (!(0, normalize_1.alphaBetaEq)(argType, fnWhnf.domain, system)) {
|
|
142
|
+
return {
|
|
143
|
+
error: `argumento incompatible: esperaba ${(0, types_1.termToString)(fnWhnf.domain)}, recibió ${(0, types_1.termToString)(argType)}`,
|
|
144
|
+
};
|
|
145
|
+
}
|
|
146
|
+
return (0, normalize_1.substitute)(fnWhnf.codomain, fnWhnf.bind, term.arg);
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
/**
|
|
151
|
+
* Verifica que `term` tiene tipo `expected` bajo `ctx` en `system`.
|
|
152
|
+
* Igualdad de tipos: módulo α y β.
|
|
153
|
+
*/
|
|
154
|
+
function checkType(term, expected, ctx = new Map(), system = 'lambda-C') {
|
|
155
|
+
const actual = inferType(term, ctx, system);
|
|
156
|
+
if (isInferError(actual))
|
|
157
|
+
return false;
|
|
158
|
+
return (0, normalize_1.alphaBetaEq)(actual, expected, system);
|
|
159
|
+
}
|
|
160
|
+
/** ¿Las variables libres del término tienen todas un binding en `ctx`? */
|
|
161
|
+
function isClosedUnder(term, ctx) {
|
|
162
|
+
for (const fv of (0, types_1.freeVars)(term)) {
|
|
163
|
+
if (!ctx.has(fv))
|
|
164
|
+
return false;
|
|
165
|
+
}
|
|
166
|
+
return true;
|
|
167
|
+
}
|
|
168
|
+
//# sourceMappingURL=typecheck.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"typecheck.js","sourceRoot":"","sources":["../../../src/type-theory/lambda-cube/typecheck.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
export type Sort = '*' | '◻';
|
|
2
|
+
export type CubeSystem = 'lambda' | 'lambda2' | 'lambda-omega-bar' | 'lambda-omega' | 'lambda-P' | 'lambda-P2' | 'lambda-P-omega' | 'lambda-C';
|
|
3
|
+
export type CubeTerm = {
|
|
4
|
+
kind: 'var';
|
|
5
|
+
name: string;
|
|
6
|
+
} | {
|
|
7
|
+
kind: 'sort';
|
|
8
|
+
sort: Sort;
|
|
9
|
+
} | {
|
|
10
|
+
kind: 'pi';
|
|
11
|
+
bind: string;
|
|
12
|
+
domain: CubeTerm;
|
|
13
|
+
codomain: CubeTerm;
|
|
14
|
+
} | {
|
|
15
|
+
kind: 'lam';
|
|
16
|
+
bind: string;
|
|
17
|
+
domain: CubeTerm;
|
|
18
|
+
body: CubeTerm;
|
|
19
|
+
} | {
|
|
20
|
+
kind: 'app';
|
|
21
|
+
fn: CubeTerm;
|
|
22
|
+
arg: CubeTerm;
|
|
23
|
+
};
|
|
24
|
+
export declare const cVar: (name: string) => CubeTerm;
|
|
25
|
+
export declare const cSort: (sort: Sort) => CubeTerm;
|
|
26
|
+
export declare const cStar: CubeTerm;
|
|
27
|
+
export declare const cBox: CubeTerm;
|
|
28
|
+
export declare const cPi: (bind: string, domain: CubeTerm, codomain: CubeTerm) => CubeTerm;
|
|
29
|
+
export declare const cLam: (bind: string, domain: CubeTerm, body: CubeTerm) => CubeTerm;
|
|
30
|
+
export declare const cApp: (fn: CubeTerm, arg: CubeTerm) => CubeTerm;
|
|
31
|
+
/** Flecha no-dependiente: Π (_ : A). B, cuando B no menciona el binder. */
|
|
32
|
+
export declare const cArrow: (from: CubeTerm, to: CubeTerm) => CubeTerm;
|
|
33
|
+
export declare function occursFree(name: string, term: CubeTerm): boolean;
|
|
34
|
+
export declare function freeVars(term: CubeTerm, acc?: Set<string>): Set<string>;
|
|
35
|
+
export declare function termToString(t: CubeTerm): string;
|
|
36
|
+
export declare function alphaEq(a: CubeTerm, b: CubeTerm): boolean;
|
|
37
|
+
export type CubeContext = Map<string, CubeTerm>;
|
|
38
|
+
export declare function emptyContext(): CubeContext;
|
|
39
|
+
export declare function extendContext(ctx: CubeContext, name: string, type: CubeTerm): CubeContext;
|
|
40
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/type-theory/lambda-cube/types.ts"],"names":[],"mappings":"AAsCA,MAAM,MAAM,IAAI,GAAG,GAAG,GAAG,GAAG,CAAC;AAE7B,MAAM,MAAM,UAAU,GAClB,QAAQ,GACR,SAAS,GACT,kBAAkB,GAClB,cAAc,GACd,UAAU,GACV,WAAW,GACX,gBAAgB,GAChB,UAAU,CAAC;AAEf,MAAM,MAAM,QAAQ,GAChB;IAAE,IAAI,EAAE,KAAK,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAC7B;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,IAAI,CAAA;CAAE,GAC5B;IAAE,IAAI,EAAE,IAAI,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,QAAQ,CAAC;IAAC,QAAQ,EAAE,QAAQ,CAAA;CAAE,GAClE;IAAE,IAAI,EAAE,KAAK,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,QAAQ,CAAC;IAAC,IAAI,EAAE,QAAQ,CAAA;CAAE,GAC/D;IAAE,IAAI,EAAE,KAAK,CAAC;IAAC,EAAE,EAAE,QAAQ,CAAC;IAAC,GAAG,EAAE,QAAQ,CAAA;CAAE,CAAC;AAIjD,eAAO,MAAM,IAAI,GAAI,MAAM,MAAM,KAAG,QAAmC,CAAC;AACxE,eAAO,MAAM,KAAK,GAAI,MAAM,IAAI,KAAG,QAAoC,CAAC;AACxE,eAAO,MAAM,KAAK,EAAE,QAAsC,CAAC;AAC3D,eAAO,MAAM,IAAI,EAAE,QAAsC,CAAC;AAC1D,eAAO,MAAM,GAAG,GAAI,MAAM,MAAM,EAAE,QAAQ,QAAQ,EAAE,UAAU,QAAQ,KAAG,QAKvE,CAAC;AACH,eAAO,MAAM,IAAI,GAAI,MAAM,MAAM,EAAE,QAAQ,QAAQ,EAAE,MAAM,QAAQ,KAAG,QAKpE,CAAC;AACH,eAAO,MAAM,IAAI,GAAI,IAAI,QAAQ,EAAE,KAAK,QAAQ,KAAG,QAAsC,CAAC;AAE1F,2EAA2E;AAC3E,eAAO,MAAM,MAAM,GAAI,MAAM,QAAQ,EAAE,IAAI,QAAQ,KAAG,QAA8B,CAAC;AAIrF,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,GAAG,OAAO,CAgBhE;AAED,wBAAgB,QAAQ,CAAC,IAAI,EAAE,QAAQ,EAAE,GAAG,GAAE,GAAG,CAAC,MAAM,CAAa,GAAG,GAAG,CAAC,MAAM,CAAC,CAqBlF;AAID,wBAAgB,YAAY,CAAC,CAAC,EAAE,QAAQ,GAAG,MAAM,CA4BhD;AAID,wBAAgB,OAAO,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,QAAQ,GAAG,OAAO,CAEzD;AAiDD,MAAM,MAAM,WAAW,GAAG,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;AAEhD,wBAAgB,YAAY,IAAI,WAAW,CAE1C;AAED,wBAAgB,aAAa,CAAC,GAAG,EAAE,WAAW,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,GAAG,WAAW,CAIzF"}
|
|
@@ -0,0 +1,192 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// ============================================================
|
|
3
|
+
// Lambda Cube (Barendregt) — Términos como Pure Type System (PTS)
|
|
4
|
+
// ============================================================
|
|
5
|
+
//
|
|
6
|
+
// El cubo λ de Barendregt presenta 8 sistemas de tipos puros como
|
|
7
|
+
// activaciones de 3 ejes ortogonales sobre el λ-cálculo simplemente
|
|
8
|
+
// tipado:
|
|
9
|
+
//
|
|
10
|
+
// polymorphism ── ∀ sobre términos (λ2, λω, λC ...)
|
|
11
|
+
// type operators ── funciones a nivel tipo (λω, λC ...)
|
|
12
|
+
// dependent types ── tipos que dependen de términos (λP, λC ...)
|
|
13
|
+
//
|
|
14
|
+
// Cada combinación es un PTS con dos sorts:
|
|
15
|
+
//
|
|
16
|
+
// * (Set / Prop) y ◻ (Type / Kind)
|
|
17
|
+
//
|
|
18
|
+
// y un conjunto de reglas de formación (s1, s2) para Π.
|
|
19
|
+
//
|
|
20
|
+
// La sintaxis unificada usada en este módulo:
|
|
21
|
+
//
|
|
22
|
+
// t ::= x
|
|
23
|
+
// | s sort (* | ◻)
|
|
24
|
+
// | Π x:t. t producto dependiente
|
|
25
|
+
// | λ x:t. t abstracción
|
|
26
|
+
// | t t aplicación
|
|
27
|
+
//
|
|
28
|
+
// Las reglas de formación de cada vértice del cubo deciden qué
|
|
29
|
+
// abstracciones son legales. Por ejemplo:
|
|
30
|
+
//
|
|
31
|
+
// λ→ (*, *) STLC
|
|
32
|
+
// λ2 (*, *) (◻, *) System F
|
|
33
|
+
// λω̄ (*, *) (◻, ◻) λω débil
|
|
34
|
+
// λω (*, *) (◻, *) (◻, ◻) System Fω
|
|
35
|
+
// λP (*, *) (*, ◻) LF / λΠ
|
|
36
|
+
// λP2 (*, *) (◻, *) (*, ◻)
|
|
37
|
+
// λPω̄ (*, *) (*, ◻) (◻, ◻)
|
|
38
|
+
// λC (*, *) (◻, *) (*, ◻) (◻, ◻) Calculus of Constructions
|
|
39
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
40
|
+
exports.cArrow = exports.cApp = exports.cLam = exports.cPi = exports.cBox = exports.cStar = exports.cSort = exports.cVar = void 0;
|
|
41
|
+
exports.occursFree = occursFree;
|
|
42
|
+
exports.freeVars = freeVars;
|
|
43
|
+
exports.termToString = termToString;
|
|
44
|
+
exports.alphaEq = alphaEq;
|
|
45
|
+
exports.emptyContext = emptyContext;
|
|
46
|
+
exports.extendContext = extendContext;
|
|
47
|
+
// ---------- Constructores convenientes ----------
|
|
48
|
+
const cVar = (name) => ({ kind: 'var', name });
|
|
49
|
+
exports.cVar = cVar;
|
|
50
|
+
const cSort = (sort) => ({ kind: 'sort', sort });
|
|
51
|
+
exports.cSort = cSort;
|
|
52
|
+
exports.cStar = { kind: 'sort', sort: '*' };
|
|
53
|
+
exports.cBox = { kind: 'sort', sort: '◻' };
|
|
54
|
+
const cPi = (bind, domain, codomain) => ({
|
|
55
|
+
kind: 'pi',
|
|
56
|
+
bind,
|
|
57
|
+
domain,
|
|
58
|
+
codomain,
|
|
59
|
+
});
|
|
60
|
+
exports.cPi = cPi;
|
|
61
|
+
const cLam = (bind, domain, body) => ({
|
|
62
|
+
kind: 'lam',
|
|
63
|
+
bind,
|
|
64
|
+
domain,
|
|
65
|
+
body,
|
|
66
|
+
});
|
|
67
|
+
exports.cLam = cLam;
|
|
68
|
+
const cApp = (fn, arg) => ({ kind: 'app', fn, arg });
|
|
69
|
+
exports.cApp = cApp;
|
|
70
|
+
/** Flecha no-dependiente: Π (_ : A). B, cuando B no menciona el binder. */
|
|
71
|
+
const cArrow = (from, to) => (0, exports.cPi)('_', from, to);
|
|
72
|
+
exports.cArrow = cArrow;
|
|
73
|
+
// ---------- Variables libres ----------
|
|
74
|
+
function occursFree(name, term) {
|
|
75
|
+
switch (term.kind) {
|
|
76
|
+
case 'var':
|
|
77
|
+
return term.name === name;
|
|
78
|
+
case 'sort':
|
|
79
|
+
return false;
|
|
80
|
+
case 'pi':
|
|
81
|
+
case 'lam': {
|
|
82
|
+
if (occursFree(name, term.domain))
|
|
83
|
+
return true;
|
|
84
|
+
if (term.bind === name)
|
|
85
|
+
return false;
|
|
86
|
+
const body = term.kind === 'pi' ? term.codomain : term.body;
|
|
87
|
+
return occursFree(name, body);
|
|
88
|
+
}
|
|
89
|
+
case 'app':
|
|
90
|
+
return occursFree(name, term.fn) || occursFree(name, term.arg);
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
function freeVars(term, acc = new Set()) {
|
|
94
|
+
switch (term.kind) {
|
|
95
|
+
case 'var':
|
|
96
|
+
acc.add(term.name);
|
|
97
|
+
return acc;
|
|
98
|
+
case 'sort':
|
|
99
|
+
return acc;
|
|
100
|
+
case 'pi':
|
|
101
|
+
case 'lam': {
|
|
102
|
+
freeVars(term.domain, acc);
|
|
103
|
+
const body = term.kind === 'pi' ? term.codomain : term.body;
|
|
104
|
+
const inner = freeVars(body);
|
|
105
|
+
inner.delete(term.bind);
|
|
106
|
+
for (const v of inner)
|
|
107
|
+
acc.add(v);
|
|
108
|
+
return acc;
|
|
109
|
+
}
|
|
110
|
+
case 'app':
|
|
111
|
+
freeVars(term.fn, acc);
|
|
112
|
+
freeVars(term.arg, acc);
|
|
113
|
+
return acc;
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
// ---------- Serialización legible ----------
|
|
117
|
+
function termToString(t) {
|
|
118
|
+
switch (t.kind) {
|
|
119
|
+
case 'var':
|
|
120
|
+
return t.name;
|
|
121
|
+
case 'sort':
|
|
122
|
+
return t.sort;
|
|
123
|
+
case 'pi': {
|
|
124
|
+
if (t.bind === '_' || !occursFree(t.bind, t.codomain)) {
|
|
125
|
+
const lhs = t.domain.kind === 'pi' || t.domain.kind === 'lam'
|
|
126
|
+
? `(${termToString(t.domain)})`
|
|
127
|
+
: termToString(t.domain);
|
|
128
|
+
return `${lhs} → ${termToString(t.codomain)}`;
|
|
129
|
+
}
|
|
130
|
+
return `Π ${t.bind}:${termToString(t.domain)}. ${termToString(t.codomain)}`;
|
|
131
|
+
}
|
|
132
|
+
case 'lam':
|
|
133
|
+
return `λ ${t.bind}:${termToString(t.domain)}. ${termToString(t.body)}`;
|
|
134
|
+
case 'app': {
|
|
135
|
+
const fn = t.fn.kind === 'lam' || t.fn.kind === 'pi' ? `(${termToString(t.fn)})` : termToString(t.fn);
|
|
136
|
+
const arg = t.arg.kind === 'app' || t.arg.kind === 'lam' || t.arg.kind === 'pi'
|
|
137
|
+
? `(${termToString(t.arg)})`
|
|
138
|
+
: termToString(t.arg);
|
|
139
|
+
return `${fn} ${arg}`;
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
// ---------- α-equivalencia ----------
|
|
144
|
+
function alphaEq(a, b) {
|
|
145
|
+
return alphaEqEnv(a, b, new Map(), new Map(), { n: 0 });
|
|
146
|
+
}
|
|
147
|
+
function alphaEqEnv(a, b, envA, envB, counter) {
|
|
148
|
+
if (a.kind !== b.kind)
|
|
149
|
+
return false;
|
|
150
|
+
switch (a.kind) {
|
|
151
|
+
case 'var': {
|
|
152
|
+
const bb = b;
|
|
153
|
+
const ia = envA.get(a.name);
|
|
154
|
+
const ib = envB.get(bb.name);
|
|
155
|
+
if (ia === undefined && ib === undefined)
|
|
156
|
+
return a.name === bb.name;
|
|
157
|
+
return ia === ib;
|
|
158
|
+
}
|
|
159
|
+
case 'sort':
|
|
160
|
+
return a.sort === b.sort;
|
|
161
|
+
case 'pi':
|
|
162
|
+
case 'lam': {
|
|
163
|
+
const bb = b;
|
|
164
|
+
const aDom = a.domain;
|
|
165
|
+
const bDom = bb.domain;
|
|
166
|
+
if (!alphaEqEnv(aDom, bDom, envA, envB, counter))
|
|
167
|
+
return false;
|
|
168
|
+
const idx = counter.n++;
|
|
169
|
+
const newA = new Map(envA);
|
|
170
|
+
newA.set(a.bind, idx);
|
|
171
|
+
const newB = new Map(envB);
|
|
172
|
+
newB.set(bb.bind, idx);
|
|
173
|
+
const aBody = a.kind === 'pi' ? a.codomain : a.body;
|
|
174
|
+
const bBody = bb.kind === 'pi' ? bb.codomain : bb.body;
|
|
175
|
+
return alphaEqEnv(aBody, bBody, newA, newB, counter);
|
|
176
|
+
}
|
|
177
|
+
case 'app': {
|
|
178
|
+
const bb = b;
|
|
179
|
+
return (alphaEqEnv(a.fn, bb.fn, envA, envB, counter) &&
|
|
180
|
+
alphaEqEnv(a.arg, bb.arg, envA, envB, counter));
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
function emptyContext() {
|
|
185
|
+
return new Map();
|
|
186
|
+
}
|
|
187
|
+
function extendContext(ctx, name, type) {
|
|
188
|
+
const next = new Map(ctx);
|
|
189
|
+
next.set(name, type);
|
|
190
|
+
return next;
|
|
191
|
+
}
|
|
192
|
+
//# sourceMappingURL=types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/type-theory/lambda-cube/types.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@stevenvo780/st-lang",
|
|
3
|
-
"version": "4.
|
|
3
|
+
"version": "4.13.0",
|
|
4
4
|
"description": "ST — Lenguaje ejecutable con nucleo logico y capa textual. Motor multi-perfil (11 lógicas), derivaciones, tablas de verdad, contramodelos, aliases modales, Belnap 4-valores y capa textual para formalización de documentos.",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|