Sistemi esperti, isomorfismi logici, LLM e altro ancora…
Sistemi esperti e logica formale
Negli anni Settanta e Ottanta, un’epoca pionieristica per l’intelligenza artificiale, comparvero i primi sistemi esperti (“expert systems”): programmi progettati per riprodurre, in un ambito circoscritto, alcuni dei ragionamenti di uno specialista. Utilizzavano una base di conoscenze e un insieme di regole, spesso riconducibili allo schema «se si verifica una certa condizione, allora si può trarre una determinata conclusione», per analizzare le informazioni ricevute e proporre una risposta.
Uno dei casi più celebri fu MYCIN, sviluppato alla Stanford University. A partire dai dati clinici, il sistema applicava regole elaborate con specialisti per identificare gravi infezioni batteriche e suggerire una terapia antibiotica appropriata.
Era quasi inevitabile pensare di applicare lo stesso paradigma a un altro dominio apparentemente rule-based: il diritto.
L’idea, del resto, aveva illustri antecedenti. Nel celebre saggio del 1950, «Scienza del diritto e analisi del linguaggio», Norberto Bobbio individuava nel rigore dell’analisi del linguaggio del legislatore una possibile via verso la scientificità della giurisprudenza. E la prima costruzione kelseniana del diritto come sistema normativo, nel quale la validità delle norme si ricostruisce attraverso i rapporti con norme superiori, sembrava offrire, almeno a prima vista, una sorta di sandbox ideale: un ambiente relativamente chiuso, popolato da norme e relazioni, nel quale sperimentare la traduzione del ragionamento giuridico in regole formali.
Da queste premesse nacquero numerosi tentativi di costruire sistemi esperti giuridici (qualcuno, con qualche ingenuità ma molto entusiasmo, anche da parte di chi scrive). Eppure nessuno di essi è mai davvero entrato nei nostri studi legali, né ha lontanamente potuto ambire a essere ciò che oggi stanno rapidamente diventando gli LLM: un vero companion quotidiano di lavoro. Perché?
Una prima risposta è pratica. Il diritto è enormemente più difficile da trasformare in un albero decisionale di quanto possa sembrare. Per capirlo, prendiamo un esempio volutamente semplice e intenzionalmente incompleto (mi si perdonerà il poco di simbolismo che segue, che è comunque piuttosto semplice. In estrema sintesi, ∧ significa “e”, ∨ significa “o”, ¬ significa “non” e → significa “se… allora”. Per chi volesse familiarizzare rapidamente con questa notazione, una breve introduzione alla logica proposizionale si trova nell’Enciclopedia della Matematica di Treccani):
Immobile ∧ TrasferimentoProprietà → FormaScritta
Ossia: se un contratto trasferisce la proprietà di un immobile, deve essere adottata la forma scritta.
Il problema è che il diritto non è quasi mai così semplice. Già nella fattispecie astratta, e ancor più quando questa viene applicata a un caso concreto, compaiono condizioni concorrenti, eccezioni e rinvii ad altre norme.
Una regola giuridica può facilmente assumere una struttura a condizioni nidificate, nella quale una condizione opera solo se ne ricorrono altre. Per esempio:
A ∧ (B ∨ (C ∧ ¬D)) → E
Se si verifica A e, inoltre, si verifica almeno una delle due condizioni — B oppure C insieme all’assenza di D — allora segue E.
Può apparire bizzarro, ma una regola giuridica, anche se normalmente non viene espressa in simboli, può assumere proprio un’articolazione del genere. Immaginiamo che una garanzia operi se esiste un vizio, il compratore non lo conosceva e, inoltre, ricorre almeno una delle due condizioni: il vizio non era riconoscibile oppure il venditore aveva dichiarato che la cosa era esente da vizi.
Indicando con V l’esistenza del vizio, C la conoscenza del vizio da parte del compratore, R la riconoscibilità del vizio, D la dichiarazione del venditore che la cosa è esente da vizi e G l’operatività della garanzia, possiamo rappresentare la formula logica come:
V ∧ ¬C ∧ (¬R ∨ D) → G
È dunque una struttura tutt’altro che rara: una conseguenza giuridica può dipendere contemporaneamente da un fatto, da uno stato soggettivo e dall’assenza di una causa di esclusione, a sua volta soggetta a eccezioni.
La difficoltà non sta tanto nel tradurre una singola regola in simboli, quanto nel ricostruire l’intera rete di condizioni, eccezioni e rinvii in cui essa si inserisce. Inoltre, anche quando sia possibile costruire un simile sistema di regole, questo deve essere aggiornato non soltanto quando cambia una disposizione normativa, ma anche quando muta la sua interpretazione giurisprudenziale. La manutenzione della base di conoscenze diventa così rapidamente molto onerosa.
Credo tuttavia che la difficoltà dei sistemi esperti ad affermarsi nella pratica giuridica abbia avuto anche una ragione più profonda, che riguarda la natura stessa del ragionamento giuridico.
Dalla sandbox al diritto vivente
Finché il tentativo di formalizzazione rimane nella sandbox di un ideale laboratorio del giurista, lo schema, sebbene molto complicato, sembra reggere. Ma che cosa accade quando entriamo nel diritto vivente?
Come spesso mi capita, questi articoli nascono da esperienze concrete. Ho cominciato a riflettere su questo argomento dovendo applicare a un caso reale i principi espressi da Cass., Sezioni Unite civili, 3 maggio 2019, n. 11748. Non si tratta, per ciò che qui interessa, di elevare quella pronuncia a precedente epocale: è semplicemente un buon esempio del fenomeno che vorrei descrivere e certamente se ne potrebbero trovare molti altri.
La Corte affronta un problema relativo all’onere della prova dei vizi della cosa venduta e, nel ricostruire il sistema, osserva che la soluzione adottata risulta «armonica» rispetto alle soluzioni elaborate in materia di prova dei vizi nell’appalto e nella locazione.
È stata proprio la parola «armonica» a incuriosirmi. Da lì sono partito e, forse forzando un poco, ho provato a mettere alla prova la tenuta di questa linea interpretativa: se vendita, locazione e appalto presentano discipline armoniche dei vizi, che cosa accade se eliminiamo per un momento il significato delle parole e traduciamo quelle discipline in strutture logiche? Dovremmo attenderci di trovare, almeno in qualche punto, degli isomorfismi logici.
In senso molto semplice, due strutture sono isomorfe dal punto di vista logico quando, pur essendo composte da elementi diversi, conservano le medesime relazioni: è possibile sostituire ordinatamente gli elementi dell’una con quelli dell’altra senza alterarne la struttura.
L’idea richiama, con tutte le cautele del caso, il primo Wittgenstein. Nel Tractatus, il linguaggio può raffigurare il mondo in quanto proposizione e fatto condividono una forma logica. Wittgenstein, naturalmente, non sta parlando dei nostri isomorfismi “normativi” e il mio obiettivo è molto più modesto: verificare se norme che il giurista percepisce come simili conservino la stessa struttura quando vengono private, per quanto possibile, del loro contenuto lessicale.
A questo punto emerge però un problema metodologico che non va nascosto. Senza che il paragone voglia suonare irrispettoso, questa ricerca di parallelismi logici all’interno del Codice civile appare, persino a chi scrive, come una sorta di complesso esercizio gematrico: si prendono testi diversi, li si scompone, li si riduce a strutture astratte e si cercano corrispondenze nascoste. Il rischio è evidente: se si desidera abbastanza intensamente trovare un pattern, prima o poi un pattern si trova. Proprio per evitare questa tentazione, l’esperimento deve accettare come risultato altrettanto significativo l’assenza di isomorfismi. C’è poi un secondo rischio, più sottile: l’esito dipende dalla granularità con cui si scelgono gli elementi da formalizzare. Con elementi abbastanza grossolani tutto diventa «se p, allora q»; con elementi abbastanza fini nulla coincide più. Inevitabilmente, scegliere dove porre questo limite è già interpretare la norma.
Un piccolo esperimento nel Codice civile
Riprendiamo dunque quella Cassazione e consideriamo le discipline dei vizi nella vendita, nell'appalto e nella locazione che essa idealmente affianca. Conviene però procedere per gradi e osservarle da distanze diverse: prima da lontano, poi da molto vicino, infine a una scala intermedia.
Viste da lontano, la somiglianza è immediata. Emerge un vocabolario comune: una parte vende, loca o costruisce; l'oggetto della prestazione presenta un vizio; l'altra parte beneficia di una garanzia o di una tutela. Questa protezione può, a certe condizioni, essere esclusa o non operare. In forme diverse ricompare il comportamento di chi ha fornito il bene, inclusa la mala fede. A questa scala le tre discipline si lasciano ridurre senza fatica a un unico schema:
V ∧ ¬X → T
dove V indica il vizio, X una qualsiasi causa di esclusione e T la tutela di chi riceve la prestazione: se c'è un vizio e non opera alcuna causa di esclusione, la tutela scatta. L'isomorfismo, qui, è pressoché perfetto. Ma è anche a buon mercato: con categorie così ampie è difficile che due discipline dei vizi non si somiglino. Viene allora da chiedersi se la somiglianza resista quando si stringe l'inquadratura.
Scendiamo quindi al livello opposto, quello delle singole disposizioni prese una per una. Partiamo dall'art. 1490, primo comma, sulla vendita: «Il venditore è tenuto a garantire che la cosa venduta sia immune da vizi che la rendano inidonea all'uso a cui è destinata o ne diminuiscano in modo apprezzabile il valore.» E confrontiamolo con la prima frase dell'art. 1667, primo comma, sull'appalto: «L'appaltatore è tenuto alla garanzia per le difformità e i vizi dell'opera.»
Anche qui l'isomorfismo emerge:
V → G
dove V indica la presenza di un vizio rilevante e G l'operare della garanzia. In entrambi i casi la struttura è: se c'è il vizio, opera la garanzia. Cambiano il soggetto (venditore o appaltatore) e l'oggetto (cosa venduta o opera), ma la relazione fondamentale si conserva (non è un isomorfismo perfetto: l'art. 1490 precisa che il vizio deve rendere la cosa inidonea all'uso cui è destinata o diminuirne in modo apprezzabile il valore; l'art. 1667 parla invece direttamente di difformità e vizi. Ma, tenendo ferma questa differenza, il nucleo strutturale è chiaramente riconoscibile).
Lo stesso accade sul piano del risarcimento, tra vendita e locazione. L'art. 1578, secondo comma, stabilisce che il locatore è tenuto a risarcire i danni derivati dai vizi della cosa, se non prova di averli ignorati senza colpa al momento della consegna:
¬P(l) → Rᵈ
dove P(l) indica la prova, da parte del locatore, di avere ignorato il vizio senza colpa e Rᵈ la responsabilità per il risarcimento dei danni. Il locatore, cioè, risponde a meno che non fornisca quella prova. Per la vendita, l'art. 1494 detta la stessa regola: il venditore è tenuto al risarcimento «se non prova di avere ignorato senza colpa i vizi della cosa». In termini formali:
¬P(v) → Rᵈ
Anche qui l'isomorfismo, in questo caso, è netto: cambia soltanto il soggetto su cui grava la prova. La lettura della Cassazione sembra dunque confermata.
Il quadro, però, si complica a una scala intermedia, quando, invece di confrontare le singole regole, guardiamo a come ciascuna disciplina le combina. Per vederlo, proviamo a seguire un solo elemento, la mala fede di chi ha fornito il bene.
Cominciamo dalla vendita. Il secondo comma dell'art. 1490 consente alle parti di escludere o limitare la garanzia per i vizi, ma priva di effetto il patto se il venditore ha taciuto i vizi in mala fede:
Pt ∧ M → ¬E(Pt)
dove Pt è il patto di esclusione o limitazione della garanzia, M il silenzio in mala fede sui vizi ed E(Pt) l'efficacia del patto. La mala fede, qui, serve a una cosa sola: neutralizzare il patto.
Passiamo all'appalto. Per l'art. 1667 la garanzia non è dovuta se il committente conosceva i vizi o se questi erano riconoscibili, a meno che, in questo secondo caso, l'appaltatore non li abbia taciuti in mala fede. Lasciando da parte, per semplicità, il requisito dell'accettazione dell'opera:
C ∨ (R ∧ ¬M) → ¬G
con C, R e G che indicano, come prima, la conoscenza del vizio, la sua riconoscibilità e la garanzia. La mala fede ricompare, ma con un compito diverso: impedire all'appaltatore di far valere la riconoscibilità del vizio.
Torniamo infine alla vendita, alla norma che vi svolge la stessa funzione, l'art. 1491. Anche qui la garanzia non è dovuta se il compratore conosceva i vizi o se questi erano facilmente riconoscibili, salvo, in quest'ultimo caso, che il venditore abbia dichiarato che la cosa ne era esente:
C ∨ (R ∧ ¬D) → ¬G
dove D è la dichiarazione del venditore. Della mala fede qui non c'è traccia: la dichiarazione tutela il compratore anche se resa in perfetta buona fede.
Se proviamo a mettere a confronto, anche solo visivamente, queste formule, gli isomorfismi di prima crollano: la corrispondenza che allinea una coppia di norme non regge sull'intera disciplina. Le singole regole, atomisticamente considerate, si somigliano; il modo in cui sono tra loro molecolarmente collegate, no.
Mi viene in mente - ma solo come suggestiva metafora, per restare nel campo della fisica - il problema del principio cosmologico. Il principio afferma che, su scala sufficientemente grande, l'universo è omogeneo e isotropo: uguale in ogni punto e in ogni direzione. Eppure, nella nostra esperienza, nulla sembra confermarlo. Se mi guardo intorno, nel mio ufficio, distinguo perfettamente un sopra e un sotto, una destra e una sinistra: niente è omogeneo, niente è isotropo. Se però potessi allargare lo sguardo fino a scale enormi, oltre un centinaio di megaparsec (circa trecento milioni di anni luce), vedrei la materia distribuirsi in modo uniforme. E se potessi stringerlo fino alla scala degli atomi, troverei un'uniformità, sebbene di altro genere: ogni atomo di idrogeno è identico a ogni altro, ovunque si trovi. È alle scale intermedie, compresa la nostra, che le differenze si vedono. Fermiamo però qui la metafora, senza forzarla oltre, e torniamo al nostro lavoro.
L'«armonia» che vede il giurista sembra dunque consistere non in un unico isomorfismo logico, ma in una rete di corrispondenze parziali e funzionali. Gli isomorfismi ci sono, da “lontano” e da “vicino”; ciò che manca, alla “scala intermedia”, è una corrispondenza unica e coerente tra gli elementi dell'intera disciplina.
Ma allora la Cassazione sbaglia?
Ovviamente la conclusione non può essere questa. Il punto è un altro: «armonia» giuridica e «isomorfismo logico» non sono la stessa cosa. Quando il giurista riconosce un’analogia tra discipline diverse, compie operazioni che il linguaggio naturale rende quasi invisibili. Stabilisce quali caratteristiche siano rilevanti e quali differenze possano essere trascurate; ricostruisce concetti impliciti; collega disposizioni diverse; considera funzionalmente equivalenti formulazioni non identiche. La logica, invece, è spietata: se una condizione compare da una parte e non dall’altra, quella differenza resta.
La formalizzazione può quindi rivelare differenze che una lettura in linguaggio naturale tende a comprimere. Due norme possono sembrarci quasi identiche e tuttavia possedere architetture differenti. Ma può accadere anche il contrario: due norme appartenenti a istituti lontani potrebbero risultare logicamente isomorfe una volta eliminate le etichette linguistiche.
Questo ci porta a una distinzione più generale. La logica formale ci dice se una conclusione segue necessariamente da determinate premesse; il ragionamento giuridico deve però compiere un’operazione ulteriore e preliminare: decidere quali fatti e quali differenze siano giuridicamente rilevanti, quali norme debbano essere lette insieme e quando due situazioni possano essere trattate come analoghe. È precisamente in questo passaggio che la sola logica non basta.
È qui, senza bisogno di contrapporre logica e diritto, che trovo interessante, tra i molti che si sono occupati di questi argomenti, il lavoro di Chaïm Perelman e Lucie Olbrechts-Tyteca. Nel loro Trattato dell’argomentazione del 1958 distinguono la dimostrazione formale, nella quale la conclusione deriva dalle premesse secondo regole logiche definite, dall’argomentazione, che mira a ottenere o rafforzare l’adesione dell’uditorio alle tesi proposte.
Nella dimostrazione possiamo avere:
A → B
A
∴ B
È il classico modus ponens: se A implica B e A è vero, allora B segue. Qui non c’è da persuadere l’interprete della bontà del passaggio logico: una volta accettate le premesse, è la forma stessa dell’argomento a imporre la conclusione.
Quando invece la Cassazione afferma che una soluzione è «armonica» rispetto a quelle elaborate per altri contratti, sta facendo qualcosa di più. Riconosce che situazioni appartenenti a istituti differenti sono sufficientemente simili sotto alcuni aspetti, ritenuti giuridicamente rilevanti, da giustificare soluzioni coerenti. Ma quali aspetti siano rilevanti, e quali differenze possano essere trascurate, non lo decide la forma logica da sola: è il risultato di interpretazione e argomentazione.
Forse è qui uno dei limiti strutturali dei vecchi sistemi esperti giuridici. Cercavano di trasformare il diritto in una gigantesca macchina deduttiva, ma il problema non consiste soltanto nell’applicare correttamente le regole una volta formalizzate. Consiste già nel decidere come formalizzarle senza perdere ciò che il giurista considera rilevante, e nel mantenere quella formalizzazione al passo con interpretazioni, eccezioni e collegamenti sistematici.
Gli LLM fanno, almeno fenomenologicamente, qualcosa di quasi opposto: operano direttamente sul linguaggio naturale, sul contesto, sulle somiglianze e sulle relazioni semantiche, senza richiedere che l’intero dominio venga preventivamente trasformato in un immenso albero di regole.
Questo, tuttavia, non significa affatto che la formalizzazione sia diventata inutile. Potrebbe essere vero esattamente il contrario.
Proprio perché la logica è meno indulgente del linguaggio naturale, può mostrarci ciò che il linguaggio naturale tende a nascondere. Può rendere visibile una condizione aggiuntiva che avevamo quasi inconsciamente trascurato; può rivelare che due discipline considerate «armoniche» non hanno esattamente la stessa architettura; può consentirci di distinguere una somiglianza linguistica da una vera identità strutturale.
Resta allora una considerazione più generale: il diritto non si lascia interamente racchiudere nella forma della logica. Non per una sua imperfezione, ma per la natura del compito che gli è affidato. Il giurista non riceve tutte le premesse già ordinate: deve riconoscerle nella complessità dei fatti, interpretare i testi, scegliere le differenze che contano e costruire le analogie che reggono. Deve, soprattutto, dare una misura alla composizione di interessi in conflitto. La logica può custodire la coerenza di questo percorso; non può, da sola, stabilire quali ragioni debbano guidarlo.