@stevenvo780/st-lang 4.9.0 → 4.10.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/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/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/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/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/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/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/package.json +1 -1
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
export declare const EPSILON: "\u03B5";
|
|
2
|
+
export type Symbol = string;
|
|
3
|
+
export interface DFA {
|
|
4
|
+
readonly states: Set<string>;
|
|
5
|
+
readonly alphabet: Set<Symbol>;
|
|
6
|
+
/** state → symbol → state. La función puede ser parcial: si falta una
|
|
7
|
+
* arista para (state, symbol), la palabra es rechazada. */
|
|
8
|
+
readonly transitions: Map<string, Map<Symbol, string>>;
|
|
9
|
+
readonly initial: string;
|
|
10
|
+
readonly accept: Set<string>;
|
|
11
|
+
}
|
|
12
|
+
export interface NFA {
|
|
13
|
+
readonly states: Set<string>;
|
|
14
|
+
readonly alphabet: Set<Symbol>;
|
|
15
|
+
/** state → symbol (puede ser EPSILON) → P(states). */
|
|
16
|
+
readonly transitions: Map<string, Map<Symbol, Set<string>>>;
|
|
17
|
+
readonly initial: string;
|
|
18
|
+
readonly accept: Set<string>;
|
|
19
|
+
/** Símbolo usado como ε; default `EPSILON` ('ε'). */
|
|
20
|
+
readonly epsilon?: Symbol;
|
|
21
|
+
}
|
|
22
|
+
export type Regex = {
|
|
23
|
+
kind: 'empty';
|
|
24
|
+
} | {
|
|
25
|
+
kind: 'epsilon';
|
|
26
|
+
} | {
|
|
27
|
+
kind: 'char';
|
|
28
|
+
c: Symbol;
|
|
29
|
+
} | {
|
|
30
|
+
kind: 'concat';
|
|
31
|
+
left: Regex;
|
|
32
|
+
right: Regex;
|
|
33
|
+
} | {
|
|
34
|
+
kind: 'union';
|
|
35
|
+
left: Regex;
|
|
36
|
+
right: Regex;
|
|
37
|
+
} | {
|
|
38
|
+
kind: 'star';
|
|
39
|
+
arg: Regex;
|
|
40
|
+
} | {
|
|
41
|
+
kind: 'plus';
|
|
42
|
+
arg: Regex;
|
|
43
|
+
} | {
|
|
44
|
+
kind: 'optional';
|
|
45
|
+
arg: Regex;
|
|
46
|
+
};
|
|
47
|
+
export interface PDATransition {
|
|
48
|
+
/** Estado origen. */
|
|
49
|
+
readonly state: string;
|
|
50
|
+
/** Símbolo de entrada a consumir; EPSILON = sin consumir. */
|
|
51
|
+
readonly read: Symbol;
|
|
52
|
+
/** Tope de pila a desapilar; EPSILON = sin pop. */
|
|
53
|
+
readonly popTop: Symbol;
|
|
54
|
+
/** Estado destino. */
|
|
55
|
+
readonly nextState: string;
|
|
56
|
+
/** Símbolos a apilar (el último queda en la cima). [] = no push. */
|
|
57
|
+
readonly pushTop: ReadonlyArray<Symbol>;
|
|
58
|
+
}
|
|
59
|
+
export interface PDA {
|
|
60
|
+
readonly states: Set<string>;
|
|
61
|
+
readonly alphabet: Set<Symbol>;
|
|
62
|
+
readonly stackAlphabet: Set<Symbol>;
|
|
63
|
+
readonly transitions: ReadonlyArray<PDATransition>;
|
|
64
|
+
readonly initial: string;
|
|
65
|
+
readonly initialStack: Symbol;
|
|
66
|
+
/** Aceptación por estado final. */
|
|
67
|
+
readonly accept: Set<string>;
|
|
68
|
+
}
|
|
69
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/reasoning/automata/types.ts"],"names":[],"mappings":"AAyBA,eAAO,MAAM,OAAO,EAAG,QAAY,CAAC;AAEpC,MAAM,MAAM,MAAM,GAAG,MAAM,CAAC;AAI5B,MAAM,WAAW,GAAG;IAClB,QAAQ,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IAC7B,QAAQ,CAAC,QAAQ,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IAC/B;gEAC4D;IAC5D,QAAQ,CAAC,WAAW,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IACvD,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;CAC9B;AAID,MAAM,WAAW,GAAG;IAClB,QAAQ,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IAC7B,QAAQ,CAAC,QAAQ,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IAC/B,sDAAsD;IACtD,QAAQ,CAAC,WAAW,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IAC5D,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IAC7B,qDAAqD;IACrD,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;CAC3B;AAID,MAAM,MAAM,KAAK,GACb;IAAE,IAAI,EAAE,OAAO,CAAA;CAAE,GACjB;IAAE,IAAI,EAAE,SAAS,CAAA;CAAE,GACnB;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAA;CAAE,GAC3B;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,IAAI,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,KAAK,CAAA;CAAE,GAC7C;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,IAAI,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,KAAK,CAAA;CAAE,GAC5C;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,KAAK,CAAA;CAAE,GAC5B;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,KAAK,CAAA;CAAE,GAC5B;IAAE,IAAI,EAAE,UAAU,CAAC;IAAC,GAAG,EAAE,KAAK,CAAA;CAAE,CAAC;AAIrC,MAAM,WAAW,aAAa;IAC5B,qBAAqB;IACrB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,6DAA6D;IAC7D,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,mDAAmD;IACnD,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,sBAAsB;IACtB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,oEAAoE;IACpE,QAAQ,CAAC,OAAO,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;CACzC;AAED,MAAM,WAAW,GAAG;IAClB,QAAQ,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IAC7B,QAAQ,CAAC,QAAQ,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IAC/B,QAAQ,CAAC,aAAa,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IACpC,QAAQ,CAAC,WAAW,EAAE,aAAa,CAAC,aAAa,CAAC,CAAC;IACnD,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,mCAAmC;IACnC,QAAQ,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;CAC9B"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// ============================================================
|
|
3
|
+
// ST Automata — Tipos
|
|
4
|
+
// ============================================================
|
|
5
|
+
//
|
|
6
|
+
// Modelado clásico de autómatas finitos y de pila:
|
|
7
|
+
//
|
|
8
|
+
// DFA (Deterministic Finite Automaton)
|
|
9
|
+
// · Transición total: state × symbol → state.
|
|
10
|
+
// · Acepta una palabra sii el camino termina en estado final.
|
|
11
|
+
//
|
|
12
|
+
// NFA (Nondeterministic Finite Automaton, con ε-transiciones)
|
|
13
|
+
// · Transición: state × (symbol ∪ {ε}) → P(states).
|
|
14
|
+
// · Acepta sii existe un camino que termina en final.
|
|
15
|
+
//
|
|
16
|
+
// PDA (Pushdown Automaton) — variante "by final state"
|
|
17
|
+
// · Transición: (state, read, popTop) → (nextState, pushTop[]).
|
|
18
|
+
// · `read` o `popTop` pueden ser ε (sin consumir / sin tope).
|
|
19
|
+
// · pushTop se apila en orden inverso (último → top).
|
|
20
|
+
//
|
|
21
|
+
// Notas:
|
|
22
|
+
// • Los símbolos son strings de longitud 1 (chars). El alfabeto
|
|
23
|
+
// se mantiene explícito porque define complement(M).
|
|
24
|
+
// • La constante EPSILON ('ε') vive aquí para reutilizarse.
|
|
25
|
+
// ============================================================
|
|
26
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
27
|
+
exports.EPSILON = void 0;
|
|
28
|
+
exports.EPSILON = 'ε';
|
|
29
|
+
//# sourceMappingURL=types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/reasoning/automata/types.ts"],"names":[],"mappings":";AAAA,+DAA+D;AAC/D,sBAAsB;AACtB,+DAA+D;AAC/D,EAAE;AACF,mDAAmD;AACnD,EAAE;AACF,yCAAyC;AACzC,kDAAkD;AAClD,kEAAkE;AAClE,EAAE;AACF,gEAAgE;AAChE,wDAAwD;AACxD,0DAA0D;AAC1D,EAAE;AACF,yDAAyD;AACzD,oEAAoE;AACpE,kEAAkE;AAClE,0DAA0D;AAC1D,EAAE;AACF,SAAS;AACT,kEAAkE;AAClE,yDAAyD;AACzD,8DAA8D;AAC9D,+DAA+D;;;AAElD,QAAA,OAAO,GAAG,GAAY,CAAC"}
|
|
@@ -0,0 +1,239 @@
|
|
|
1
|
+
export type TMState = string;
|
|
2
|
+
export type TMSymbol = string;
|
|
3
|
+
export type Direction = 'L' | 'R' | 'S';
|
|
4
|
+
export interface TMTransition {
|
|
5
|
+
readonly fromState: TMState;
|
|
6
|
+
readonly readSymbol: TMSymbol;
|
|
7
|
+
readonly toState: TMState;
|
|
8
|
+
readonly writeSymbol: TMSymbol;
|
|
9
|
+
readonly direction: Direction;
|
|
10
|
+
}
|
|
11
|
+
export interface TuringMachine {
|
|
12
|
+
readonly states: Set<TMState>;
|
|
13
|
+
readonly alphabet: Set<TMSymbol>;
|
|
14
|
+
readonly tapeAlphabet: Set<TMSymbol>;
|
|
15
|
+
readonly transitions: TMTransition[];
|
|
16
|
+
readonly initialState: TMState;
|
|
17
|
+
readonly acceptStates: Set<TMState>;
|
|
18
|
+
readonly rejectStates?: Set<TMState>;
|
|
19
|
+
readonly blank: TMSymbol;
|
|
20
|
+
}
|
|
21
|
+
export interface TMConfig {
|
|
22
|
+
readonly state: TMState;
|
|
23
|
+
readonly tape: TMSymbol[];
|
|
24
|
+
readonly head: number;
|
|
25
|
+
readonly step: number;
|
|
26
|
+
}
|
|
27
|
+
export type StepResult = TMConfig | 'halted-accept' | 'halted-reject' | 'no-transition';
|
|
28
|
+
/**
|
|
29
|
+
* Inicializa una configuración a partir de la entrada. La cinta arranca
|
|
30
|
+
* con los símbolos de `input`, cabeza en 0. Si la entrada es vacía la
|
|
31
|
+
* cinta arranca con un blank.
|
|
32
|
+
*/
|
|
33
|
+
export declare function initialConfig(M: TuringMachine, input: string): TMConfig;
|
|
34
|
+
/**
|
|
35
|
+
* Un paso de la TM. Devuelve la próxima configuración o un terminal.
|
|
36
|
+
* • Si el estado actual ya es de aceptación → 'halted-accept'.
|
|
37
|
+
* • Si es de rechazo → 'halted-reject'.
|
|
38
|
+
* • Si no hay transición desde (state, leído) → 'no-transition'.
|
|
39
|
+
*/
|
|
40
|
+
export declare function step(M: TuringMachine, config: TMConfig): StepResult;
|
|
41
|
+
export interface RunResult {
|
|
42
|
+
readonly result: 'accept' | 'reject' | 'timeout' | 'no-transition';
|
|
43
|
+
readonly steps: number;
|
|
44
|
+
readonly finalConfig: TMConfig;
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Corre la TM hasta aceptar, rechazar, agotarse o quedar sin transición.
|
|
48
|
+
* `maxSteps` defaultea a 10_000.
|
|
49
|
+
*/
|
|
50
|
+
export declare function run(M: TuringMachine, input: string, maxSteps?: number): RunResult;
|
|
51
|
+
/**
|
|
52
|
+
* Lista todas las configuraciones generadas, hasta `maxSteps`.
|
|
53
|
+
* Incluye la configuración inicial. No incluye un sentinel para terminal.
|
|
54
|
+
*/
|
|
55
|
+
export declare function trace(M: TuringMachine, input: string, maxSteps: number): TMConfig[];
|
|
56
|
+
/**
|
|
57
|
+
* Lectura útil de la cinta: la subcadena no-blank más larga centrada en
|
|
58
|
+
* la región explorada. Sirve para validar máquinas que escriben output
|
|
59
|
+
* en la cinta (binary increment, reverse, copy, etc.).
|
|
60
|
+
*/
|
|
61
|
+
export declare function readTape(M: TuringMachine, config: TMConfig): string;
|
|
62
|
+
/**
|
|
63
|
+
* Halting acotado: ¿la TM para en ≤ `maxSteps` pasos?
|
|
64
|
+
* • `true` si para por aceptación, rechazo o falta de transición.
|
|
65
|
+
* • `false` técnicamente nunca se devuelve aquí — para devolver
|
|
66
|
+
* `false` con certeza haría falta resolver el halting problem, que
|
|
67
|
+
* es indecidible. Cuando agotamos el budget devolvemos `'unknown'`.
|
|
68
|
+
* Esta función es semi-decidible: reconoce las máquinas que paran,
|
|
69
|
+
* pero no decide el lenguaje complemento (las que no paran).
|
|
70
|
+
*/
|
|
71
|
+
export declare function boundedHalts(M: TuringMachine, input: string, maxSteps: number): boolean | 'unknown';
|
|
72
|
+
/**
|
|
73
|
+
* Incrementa un número binario (MSB first) en la cinta.
|
|
74
|
+
* Algoritmo: ir al final, retroceder convirtiendo 1→0 mientras haya
|
|
75
|
+
* acarreo; al primer 0 escribir 1 y aceptar. Si todo era 1, escribir
|
|
76
|
+
* 1 al borde izquierdo y aceptar.
|
|
77
|
+
*/
|
|
78
|
+
export declare function tmBinaryIncrement(): TuringMachine;
|
|
79
|
+
/**
|
|
80
|
+
* Acepta sii la cantidad de 1s en la entrada (sobre alfabeto {1}) es par.
|
|
81
|
+
* Estados q0 = par hasta ahora, q1 = impar.
|
|
82
|
+
*/
|
|
83
|
+
export declare function tmUnaryParity(): TuringMachine;
|
|
84
|
+
/**
|
|
85
|
+
* Revierte una cadena sobre {a, b}. Algoritmo:
|
|
86
|
+
* 1. Marcar inicio (Sa, Sb) con un símbolo distintivo.
|
|
87
|
+
* 2. Encontrar el final y desplazar el símbolo del frente al fondo.
|
|
88
|
+
* 3. Repetir hasta agotar.
|
|
89
|
+
* Output: la cinta termina con el reverso de la entrada original.
|
|
90
|
+
*
|
|
91
|
+
* Implementación con cinta auxiliar a la derecha (más simple):
|
|
92
|
+
* Caminar a la derecha mientras se copian símbolos en orden inverso
|
|
93
|
+
* tras un separador. Al terminar borrar la entrada original.
|
|
94
|
+
*
|
|
95
|
+
* Para evitar complicaciones, esta versión usa una técnica de
|
|
96
|
+
* "shift left after marking": tras leer un símbolo, lo borra y lo
|
|
97
|
+
* reescribe al final del bloque restante.
|
|
98
|
+
*
|
|
99
|
+
* Nota: este algoritmo es O(n²) en pasos pero correcto.
|
|
100
|
+
*/
|
|
101
|
+
export declare function tmReverseString(): TuringMachine;
|
|
102
|
+
/**
|
|
103
|
+
* Copia w → w#w sobre {a, b}. El '#' se inserta automáticamente y la
|
|
104
|
+
* copia queda a la derecha. Algoritmo análogo a reverse pero copiando
|
|
105
|
+
* en orden directo (marcamos cada símbolo procesado con mayúscula).
|
|
106
|
+
*/
|
|
107
|
+
export declare function tmCopy(): TuringMachine;
|
|
108
|
+
/**
|
|
109
|
+
* Suma con `a` en binario y `b` en unario, formato "<a>+<b>" donde
|
|
110
|
+
* a ∈ {0,1}* (MSB-first), b ∈ {1}*.
|
|
111
|
+
*
|
|
112
|
+
* Mantener `b` unario evita la coreografía de decremento binario (que
|
|
113
|
+
* agrega ~10 estados sin enseñar nada nuevo) y muestra claramente la
|
|
114
|
+
* técnica de "incrementar `a` una vez por cada token de `b`".
|
|
115
|
+
*
|
|
116
|
+
* Algoritmo:
|
|
117
|
+
* 1. Ir al final.
|
|
118
|
+
* 2. Si la última posición es '1' (un token de b), borrarlo y entrar
|
|
119
|
+
* en `incA`: incrementar `a` y luego volver al final.
|
|
120
|
+
* 3. Si la última posición es '+' (b vacío), borrarlo: la cinta queda
|
|
121
|
+
* con sólo `a` (el resultado).
|
|
122
|
+
*/
|
|
123
|
+
export declare function tmAddBinary(): TuringMachine;
|
|
124
|
+
export type PRFn = {
|
|
125
|
+
kind: 'zero';
|
|
126
|
+
} | {
|
|
127
|
+
kind: 'succ';
|
|
128
|
+
} | {
|
|
129
|
+
kind: 'proj';
|
|
130
|
+
n: number;
|
|
131
|
+
i: number;
|
|
132
|
+
} | {
|
|
133
|
+
kind: 'comp';
|
|
134
|
+
outer: PRFn;
|
|
135
|
+
inner: PRFn[];
|
|
136
|
+
} | {
|
|
137
|
+
kind: 'rec';
|
|
138
|
+
base: PRFn;
|
|
139
|
+
step: PRFn;
|
|
140
|
+
};
|
|
141
|
+
/**
|
|
142
|
+
* Semántica de PRF:
|
|
143
|
+
* • zero() = 0
|
|
144
|
+
* • succ(x) = x + 1
|
|
145
|
+
* • U^n_i(x1..xn) = x_i
|
|
146
|
+
* • comp(h, g1..gk)(x1..xn) = h(g1(x1..xn), ..., gk(x1..xn))
|
|
147
|
+
* • rec(base, step):
|
|
148
|
+
* f(0, x1..xn) = base(x1..xn)
|
|
149
|
+
* f(y+1, x1..xn) = step(y, f(y, x1..xn), x1..xn)
|
|
150
|
+
*
|
|
151
|
+
* El argumento "iterado" es el primero (convención común). `args[0]` es
|
|
152
|
+
* el contador en `rec`.
|
|
153
|
+
*/
|
|
154
|
+
export declare function evalPR(f: PRFn, args: number[]): number;
|
|
155
|
+
/**
|
|
156
|
+
* Suma: add(0, y) = y, add(x+1, y) = succ(add(x, y))
|
|
157
|
+
* base = U^1_1 (identidad en y)
|
|
158
|
+
* step = succ ∘ U^3_2 (toma f(x,y) y le aplica succ)
|
|
159
|
+
*
|
|
160
|
+
* En nuestra convención args[0] es el contador → add(x, y).
|
|
161
|
+
*/
|
|
162
|
+
export declare const PR_ADD: PRFn;
|
|
163
|
+
/**
|
|
164
|
+
* Multiplicación: mul(0, y) = 0, mul(x+1, y) = add(mul(x,y), y)
|
|
165
|
+
* base = zero (después de proyectar y fuera)
|
|
166
|
+
* step = add(f(x,y), y)
|
|
167
|
+
*
|
|
168
|
+
* base: el caso 0 → 0. Es la función constante 0 sobre 1 argumento:
|
|
169
|
+
* const0(y) = zero ∘ U^1_1, pero zero ignora sus argumentos.
|
|
170
|
+
* En este eval, zero retorna 0 sin importar args.
|
|
171
|
+
*/
|
|
172
|
+
export declare const PR_MUL: PRFn;
|
|
173
|
+
export declare const PR_POW: PRFn;
|
|
174
|
+
/**
|
|
175
|
+
* Predecesor: pred(0) = 0, pred(x+1) = x.
|
|
176
|
+
* rec con base = zero, step = U^2_1 (devuelve y, el contador previo).
|
|
177
|
+
*/
|
|
178
|
+
export declare const PR_PREDECESSOR: PRFn;
|
|
179
|
+
/**
|
|
180
|
+
* Factorial: fact(0) = 1, fact(x+1) = mul(succ(x), fact(x)).
|
|
181
|
+
*
|
|
182
|
+
* En recursión: contador y, acumulador f(y), sin args extra. Step recibe
|
|
183
|
+
* (y, f(y)) y debe devolver mul(succ(y), f(y)).
|
|
184
|
+
*
|
|
185
|
+
* Cuidado: aquí args[0]=y es el "k" del bucle (0-indexed), por lo que
|
|
186
|
+
* succ(y) = y+1 = el siguiente número a multiplicar.
|
|
187
|
+
*/
|
|
188
|
+
export declare const PR_FACT: PRFn;
|
|
189
|
+
/**
|
|
190
|
+
* Función de Ackermann (Peter):
|
|
191
|
+
* A(0, n) = n + 1
|
|
192
|
+
* A(m+1, 0) = A(m, 1)
|
|
193
|
+
* A(m+1, n+1) = A(m, A(m+1, n))
|
|
194
|
+
*
|
|
195
|
+
* Crece más rápido que toda PRF: A(m, n) es la prueba canónica de que
|
|
196
|
+
* existen funciones recursivas totales no primitivas recursivas.
|
|
197
|
+
*
|
|
198
|
+
* Implementación iterativa por stack para esquivar el call-stack JS.
|
|
199
|
+
*/
|
|
200
|
+
export declare function ackermann(m: number, n: number): number;
|
|
201
|
+
/**
|
|
202
|
+
* Test heurístico de "esta función podría ser PR": evalúa la función
|
|
203
|
+
* sobre `samples` puntos pequeños y la compara con el patrón de
|
|
204
|
+
* crecimiento de Ackermann (que escapa a PR). Es estrictamente una
|
|
205
|
+
* heurística — no es un decisor.
|
|
206
|
+
*
|
|
207
|
+
* • Si la función supera a A(samples, samples) en algún punto pequeño
|
|
208
|
+
* → likely = false (probablemente no es PR).
|
|
209
|
+
* • Si nunca crece más rápido que cuadrático/exponencial moderado →
|
|
210
|
+
* likely = true.
|
|
211
|
+
*/
|
|
212
|
+
export declare function isInPR(f: (n: number) => number, samples?: number): {
|
|
213
|
+
likely: boolean;
|
|
214
|
+
estimate?: number;
|
|
215
|
+
};
|
|
216
|
+
/**
|
|
217
|
+
* Rice (1953): toda propiedad **no trivial** sobre el lenguaje aceptado
|
|
218
|
+
* por una TM (es decir, sobre el comportamiento input/output observable)
|
|
219
|
+
* es **indecidible**.
|
|
220
|
+
*
|
|
221
|
+
* No podemos *decidir* la propiedad — eso es justo lo que el teorema
|
|
222
|
+
* niega. Lo que sí podemos es **verificar el predicado de Rice**: la
|
|
223
|
+
* propiedad debe ser
|
|
224
|
+
*
|
|
225
|
+
* 1. extensional (depende sólo del lenguaje, no del código),
|
|
226
|
+
* 2. no vacía (alguna TM la satisface),
|
|
227
|
+
* 3. no total (alguna TM no la satisface).
|
|
228
|
+
*
|
|
229
|
+
* Esta función toma el predicado, lo evalúa sobre un muestreo finito de
|
|
230
|
+
* TMs conocidas y, si encuentra una `M0` que la satisface y una `M1`
|
|
231
|
+
* que no, devuelve `undecidable = true` con explicación. Si todas las
|
|
232
|
+
* TMs de la muestra dan la misma respuesta no podemos concluir nada
|
|
233
|
+
* (la propiedad podría ser trivial, o la muestra puede ser muy chica).
|
|
234
|
+
*/
|
|
235
|
+
export declare function riceWitness(property: (m: TuringMachine) => boolean, sampleSize?: number): {
|
|
236
|
+
undecidable: boolean;
|
|
237
|
+
explanation: string;
|
|
238
|
+
};
|
|
239
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/reasoning/computability/index.ts"],"names":[],"mappings":"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"}
|