Este repositorio documenta un estudio empírico: cómo se comportan modelos de IA (agentes de código + asistentes) al atacar un problema matemático duro, con evidencia computacional, formalización en Lean 4 y disciplina de honestidad científica.
No es una resolución de P vs NP. Nada por debajo del nivel de evidencia E5 (verificado en Lean) debe presentarse como tal.
| Estado del repo | Público |
| Clasificación científica | PARTIAL FORMAL PROGRESS |
| Conjetura estrella (G1) | tw(L(G))=3 (noncrossing) / 4 (crossing) para Cₙ + 2 cuerdas válidas — ∀n sigue OPEN |
| Evidencia E2 clave | 2870 / 2870 configs Δ=3, n=5..14, 0 contraejemplos (treewidth exacto) |
Este proyecto se usó como banco de prueba controlado para observar, medir y documentar el comportamiento de modelos de IA al:
- Formular un problema formal (familia de grafos + conjetura de treewidth del line graph).
- Buscar contraejemplos de forma adversarial (antes de “creer” la conjetura).
- Elegir rutas de prueba y abandonar las inviables con evidencia (matrices de rutas, obstrucciones).
- Formalizar en Lean 4 (Mathlib) con reglas duras: sin
sorry/ axioms locales en el track ChordWidth. - Mantener el build verde y clasificar resultados como PROVED / OPEN / PARKED con honestidad.
| Pregunta | Qué observamos en este repo |
|---|---|
| ¿Puede un agente cerrar un ∀n a partir de smokes finitos? | No: muchos certificados finitos ≠ teorema universal. Los agentes tienden a sobre-generalizar desde n=5..14. |
| ¿Ayuda la búsqueda de contraejemplos? | Sí: 2870 configs exactas anclan la conjetura en E2 y frenan rutas falsas. |
| ¿Dónde se atascan los modelos? | Preconnected / RI en plantillas fijas; puentes globales que rompen el build; “arreglos” locales que no escalan. |
| ¿Qué protocolos ayudan? | Matrices de rutas, clasificación PROVED/OPEN/PARKED, prohibición de sorry, farm CPU portable con checkpoints. |
- La evidencia computacional finita es necesaria pero insuficiente. n=5..14 con 2870/2870 matches soporta la dicotomía; no la prueba para todo n.
- Plantillas fijas se agotan. Path/fork de 6–7 nodos para c8 a width ≤4 resultaron inviables (hub de card ≥6) → pivot correcto a GenericDecomp paramétrico.
- Cambios globales en adjuntas Lean son peligrosos. Un bridge en
genericDecompAdjprovocó ~100 errores de compilación; se revirtió. Los certificados extendidos (c8) funcionaron sin mutar la adjunta global. - Los agentes avanzan bien en infraestructura (indexación de aristas, bags, transporte Fin, Route B
isTree_of_shape) y mal al saltar a ∀n sin diseño de hub paramétrico. - Paralelizar agentes sobre el mismo archivo Lean grande falla; conviene lanes con archivos/diseños separados.
Detalle vivo de rutas: reports/CHORDWIDTH_PROOF_ROUTE_MATRIX.md · informe AI: reports/CHORDWIDTH_AI_FINAL_REPORT.md.
Fuente: reports/CHORD_TREewidth_EXACT_N5_N14.md, CSV reports/chord_treewidth_exact_n5_n14.csv.
| Métrica | Valor |
|---|---|
| Rango n | 5 .. 14 |
| Configs gap-pattern totales | 3000 |
| Válidas (Δ = 3) | 2870 |
| Degeneradas (excluidas) | 130 |
| Crossing válidas | 1000 → tw = 4 |
| Noncrossing válidas (nested+disjoint) | 1870 → tw = 3 |
| Matches / mismatches | 2870 / 0 |
| Métodos | exact_bruteforce 56 · exact_width_search 2814 |
| Runtime (run documentado) | ~1013 s |
Fuente: reports/CHORDWIDTH_COUNTEREXAMPLE_SEARCH.md, experiments/chordwidth_counterexamples/results.json.
| Métrica | Valor |
|---|---|
| Valid configs | 2870 |
| Counterexamples | 0 |
| Status | NO_COUNTEREXAMPLE_IN_RANGE |
| Wall time (run documentado) | ~100 s |
| Ítem | Estado |
|---|---|
Build lake build PNPLab.ChordWidth.Main |
Verde (~1271–1278 jobs en sesiones documentadas) |
sorry / axioms locales en ChordWidth |
0 (auditoría) |
| Smokes / certificados finitos HasTreeDecomp | PROVED (familia c5–c10 + c8 vía CertificatesLine / C8Extended) |
Route B (isTree_of_shape, edge tags) |
PROVED |
| longArc edgeCover | PROVED |
| G1 dicotomía ∀n | OPEN |
| G2 núcleo K4/C4 ∀n | OPEN |
| G5 Tseitin crossing | OPEN / parcial |
Manifest en portable_cpu/ — sweeps n=15..32, hub search, Route F+A intervals, perfil high-RAM. Ver portable_cpu/TASKS.md.
Sea (G = C_n) más dos cuerdas con cuatro extremos distintos y (\Delta(G)=3).
Conjetura (G1): en el line graph (L(G)),
- cuerdas no cruzadas ⇒ (\mathrm{tw}(L(G)) = 3)
- cuerdas cruzadas ⇒ (\mathrm{tw}(L(G)) = 4)
para todo (n) admisible.
Enunciado formal: reports/CHORDWIDTH_FORMAL_PROBLEM_STATEMENT.md.
┌──────────────────┐ ┌─────────────────────┐ ┌──────────────────┐
│ Generación G │────▶│ L(G) + treewidth │────▶│ CSV / JSON E2 │
│ C_n + 2 chords │ │ scripts/treewidth │ │ reports/ │
└────────┬─────────┘ └─────────────────────┘ └──────────────────┘
│
▼
┌──────────────────┐ ┌─────────────────────┐ ┌──────────────────┐
│ Crossing law │────▶│ Conjetura G1 │────▶│ Lean ChordWidth │
│ (Python) │ │ + rutas A–G │ │ GenericDecomp │
└──────────────────┘ └─────────────────────┘ └────────┬─────────┘
│
▼
┌──────────────────┐
│ E5 parcial │
│ smokes / Route │
│ F+A scaffold │
└──────────────────┘
┌─ Route F (path decomp en arcos) ── SELECTED
│
Rutas A..G ────────┼─ Route A (GenericDecomp) ──────── acoplada a F
│
├─ Route C (menores/brambles) ───── OPEN (cotas inf.)
│
└─ Plantillas 6/7 nodos c8 ─────── PARKED (RI imposible width≤4)
┌─────────────┐ ┌──────────────┐ ┌─────────────────┐
│ Frontend │────▶│ FastAPI │────▶│ Solvers / gens │
│ React/Vite │ │ backend/api │ │ reductions │
└─────────────┘ └──────┬───────┘ └────────┬────────┘
│ │
▼ ▼
┌──────────────┐ ┌─────────────────┐
│ Conjectures │ │ Experiments │
│ Barriers │ │ CSV / JSON E2 │
│ ProofAuditor │ │ │
└──────────────┘ └─────────────────┘
│
▼
┌──────────────┐ ┌─────────────────┐
│ lean/PNPLab │ │ portable_cpu/ │
│ ChordWidth… │ │ farm resumible │
└──────────────┘ └─────────────────┘
Más detalle: docs/ARCHITECTURE.md.
| Ruta | Rol |
|---|---|
backend/ |
Modelos CNF, solvers, generadores, proof complexity, API |
lean/PNPLab/ |
Formalización Lean 4 (ChordWidth, Tseitin, …) |
scripts/ |
Treewidth, verify_chord_treewidth, búsqueda de contraejemplos |
portable_cpu/ |
Jobs CPU con checkpoint/log (Ubuntu) |
reports/ |
Auditorías, matrices de rutas, resultados E2 |
experiments/ |
Artefactos JSON/CSV reproducibles |
frontend/ |
Dashboard React (experimentos SAT / complejidad) |
docs/ |
Metodología y arquitectura |
conjectures/ |
Base de conjeturas |
SECURITY.md |
Política de secretos / privacidad |
| Nivel | Significado |
|---|---|
| E0 | Idea informal |
| E1 | Observación en ejemplos |
| E2 | Evidencia computacional reproducible |
| E3 | Conjetura bien formulada |
| E4 | Prueba manual parcialmente revisada |
| E5 | Prueba formal verificada en Lean |
| E6 | Revisión externa especializada |
Política: E2 ≠ teorema. Este repo etiqueta honestamente lo OPEN.
python -m venv .venv
# Windows: .venv\Scripts\activate
# Unix: source .venv/bin/activate
pip install -e ".[dev]"
pytest
# Treewidth exacto n=5..14 (largo)
python scripts/verify_chord_treewidth.py --n-lo 5 --n-hi 14 --no-representative \
--exact-max-nodes 32 --csv reports/chord_treewidth_exact_n5_n14.csv
# Búsqueda de contraejemplos
PYTHONPATH=scripts python scripts/chordwidth/search_two_chord_counterexamples.py \
--n-lo 5 --n-hi 14 --memory-safecd lean
lake exe cache get
lake build PNPLab.ChordWidth.Mainbash portable_cpu/bin/setup_ubuntu.sh
bash portable_cpu/bin/run_all.sh --profile high_ram --resumeuvicorn backend.api.main:app --reload --port 8000
cd frontend && npm install && npm run dev
# http://localhost:5173| Área | Estado | Notas |
|---|---|---|
| G1 ∀n | OPEN | Crítico; necesita discharge paramétrico + cotas inferiores |
| Standard-adj GenericDecomp en c8 | OPEN | 6/10 edges junction-overlap fallan preconnected |
| Hub placement paramétrico | OPEN | Diseño + Lean (no solo smokes) |
| Sweeps TW n≥15 | PENDIENTE farm | portable_cpu jobs |
| G2 / G5 | OPEN | Fuera del camino crítico G1 |
| Publicación del repo | Hecha | Repo público |
Los “pendientes” de prueba Lean no se cierran con más smokes; requieren trabajo paramétrico documentado en la matriz de rutas.
- El repositorio es / será público.
- No deben existir tokens,
.envcon secretos, ni rutas absolutas personales en el árbol versionado (verSECURITY.md). - Logs locales de build (con paths de máquina) están en
.gitignore. - Antes de publicar se realizó una pasada de secret scanning sobre archivos trackeados.
Para reproducir el núcleo empírico del estudio:
- Correr la sección 6.1 (TW exacto + contraejemplos) y comparar con
reports/yexperiments/. - Leer
reports/CHORDWIDTH_AI_FINAL_REPORT.mdyreports/CHORDWIDTH_PROOF_ROUTE_MATRIX.md. - Compilar ChordWidth (sección 6.2) y verificar ausencia de
sorryenlean/PNPLab/ChordWidth/.
Cualquier afirmación del tipo “la IA demostró G1” es falsa con el estado actual: la clasificación correcta es PARTIAL FORMAL PROGRESS.
Herramienta de investigación y documentación de un estudio sobre asistencia de IA en prueba formal. No reclama resolución del problema del milenio P vs NP.