Contents Next

Chapter 1   Introduzione

Nel 1989, Tim Berners Lee, che lavorava al CERN, Ginevra, scrisse una proposta [Ber89] in cui teorizzava la nascita di quello che sarebbe diventato il World Wide Web (WWW). È bene non dimenticare che tale proposta aveva come fine principale quello della diffusione, indicizzazione e facilità di creazione di documenti scientifici.

La successiva, drammatica esplosione del WWW è ormai storia quotidiana. Nonostante il successo ottenuto, però, le idee di Tim Berners Lee sembrano avere dato solo tiepidi risultati proprio nel campo di applicazione a cui erano mirate, ovvero quello della conoscenza scientifica, specie nell'ambito delle scienze esatte. Attualmente, infatti, la maggior parte dei documenti matematici o fisici che si trovano in rete sono disponibili esclusivamente in formati non ipertestuali e non orientati al contenuto (esempio: PostScript) che ne rendono difficoltosa la catalogazione e la ricerca.

In particolare, in ambito matematico, sarebbe auspicabile avere a disposizione larghe librerie di conoscenza (definizioni, teoremi, assiomi) da utilizzare durante lo sviluppo di proprie teorie. Le operazioni di ricerca immaginabili su tali librerie dovrebbero essere estremamente più sofisticate di quelle su documenti generici. Alcuni esempi potrebbero essere: I problemi che hanno impedito fino ad ora la creazione di tali librerie sono di due nature distinte:
  1. Problemi ``tecnologici'' legati alla mancanza di formati orientati al contenuto per la codifica di espressioni matematiche.
  2. Problemi ``fondazionali'' e di formalizzazione della matematica (e delle altre scienze esatte)
Nella prossime due sezioni introdurremo ciascuna classe di problemi e le soluzioni attualmente disponibili; successivamente verranno presentati gli obiettivi di questo lavoro e i lavori correlati.

1.1   L'eXtensible Markup Language

Possiamo individuare due tipologie di formati di file: quelli orientati al contenuto e quelli orientati alla presentazione. Nei primi, usualmente proprietari, l'informazione viene memorizzata in maniera strutturata in modo da facilitarne l'elaborazione. Per la resa del documento sono richieste specifiche applicazioni in grado di interpretarne il formato. Al contrario, i formati di file orientati alla presentazione, come HTML e PostScript, mantengono esclusivamente quella parte di informazione utile alla resa dei documenti. La minore espressività rispetto ai formati orientati al contenuto viene ripagata con la possibilità di avere programmi standard (browser) con i quali accedere ad informazioni di natura completamente eterogenea.

Entrambe le soluzioni sono ovviamente insoddisfacenti: i formati orientati al contenuto portano alla proliferazione di software proprietario ed impediscono la creazione di strumenti, come per esempio motori di ricerca, in grado di lavorare in maniera uniforme sui vari documenti. I formati orientati alla presentazione rendono difficoltosa o impossibile la successiva rielaborazione dell'informazione, nonché la sua catalogazione. Ciò nonostante, presentano alcune caratteristiche interessanti, fra cui l'essere standard aperti, che ne facilitano la diffusione e portano allo sviluppo di un gran numero di strumenti software in grado di interoperare esclusivamente grazie all'adozione di un formato comune.

La necessità di dotare i formati orientati al contenuto delle stesse qualità di quelli orientati alla presentazione ha portato all'idea di utilizzare come formati di memorizzazione istanze di uno stesso metalinguaggio: SGML (Standard Generalized Markup Language, [ISO8879]) è un (meta)linguaggio di markup proposto nel 1986 come standard internazionale per la definizione di metodi device-independent e system-independent per la rappresentazione di informazione testuale in formato elettronico. È possibile scrivere un unico parser per tutti i linguaggi non ambigui istanze di SGML, dove ogni istanza è caratterizzata da una propria sintassi (SGML prescrive il formato di descrizione della sintassi, mentre la semantica viene determinata dalle applicazioni).

SGML fu probabilmente in anticipo sui tempi: la scarsità di memoria e di banda forzarono il metalinguaggio a prevedere istanze il più possibile compatte e non ridondanti e questo complica sia la descrizione della loro sintassi, sia l'implementazione dei parser SGML. Una diretta conseguenza fu la scarsa adozione dello standard, anche se talune sue istanze, in primis HTML e DocBook, hanno riscosso notevoli successi.

Il 10 Febbraio 1998, il World Wide Web Consortium1 (W3C) emana la raccomandazione [W3Ca] in cui viene descritto l'eXtensible Markup Language (XML). XML è un sottoinsieme di SGML, semplificato dalla (presunta) caduta delle motivazioni per le restrizioni sulle dimensioni dei file. In pochi mesi XML è diventato uno standard consolidato e ha dato l'avvio alla definizione, da parte del W3C, di particolari istanze di XML che sono a loro volta standard per l'elaborazione di documenti XML (descrizione di metadati, trasformazioni fra documenti XML, linguaggi di rendering istanze di XML, etc.). L'idea, destinata in pochi anni a modificare radicalmente il WWW, prevede la possibilità di accedere via rete ai documenti XML, nei quali viene mantenuta tutta l'informazione disponibile. Qualora sia richiesta la resa di tale informazione, l'autore fornirà un secondo documento XML con la descrizione della trasformazione da applicare al primo per ottenerne una rappresentazione in un qualche formato di rendering, istanza di XML, la cui semantica sia nota al browser. Per tutte le operazioni diverse dalla resa, come indicizzazioni ed elaborazioni, l'agente potrà operare direttamente sul documento in formato XML, se ne conosce la semantica, e sui metadati ad esso associati, descritti a loro volta in XML.

XML può quindi essere utilizzato proficuamente per il problema che ci interessa, ovvero la codifica di documenti scientifici formali. Inoltre, esiste un linguaggio di rendering, istanza di XML, chiamato Mathematical Markup Language (MathML) [W3Cb], che è una raccomandazione del W3C per la rappresentazione di contenuto scientifico sul WWW. In particolare, MathML ha come oggetto la resa di espressioni matematiche, sia dal punto di vista prettamente visivo (acustico per non vedenti), sia, con diverse limitazioni, da quello contenutistico.

MathML e XML in genere non sono, però, sufficienti alla creazione di librerie matematiche in grado di fornire le funzionalità di accesso auspicate in precedenza. Per esempio, per risolvere query del tipo ``Ricerca tutti i teoremi direttamente applicabili a partire dalle seguenti ipotesi'', è necessario che non solo le espressioni, ma anche le definizioni e le deduzioni matematiche siano codificate in un particolare sistema logico noto all'agente, affinché questo possa controllarne la veridicità o usarle per nuove deduzioni. In altre parole, è necessaria una semantica formale dei ragionamenti matematici. Questa è la materia di studio della Logica Formale e della Teoria delle Dimostrazioni, branche della scienza studiate da matematici e informatici che traggono origine dallo studio degli aspetti fondazionali della matematica stessa e il cui principale risultato pratico consiste nell'implementazione di proof-assistant.

1.2   I Proof-Assistant

MacKenzie in [Mac95] ha tracciato la storia del theorem proving, della quale vengono riportati i momenti salienti nel prossimo paragrafo; seguirà una critica ai proof-assistant attualmente in uso.

1.2.1   La storia del theorem proving

A partire dalla metà degli anni '50, nacque l'idea di utilizzare i computer per l'automazione del ragionamento umano nell'ambito della dimostrazione di teoremi. In particolare i primi sforzi, dovuti a Newell e Simon [NS56], sono mirati all'emulazione del modo di procedere dei matematici: è l'alba dell'intelligenza artificiale. Una seconda corrente di pensiero, peraltro di maggior successo, si sviluppa pochi anni dopo a partire dalle idee introdotte all'inizio del secolo nell'ambito della logica formale ad opera di Frege, Russel e Whitehead. In questo contesto, non ha nessuna rilevanza la somiglianza del modo di procedere dell'uomo con quello della macchina, che può quindi effettuare ricerche più o meno esaustive all'interno del sistema formale. Nonostante i primi successi dovuti a Gilmore [Gil60] e Wang [Wan60], presto fu evidente come l'esplosione combinatorica rendesse la ricerca impraticabile. Il passo successivo, dovuto a Prawitz [Pra60] e Kanger, fu quello di ritardare il più possibile l'istanziazione delle variabili, sostituendole con opportune variabili libere. Questa e altre migliorie si rivelarono comunque insoddisfacenti, spingendo la ricerca verso nuovi approcci.

Le correnti di lavoro appena discusse sono entrambe basate su un meccanismo di ricerca della prova di tipo top-down, che parte dal teorema da dimostrare effettuando una ricostruzione della prova fino a giungere agli assiomi. Nel 1964, Maslow [Mas64] presenta un nuovo metodo, chiamato metodo inverso, per la ricerca di dimostrazioni cut-free nel calcolo dei sequenti. Il vantaggio di questo metodo di tipo bottom-up, che parte dagli assiomi per giungere alla tesi (goal) da provare attraverso l'applicazione dei passi di inferenza, era quello di rendere l'istanziazione meno costosa. Appena un anno dopo, Robinson [Rob65] sviluppa un diverso metodo di tipo bottom-up, chiamato risoluzione, basato sull'unificazione. L'efficacia del nuovo metodo rispetto ai precedenti causò un vero boom nell'ambito dell'authomated theorem proving. Presto si vide che anche la risoluzione risultava insoddisfacente nel contenere l'esplosione combinatorica quando il numero di assiomi e lemmi aumentavano. La delusione, facilmente prevedibile, portò negli anni '70 al quasi totale abbandono di ulteriori ricerche in questo ambito; inoltre, si ebbe la ripresa della mai cessata polemica fra i sostenitori dell'approccio basato sulla logica formale e quelli dell'approccio basato sull'imitazione del ragionamento umano, che accusavano la risoluzione di essere cieca e stupida non sfruttando alcuna conoscenza sul dominio del problema.

Alla fine degli anni '70, l'enfasi si riversò dalla ricerca automatizzata alla verifica della correttezza delle dimostrazioni: nacque il concetto di proof-assistant, ovvero di uno strumento che accompagni l'utente passo passo durante le dimostrazioni, controllandone e garantendone la correttezza. I primi esempi notevoli furono i sistemi del progetto Automath sviluppato da de Brujin [dBr80], nei quali vennero formalizzate parti significative della matematica. Il risultato più famoso è quello raggiunto da Bentham Jutting [Jut94] che riuscí a formalizzare la Grundlagen theory di Landau.

Avendo abbandonato l'obiettivo della ricerca automatica delle prove, che diventa più difficile con l'aumentare dell'espressività della logica, si può aumentare quest'ultima. In particolare, assumono grande risalto sia le logiche costruttive che il problema della rappresentazione delle dimostrazioni, aspetto spesso non considerato nei dimostratori automatici. Per esempio, mentre in quelli basati sull'unificazione ci si limita a verificare la correttezza di un enunciato cercando una confutazione alla sua negazione in una logica non costruttiva, nel sistema Automath si ricorre al l-calcolo per la codifica delle prove, che vengono sviluppate in una logica costruttiva, eventualmente ampliata con l'assioma, classico, (" P.( P® ^) ® P) o uno ad esso equivalente. Il citato l-calcolo, introdotto all'inizio del secolo dal logico Alonzo Church, è un calcolo i cui unici oggetti (termini) sono funzioni. Nel 1958 venne scoperto da Curry un isomorfismo fra la versione tipata del calcolo e il frammento implicativo della logica costruttiva di Brouwer, indipendentemente riscoperto da Howard nel 1968 [GLT89]. L'isomorfismo, noto come corrispondenza di Curry-Howard, mette in relazione i tipi del calcolo con gli enunciati della logica proposizionale e i termini con le prove; alla riduzione nel l-calcolo corrisponde l'eliminazione dei tagli nelle prove. La possibilità di estendere l'isomorfismo a logiche sempre più espressive (calcolo dei predicati, logiche di ordine superiore) e corrispondenti calcoli [Bar92], fanno di questi un prezioso strumento, sul quale si basano nuove applicazioni della logica in ambito informatico, come l'estrazione di programmi dalle corrispondenti prove di correttezza e terminazione [Pau89].

Nel 1972, Robin Milner introduce LCF (Logic for Computable Functions), un proof-assistant interattivo basato sull'isomorfismo di Curry-Howard. Nella successiva versione del 1977, chiamata Edinburgh LCF, viene introdotto un sofisticato e innovativo meccanismo per la definizione di tattiche, basato su un metalinguaggio chiamato ML (Meta Language). Una tattica è una procedura in grado di costruire in maniera top-down il l-termine che prova un goal dati i l-termini che provano nuovi goal proposti dalla tattica. L'architettura di LCF prevedeva un nucleo di modeste dimensioni, chiamato proof-checker, per verificare la correttezza delle prove; in virtù dell'isomorfismo, il proof-checker è un type-checker per i corrispondenti l-termini. Intorno a questo nucleo vengono assemblate le altre funzionalità del proof-assistant: la correttezza dell'implementazione di queste, e in particolare dell'implementazione delle varie tattiche, non influenza quella delle prove, che vengono sempre validate dal proof-checker.

L'architettura di LCF è rimasta pressoché invariata e viene oggi utilizzata dalla maggior parte dei proof-assistant, i quali adottano logiche differenti (e con diversi gradi di espressività) a seconda del compito per i quali sono stati sviluppati. Coq, Lego e Hol sono solo alcuni esempi di proof-assistant attualmente in uso basati sulla medesima architettura.

1.2.2   I moderni proof-assistant

Recentemente sono stati sviluppati svariati proof-assistant, basati su differenti paradigmi logici. A differenza dei primi sistemi che erano tutti general-purpose, oggi esistono strumenti mirati ad una particolare categoria di dimostrazioni, quali quelle per la verifica di sistemi hardware o software, oppure mirati a particolari compiti, quali l'estrazione di codice. Nonostante la relativa diffusione di questi strumenti, essi hanno mancato l'obiettivo della creazione di grosse librerie di conoscenza formalizzata e inoltre l'integrazione con il WWW risulta completamente assente. Le principali cause sono di diversa natura:
  1. Eccessiva difficoltà di scrittura delle dimostrazioni
  2. Eccessiva difficoltà (se non impossibilità) di comprensione delle dimostrazioni
  3. Eccessiva dimensione delle prove
  4. Problemi fondazionali
  5. Problemi di natura notazionale
  6. Problemi tecnologici
Analizziamo separatamente ognuno di questi aspetti:

Difficoltà di scrittura delle dimostrazioni

Il meccanismo della ricerca all'indietro delle prove utilizzando opportune tattiche è quello che si è rivelato più promettente. Ciò nonostante, le prove sviluppate nei sistemi formali tendono ad essere enormi e la procedura di dimostrazione estremamente più puntigliosa di quella normalmente utilizzata nelle prove cartacee. Se questo è accettabile in contesti, come quello della verifica di sistemi hardware, dove i benefici risultati dalla certezza della correttezza di dimostrazioni formali ripagano il tempo e la fatica spesi durante la ricerca della dimostrazione, può non esserlo in generale. Per esempio, almeno fino a quando non saranno disponibili grosse librerie e strumenti di ricerca su di esse, non esistono reali vantaggi per un matematico nell'utilizzo di questi strumenti. Infatti, oggi la quasi totalità degli utilizzatori di questi strumenti sono studiosi di informatica.

Attualmente, non sembrano esserci soluzioni per la difficoltà della scrittura delle dimostrazioni, anche se lo sviluppo di tattiche ancora più sofisticate e quello di grosse librerie di lemmi facilmente consultabili on-line potrebbero alleviare il problema.

Difficoltà o impossibilità di comprensione delle dimostrazioni

Una volta conclusa la ricerca di una prova, all'utente restano due ``oggetti'': il primo è la sequenza di tattiche utilizzate; il secondo è la rappresentazione interna della prova, che assumiamo nella discussione essere l-termini come avviene nei sistemi basati sull'isomorfismo di Curry-Howard. I l-termini sono descrizioni delle prove estremamente dettagliate e fedeli. Il livello di dettaglio, però, è cosí elevato da rendere le prove spesso enormi e illeggibili. Inoltre, solo chi conosce approfonditamente il sistema logico in uso, conoscenza non necessaria per trovare le prove, è in grado di interpretare il l-termine. Per questo motivo, la sequenza delle tattiche usate è usualmente considerata la prova cercata. Ciò nonostante, il contenuto informativo di una tattica dipende dal contesto (goal e ipotesi disponibili) in cui viene invocata. Pertanto, solo ridigitando interattivamente l'intera sequenza è possibile coglierne il significato. Inoltre, non esiste una vera correlazione fra il livello di dettaglio delle tattiche e quello necessario e sufficiente a comprendere una prova: talvolta più tattiche sono necessarie per dimostrare fatti presumibilmente ovvi; altre volte tattiche molto potenti trovano automaticamente dimostrazioni per niente immediate.

Esistono attualmente tre approcci al problema. Il primo prevede lo sviluppo di tattiche sempre più ``naturali'', che corrispondano ai passi logici delle dimostrazioni. Attualmente, questo approccio sembra aver ottenuto solamente un successo molto limitato. Il secondo è l'utilizzo di strumenti automatici in grado di sintetizzare prove in linguaggio pseudo-naturale a partire dai l-termini e/o dalla sequenza di tattiche. Per dimostrazioni non banali, i risultati sono chiaramente insoddisfacenti, con parti della dimostrazione sovradettagliate e altre sottodettagliate, per non citare l'artificialità delle descrizioni, specie in presenza di logiche complesse. Il terzo approccio, adottato dal sistema Mizar2, non prevede la ricerca di prove in maniera top-down tramite tattiche; bensí le prove vengono già scritte in linguaggio pseudo-naturale. In effetti, Mizar non si basa sull'isomorfismo di Curry-Howard e utilizza una logica che è molto meno espressiva di quella utilizzata dagli altri proof-assistant3. Ciò nonostante, Mizar è un sistema creato con il preciso intento di raggiungere un certo successo nell'ambiente matematico, che risponde a problemi effettivamente sentiti dai matematici e che non richiede la conoscenza di particolari nozioni per essere utilizzato. Inoltre, nel sistema sono integrate procedure euristiche di ricerca automatica delle prove semplici che permettono di scrivere dimostrazioni spesso allo stesso livello di dettaglio delle corrispondenti prove cartacee. Queste caratteristiche, che ben ripagano la scarsa espressività del sistema logico e la conseguente impossibilità di usarlo, per esempio, per la verifica e l'estrazione da prove di programmi, hanno determinato un enorme successo del sistema: attualmente esistono circa 400 articoli matematici sviluppati in Mizar con più di 20.000 teoremi dimostrati.

Nel corso di questa tesi verrà proposto un ulteriore approccio che vuole essere una sintesi della naturalezza delle prove scritte in Mizar con l'utilizzo di sistemi basati sull'isomorfismo di Curry-Howard.

Dimensione delle prove

I l-termini che rappresentano le prove possono rapidamente diventare enormi, specie quando nelle dimostrazioni è necessario provare uguaglianze e disuguaglianze di espressioni complesse. Talvolta, l'eccessiva dimensione dei termini è dovuta ad ``errori'' non eliminati nel processo di dimostrazione, come vicoli ciechi o inutili espansioni di definizioni. Questi errori, facilmente evitabili, passano spesso inosservati in quanto l'utente non vede, se non su richiesta, il l-termine che viene prodotto automaticamente dall'applicazione delle tattiche. Altre volte, la grandezza delle prove è dovuta alla non disponibilità di lemmi necessari durante la dimostrazione. In questi casi, vi è la tentazione per l'utente a provare l'istanza del lemma direttamente nel corso della dimostrazione, ottenendo una prova che contiene anche quella del lemma. Anche in questo caso è sufficiente prestare attenzione per evitare il problema. Infine, esistono molti altri casi in cui le prove risultano enormi a causa di ridondanze richieste dal sistema logico inevitabili da parte dell'utente [NL98]. Il problema è particolarmente sentito ed è destinato a diventare un importante tema di ricerca nel prossimo futuro.

Problemi fondazionali

Definizioni di uno stesso concetto date all'interno di sistemi formali distinti sono diverse e incompatibili. Per esempio, nonostante Coq e Lego si basino su varianti molto simili dello stesso calcolo, le definizioni date in un sistema non possono essere utilizzate nell'altro. In un certo senso, le definizioni o dimostrazioni in un sistema logico hanno la parvenza di codifiche. Quindi, per poter riutilizzare una definizione data in un altro sistema, l'unico modo è quello di ricodificarla.

È possibile creare procedure automatiche per la conversione fra sistemi logici distinti? La risposta sembra essere affermativa, anche se finora tentativi in questo senso [Har96] hanno raggiunto risultati insoddisfacenti. Il principale problema potrebbe essere costituito dalla differenza fra le definizioni compilate e quelle ``naturali'' che si aspetterebbe l'utente. Per esempio, nei sistemi che prevedono abstract data type (formalismi basati sulla type-theory di Martin-Löf), il tipo dei numeri naturali è un tipo di dato induttivo i cui unici costruttori sono lo zero e l'operatore successore. Nei sistemi basati sulla set-theory, invece, lo zero corrisponde all'insieme vuoto e l'operatore successore è definito a partire dall'unione insiemistica. È sicuramente possibile ``compilare'' la seconda definizione nei sistemi del primo tipo una volta sviluppata una teoria degli insiemi; quella che si ottiene, però, non è certamente la definizione induttiva.

Anche questo problema è particolarmente sentito ed è già un importante tema di ricerca, destinato ad acquisire una sempre maggiore attenzione nel prossimo futuro. Ad accrescerne la difficoltà, contribuiscono problemi tecnologici che attualmente non permettono ai proof-assistant di comunicare fra loro, complicando l'implementazione della traduzione automatica. La risoluzione di questi problemi tecnologici è quindi un risultato importante pienamente raggiunto in questa tesi.

Problemi notazionali

Il fatto che definizioni di uno stesso concetto date all'interno di sistemi formali distinti siano diverse è spesso del tutto irrilevante per l'utente, in particolar modo per quanto riguarda la notazione. Per esempio, indipendentemente dalla particolare codifica della definizione di appartenenza di un elemento x ad un insieme I, si vorrebbe utilizzare la notazione standard x Î I. L'associazione di questa notazione alla definizione, a differenza di quanto si potrebbe pensare, non è banale. In Coq, per esempio, un insieme I di elementi di tipo U è definito come la sua funzione caratteristica di tipo U ® Prop. Pertanto, la notazione x Î I deve essere utilizzata per l'applicazione di I ad x ogni volta che I di tipo U ® Prop è intesa come funzione caratteristica4.

Nasce quindi il problema della rimatematizzazione delle definizioni formali, ovvero dell'associazione dell'usuale notazione matematica bidimensionale ai concetti codificati nei sistemi formali. Questo problema è sicuramente centrale nel contesto delle librerie matematiche elettroniche e sarà ampiamente affrontato in questa tesi.

Problemi tecnologici

Gli attuali proof-assistant sono tipici prodotti delle architetture software di tipo application-centric. In queste architetture, ampiamente diffuse fino alla prima metà degli anni '90, l'enfasi è posta sull'applicazione come strumento centralizzato di accesso all'informazione. I dati non sono importanti di per sé, ma esclusivamente perché esiste l'applicazione in grado di compiere elaborazioni su di essi. Per questo motivo, vengono tipicamente utilizzati formati di file proprietari, che vengono cambiati ad ogni versione del programma. Questo comporta che l'unico modo per aggiungere nuovi tipi di elaborazioni sui dati consiste nell'aggiunta di nuove funzionalità all'applicazione. Come conseguenza, i programmi application-centric diventano presto molto complessi da estendere e da usare e presentano molti feature scorrelati fra loro e raramente utilizzati. Infine, quando cessa lo sviluppo dell'applicativo, diventa impossibile accedere a tutta l'informazione contenuta nei file in formato proprietario. Per esempio, tutta la matematica formalizzata nei sistemi Automath è andata completamente perduta.

Dalla metà degli anni '90, sotto la spinta dal successo del WWW, è stato sviluppato un nuovo modello di architettura software, chiamato document-centric o content-centric, che risolve i problemi del modello application-centric. Nel modello content-centric l'enfasi è posta sull'informazione, che deve essere memorizzata in un formato standard, indipendente dall'applicazione e possibilmente estensibile, com'è XML. L'utilizzo di questi formati è sufficiente alle applicazioni per poter interagire fra loro; come conseguenza scompaiono le grandi applicazioni monolitiche, sostituite da programmi cooperanti molto più piccoli e semplici che possono essere scritti da team differenti nel linguaggio di programmazione più adatto al tipo di elaborazione. Quando necessario, architetture più raffinate, tipiche dei sistemi distribuiti, possono essere sfruttate per aumentare il livello di interazione delle diverse applicazioni. L'adozione di XML come meta-formato standard per le architetture content-centric permette, inoltre, lo sviluppo di applicazioni in grado di lavorare in maniera uniforme su tipi di dati eterogenei.

Mentre è in corso di aggiornamento gran parte del software in circolazione per adottare il modello document-centric, il mondo dei proof-assistant, costituito da molti sistemi con ristrette nicchie d'utenza, sembra restare indifferente. Uno degli scopi principali di questa tesi è proprio quello di introdurre in questo mondo il paradigma document-centric, attraverso la creazione di nuovi strumenti e il recupero e la valorizzazione dell'informazione codificata nei sistemi attualmente in uso.

1.3   Il progetto HELM

HELM5 (Hypertextual Electronic Library of Mathematics) è un progetto a lungo termine sviluppato presso l'Università di Bologna dal Prof. Andrea Asperti e dal suo gruppo di ricerca6. Lo scopo è la progettazione e l'implementazione di strumenti per lo sviluppo e lo sfruttamento di larghe librerie ipertestuali e distribuite di conoscenza matematica formalizzata che comprendano tutto il materiale già codificato nei sistemi attuali. Questa tesi è un resoconto dettagliato delle scelte progettuali ed implementative effettuate nel corso dell'ultimo anno di sviluppo del sistema HELM7.

1.3.1   Requisiti di HELM

I principali requisiti del progetto, motivati dalle osservazioni esposte nelle precedenti sezioni, sono:
  1. Utilizzo di formati standard. Tutti i documenti che formano la libreria e i metadati su di essi devono essere descritti in XML. Per le elaborazioni sui documenti devono essere utilizzati, quando possibile, standard già definiti (per esempio, XSLT per le trasformazioni fra file XML).
  2. Distribuzione e replicazione. La libreria deve essere distribuita e, per motivi di efficienza e fault-tolerance, deve prevedere l'esistenza di più copie di uno stesso documento. Per motivi di rilocabilità e bilanciamento del carico, devono essere utilizzati nomi logici per individuare gli elementi della libreria. Conseguentemente, devono essere definiti e realizzati opportuni meccanismi per la risoluzione dei nomi.
  3. Facilità di pubblicazione e accesso. La disponibilità di uno spazio HTTP o FTP deve essere l'unico requisito per poter contribuire alla libreria. In particolare, non si può fare nessuna assunzione sul server utilizzato per la pubblicazione dei documenti, come la possibilità di mandare in esecuzione particolari programmi. Analogamente, per poter consultare la libreria, dovrà essere fornita un'interfaccia Web usufruibile con un comune browser. Interfacce di altro tipo potranno essere fornite per elaborazioni che richiedano una maggiore interattività, come la scrittura di nuovi teoremi.
  4. Modularità. Gli strumenti utilizzati per accedere e contribuire alla libreria dovranno essere il più modulari possibile. In particolare, il livello dell'interazione con l'utente deve essere chiaramente separato da quello dell'elaborazione per permettere l'implementazione di diversi tipi di interfacce (interfacce testuali, grafiche e Web).
  5. Sfruttamento dell'informazione già codificata. Devono essere implementati strumenti che permettano di esportare verso la libreria HELM l'informazione già codificata nei proof-assistant esistenti. Il progetto non ha scopi fondazionali: non si propone un unico formalismo logico in cui codificare tutta la libreria. Al contrario, i formalismi esistenti non devono essere eliminati o modificati, ma standardizzati descrivendoli in formato XML.

1.3.2   Architettura generale di HELM



Figura 1.1: Architettura generale del progetto HELM
 
In figura 1.1 viene brevemente schematizzata l'architettura generale di HELM, che verrà spiegata in dettaglio nei successivi capitoli, in cui verranno motivate le scelte effettuate. La nuvola al centro, etichettata con XML, rappresenta la libreria distribuita di documenti matematici. In alto sono elencati alcuni degli attuali proof-assistant: le linee tratteggiate simboleggiano i meccanismi di esportazione da questi sistemi verso i formati standard usati da HELM. Il primo livello di moduli in basso comprende tool in grado di lavorare sul formato XML, come, per esempio, motori di ricerca. Fra questi, alcuni reimplementano in maniera modulare le funzionalità usualmente presenti nei proof-assistant, come il type-checking o la type-inference.

Una classe importante di tool è quella responsabile della trasformazione dei documenti in un formato di resa appropriato: è durante questa trasformazione che deve avvenire il processo di rimatematizzazione del contenuto, basato sulla scelta, da parte dell'utente, di un'opportuna notazione. In conformità al primo requisito della sezione 1.3.1, l'utente può specificare le notazioni da utilizzare sotto forma di fogli di stile XSLT8. Processori XSLT standard possono quindi essere utilizzati per applicare le trasformazioni. I fogli di stile di notazioni matematiche formano una seconda libreria, anch'essa distribuita, rappresentata in figura dalla nuvola etichettata con XSLT.

L'ultimo livello in basso è quello delle interfacce, che verranno costruite assemblando uno o più moduli del livello soprastante, fornendone un accesso uniforme.

1.3.3   Lo sviluppo di HELM

Per il successo del progetto è necessario che la comunità dei proof-assistant contribuisca attivamente alla creazione della libreria e dei tool di gestione. In particolare, è auspicabile che i moduli di esportazione dai sistemi esistenti siano realizzati dai rispettivi autori. Per il momento abbiamo scelto di realizzare noi quello per Coq (vedi capitolo 2), uno dei proof-assistant più avanzati, al fine di esportarne la libreria standard per potere sviluppare e testare le altre componenti del progetto.

Lo sviluppo di HELM è stato articolato in cinque fasi:
  1. Definizione del formato XML per i documenti descritti nel sistema logico di Coq (CIC, Calculus of (Co)Inductive Constructions); progettazione e implementazione del modulo di esportazione da Coq; definizione del modello di distribuzione della libreria e realizzazione dei tool necessari.
  2. Progettazione e realizzazione di un CIC proof-checker per i file della libreria.
  3. Definizione del meccanismo per l'associazione della notazione ai documenti, tramite l'uso di stylesheet; scrittura di stylesheet per i documenti della libreria; implementazione di interfacce, basate sul proof-checker e su processori XSLT standard, per la consultazione della libreria.
  4. Definizione dei metadati associati ai documenti. Implementazione dei meccanismi di indicizzazione e ricerca.
  5. Studio sperimentale di metodi per la rappresentazione delle prove.
Le prime tre fasi sono state affrontate con successo, anche se le relative implementazioni sono da considerarsi esclusivamente prototipi. Le ultime due fasi sono in lavorazione e verranno presumibilmente completate nel corso del 2001.

1.4   Lavori correlati

Il progetto HELM si pone nel punto di intersezione fra gli studi su digital-library, web-publishing e proof-reasoning, presentando numerosi elementi di novità rispetto allo stato dell'arte in ognuno di questi campi. Nel campo delle digital-library, il progetto più affine è EULER9. EULER è un progetto co-finanziato dalla Commissione Europea nel settore Telematics for Libraries il cui sviluppo è iniziato nel 1998 e dovrebbe terminare entro il 2001. L'obiettivo di EULER è fornire un servizio per la ricerca di risorse informative sulla matematica quali libri, pre-print, pagine Web, abstract e spogli di articoli e riviste, periodici, rapporti tecnici e tesi. Attraverso l'interfaccia di ricerca di EULER è possibile interrogare simultaneamente un insieme di basi di dati. In particolare, il progetto si propone di integrare i seguenti tipi di risorse documentarie:
  1. Basi di dati bibliografiche
  2. Cataloghi di biblioteche (OPAC)
  3. Riviste elettroniche prodotte da editori accademici
  4. Server di pre-pubblicazioni e letteratura grigia
  5. Indici di risorse matematiche in rete
Queste risorse sono integrate e messe a disposizione per mezzo di un'interfaccia utente WWW comune, il motore di ricerca EULER, e l'uso del protocollo Z39.50 per l'interrogazione simultanea delle diverse basi dati che condividono lo stesso schema basato sullo standard di metadati Dublin Core. La prima differenza rispetto al nostro progetto è che EULER si occupa di tutte le risorse matematiche esistenti, mentre HELM considera esclusivamente i documenti di matematica formale. Inoltre, poiché i documenti indicizzati da EULER sono tipicamente in formati orientati alla rappresentazione, come PostScript o PDF, le modalità di ricerca possibili saranno decisamente inferiori a quelle previste da HELM. È ovviamente possibile e ausplicabile l'aggiunta della libreria di HELM alla lista delle risorse catalogate.

Nell'ambito del web-publishing esistono già due standard per la rappresentazione di documenti matematici. Il primo, MathML, è uno standard del World Wide Web Consortium definito per codificare in XML sia il contenuto che la presentazione di espressioni matematiche. Il suo dominio di applicazione si estende dai sistemi per la computer-algebra al publishing, sia Web che cartaceo. Mentre la parte di MathML che si occupa della presentazione può essere efficacemente utilizzata da HELM, quella che codifica il contenuto non è direttamente fruibile per la memorizzazione di matematica formale per almeno due motivi. Il primo è la natura infinitaria della conoscenza matematica, che non può essere colta da alcun linguaggio mancante della possibilità di definire nuovi concetti. Infatti, MathML si pone l'obiettivo di definire un elemento di markup per quasi ogni operazione o entità matematica che venga studiata nelle scuole americane fino ai primi due anni di college inclusi, il che corrisponde alla conoscenza di uno studente europeo che abbia conseguito un livello A o ``baccalaureate''. Per tutte le altre nozioni matematiche, l'unica possibilità è quella di utilizzare un elemento generico, associandogli uno specifico markup di presentazione ed il URI di un documento, la cui forma non viene specificata, che ne descriva la semantica. Ciò è altamente insufficiente per la codifica di matematica formale, anche se fornisce un interessante linguaggio semi-formale utilizzato proficuamente in HELM durante la fase di rimatematizzazione. La precedente osservazione non si applica alla parte di MathML per la descrizione della presentazione delle espressioni in quanto questa è facilmente codificabile attraverso un numero finito di elementi di markup, come dimostra facilmente il linguaggio di LATEX. Il secondo motivo per cui la parte di MathML per la descrizione del contenuto non è adatta alla codifica della matematica formale, è che ad ogni entità matematica viene associata la sua semantica standard, che non è definita univocamente in un contesto formale. Per esempio, all'uguaglianza di MathML corrispondono nei sistemi formali diverse uguaglianze, come quelle di Leibniz a livello dei termini e dei tipi o quelle estensionale e intensionale per le funzioni. Durante la fase di rimatematizzazione, comunque, è naturale identificarle tutte con l'uguaglianza semi-formale di MathML, a patto che sia possibile risalire alle loro definizioni formali.

Il secondo standard per la codifica del contenuto matematico nell'ambito del web-publishing è OpenMath, che si preoccupa di complementare lo standard MathML definendo una semantica semi-formale per gli elementi contenutistici. L'uso consigliato di OpenMath in ambito MathML è, infatti, quello di fornire il formato dei documenti referenziati da MathML per specificare la semantica per gli elementi contenustici introdotti dagli utenti. Se si è interessati esclusivamente al contenuto, OpenMath può essere utilizzato anche separatamente da MathML. Infatti, l'obiettivo dichiarato di OpenMath è ``la rappresentazione di oggetti matematici con la loro semantica, permettendone lo scambio fra programmi, la memorizzazione in database e la pubblicazione sul WWW''. Concretamente, OpenMath si propone di definire un'architettura per lo scambio di espressioni matematiche basata su tre componenti: i frasari (phrasebook), i dizionari di contenuto (content dictionary, CD) e un formato XML di rappresentazione per questi e per le espressioni matematiche. I frasari sono interfacce software per la codifica di espressioni matematiche dal formato MathML/OpenMath a quello interno delle applicazioni orientate al contenuto, quali tool per la computer algebra come Mathematica, Maple o Derive. I content dictionary sono grandi tabelle, ipoteticamente una per ogni teoria matematica, che associano ad ogni entità (funzione, relazione, insieme) una sua descrizione informale e una ``formale'', costituita dalla sua signature. Per esempio, la descrizione informale della funzione quoziente (quotient), è ``Integer division operator. That is, for integers a and b, quotient denotes q such that a=bq+r, with |r| less than |b| and ar positive.''; la sua signature è il tipo Z × Z ® Z dove Z è l'insieme dei numeri interi. Questo tipo di semantica, che possiamo definire al più semi-formale, è sufficiente per lo scambio di informazione matematica in ambiti dove non si è interessati alle prove, ma esclusivamente alle espressioni; gli obiettivi di HELM sono però molto più ambiziosi e richiedono una semantica formale sia per i tipi che per i corpi delle definizioni. Pertanto, HELM non può beneficiare della semantica di OpenMath. Nonostante questo, è sicuramente utile, ma non ancora implementato, l'utilizzo di OpenMath nella rappresentazione semi-formale in MathML content utilizzata nel progetto HELM.

Nell'ambito dei proof-assistant, esistono due linee di ricerca che hanno affinità con il progetto HELM. La prima è quella delle interfacce grafiche. In questo ambito, l'obiettivo è lo sviluppo di sistemi in ambiente grafico che aiutino l'utente nella visualizzazione e nella ricerca delle dimostrazioni. Si pone una grossa enfasi sul proof-by-clicking, ovvero sulla possibilità di applicare tattiche semplicemente selezionando il termine su cui agire e, per esempio, selezionando il lemma da applicare. Fra l'altro, il proof-by-clicking solleva l'utente dall'onere di memorizzare la sintassi, spesso complicata, del linguaggio delle tattiche dei vari proof-assistant, creando sistemi utilizzabili per interfacciarsi con proof-assistant differenti. Fra questi sistemi ricordiamo Proof General10, che è sviluppato sotto Emacs e lavora già con diversi proof-assistant fra cui Coq e Lego, e PCoq11 che è un'interfaccia grafica per Coq scritta in Java per motivi di portabilità e finalizzata al proof-by-clicking. Poiché, allo stadio attuale, il progetto HELM non si occupa della ricerca delle dimostrazioni, il confronto può essere effettuato solo nel campo della visualizzazione dei termini e delle prove, dove HELM si propone di raggiungere risultati sicuramente più raffinati.

La seconda linea di ricerca è quella della standardizzazione, a livello tecnologico o fondazionale, dei proof-assistant. In questo ambito sono stati proposti due grossi progetti, QED e MathWeb. QED12, iniziato nel 1994 con la pubblicazione del QED Manifesto [Har94], persegue, come HELM, il fine della creazione di una grande libreria di documenti matematici formalizzati. Per realizzarla, viene proposto un approccio fondazionale mirato alla codifica del contenuto matematico in una logica, detta root logic, sufficientemente espressiva da rappresentare tutta la conoscenza matematica e, al tempo stesso, prossima alla logica ``informale'' delle dimostrazioni cartacee. Il progetto, a cui contribuiscono in maniera determinante gli autori di Mizar, dopo un primo slancio iniziale13 sembra non aver conseguito grossi successi. Il motivo principale è da cercarsi nella difficoltà dell'approccio fondazionale che, sebbene interessante, non permette, almeno per ora, il recupero dell'informazione già codificata in proof-assistant basati su logiche non banali. In mancanza di questo, la proposta si riduce al semplice sviluppo di un nuovo proof-assistant, con in più la complicazione di trovare un largo accordo, sicuramente utopistico, sulla logica da utilizzare come root logic. HELM evita accuratamente di commettere lo stesso errore14, proponendo prima di tutto una standardizzazione a livello tecnologico, comunque propedeutica a qualsiasi studio fondazionale.

Omega è un grosso progetto intrapreso nel 1994 all'Università di Saarland dal gruppo di ricerca del Prof. Jörg Siekmann per affrontare il delicato tema dell'integrazione fra proof-assistant e theorem-prover. Successivamente, le finalità del progetto sono state estese, portando alla nascita del progetto MathWeb15; oggi, MathWeb16 è sicuramente il progetto più simile ad HELM, prevedendo la creazione di una grande libreria distribuita basata su tecnologia XML. Le differenze fra HELM e MathWeb sono comunque molteplici; la loro analisi viene rimandata al paragrafo 8.1 quando HELM sarà già stato descritto in dettaglio.

Nonostante questa tesi sia la prima presentazione esaustiva del progetto HELM, diversi altri lavori sono stati realizzati per descriverne aspetti specifici:
Studio e progettazione di un modello RDF per biblioteche matematiche elettroniche [Ric99] è uno studio preliminare, risalente al 1999, sulla possibilità di codificare i metadati della libreria di HELM nel formato standard RDF. Nonostante l'architettura di HELM descritta in questo lavoro sia stata pesantemente modificata, la parte di lavoro inerente ai metadati rappresenta un ottimo punto di partenza per le future scelte progettuali.
Content Centric Logical Environments [APSSa] è una breve introduzione ai benefici che HELM porterà nell'ambito dei proof-assistant.
Towards a Library of Formal Mathematics [APSSc] presenta l'intero progetto nell'ottica del precedente articolo.
XML, Stylesheets and the Re-mathematization of Formal Content [APSSd] affronta il problema della rimatematizzazione del contenuto formale.
Formal Mathematics in MathML [APSSb] è una descrizione di HELM dal punto di vista del web-publishing, incentrato sull'utilizzo di MathML.

1.5   Organizzazione della tesi

Nel capitolo 2 viene introdotto in dettaglio il sistema formale utilizzato dal proof-assistant Coq. Inoltre, viene data una breve descrizione delle funzionalità di questo e un semplice esempio d'uso.

Nel capitolo 3 viene descritto il modulo che è stato implementato per esportare in XML le teorie scritte in Coq. Inoltre, si descrive l'organizzazione che è stata scelta per i file che compongono la libreria di HELM.

Nel capitolo 4 viene presentato il modello di distribuzione adottato.

Il capitolo 5 descrive brevemente l'implementazione di un proof-checker per i file XML che compongono la libreria.

Il capitolo 6 è interamente dedicato alle trasformazioni utilizzate per associare notazioni alle teorie di HELM.

Il capitolo 7 descrive le interfacce messe a disposizione per la consultazione della libreria.

Infine, il capitolo 8 riassume lo stato attuale del progetto e lo confronta dettagliatamente con MathWeb; per concludere, vengono presentati i possibili sviluppi futuri.

Nel resto di questa tesi vengono assunte la conoscenza da parte del lettore delle tecnologie XML e XSLT e una buona preparazione nel campo della logica formale.


1
http://www.w3c.org
2
http://www.mizar.org
3
Il progetto Mizar fu iniziato circa venti anni fa. La scarsità di documentazione, unita all'utilizzo di codice proprietario, può far nascere sospetti sulla correttezza dell'intero sistema.
4
In Coq è naturalmente possibile definire la funzione appartenenza che, presi in input un insieme I e un elemento x, ritorna il risultato dell'applicazione di I ad x. Quindi si può arguire che, se si vuole la notazione x Î I, allora si deve utilizzare la funzione appartenenza. Anche se in linea di principio questo è giusto, si avrebbe un consistente aumento della dimensione delle prove. Inoltre, in presenza di isomorfismi, l'utilizzo di simili artifizi è pratica comunemente accettata in matematica.
5
http://www.cs.unibo.it/helm
6
I membri attuali sono: Prof. Andrea Asperti, Dott. Luca Padovani, Sig. Claudio Sacerdoti Coen e Dott. Irene Schena.
7
L'idea del progetto risale alla fine del 1997. L'autore contribuisce attivamente al suo sviluppo dall'estate del 1999, quando è stata definita l'architettura generale ed è iniziata la fase implementativa.
8
XSLT è lo standard per la descrizione di trasformazioni fra documenti XML. Un foglio di stile è un documento XSLT che definisce un insieme di regole di trasformazione.
9
http://www.emis.de/projects/EULER/
10
http://zermelo.dcs.ed.ac.uk/proofgen
11
12
http://www-unix.mcs.anl.gov/qed
13
Una prima conferenza fu tenuta nel 1994 ad Argonne, seguita da una seconda a Varsavia nel 1995.
14
Vedi il primo requisito del paragrafo 1.3.1.
15
http://www.mathweb.org
16
Con Omega viene ancora indicato il sotto-progetto mirato al raggiungimento degli obiettivi originari.

Contents Next