@stevenvo780/st-lang
v3.0.0
Published
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.
Maintainers
Readme
ST — Symbolic Theory Language
ST es un lenguaje ejecutable para lógica, argumentación y formalización documental. Combina verificación formal, scripting declarativo, control de flujo, funciones, perfiles lógicos múltiples y una Text Layer para conectar fórmulas con texto humano real.
¿Qué hace diferente a ST?
- Lógica ejecutable: no solo declaras axiomas; también ejecutas verificaciones, derivaciones, análisis y explicaciones.
- Mini-lenguaje pedagógico:
let,set,print,if,for,while,fn,return,theory,import. - Múltiples perfiles: proposicional clásica, primer orden, modal, deóntica, epistémica, intuicionista, temporal, probabilística, aristotélica, paraconsistente y aritmética.
- Text Layer: vincula pasajes de documentos con formalizaciones y claims verificables.
- CLI + API + protocolo: usable desde terminal, REPL, TypeScript/JavaScript y editores.
- Alias en español: el lenguaje acepta tanto sintaxis en inglés como en español.
Instalación
Descarga directa en Linux
| Distribución | Paquete | Comando |
|--------------|---------|---------|
| Debian / Ubuntu | ⬇️ .deb | sudo dpkg -i st-lang_*.deb |
| Fedora / RHEL | ⬇️ .rpm | sudo rpm -i st-lang-*.rpm |
| Linux genérico | ⬇️ binario | chmod +x st && sudo mv st /usr/local/bin/ |
Con npm
npm install -g @stevenvo780/st-langDesde el código fuente
git clone https://github.com/stevenvo780/ST.git
cd ST
npm install
npm run build
npm linkInicio rápido
1) Tu primer archivo theory.st
logic classical.propositional
let regla = P -> Q
let hecho = P
derive Q from {regla, hecho}
check valid (P | !P)
countermodel (P -> Q)2) Ejecútalo
st theory.st3) Revisa perfiles disponibles
st profiles4) Entra al REPL
st replEjemplo paso a paso: variables, if, funciones y análisis
logic classical.propositional
print "=== demo guiada ==="
let regla = "Si estudio, apruebo" : (E -> A)
let hecho = "Estudio hoy" : E
derive A from {regla, hecho}
analyze {E, E -> A} -> A
explain (E -> A)
if valid (P | !P) {
print "tautología detectada"
} else {
print "esto no debería ocurrir en clásica"
}
for Caso in { P, Q, (R -> R) } {
print Caso
}
set estado = P
while satisfiable estado {
print "iteración del while"
set estado = P & !P
}
fn revisar(X) {
print "revisando"
print X
check satisfiable X
return X
}
revisar((P -> Q))Qué muestra este ejemplo
letdefine aliases lógicos y además los deja disponibles para derivaciones.analyzeevalúa si una inferencia es válida y detecta falacias conocidas.explaindevuelve una explicación del perfil activo sobre la fórmula.if valid|invalid|satisfiable|unsatisfiablepermite ramificar lógica del script.forrecorre una lista de fórmulas.whilereevalúa una condición lógica en cada iteración.fnagrupa pasos reutilizables;returncorta la ejecución del cuerpo.
Nota: hoy
returnsirve para cortar la función y preservar un valor interno para futuras extensiones, pero las llamadas a función todavía se usan como sentencia, no como expresión anidable.
Sintaxis principal de ST
Núcleo lógico
logic classical.propositional
axiom a1 : P -> Q
theorem t1 : (P -> P)
derive Q from {a1, a2}
prove (P -> P)
check valid (P | !P)
check satisfiable (P & Q)
check equivalent (!(P & Q)), (!P | !Q)
truth_table (P -> Q)
countermodel (P -> Q)Variables y scripting
let phi = (P -> Q)
set phi = (Q -> R)
print phi
if satisfiable phi {
print "hay modelo"
}
for X in {P, Q, R} {
print X
}
while invalid phi {
set phi = (P -> P)
}
fn verificar(X) {
check valid X
}
verificar((P -> P))Text Layer
let p = passage([[contrato.md#clausula-1]])
let f = formalize p as (P -> Q)
claim c1 = f
support c1 <- p
confidence c1 = 0.92
context c1 = "Interpretación jurídica conservadora"
render claimsPruebas estructuradas y teorías
assume h1 : P -> Q
assume h2 : P
show Q
derive Q from {h1, h2}
qed
theory Base {
let alias = P -> Q
private let secreto = R & S
axiom regla : P -> Q
}
print Base.aliasAlias en español
ST acepta las dos familias de keywords. Ejemplos:
| Inglés | Español |
|--------|---------|
| logic | logica |
| axiom | axioma |
| derive | derivar |
| from | desde |
| check valid | verificar valido |
| check satisfiable | verificar satisfacible |
| countermodel | contramodelo |
| truth_table | tabla_verdad |
| analyze | analizar |
| explain | explicar |
| import | importar |
| theory | teoria |
| if | si |
| else | sino |
| for | para |
| while | mientras |
| fn | funcion |
| return | retornar |
Perfiles incorporados
ST registra automáticamente estos perfiles:
classical.propositionalclassical.first_ordermodal.kparaconsistent.belnapdeontic.standardepistemic.s5aristotelian.syllogisticintuitionistic.propositionaltemporal.ltlprobabilistic.basicarithmetic
Operadores destacados por perfil
- Proposicional clásica:
!,&,|,->,<-> - Primer orden:
forall,exists,P(x), igualdadx = y - Modal / deóntica / epistémica:
[],<> - Temporal:
next,until - Aritmética:
+,-,*,/,%,<,>,<=,>=
Herramientas explicativas nuevas y reforzadas
explain
Explica una fórmula dentro del perfil activo:
logic modal.k
explain [](P -> P)analyze
Evalúa inferencias completas y detecta falacias como:
- afirmación del consecuente
- negación del antecedente
- medio no distribuido
logic classical.propositional
analyze {P, P -> Q} -> Q
analyze {P} -> Qrender
Permite inspeccionar el estado acumulado:
render theory
render claims
render c1CLI
Ejecutar archivo
st run archivo.stEjecutar modo legacy
st archivo.stValidar sintaxis y resultados
st check archivo.stGuardar diagnósticos JSON
st run archivo.st --diagnosticsEvaluar una expresión directa
st eval "check valid (P -> P)"Protocolo para editores
st protocolAPI programática
import { evaluate, createInterpreter } from '@stevenvo780/st-lang/api';
const result = evaluate(`
logic classical.propositional
let regla = P -> Q
let hecho = P
derive Q from {regla, hecho}
`);
console.log(result.results[0].status);
const st = createInterpreter();
st.exec('logic arithmetic');
st.exec('explain 2 + 3 * 4');Carpeta examples/
El repositorio incluye ejemplos listos para ejecutar:
demo.st: núcleo lógico básicoprogramming-control-flow.st:let,if,for,while,fnguided-language-tour.st: recorrido guiado y pedagógicotext-layer.st: formalización de documentostheory-showcase.st: encapsulación, herencia y acceso con puntoarithmetic-programming.st: scripting conlogic arithmeticstress-all-profiles.st: smoke test amplio
Para ejecutarlos todos:
npm run examples:runExtensión de VS Code
La extensión oficial en editors/vscode-st aporta:
- resaltado sintáctico
- snippets
- símbolos del documento
- hover
- diagnósticos
- autocompletado orientado al lenguaje
Arquitectura
- Lexer/Parser: transforma el script
.sten AST. - Interpreter: ejecuta statements, mantiene teoría, bindings, funciones y Text Layer.
- Profiles: cada perfil implementa derivación, validez, satisfacibilidad, explicación y más.
- ProtocolHandler: expone capacidades para integraciones de editor.
Documentación ampliada
- Guía completa local:
DOCS.md - Documentación web: agora.humanizar.cloud/docs#st-lang
Licencia
MIT © Steven Velez | Developed by Humanizar
