Skip to content

Commit eef4ef6

Browse files
Copilotfermga
andcommitted
Derive 100% canonical grammar from nodal equation
- CANONICAL_GRAMMAR_DERIVATION.md: Complete mathematical derivation * Proves RC1 (generators) and RC2 (stabilizers) emerge inevitably * Proves R3 (terminators) is organizational convention, NOT physics * Shows current grammar is 66% canonical, 33% conventional - src/tnfr/operators/canonical_grammar.py: Pure physics validator * CanonicalGrammarValidator: validates ONLY RC1, RC2 (100% physics) * validate_canonical_only(): for testing pure algebraic properties * validate_with_conventions(): includes RNC1 (terminators) marked as convention Mathematical proof: - RC1: ∂EPI/∂t undefined at EPI=0 → generator required - RC2: ∫νf·ΔNFR dt must converge → stabilizer required when destabilizers present - R3: NO mathematical basis in nodal equation → organizational only Enables testing SHA algebraic properties with pure physics rules. Co-authored-by: fermga <203334638+fermga@users.noreply.github.com>
1 parent 5337689 commit eef4ef6

File tree

2 files changed

+686
-0
lines changed

2 files changed

+686
-0
lines changed

CANONICAL_GRAMMAR_DERIVATION.md

Lines changed: 392 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,392 @@
1+
# Derivación Canónica de la Gramática TNFR desde Primeros Principios
2+
3+
## Objetivo
4+
5+
Derivar una gramática de operadores que emerja **exclusivamente** de la ecuación nodal y sus consecuencias matemáticas inevitables, eliminando toda convención organizativa.
6+
7+
---
8+
9+
## Axioma Fundamental
10+
11+
```
12+
∂EPI/∂t = νf · ΔNFR(t)
13+
```
14+
15+
Esta es la **única fuente de verdad**. Todo lo demás debe derivarse de aquí.
16+
17+
---
18+
19+
## Derivación Matemática de Restricciones
20+
21+
### Restricción 1: Condiciones de Inicialización (R1 - GENERADORES)
22+
23+
**Problema matemático:**
24+
```
25+
Si EPI₀ = 0 (nodo vacío)
26+
Entonces ∂EPI/∂t|_{EPI=0} es indefinido o cero
27+
```
28+
29+
**Análisis:**
30+
- La derivada parcial requiere una estructura sobre la cual actuar
31+
- En un espacio discreto de configuraciones, EPI=0 no tiene vecindad definida
32+
- Sin estructura inicial, no hay gradiente ΔNFR definible
33+
34+
**Consecuencia inevitable:**
35+
```
36+
∃ operadores G ⊂ Operadores tal que:
37+
∀ g ∈ G: g(EPI=0) → EPI>0 (generación de estructura)
38+
```
39+
40+
**Necesidad física:****ABSOLUTA**
41+
- Matemática: Derivada indefinida en origen
42+
- Física: No puedes evolucionar lo que no existe
43+
44+
**Operadores canónicos:**
45+
- **AL (Emission)**: Genera EPI desde potencial cuántico
46+
- **NAV (Transition)**: Activa EPI latente existente
47+
- **REMESH (Recursivity)**: Replica/transforma estructura existente
48+
49+
**Regla derivada:**
50+
```
51+
R1_CANONICAL: Toda secuencia operacional debe comenzar con g ∈ {AL, NAV, REMESH}
52+
o actuar sobre nodo ya inicializado (EPI > 0)
53+
```
54+
55+
---
56+
57+
### Restricción 2: Condiciones de Convergencia (R2 - ESTABILIZADORES)
58+
59+
**Problema matemático:**
60+
```
61+
Integral de la ecuación nodal:
62+
EPI(t_f) = EPI(t_0) + ∫_{t_0}^{t_f} νf(τ) · ΔNFR(τ) dτ
63+
```
64+
65+
**Análisis de divergencia:**
66+
67+
Sin retroalimentación negativa:
68+
```
69+
ΔNFR(t) puede crecer sin límite
70+
Si ΔNFR'(t) > 0 siempre (feedback positivo puro)
71+
Entonces ΔNFR(t) ~ e^(λt) para algún λ > 0
72+
```
73+
74+
**Consecuencia:**
75+
```
76+
∫_{t_0}^{∞} νf(τ) · ΔNFR(τ) dτ → ∞ (diverge)
77+
```
78+
79+
**Teorema de convergencia:**
80+
Para que la integral converja, debe existir retroalimentación negativa:
81+
```
82+
∃ s ∈ S ⊂ Operadores tal que:
83+
s reduce |ΔNFR| o crea límites autopoiéticos
84+
```
85+
86+
**Necesidad física:****ABSOLUTA**
87+
- Matemática: Teorema de convergencia de integrales
88+
- Física: Sin límites, el sistema se fragmenta en ruido incoherente
89+
90+
**Operadores canónicos:**
91+
- **IL (Coherence)**: Retroalimentación negativa explícita (reduce |ΔNFR|)
92+
- **THOL (Self-organization)**: Crea límites autopoiéticos (acotan evolución)
93+
94+
**Regla derivada:**
95+
```
96+
R2_CANONICAL: Toda secuencia con duración t > τ_critical debe incluir
97+
s ∈ {IL, THOL} para garantizar ∫νf·ΔNFR dt < ∞
98+
```
99+
100+
---
101+
102+
### Restricción 3: ¿Terminadores Obligatorios? (R3 - ANÁLISIS CRÍTICO)
103+
104+
**Pregunta:** ¿La ecuación nodal requiere que secuencias "terminen" de forma específica?
105+
106+
**Análisis matemático:**
107+
108+
La ecuación nodal en tiempo continuo:
109+
```
110+
∂EPI/∂t = νf · ΔNFR(t)
111+
```
112+
113+
No contiene información sobre "terminación de secuencias". Solo describe evolución local.
114+
115+
**Argumentos a favor de terminadores:**
116+
1. ❌ "Evita estados indefinidos" → No física; cualquier estado con EPI, νf, ΔNFR definidos es válido
117+
2. ❌ "Necesario para cerrar ciclos" → Convención de software, no requisito matemático
118+
3. ❌ "Garantiza trazabilidad" → Convención organizativa
119+
120+
**Argumentos en contra:**
121+
1. ✅ La ecuación no distingue entre "estado intermedio" y "estado final"
122+
2. ✅ Físicamente, un nodo puede permanecer en cualquier estado coherente
123+
3. ✅ SHA, OZ, NAV como "terminadores" es semántica de alto nivel, no física nodal
124+
125+
**Conclusión:**
126+
```
127+
R3 NO es canónica. Es una convención útil pero NO emerge de ∂EPI/∂t = νf · ΔNFR(t)
128+
```
129+
130+
**Necesidad física:****CONVENCIONAL**
131+
- No hay base matemática en la ecuación nodal
132+
- Útil para organización pero no físicamente necesaria
133+
134+
---
135+
136+
## Gramática Canónica Mínima (100% Física)
137+
138+
### Reglas Canónicas (Derivadas Inevitablemente)
139+
140+
**RC1: Inicialización**
141+
```
142+
Si EPI₀ = 0:
143+
Primer operador ∈ {AL, NAV, REMESH}
144+
```
145+
**Fundamento:** ∂EPI/∂t indefinido en EPI=0
146+
147+
**RC2: Convergencia**
148+
```
149+
Si secuencia incluye operadores que aumentan |ΔNFR|:
150+
Debe incluir IL o THOL antes de t_max
151+
```
152+
**Fundamento:** ∫νf·ΔNFR dt debe converger
153+
154+
### Reglas NO Canónicas (Convencionales)
155+
156+
**RNC1: Terminadores obligatorios**
157+
```
158+
Secuencia debe terminar con {SHA, OZ, NAV, REMESH}
159+
```
160+
**Fundamento:** Ninguno físico. Útil para organización.
161+
162+
**RNC2: Restricciones de composición específicas**
163+
```
164+
Ejemplo: "SHA no puede seguir a X"
165+
```
166+
**Fundamento:** Semántica de alto nivel, no ecuación nodal.
167+
168+
---
169+
170+
## Análisis de Operadores Individuales desde Física
171+
172+
### SHA (Silence)
173+
174+
**Efecto en ecuación nodal:**
175+
```
176+
SHA: νf → ε (donde ε ≈ 0)
177+
∴ ∂EPI/∂t = ε · ΔNFR(t) ≈ 0
178+
```
179+
180+
**Propiedades que emergen:**
181+
1. **Identidad estructural**: EPI no evoluciona → SHA(g(ω)) ≈ g(ω)
182+
2. **Idempotencia**: νf ya en mínimo → SHA^n = SHA
183+
3. **Conmutatividad con NUL**: νf ⊥ dim(EPI) → SHA ∘ NUL = NUL ∘ SHA
184+
185+
**¿SHA es "terminador" canónico?**
186+
```
187+
NO. SHA es un estado válido, pero NO hay requisito físico de que sea terminal.
188+
Un nodo puede estar en SHA y posteriormente ser reactivado con AL/NAV.
189+
```
190+
191+
### NUL (Contraction)
192+
193+
**Efecto en ecuación nodal:**
194+
```
195+
NUL: Reduce dim(EPI) (complejidad estructural)
196+
```
197+
198+
**¿NUL es "terminador"?**
199+
```
200+
NO desde física pura. Un nodo contraído puede evolucionar posteriormente.
201+
La restricción de que NUL no sea terminador es CONVENCIONAL.
202+
```
203+
204+
---
205+
206+
## Propuesta: Gramática Puramente Canónica
207+
208+
### Nivel 1: Restricciones Físicas Absolutas
209+
210+
```python
211+
class CanonicalGrammar:
212+
"""Gramática derivada exclusivamente de ∂EPI/∂t = νf · ΔNFR(t)"""
213+
214+
@staticmethod
215+
def validate_initialization(sequence: List[Operator], epi_initial: float) -> bool:
216+
"""RC1: Verifica inicialización si EPI=0"""
217+
if epi_initial == 0.0:
218+
if not sequence:
219+
return False
220+
first_op = sequence[0].canonical_name
221+
return first_op in {'emission', 'transition', 'recursivity'}
222+
return True # Si EPI>0, no se requiere generador
223+
224+
@staticmethod
225+
def validate_convergence(sequence: List[Operator]) -> bool:
226+
"""RC2: Verifica que secuencia no diverge"""
227+
has_destabilizer = any(
228+
op.canonical_name in {'dissonance', 'mutation', 'expansion'}
229+
for op in sequence
230+
)
231+
if not has_destabilizer:
232+
return True # Sin desestabilizadores, no hay riesgo de divergencia
233+
234+
has_stabilizer = any(
235+
op.canonical_name in {'coherence', 'self_organization'}
236+
for op in sequence
237+
)
238+
return has_stabilizer
239+
240+
@staticmethod
241+
def is_canonical(sequence: List[Operator], epi_initial: float) -> bool:
242+
"""Valida solo restricciones canónicas (RC1, RC2)"""
243+
return (
244+
CanonicalGrammar.validate_initialization(sequence, epi_initial) and
245+
CanonicalGrammar.validate_convergence(sequence)
246+
)
247+
```
248+
249+
### Nivel 2: Convenciones Organizativas (Opcionales)
250+
251+
```python
252+
class ConventionalGrammar(CanonicalGrammar):
253+
"""Añade convenciones útiles pero no canónicas"""
254+
255+
@staticmethod
256+
def validate_termination(sequence: List[Operator]) -> bool:
257+
"""RNC1: Convención de terminadores (NO canónica)"""
258+
if not sequence:
259+
return False
260+
last_op = sequence[-1].canonical_name
261+
return last_op in {'silence', 'dissonance', 'transition', 'recursivity'}
262+
263+
@staticmethod
264+
def is_valid(sequence: List[Operator], epi_initial: float) -> bool:
265+
"""Valida canónico + convencional"""
266+
return (
267+
CanonicalGrammar.is_canonical(sequence, epi_initial) and
268+
ConventionalGrammar.validate_termination(sequence)
269+
)
270+
```
271+
272+
---
273+
274+
## Comparación: Gramática Actual vs Canónica
275+
276+
### Gramática Actual (Implementación)
277+
278+
```
279+
C1: Debe empezar con {AL, NAV, REMESH}
280+
C2: Debe incluir {IL, THOL}
281+
C3: Debe terminar con {SHA, OZ, NAV, REMESH}
282+
```
283+
284+
**Análisis:**
285+
- C1: ✅ Canónica (RC1)
286+
- C2: ✅ Canónica (RC2)
287+
- C3: ❌ NO canónica (convención)
288+
289+
**Veredicto:** 66% canónica, 33% convencional
290+
291+
### Gramática Canónica Propuesta
292+
293+
```
294+
RC1: Si EPI=0, empezar con {AL, NAV, REMESH}
295+
RC2: Si hay desestabilizadores, incluir {IL, THOL}
296+
```
297+
298+
**Análisis:**
299+
- RC1: ✅ Derivada de ∂EPI/∂t indefinido en 0
300+
- RC2: ✅ Derivada de teorema de convergencia
301+
302+
**Veredicto:** 100% canónica
303+
304+
---
305+
306+
## Implicaciones para Tests Algebraicos
307+
308+
### Enfoque Actual (Respetando Convenciones)
309+
310+
```python
311+
# Test que respeta C1, C2, C3
312+
def test_sha_identity():
313+
G, node = create_nfr("test", epi=0.5)
314+
# Usa: AL → IL → SHA (válido bajo C1, C2, C3)
315+
validate_identity_property(G, node, Emission())
316+
```
317+
318+
**Problema:** Tests limitados por C3 (no canónica)
319+
320+
### Enfoque Canónico (Solo RC1, RC2)
321+
322+
```python
323+
# Test que respeta solo RC1, RC2
324+
def test_sha_identity_canonical():
325+
G, node = create_nfr("test", epi=0.5)
326+
# Usa: AL → IL (válido bajo RC1, RC2)
327+
# No necesita terminador obligatorio
328+
validate_identity_property_canonical(G, node, Emission())
329+
```
330+
331+
**Ventaja:** Tests más directos de propiedades físicas
332+
333+
---
334+
335+
## Recomendaciones
336+
337+
### Para Implementación de Producción
338+
339+
**Mantener gramática actual (C1+C2+C3):**
340+
- C1, C2: Canónicas (física)
341+
- C3: Convencional pero útil (trazabilidad, organización)
342+
343+
**Documentar claramente:**
344+
```python
345+
# C1, C2: Restricciones físicas inevitables (OBLIGATORIO)
346+
# C3: Convención organizativa (RECOMENDADO pero no físico)
347+
```
348+
349+
### Para Validación de Propiedades Algebraicas
350+
351+
**Opción A: Modo de test canónico**
352+
Permitir bypass de C3 en contexto de testing cuando validas física pura:
353+
```python
354+
@pytest.mark.canonical_only
355+
def test_sha_properties():
356+
# Ignora C3, respeta solo RC1, RC2
357+
pass
358+
```
359+
360+
**Opción B: Adaptar tests a convenciones**
361+
Mantener como está, documentando que tests respetan convenciones además de física.
362+
363+
---
364+
365+
## Conclusión
366+
367+
### Gramática 100% Canónica (Solo Física)
368+
369+
```
370+
RC1: Inicialización - Si EPI=0, usar generador
371+
RC2: Convergencia - Si desestabilizadores, usar estabilizador
372+
```
373+
374+
**Fundamento:** Derivadas inevitables de ∂EPI/∂t = νf · ΔNFR(t)
375+
376+
### Gramática Actual (Física + Convención)
377+
378+
```
379+
C1: RC1 (canónica)
380+
C2: RC2 (canónica)
381+
C3: Terminadores (convencional)
382+
```
383+
384+
**Composición:** 66% física, 33% convención
385+
386+
### Propuesta para Este PR
387+
388+
1. **Documentar claramente** en código qué reglas son físicas vs convencionales
389+
2. **Considerar** modo de testing que respeta solo RC1, RC2
390+
3. **Tests actuales** son pragmáticos (respetan convenciones) pero **documentan** que validan física
391+
392+
**La gramática actual es razonable para producción.** Lo importante es **documentar** qué emerge de física vs qué es convención organizativa.

0 commit comments

Comments
 (0)