2P-Kt

2P-Kt (tuProlog in Kotlin) è un ecosistema multi-piattaforma in Kotlin per la programmazione logica e l'intelligenza artificiale simbolica: l'implementazione corrente di tuProlog, costruita su un core minimale che si estende per moduli anziché configurarsi per opzioni

Che cos'è 2P-Kt

2P-Kt è

  • l'implementazione corrente di tuProlog, riscritta da zero in Kotlin come progetto multi-piattaforma con target JVM, JS — lato server e lato browser — e Android
  • costruita su un core minimale e stratificato — termini e clausole, unificazione, teorie, risoluzione — che si estende per moduli anziché configurarsi per opzioni
  • pensata per dare agli ingegneri dei sistemi intelligenti un ecosistema general-purpose, estensibile e aperto per la IA simbolica, e non il solo interprete Prolog
  • open source, rilasciata sotto licenza Apache 2.0

Le due IDE

La stessa IDE Prolog esiste in due incarnazioni, che condividono modello e controllore e differiscono solo per il toolkit che li disegna.

  • la Web IDE gira in un browser senza installare nulla — tuprolog.github.io/2p-kt/web-ide
  • la IDE desktop è un jar eseguibile sulla pagina del rilascio, costruito su Swing

Editing, evidenziazione della sintassi, diagnostica e risoluzione delle query si comportano allo stesso modo in entrambe. Si separano sulla persistenza: nel browser New, Open, Save e Save as gestiscono pagine conservate nella memoria locale del browser, che sopravvivono a un ricaricamento senza toccare il file system, mentre Upload e Download sono ciò che legge e scrive un file di teoria su disco.

I moduli

2P-Kt è una famiglia di moduli, ciascuno un artefatto a sé, stratificati perché una applicazione prenda solo ciò che le serve.

moduloche cosa fornisce
coretermini e clausole logiche
unifyunificazione
theoryindicizzazione e memorizzazione in memoria delle teorie
solvel'API generica per la risoluzione di query — solve-classic e solve-streams hanno per target il Prolog ISO
solve-plpprogrammazione logica probabilistica, con solve-problog sul modulo bdd
solve-concurrentrisoluzione OR-concorrente
dsl-*un linguaggio dedicato Prolog-like dentro Kotlin
parser-core, parser-theoryparsing di termini e di teorie
serialize-core, serialize-theory(de)serializzazione di termini e di teorie
replProlog da riga di comando
ide, ide-plpProlog, e programmazione logica probabilistica, tramite interfaccia grafica

L'architettura è deliberatamente neutrale: è pensata per accogliere forme di IA simbolica diverse dal Prolog — answer set programming, risoluzione tabled, programmazione logica concorrente — come ulteriori moduli. E poiché il progetto è Kotlin puro, vincolato alla sola libreria common, resta piccolo e portabile: JVM, JS e Android oggi, Kotlin/Native in linea di principio.

Warning

Per segnalare un problema in 2P-Kt si prega di aprire una issue sulla pagina GitHub Issues.

I rilasci

Versioni, note di rilascio e artefatti stanno con il codice, su GitHub. Queste pagine non li inseguono: ciò che è corrente si legge meglio là.

Il motore che sostituisce

2P-Kt è un reboot, non un port: il motore Java che sostituisce è un progetto a sé, con vent'anni di storia propria, e ha qui le sue pagine — tuProlog.

Logo

download

sorgenti

documentazione