@stevenvo780/st-lang 4.9.0 → 4.11.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/logic/profiles/natural-deduction-nk/formula.d.ts +18 -0
- package/dist/logic/profiles/natural-deduction-nk/formula.d.ts.map +1 -0
- package/dist/logic/profiles/natural-deduction-nk/formula.js +102 -0
- package/dist/logic/profiles/natural-deduction-nk/formula.js.map +1 -0
- package/dist/logic/profiles/natural-deduction-nk/index.d.ts +5 -0
- package/dist/logic/profiles/natural-deduction-nk/index.d.ts.map +1 -0
- package/dist/logic/profiles/natural-deduction-nk/index.js +28 -0
- package/dist/logic/profiles/natural-deduction-nk/index.js.map +1 -0
- package/dist/logic/profiles/natural-deduction-nk/prover.d.ts +49 -0
- package/dist/logic/profiles/natural-deduction-nk/prover.d.ts.map +1 -0
- package/dist/logic/profiles/natural-deduction-nk/prover.js +557 -0
- package/dist/logic/profiles/natural-deduction-nk/prover.js.map +1 -0
- package/dist/logic/profiles/natural-deduction-nk/types.d.ts +48 -0
- package/dist/logic/profiles/natural-deduction-nk/types.d.ts.map +1 -0
- package/dist/logic/profiles/natural-deduction-nk/types.js +35 -0
- package/dist/logic/profiles/natural-deduction-nk/types.js.map +1 -0
- package/dist/proof-systems/distributed-exchange/index.d.ts +101 -0
- package/dist/proof-systems/distributed-exchange/index.d.ts.map +1 -0
- package/dist/proof-systems/distributed-exchange/index.js +408 -0
- package/dist/proof-systems/distributed-exchange/index.js.map +1 -0
- package/dist/reasoning/automata/dfa.d.ts +17 -0
- package/dist/reasoning/automata/dfa.d.ts.map +1 -0
- package/dist/reasoning/automata/dfa.js +276 -0
- package/dist/reasoning/automata/dfa.js.map +1 -0
- package/dist/reasoning/automata/index.d.ts +8 -0
- package/dist/reasoning/automata/index.d.ts.map +1 -0
- package/dist/reasoning/automata/index.js +64 -0
- package/dist/reasoning/automata/index.js.map +1 -0
- package/dist/reasoning/automata/languages.d.ts +10 -0
- package/dist/reasoning/automata/languages.d.ts.map +1 -0
- package/dist/reasoning/automata/languages.js +78 -0
- package/dist/reasoning/automata/languages.js.map +1 -0
- package/dist/reasoning/automata/nfa.d.ts +8 -0
- package/dist/reasoning/automata/nfa.d.ts.map +1 -0
- package/dist/reasoning/automata/nfa.js +122 -0
- package/dist/reasoning/automata/nfa.js.map +1 -0
- package/dist/reasoning/automata/pda.d.ts +10 -0
- package/dist/reasoning/automata/pda.d.ts.map +1 -0
- package/dist/reasoning/automata/pda.js +169 -0
- package/dist/reasoning/automata/pda.js.map +1 -0
- package/dist/reasoning/automata/regex.d.ts +6 -0
- package/dist/reasoning/automata/regex.d.ts.map +1 -0
- package/dist/reasoning/automata/regex.js +259 -0
- package/dist/reasoning/automata/regex.js.map +1 -0
- package/dist/reasoning/automata/types.d.ts +69 -0
- package/dist/reasoning/automata/types.d.ts.map +1 -0
- package/dist/reasoning/automata/types.js +29 -0
- package/dist/reasoning/automata/types.js.map +1 -0
- package/dist/reasoning/computability/index.d.ts +239 -0
- package/dist/reasoning/computability/index.d.ts.map +1 -0
- package/dist/reasoning/computability/index.js +851 -0
- package/dist/reasoning/computability/index.js.map +1 -0
- package/dist/reasoning/graph-theory/index.d.ts +63 -0
- package/dist/reasoning/graph-theory/index.d.ts.map +1 -0
- package/dist/reasoning/graph-theory/index.js +1043 -0
- package/dist/reasoning/graph-theory/index.js.map +1 -0
- package/dist/reasoning/group-presentation/cayley.d.ts +8 -0
- package/dist/reasoning/group-presentation/cayley.d.ts.map +1 -0
- package/dist/reasoning/group-presentation/cayley.js +38 -0
- package/dist/reasoning/group-presentation/cayley.js.map +1 -0
- package/dist/reasoning/group-presentation/index.d.ts +8 -0
- package/dist/reasoning/group-presentation/index.d.ts.map +1 -0
- package/dist/reasoning/group-presentation/index.js +36 -0
- package/dist/reasoning/group-presentation/index.js.map +1 -0
- package/dist/reasoning/group-presentation/standard-groups.d.ts +6 -0
- package/dist/reasoning/group-presentation/standard-groups.d.ts.map +1 -0
- package/dist/reasoning/group-presentation/standard-groups.js +93 -0
- package/dist/reasoning/group-presentation/standard-groups.js.map +1 -0
- package/dist/reasoning/group-presentation/todd-coxeter.d.ts +10 -0
- package/dist/reasoning/group-presentation/todd-coxeter.d.ts.map +1 -0
- package/dist/reasoning/group-presentation/todd-coxeter.js +362 -0
- package/dist/reasoning/group-presentation/todd-coxeter.js.map +1 -0
- package/dist/reasoning/group-presentation/types.d.ts +7 -0
- package/dist/reasoning/group-presentation/types.d.ts.map +1 -0
- package/dist/reasoning/group-presentation/types.js +22 -0
- package/dist/reasoning/group-presentation/types.js.map +1 -0
- package/dist/reasoning/group-presentation/words.d.ts +10 -0
- package/dist/reasoning/group-presentation/words.d.ts.map +1 -0
- package/dist/reasoning/group-presentation/words.js +109 -0
- package/dist/reasoning/group-presentation/words.js.map +1 -0
- package/dist/reasoning/number-theory/crt.d.ts +9 -0
- package/dist/reasoning/number-theory/crt.d.ts.map +1 -0
- package/dist/reasoning/number-theory/crt.js +39 -0
- package/dist/reasoning/number-theory/crt.js.map +1 -0
- package/dist/reasoning/number-theory/diophantine.d.ts +10 -0
- package/dist/reasoning/number-theory/diophantine.d.ts.map +1 -0
- package/dist/reasoning/number-theory/diophantine.js +87 -0
- package/dist/reasoning/number-theory/diophantine.js.map +1 -0
- package/dist/reasoning/number-theory/factorization.d.ts +12 -0
- package/dist/reasoning/number-theory/factorization.d.ts.map +1 -0
- package/dist/reasoning/number-theory/factorization.js +136 -0
- package/dist/reasoning/number-theory/factorization.js.map +1 -0
- package/dist/reasoning/number-theory/gcd.d.ts +8 -0
- package/dist/reasoning/number-theory/gcd.d.ts.map +1 -0
- package/dist/reasoning/number-theory/gcd.js +51 -0
- package/dist/reasoning/number-theory/gcd.js.map +1 -0
- package/dist/reasoning/number-theory/index.d.ts +9 -0
- package/dist/reasoning/number-theory/index.d.ts.map +1 -0
- package/dist/reasoning/number-theory/index.js +46 -0
- package/dist/reasoning/number-theory/index.js.map +1 -0
- package/dist/reasoning/number-theory/modular.d.ts +6 -0
- package/dist/reasoning/number-theory/modular.d.ts.map +1 -0
- package/dist/reasoning/number-theory/modular.js +75 -0
- package/dist/reasoning/number-theory/modular.js.map +1 -0
- package/dist/reasoning/number-theory/primality.d.ts +6 -0
- package/dist/reasoning/number-theory/primality.d.ts.map +1 -0
- package/dist/reasoning/number-theory/primality.js +144 -0
- package/dist/reasoning/number-theory/primality.js.map +1 -0
- package/dist/reasoning/number-theory/symbols.d.ts +3 -0
- package/dist/reasoning/number-theory/symbols.d.ts.map +1 -0
- package/dist/reasoning/number-theory/symbols.js +57 -0
- package/dist/reasoning/number-theory/symbols.js.map +1 -0
- package/dist/reasoning/real-analysis/index.d.ts +127 -0
- package/dist/reasoning/real-analysis/index.d.ts.map +1 -0
- package/dist/reasoning/real-analysis/index.js +638 -0
- package/dist/reasoning/real-analysis/index.js.map +1 -0
- package/dist/reasoning/topology/index.d.ts +41 -0
- package/dist/reasoning/topology/index.d.ts.map +1 -0
- package/dist/reasoning/topology/index.js +739 -0
- package/dist/reasoning/topology/index.js.map +1 -0
- package/dist/tests/logic/profiles/natural-deduction-nk/nk.test.d.ts +2 -0
- package/dist/tests/logic/profiles/natural-deduction-nk/nk.test.d.ts.map +1 -0
- package/dist/tests/logic/profiles/natural-deduction-nk/nk.test.js +288 -0
- package/dist/tests/logic/profiles/natural-deduction-nk/nk.test.js.map +1 -0
- package/dist/tests/proof-systems/distributed-exchange/distributed-exchange.test.d.ts +2 -0
- package/dist/tests/proof-systems/distributed-exchange/distributed-exchange.test.d.ts.map +1 -0
- package/dist/tests/proof-systems/distributed-exchange/distributed-exchange.test.js +328 -0
- package/dist/tests/proof-systems/distributed-exchange/distributed-exchange.test.js.map +1 -0
- package/dist/tests/reasoning/automata/automata.test.d.ts +2 -0
- package/dist/tests/reasoning/automata/automata.test.d.ts.map +1 -0
- package/dist/tests/reasoning/automata/automata.test.js +310 -0
- package/dist/tests/reasoning/automata/automata.test.js.map +1 -0
- package/dist/tests/reasoning/computability/computability.test.d.ts +2 -0
- package/dist/tests/reasoning/computability/computability.test.d.ts.map +1 -0
- package/dist/tests/reasoning/computability/computability.test.js +246 -0
- package/dist/tests/reasoning/computability/computability.test.js.map +1 -0
- package/dist/tests/reasoning/graph-theory/graph-theory.test.d.ts +2 -0
- package/dist/tests/reasoning/graph-theory/graph-theory.test.d.ts.map +1 -0
- package/dist/tests/reasoning/graph-theory/graph-theory.test.js +363 -0
- package/dist/tests/reasoning/graph-theory/graph-theory.test.js.map +1 -0
- package/dist/tests/reasoning/group-presentation/group-presentation.test.d.ts +2 -0
- package/dist/tests/reasoning/group-presentation/group-presentation.test.d.ts.map +1 -0
- package/dist/tests/reasoning/group-presentation/group-presentation.test.js +229 -0
- package/dist/tests/reasoning/group-presentation/group-presentation.test.js.map +1 -0
- package/dist/tests/reasoning/number-theory/number-theory.test.d.ts +2 -0
- package/dist/tests/reasoning/number-theory/number-theory.test.d.ts.map +1 -0
- package/dist/tests/reasoning/number-theory/number-theory.test.js +170 -0
- package/dist/tests/reasoning/number-theory/number-theory.test.js.map +1 -0
- package/dist/tests/reasoning/real-analysis/real-analysis.test.d.ts +2 -0
- package/dist/tests/reasoning/real-analysis/real-analysis.test.d.ts.map +1 -0
- package/dist/tests/reasoning/real-analysis/real-analysis.test.js +197 -0
- package/dist/tests/reasoning/real-analysis/real-analysis.test.js.map +1 -0
- package/dist/tests/reasoning/topology/topology.test.d.ts +2 -0
- package/dist/tests/reasoning/topology/topology.test.d.ts.map +1 -0
- package/dist/tests/reasoning/topology/topology.test.js +327 -0
- package/dist/tests/reasoning/topology/topology.test.js.map +1 -0
- package/dist/tests/tooling/exporters/coq-v2/coq-v2-exporter.test.d.ts +2 -0
- package/dist/tests/tooling/exporters/coq-v2/coq-v2-exporter.test.d.ts.map +1 -0
- package/dist/tests/tooling/exporters/coq-v2/coq-v2-exporter.test.js +411 -0
- package/dist/tests/tooling/exporters/coq-v2/coq-v2-exporter.test.js.map +1 -0
- package/dist/tests/tooling/exporters/lean4/lean4-exporter.test.d.ts +2 -0
- package/dist/tests/tooling/exporters/lean4/lean4-exporter.test.d.ts.map +1 -0
- package/dist/tests/tooling/exporters/lean4/lean4-exporter.test.js +473 -0
- package/dist/tests/tooling/exporters/lean4/lean4-exporter.test.js.map +1 -0
- package/dist/tests/tooling/lemma-library/lemma-library.test.d.ts +2 -0
- package/dist/tests/tooling/lemma-library/lemma-library.test.d.ts.map +1 -0
- package/dist/tests/tooling/lemma-library/lemma-library.test.js +197 -0
- package/dist/tests/tooling/lemma-library/lemma-library.test.js.map +1 -0
- package/dist/tests/tooling/provenance/ledger.test.d.ts +2 -0
- package/dist/tests/tooling/provenance/ledger.test.d.ts.map +1 -0
- package/dist/tests/tooling/provenance/ledger.test.js +545 -0
- package/dist/tests/tooling/provenance/ledger.test.js.map +1 -0
- package/dist/tooling/exporters/coq-v2/index.d.ts +68 -0
- package/dist/tooling/exporters/coq-v2/index.d.ts.map +1 -0
- package/dist/tooling/exporters/coq-v2/index.js +692 -0
- package/dist/tooling/exporters/coq-v2/index.js.map +1 -0
- package/dist/tooling/exporters/lean4/index.d.ts +47 -0
- package/dist/tooling/exporters/lean4/index.d.ts.map +1 -0
- package/dist/tooling/exporters/lean4/index.js +423 -0
- package/dist/tooling/exporters/lean4/index.js.map +1 -0
- package/dist/tooling/lemma-library/apply.d.ts +9 -0
- package/dist/tooling/lemma-library/apply.d.ts.map +1 -0
- package/dist/tooling/lemma-library/apply.js +94 -0
- package/dist/tooling/lemma-library/apply.js.map +1 -0
- package/dist/tooling/lemma-library/arithmetic.d.ts +3 -0
- package/dist/tooling/lemma-library/arithmetic.d.ts.map +1 -0
- package/dist/tooling/lemma-library/arithmetic.js +176 -0
- package/dist/tooling/lemma-library/arithmetic.js.map +1 -0
- package/dist/tooling/lemma-library/firstorder.d.ts +3 -0
- package/dist/tooling/lemma-library/firstorder.d.ts.map +1 -0
- package/dist/tooling/lemma-library/firstorder.js +136 -0
- package/dist/tooling/lemma-library/firstorder.js.map +1 -0
- package/dist/tooling/lemma-library/index.d.ts +13 -0
- package/dist/tooling/lemma-library/index.d.ts.map +1 -0
- package/dist/tooling/lemma-library/index.js +32 -0
- package/dist/tooling/lemma-library/index.js.map +1 -0
- package/dist/tooling/lemma-library/library.d.ts +34 -0
- package/dist/tooling/lemma-library/library.d.ts.map +1 -0
- package/dist/tooling/lemma-library/library.js +126 -0
- package/dist/tooling/lemma-library/library.js.map +1 -0
- package/dist/tooling/lemma-library/modal.d.ts +3 -0
- package/dist/tooling/lemma-library/modal.d.ts.map +1 -0
- package/dist/tooling/lemma-library/modal.js +138 -0
- package/dist/tooling/lemma-library/modal.js.map +1 -0
- package/dist/tooling/lemma-library/propositional.d.ts +3 -0
- package/dist/tooling/lemma-library/propositional.d.ts.map +1 -0
- package/dist/tooling/lemma-library/propositional.js +265 -0
- package/dist/tooling/lemma-library/propositional.js.map +1 -0
- package/dist/tooling/lemma-library/set-theory.d.ts +3 -0
- package/dist/tooling/lemma-library/set-theory.d.ts.map +1 -0
- package/dist/tooling/lemma-library/set-theory.js +134 -0
- package/dist/tooling/lemma-library/set-theory.js.map +1 -0
- package/dist/tooling/lemma-library/standard.d.ts +3 -0
- package/dist/tooling/lemma-library/standard.d.ts.map +1 -0
- package/dist/tooling/lemma-library/standard.js +27 -0
- package/dist/tooling/lemma-library/standard.js.map +1 -0
- package/dist/tooling/lemma-library/tfidf.d.ts +5 -0
- package/dist/tooling/lemma-library/tfidf.d.ts.map +1 -0
- package/dist/tooling/lemma-library/tfidf.js +100 -0
- package/dist/tooling/lemma-library/tfidf.js.map +1 -0
- package/dist/tooling/lemma-library/tokenize.d.ts +2 -0
- package/dist/tooling/lemma-library/tokenize.d.ts.map +1 -0
- package/dist/tooling/lemma-library/tokenize.js +74 -0
- package/dist/tooling/lemma-library/tokenize.js.map +1 -0
- package/dist/tooling/lemma-library/types.d.ts +53 -0
- package/dist/tooling/lemma-library/types.d.ts.map +1 -0
- package/dist/tooling/lemma-library/types.js +10 -0
- package/dist/tooling/lemma-library/types.js.map +1 -0
- package/dist/tooling/provenance/index.d.ts +3 -0
- package/dist/tooling/provenance/index.d.ts.map +1 -0
- package/dist/tooling/provenance/index.js +16 -0
- package/dist/tooling/provenance/index.js.map +1 -0
- package/dist/tooling/provenance/ledger.d.ts +89 -0
- package/dist/tooling/provenance/ledger.d.ts.map +1 -0
- package/dist/tooling/provenance/ledger.js +439 -0
- package/dist/tooling/provenance/ledger.js.map +1 -0
- package/dist/tooling/provenance/types.d.ts +70 -0
- package/dist/tooling/provenance/types.d.ts.map +1 -0
- package/dist/tooling/provenance/types.js +14 -0
- package/dist/tooling/provenance/types.js.map +1 -0
- package/package.json +1 -1
|
@@ -0,0 +1,439 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// ============================================================
|
|
3
|
+
// ST Provenance Ledger — DAG de teoremas/lemas/axiomas + auditoría
|
|
4
|
+
//
|
|
5
|
+
// Determinístico, in-memory. La identidad de un nodo se deriva de
|
|
6
|
+
// (statement, dependencies, kind) — el mismo enunciado con las
|
|
7
|
+
// mismas deps recibe siempre el mismo id, lo que permite usar el
|
|
8
|
+
// ledger como tabla de contenido compartible.
|
|
9
|
+
// ============================================================
|
|
10
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
11
|
+
exports.ProvenanceLedger = void 0;
|
|
12
|
+
exports.auditTheorem = auditTheorem;
|
|
13
|
+
exports.provenanceToCertificate = provenanceToCertificate;
|
|
14
|
+
const crypto_1 = require("crypto");
|
|
15
|
+
/**
|
|
16
|
+
* Normaliza el statement antes de hashear: trim + colapsar whitespace.
|
|
17
|
+
* Asegura que "P -> Q" y "P -> Q" produzcan el mismo id.
|
|
18
|
+
*/
|
|
19
|
+
function normalize(statement) {
|
|
20
|
+
return statement.trim().replace(/\s+/g, ' ');
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Calcula el id determinístico del nodo. Incluye kind para evitar
|
|
24
|
+
* colisiones entre, por ejemplo, una `definition` y un `axiom` con
|
|
25
|
+
* la misma cadena.
|
|
26
|
+
*/
|
|
27
|
+
function computeId(statement, kind, dependencies) {
|
|
28
|
+
const canonical = JSON.stringify({
|
|
29
|
+
statement: normalize(statement),
|
|
30
|
+
kind,
|
|
31
|
+
dependencies: [...dependencies].sort(),
|
|
32
|
+
});
|
|
33
|
+
return (0, crypto_1.createHash)('sha256').update(canonical).digest('hex').slice(0, 32);
|
|
34
|
+
}
|
|
35
|
+
class ProvenanceLedger {
|
|
36
|
+
nodes = new Map();
|
|
37
|
+
/**
|
|
38
|
+
* Añade un nodo al ledger. Devuelve el id determinístico.
|
|
39
|
+
*
|
|
40
|
+
* Si el id ya existe se preserva el nodo previo y se devuelve el
|
|
41
|
+
* mismo id (idempotente). Falla si una dependencia no existe.
|
|
42
|
+
*/
|
|
43
|
+
add(node) {
|
|
44
|
+
if (node.kind === 'axiom' && node.dependencies.length > 0) {
|
|
45
|
+
throw new Error(`axiom "${node.statement}" no puede tener dependencias`);
|
|
46
|
+
}
|
|
47
|
+
for (const dep of node.dependencies) {
|
|
48
|
+
if (!this.nodes.has(dep)) {
|
|
49
|
+
throw new Error(`dependencia inexistente: ${dep}`);
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
const id = computeId(node.statement, node.kind, node.dependencies);
|
|
53
|
+
if (this.nodes.has(id)) {
|
|
54
|
+
return id;
|
|
55
|
+
}
|
|
56
|
+
this.nodes.set(id, {
|
|
57
|
+
id,
|
|
58
|
+
statement: normalize(node.statement),
|
|
59
|
+
kind: node.kind,
|
|
60
|
+
dependencies: [...node.dependencies],
|
|
61
|
+
metadata: { ...node.metadata },
|
|
62
|
+
proof: node.proof,
|
|
63
|
+
trust: node.trust,
|
|
64
|
+
});
|
|
65
|
+
return id;
|
|
66
|
+
}
|
|
67
|
+
get(id) {
|
|
68
|
+
const n = this.nodes.get(id);
|
|
69
|
+
if (!n)
|
|
70
|
+
return undefined;
|
|
71
|
+
// Devolvemos copia defensiva para que el caller no mute el ledger.
|
|
72
|
+
return {
|
|
73
|
+
...n,
|
|
74
|
+
dependencies: [...n.dependencies],
|
|
75
|
+
metadata: { ...n.metadata },
|
|
76
|
+
};
|
|
77
|
+
}
|
|
78
|
+
// --- Auditoría --------------------------------------------------
|
|
79
|
+
/**
|
|
80
|
+
* Walk recursivo de dependencias. Devuelve los nodos en orden
|
|
81
|
+
* topológico (deps antes que el nodo). Cada nodo aparece una sola
|
|
82
|
+
* vez aunque sea alcanzado por múltiples caminos.
|
|
83
|
+
*/
|
|
84
|
+
dependencyChain(id) {
|
|
85
|
+
const root = this.nodes.get(id);
|
|
86
|
+
if (!root)
|
|
87
|
+
return [];
|
|
88
|
+
const visited = new Set();
|
|
89
|
+
const out = [];
|
|
90
|
+
const walk = (curr) => {
|
|
91
|
+
if (visited.has(curr))
|
|
92
|
+
return;
|
|
93
|
+
visited.add(curr);
|
|
94
|
+
const node = this.nodes.get(curr);
|
|
95
|
+
if (!node)
|
|
96
|
+
return;
|
|
97
|
+
for (const dep of node.dependencies)
|
|
98
|
+
walk(dep);
|
|
99
|
+
out.push({ ...node, dependencies: [...node.dependencies], metadata: { ...node.metadata } });
|
|
100
|
+
};
|
|
101
|
+
walk(id);
|
|
102
|
+
return out;
|
|
103
|
+
}
|
|
104
|
+
/**
|
|
105
|
+
* Cuenta trust por categoría sobre el cierre transitivo (incluye al root).
|
|
106
|
+
*/
|
|
107
|
+
trustChain(id) {
|
|
108
|
+
const chain = this.dependencyChain(id);
|
|
109
|
+
const acc = { verified: 0, admitted: 0, external: 0 };
|
|
110
|
+
for (const node of chain) {
|
|
111
|
+
acc[node.trust]++;
|
|
112
|
+
}
|
|
113
|
+
return acc;
|
|
114
|
+
}
|
|
115
|
+
/**
|
|
116
|
+
* Conjunto de IDs de axiomas alcanzables desde `id` (cierre).
|
|
117
|
+
* Útil para "¿qué postulados base sostienen este teorema?".
|
|
118
|
+
*/
|
|
119
|
+
axiomsUsed(id) {
|
|
120
|
+
const chain = this.dependencyChain(id);
|
|
121
|
+
const out = new Set();
|
|
122
|
+
for (const node of chain) {
|
|
123
|
+
if (node.kind === 'axiom')
|
|
124
|
+
out.add(node.id);
|
|
125
|
+
}
|
|
126
|
+
return out;
|
|
127
|
+
}
|
|
128
|
+
/**
|
|
129
|
+
* true sólo si todos los nodos del cierre transitivo (incluido el root)
|
|
130
|
+
* tienen trust='verified'. Un solo `admitted` o `external` lo descalifica.
|
|
131
|
+
*/
|
|
132
|
+
isFullyVerified(id) {
|
|
133
|
+
const chain = this.dependencyChain(id);
|
|
134
|
+
if (chain.length === 0)
|
|
135
|
+
return false;
|
|
136
|
+
return chain.every((n) => n.trust === 'verified');
|
|
137
|
+
}
|
|
138
|
+
// --- Queries de grafo -------------------------------------------
|
|
139
|
+
/** Cierre transitivo de ancestros (deps directas + indirectas), sin el propio nodo. */
|
|
140
|
+
ancestors(id) {
|
|
141
|
+
const out = new Set();
|
|
142
|
+
const root = this.nodes.get(id);
|
|
143
|
+
if (!root)
|
|
144
|
+
return out;
|
|
145
|
+
const walk = (curr) => {
|
|
146
|
+
const node = this.nodes.get(curr);
|
|
147
|
+
if (!node)
|
|
148
|
+
return;
|
|
149
|
+
for (const dep of node.dependencies) {
|
|
150
|
+
if (!out.has(dep)) {
|
|
151
|
+
out.add(dep);
|
|
152
|
+
walk(dep);
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
};
|
|
156
|
+
walk(id);
|
|
157
|
+
return out;
|
|
158
|
+
}
|
|
159
|
+
/** Cierre transitivo de descendientes (quien depende de este nodo), sin el propio nodo. */
|
|
160
|
+
descendants(id) {
|
|
161
|
+
const out = new Set();
|
|
162
|
+
if (!this.nodes.has(id))
|
|
163
|
+
return out;
|
|
164
|
+
let changed = true;
|
|
165
|
+
while (changed) {
|
|
166
|
+
changed = false;
|
|
167
|
+
for (const node of this.nodes.values()) {
|
|
168
|
+
if (out.has(node.id) || node.id === id)
|
|
169
|
+
continue;
|
|
170
|
+
for (const dep of node.dependencies) {
|
|
171
|
+
if (dep === id || out.has(dep)) {
|
|
172
|
+
out.add(node.id);
|
|
173
|
+
changed = true;
|
|
174
|
+
break;
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
return out;
|
|
180
|
+
}
|
|
181
|
+
/**
|
|
182
|
+
* Detecta ciclos. Devuelve la lista de ciclos como arrays de IDs.
|
|
183
|
+
*
|
|
184
|
+
* Bajo construcción normal `add()` impide ciclos (toda dep debe existir
|
|
185
|
+
* antes), pero la importación cruda de un ledger podría introducirlos
|
|
186
|
+
* — esta función lo verifica explícitamente.
|
|
187
|
+
*/
|
|
188
|
+
findCircular() {
|
|
189
|
+
const cycles = [];
|
|
190
|
+
const WHITE = 0, GRAY = 1, BLACK = 2;
|
|
191
|
+
const color = new Map();
|
|
192
|
+
const stack = [];
|
|
193
|
+
const dfs = (curr) => {
|
|
194
|
+
color.set(curr, GRAY);
|
|
195
|
+
stack.push(curr);
|
|
196
|
+
const node = this.nodes.get(curr);
|
|
197
|
+
if (node) {
|
|
198
|
+
for (const dep of node.dependencies) {
|
|
199
|
+
const c = color.get(dep) ?? WHITE;
|
|
200
|
+
if (c === GRAY) {
|
|
201
|
+
const idx = stack.indexOf(dep);
|
|
202
|
+
if (idx >= 0)
|
|
203
|
+
cycles.push(stack.slice(idx).concat(dep));
|
|
204
|
+
}
|
|
205
|
+
else if (c === WHITE) {
|
|
206
|
+
dfs(dep);
|
|
207
|
+
}
|
|
208
|
+
}
|
|
209
|
+
}
|
|
210
|
+
stack.pop();
|
|
211
|
+
color.set(curr, BLACK);
|
|
212
|
+
};
|
|
213
|
+
for (const id of this.nodes.keys()) {
|
|
214
|
+
if ((color.get(id) ?? WHITE) === WHITE)
|
|
215
|
+
dfs(id);
|
|
216
|
+
}
|
|
217
|
+
return cycles;
|
|
218
|
+
}
|
|
219
|
+
// --- Estadísticas -----------------------------------------------
|
|
220
|
+
totalNodes() {
|
|
221
|
+
return this.nodes.size;
|
|
222
|
+
}
|
|
223
|
+
axiomCount() {
|
|
224
|
+
let n = 0;
|
|
225
|
+
for (const node of this.nodes.values())
|
|
226
|
+
if (node.kind === 'axiom')
|
|
227
|
+
n++;
|
|
228
|
+
return n;
|
|
229
|
+
}
|
|
230
|
+
/** Longitud (en nodos) de la cadena más larga de dependencias. */
|
|
231
|
+
longestChain() {
|
|
232
|
+
const memo = new Map();
|
|
233
|
+
const depth = (curr) => {
|
|
234
|
+
const cached = memo.get(curr);
|
|
235
|
+
if (cached !== undefined)
|
|
236
|
+
return cached;
|
|
237
|
+
const node = this.nodes.get(curr);
|
|
238
|
+
if (!node || node.dependencies.length === 0) {
|
|
239
|
+
memo.set(curr, 1);
|
|
240
|
+
return 1;
|
|
241
|
+
}
|
|
242
|
+
let best = 0;
|
|
243
|
+
for (const dep of node.dependencies) {
|
|
244
|
+
const d = depth(dep);
|
|
245
|
+
if (d > best)
|
|
246
|
+
best = d;
|
|
247
|
+
}
|
|
248
|
+
const result = best + 1;
|
|
249
|
+
memo.set(curr, result);
|
|
250
|
+
return result;
|
|
251
|
+
};
|
|
252
|
+
let max = 0;
|
|
253
|
+
for (const id of this.nodes.keys()) {
|
|
254
|
+
const d = depth(id);
|
|
255
|
+
if (d > max)
|
|
256
|
+
max = d;
|
|
257
|
+
}
|
|
258
|
+
return max;
|
|
259
|
+
}
|
|
260
|
+
// --- Serialización ---------------------------------------------
|
|
261
|
+
/**
|
|
262
|
+
* Exporta el ledger a JSON determinístico (claves ordenadas, nodos
|
|
263
|
+
* ordenados por id). Apto para hashing y para diff.
|
|
264
|
+
*/
|
|
265
|
+
exportLedger() {
|
|
266
|
+
const ordered = Array.from(this.nodes.values()).sort((a, b) => (a.id < b.id ? -1 : 1));
|
|
267
|
+
const serializable = ordered.map((n) => ({
|
|
268
|
+
id: n.id,
|
|
269
|
+
statement: n.statement,
|
|
270
|
+
kind: n.kind,
|
|
271
|
+
dependencies: [...n.dependencies].sort(),
|
|
272
|
+
metadata: n.metadata,
|
|
273
|
+
proof: n.proof,
|
|
274
|
+
trust: n.trust,
|
|
275
|
+
}));
|
|
276
|
+
const payload = { version: '1.0', nodes: serializable };
|
|
277
|
+
return canonicalJson(payload);
|
|
278
|
+
}
|
|
279
|
+
/**
|
|
280
|
+
* Reemplaza el contenido del ledger por el contenido del JSON.
|
|
281
|
+
* Tolera reordenamiento de nodos: hace dos pasadas para resolver
|
|
282
|
+
* dependencias forward (en caso de que el JSON no esté topológicamente
|
|
283
|
+
* ordenado, aunque exportLedger siempre lo deja así).
|
|
284
|
+
*/
|
|
285
|
+
importLedger(json) {
|
|
286
|
+
const parsed = JSON.parse(json);
|
|
287
|
+
if (!parsed || parsed.version !== '1.0' || !Array.isArray(parsed.nodes)) {
|
|
288
|
+
throw new Error('formato de ledger inválido');
|
|
289
|
+
}
|
|
290
|
+
this.nodes.clear();
|
|
291
|
+
const pending = [...parsed.nodes];
|
|
292
|
+
let progress = true;
|
|
293
|
+
while (pending.length > 0 && progress) {
|
|
294
|
+
progress = false;
|
|
295
|
+
for (let i = pending.length - 1; i >= 0; i--) {
|
|
296
|
+
const node = pending[i];
|
|
297
|
+
if (!node)
|
|
298
|
+
continue;
|
|
299
|
+
if (node.dependencies.every((d) => this.nodes.has(d))) {
|
|
300
|
+
this.nodes.set(node.id, {
|
|
301
|
+
...node,
|
|
302
|
+
dependencies: [...node.dependencies],
|
|
303
|
+
metadata: { ...node.metadata },
|
|
304
|
+
});
|
|
305
|
+
pending.splice(i, 1);
|
|
306
|
+
progress = true;
|
|
307
|
+
}
|
|
308
|
+
}
|
|
309
|
+
}
|
|
310
|
+
if (pending.length > 0) {
|
|
311
|
+
// Restauramos los pendientes tal cual; las dependencias huérfanas o
|
|
312
|
+
// ciclos se detectarán con findCircular() o get() del consumidor.
|
|
313
|
+
for (const node of pending) {
|
|
314
|
+
this.nodes.set(node.id, {
|
|
315
|
+
...node,
|
|
316
|
+
dependencies: [...node.dependencies],
|
|
317
|
+
metadata: { ...node.metadata },
|
|
318
|
+
});
|
|
319
|
+
}
|
|
320
|
+
}
|
|
321
|
+
}
|
|
322
|
+
/**
|
|
323
|
+
* Hash SHA-256 del ledger canonicalizado. Si dos ledgers tienen el
|
|
324
|
+
* mismo hash, son idénticos en contenido. Devuelve Promise para
|
|
325
|
+
* dejar la puerta abierta a un hash async (WebCrypto) en runtime
|
|
326
|
+
* sin Node `crypto` — la implementación actual es síncrona.
|
|
327
|
+
*/
|
|
328
|
+
hashLedger() {
|
|
329
|
+
const canonical = this.exportLedger();
|
|
330
|
+
return Promise.resolve((0, crypto_1.createHash)('sha256').update(canonical).digest('hex'));
|
|
331
|
+
}
|
|
332
|
+
}
|
|
333
|
+
exports.ProvenanceLedger = ProvenanceLedger;
|
|
334
|
+
function canonicalJson(value) {
|
|
335
|
+
return stringify(value);
|
|
336
|
+
}
|
|
337
|
+
function stringify(value) {
|
|
338
|
+
if (value === null)
|
|
339
|
+
return 'null';
|
|
340
|
+
if (typeof value === 'boolean')
|
|
341
|
+
return value ? 'true' : 'false';
|
|
342
|
+
if (typeof value === 'number') {
|
|
343
|
+
if (!isFinite(value))
|
|
344
|
+
throw new Error('non-finite number in ledger');
|
|
345
|
+
return String(value);
|
|
346
|
+
}
|
|
347
|
+
if (typeof value === 'string')
|
|
348
|
+
return JSON.stringify(value);
|
|
349
|
+
if (Array.isArray(value))
|
|
350
|
+
return '[' + value.map(stringify).join(',') + ']';
|
|
351
|
+
if (typeof value === 'object') {
|
|
352
|
+
const obj = value;
|
|
353
|
+
const keys = Object.keys(obj).sort();
|
|
354
|
+
const pairs = [];
|
|
355
|
+
for (const k of keys) {
|
|
356
|
+
const v = obj[k];
|
|
357
|
+
if (v === undefined)
|
|
358
|
+
continue;
|
|
359
|
+
pairs.push(JSON.stringify(k) + ':' + stringify(v));
|
|
360
|
+
}
|
|
361
|
+
return '{' + pairs.join(',') + '}';
|
|
362
|
+
}
|
|
363
|
+
return 'null';
|
|
364
|
+
}
|
|
365
|
+
// --- auditoría a nivel de teorema -------------------------------
|
|
366
|
+
/**
|
|
367
|
+
* Genera un reporte humano-legible sobre la confianza en `theoremId`.
|
|
368
|
+
*
|
|
369
|
+
* Estimación de riesgo:
|
|
370
|
+
* - `low`: 100% verified.
|
|
371
|
+
* - `medium`: al menos 1 admitted o external pero <30% del DAG.
|
|
372
|
+
* - `high`: >=30% admitted+external, o un axioma fundamental marcado como external.
|
|
373
|
+
*/
|
|
374
|
+
function auditTheorem(theoremId, ledger) {
|
|
375
|
+
const root = ledger.get(theoremId);
|
|
376
|
+
if (!root) {
|
|
377
|
+
throw new Error(`teorema no encontrado en el ledger: ${theoremId}`);
|
|
378
|
+
}
|
|
379
|
+
const chain = ledger.dependencyChain(theoremId);
|
|
380
|
+
const trustClassification = ledger.trustChain(theoremId);
|
|
381
|
+
const externalDependencies = chain.filter((n) => n.trust === 'external');
|
|
382
|
+
const admittedDependencies = chain.filter((n) => n.trust === 'admitted');
|
|
383
|
+
const axiomList = ledger.axiomsUsed(theoremId);
|
|
384
|
+
const totalNodes = chain.length;
|
|
385
|
+
const unverified = trustClassification.admitted + trustClassification.external;
|
|
386
|
+
const ratio = totalNodes > 0 ? unverified / totalNodes : 0;
|
|
387
|
+
let estimatedRisk;
|
|
388
|
+
if (unverified === 0) {
|
|
389
|
+
estimatedRisk = 'low';
|
|
390
|
+
}
|
|
391
|
+
else if (ratio >= 0.3) {
|
|
392
|
+
estimatedRisk = 'high';
|
|
393
|
+
}
|
|
394
|
+
else {
|
|
395
|
+
// Si un axioma raíz es external/admitted la confianza es estructuralmente baja.
|
|
396
|
+
const hasUntrustedAxiom = chain.some((n) => n.kind === 'axiom' && (n.trust === 'external' || n.trust === 'admitted'));
|
|
397
|
+
estimatedRisk = hasUntrustedAxiom ? 'high' : 'medium';
|
|
398
|
+
}
|
|
399
|
+
return {
|
|
400
|
+
rootTheorem: root.statement,
|
|
401
|
+
trustClassification,
|
|
402
|
+
externalDependencies,
|
|
403
|
+
admittedDependencies,
|
|
404
|
+
axiomList,
|
|
405
|
+
totalNodes,
|
|
406
|
+
estimatedRisk,
|
|
407
|
+
};
|
|
408
|
+
}
|
|
409
|
+
// --- bridge con el formato `ProofCertificate` -------------------
|
|
410
|
+
/**
|
|
411
|
+
* Convierte un nodo + su cadena a una forma compatible con el
|
|
412
|
+
* certificado de prueba existente. No reemplaza al generador real:
|
|
413
|
+
* sirve para que el agente pueda exportar el contexto de proveniencia
|
|
414
|
+
* cuando publica un teorema.
|
|
415
|
+
*/
|
|
416
|
+
function provenanceToCertificate(node, ledger) {
|
|
417
|
+
const chain = ledger.dependencyChain(node.id);
|
|
418
|
+
return {
|
|
419
|
+
version: '1.0',
|
|
420
|
+
goal: node.statement,
|
|
421
|
+
profile: node.metadata.profile,
|
|
422
|
+
axioms: chain.filter((n) => n.kind === 'axiom').map((n) => n.statement),
|
|
423
|
+
provenance: {
|
|
424
|
+
kind: node.kind,
|
|
425
|
+
trust: node.trust,
|
|
426
|
+
provedBy: node.metadata.provedBy,
|
|
427
|
+
provedAt: node.metadata.provedAt,
|
|
428
|
+
tool: node.metadata.tool,
|
|
429
|
+
chainLength: chain.length,
|
|
430
|
+
dependencies: chain.map((n) => ({
|
|
431
|
+
id: n.id,
|
|
432
|
+
statement: n.statement,
|
|
433
|
+
kind: n.kind,
|
|
434
|
+
trust: n.trust,
|
|
435
|
+
})),
|
|
436
|
+
},
|
|
437
|
+
};
|
|
438
|
+
}
|
|
439
|
+
//# sourceMappingURL=ledger.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ledger.js","sourceRoot":"","sources":["../../../src/tooling/provenance/ledger.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Categoría del nodo dentro del DAG.
|
|
3
|
+
*
|
|
4
|
+
* - `axiom`: postulado base sin dependencias (puede tener proof=undefined).
|
|
5
|
+
* - `lemma`: resultado intermedio reusable.
|
|
6
|
+
* - `theorem`: resultado principal o expuesto al usuario.
|
|
7
|
+
* - `definition`: introduce una notación o constante (no es proposición).
|
|
8
|
+
*/
|
|
9
|
+
export type ProvenanceKind = 'axiom' | 'lemma' | 'theorem' | 'definition';
|
|
10
|
+
/**
|
|
11
|
+
* Nivel de confianza en el nodo:
|
|
12
|
+
* - `verified`: probado mecánicamente o aceptado por la audiencia del sistema.
|
|
13
|
+
* - `admitted`: declarado sin prueba (TODO, sorry, oracle). Se propaga como amarillo.
|
|
14
|
+
* - `external`: aceptado por referencia a otra herramienta (Lean, Coq, hardware oracle).
|
|
15
|
+
*/
|
|
16
|
+
export type TrustLevel = 'verified' | 'admitted' | 'external';
|
|
17
|
+
/**
|
|
18
|
+
* Metadata asociada a un nodo. Todo es serializable a JSON puro.
|
|
19
|
+
* `tool` permite distinguir prueba humana, táctica DSL automática
|
|
20
|
+
* o checker externo. `durationMs` y `proofSize` son opcionales y
|
|
21
|
+
* sirven para análisis posterior.
|
|
22
|
+
*/
|
|
23
|
+
export interface ProvenanceMetadata {
|
|
24
|
+
/** Timestamp ISO 8601 (string) de cuando se añadió el nodo. */
|
|
25
|
+
provedAt: string;
|
|
26
|
+
/** Identificador libre del autor (uid, "manual", "agent:claude-opus"...). */
|
|
27
|
+
provedBy: string;
|
|
28
|
+
/** Perfil lógico bajo el que se aceptó (p.ej. classical.propositional). */
|
|
29
|
+
profile: string;
|
|
30
|
+
/** Herramienta usada: 'manual', 'st-prover@4.10.0', 'lean4', 'coq', 'tactic-dsl', 'auto'. */
|
|
31
|
+
tool: string;
|
|
32
|
+
/** Duración opcional en milisegundos para reportes. */
|
|
33
|
+
durationMs?: number;
|
|
34
|
+
/** Tamaño opcional de la prueba (pasos / bytes / nodos AST). */
|
|
35
|
+
proofSize?: number;
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Nodo del DAG de proveniencia. El `id` es derivado determinísticamente
|
|
39
|
+
* del statement + dependencias (ver `ProvenanceLedger.add`) para que el
|
|
40
|
+
* mismo statement con las mismas deps reciba siempre el mismo identificador.
|
|
41
|
+
*/
|
|
42
|
+
export interface ProvenanceNode {
|
|
43
|
+
id: string;
|
|
44
|
+
statement: string;
|
|
45
|
+
kind: ProvenanceKind;
|
|
46
|
+
/** IDs de prerequisitos. Para `axiom` debe estar vacío. */
|
|
47
|
+
dependencies: string[];
|
|
48
|
+
metadata: ProvenanceMetadata;
|
|
49
|
+
/** Prueba opcional — el ledger no la inspecciona, sólo la guarda. */
|
|
50
|
+
proof?: unknown;
|
|
51
|
+
trust: TrustLevel;
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Reporte de auditoría: clasifica dependencias del teorema raíz y
|
|
55
|
+
* estima riesgo en función de cuánto del DAG es admitido o externo.
|
|
56
|
+
*/
|
|
57
|
+
export interface AuditReport {
|
|
58
|
+
rootTheorem: string;
|
|
59
|
+
trustClassification: {
|
|
60
|
+
verified: number;
|
|
61
|
+
admitted: number;
|
|
62
|
+
external: number;
|
|
63
|
+
};
|
|
64
|
+
externalDependencies: ProvenanceNode[];
|
|
65
|
+
admittedDependencies: ProvenanceNode[];
|
|
66
|
+
axiomList: Set<string>;
|
|
67
|
+
totalNodes: number;
|
|
68
|
+
estimatedRisk: 'low' | 'medium' | 'high';
|
|
69
|
+
}
|
|
70
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/tooling/provenance/types.ts"],"names":[],"mappings":"AAYA;;;;;;;GAOG;AACH,MAAM,MAAM,cAAc,GAAG,OAAO,GAAG,OAAO,GAAG,SAAS,GAAG,YAAY,CAAC;AAE1E;;;;;GAKG;AACH,MAAM,MAAM,UAAU,GAAG,UAAU,GAAG,UAAU,GAAG,UAAU,CAAC;AAE9D;;;;;GAKG;AACH,MAAM,WAAW,kBAAkB;IACjC,+DAA+D;IAC/D,QAAQ,EAAE,MAAM,CAAC;IACjB,6EAA6E;IAC7E,QAAQ,EAAE,MAAM,CAAC;IACjB,2EAA2E;IAC3E,OAAO,EAAE,MAAM,CAAC;IAChB,6FAA6F;IAC7F,IAAI,EAAE,MAAM,CAAC;IACb,uDAAuD;IACvD,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,gEAAgE;IAChE,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;;GAIG;AACH,MAAM,WAAW,cAAc;IAC7B,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,cAAc,CAAC;IACrB,2DAA2D;IAC3D,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,QAAQ,EAAE,kBAAkB,CAAC;IAC7B,qEAAqE;IACrE,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,KAAK,EAAE,UAAU,CAAC;CACnB;AAED;;;GAGG;AACH,MAAM,WAAW,WAAW;IAC1B,WAAW,EAAE,MAAM,CAAC;IACpB,mBAAmB,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAC;IAC9E,oBAAoB,EAAE,cAAc,EAAE,CAAC;IACvC,oBAAoB,EAAE,cAAc,EAAE,CAAC;IACvC,SAAS,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IACvB,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,EAAE,KAAK,GAAG,QAAQ,GAAG,MAAM,CAAC;CAC1C"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// ============================================================
|
|
3
|
+
// ST Provenance — Tipos públicos
|
|
4
|
+
//
|
|
5
|
+
// Cada nodo del DAG es un axioma, lema, definición o teorema con
|
|
6
|
+
// sus dependencias explícitas, metadata de proveniencia (quién /
|
|
7
|
+
// cuándo / con qué herramienta) y nivel de confianza.
|
|
8
|
+
//
|
|
9
|
+
// El ledger mantiene el grafo + permite auditorías recursivas:
|
|
10
|
+
// qué axiomas se usaron para llegar a un teorema, qué nodos son
|
|
11
|
+
// admitidos (sin prueba) o externos (de otra fuente).
|
|
12
|
+
// ============================================================
|
|
13
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
14
|
+
//# sourceMappingURL=types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/tooling/provenance/types.ts"],"names":[],"mappings":";AAAA,+DAA+D;AAC/D,iCAAiC;AACjC,EAAE;AACF,iEAAiE;AACjE,iEAAiE;AACjE,sDAAsD;AACtD,EAAE;AACF,+DAA+D;AAC/D,gEAAgE;AAChE,sDAAsD;AACtD,+DAA+D"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@stevenvo780/st-lang",
|
|
3
|
-
"version": "4.
|
|
3
|
+
"version": "4.11.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",
|