La presentazione è in caricamento. Aspetta per favore

La presentazione è in caricamento. Aspetta per favore

FOLExpr Analyzer Un riconoscitore di teorie della logica del primo ordine per la loro conversione in forma a clausole Linguaggi e Modelli Computazionali.

Presentazioni simili


Presentazione sul tema: "FOLExpr Analyzer Un riconoscitore di teorie della logica del primo ordine per la loro conversione in forma a clausole Linguaggi e Modelli Computazionali."— Transcript della presentazione:

1 FOLExpr Analyzer Un riconoscitore di teorie della logica del primo ordine per la loro conversione in forma a clausole Linguaggi e Modelli Computazionali LS - Prof E.Denti

2 Scopo del Lavoro Ricevere in input teorie in logica del primo ordine (First Order Logic) Riconoscerne la correttezza sintattica Basandosi sulle regole specificate nel corso di Intelligenza Artificiale della Prof.Mello Progettando una grammatica che generi il linguaggio che comprende le espressioni della logica del primo ordine (organizzate in teorie) Implementando un riconoscitore per il linguaggio Eseguire analisi e trasformazioni sintattiche come la trasformazione in forma a clausole Secondo lalgoritmo a 8 step studiato nel corso

3 Analisi del Problema I lucidi del corso di Intelligenza Artificiale introducono la logica del primo ordine, descrivendola come linguaggio partendo infatti dalla sintassi, in particolare dal suo alfabeto. Possibili categorie di token Possibili keywords

4 Analisi del Problema Dai lucidi del corso di Intelligenza Artificiale Lexer Funzioni n-arie e predicati sono sintatticamente identici, cambia solo la loro semantica nel senso di vero/falso (fuori dallo scope del progetto) Funzioni n-arie e predicati sono sintatticamente identici, cambia solo la loro semantica nel senso di vero/falso (fuori dallo scope del progetto)

5 Analisi del Problema Dai lucidi del corso di Intelligenza Artificiale Parser: simbolo non terminale Atomo Parser: simbolo non terminale Atomo Parser: simbolo non terminale Termine Parser: simbolo non terminale Termine

6 Analisi del Problema Dai lucidi del corso di Intelligenza Artificiale NON TERMINALE FBF: Potrebbe essere lo scopo della grammatica, ma per analizzare TEORIE, prima avremo bisogno di: TEORIA :: LINEA {LINEA} LINEA ::= FBF ; NON TERMINALE FBF: Potrebbe essere lo scopo della grammatica, ma per analizzare TEORIE, prima avremo bisogno di: TEORIA :: LINEA {LINEA} LINEA ::= FBF ;

7 Analisi del Problema Dai lucidi del corso di Intelligenza Artificiale Attenersi in modo troppo stretto alle regole specificate nel linguaggio umano si potrebbe giungere a una grammatica ambigua come questa : TEORIA :: LINEA {LINEA} LINEA ::= FBF ; FBF ::= FBF (||Λ|V) FBF FBF ::= ~ FBF | ( | ) var FBF FBF ::= ATOMO Parser: simbolo non terminale Letterale Parser: simbolo non terminale Letterale

8 Analisi del Problema Dai lucidi del corso di Intelligenza Artificiale Interprete: due possibili manipo1lazioni La parte di grammatica derivata direttamente dal testo non va bene ma del resto siamo ancora in fase di analisi...

9 Analisi del Problema Dai lucidi del corso di Intelligenza Artificiale Interprete: Ci sarà un visitor per questo Interprete: Oltre che trasformazioni, si potrebbero fare anche analisi come questa

10 Analisi del Problema Altre analisi sintattiche da poter fare con linterprete

11 Grammatica iniziale: Il Parser THEORY ::= ONE_LINE | { ONE_LINE } ONE_LINE ::= FBF semicolon FBF ::= DISG | FBF ( | ) DISG DISG ::= CONG | DISG or CONG CONG ::= UNARIO | CONG and UNARIO UNARIO ::= QUANT | LETTERALE QUANT ::= (forall | exists) var UNARIO LETTERALE ::= ATOMO | not UNARIO ATOMO ::= TERM | open FBF close TERM ::= var | ident { open TERM { comma TERM } close } funzione e costante: inglobate in TERM Non è LL(k)! Ricorsione SX in FBF, DISG e CONG Associatività a sx: ok! date le proprietà delle operazioni logiche Regole di precedenza descritte nei lucidi rispettate! TIPO 2: Self embedding in ATOMO e TERM Se volessimo FBF vuote: FBF DISG | FBF( | )DISG | ε il linguaggio resterebbe di tipo2 perchè si potrebbe eliminare del tutto lε-rule: LINE FBF ; | ; FBF DISG | FBF( | )DISG

12 Verso una grammatica LL(1) Per poter applicare lanalisi ricorsiva discendente si può eliminare la ricorsione sinistra da: Ora abbiamo un riconoscitore deterministico Ora la complessità del riconoscitore cresce linearmente con la lunghezza della teoria in ingresso FBF ::= DISG | FBF ( | ) DISG DISG ::= CONG | DISG or CONG CONG ::= UNARIO | CONG and UNARIO FBF ::= DISG | FBF ( | ) DISG DISG ::= CONG | DISG or CONG CONG ::= UNARIO | CONG and UNARIO FBF ::= DISG | FBF ( | ) DISG Ad Esempio: FBF ::= DISG | DISG Z ::= DISG (ε|Z) Z ::= ( | ) DISG { ( | ) DISG } FBF ::= DISG | DISG Z ::= DISG (ε|Z) Z ::= ( | ) DISG { ( | ) DISG } Sostituendo Z in FBF: FBF ::= DISG (ε| ( | ) DISG { ( | ) DISG }) La notazione EBNF permette di esprimere ε-rules FBF ::= DISG [ ( | ) DISG { ( | ) DISG }] Ma [A{A}]={A} quindi se A=( | ) DISG FBF ::= DISG { ( | ) DISG } Sostituendo Z in FBF: FBF ::= DISG (ε| ( | ) DISG { ( | ) DISG }) La notazione EBNF permette di esprimere ε-rules FBF ::= DISG [ ( | ) DISG { ( | ) DISG }] Ma [A{A}]={A} quindi se A=( | ) DISG FBF ::= DISG { ( | ) DISG }

13 Sintassi Concreta THEORY ::= ONE_LINE | { ONE_LINE } ONE_LINE ::= FBF semicolon FBF ::= DISG { ( | ) DISG } DISG ::= CONG { or CONG } CONG ::= UNARIO { and UNARIO } UNARIO ::= QUANT | LETTERALE QUANT ::= (forall | exists) var UNARIO LETTERALE ::= ATOMO | not UNARIO ATOMO ::= TERM | open FBF close TERM ::= var | ident { open TERM { comma TERM } close } Ora associatività a destra! Va ancora bene per la semantica delle operazioni logiche (anche se non serve perchè non calcolo il valore di verità) Ora associatività a destra! Va ancora bene per la semantica delle operazioni logiche (anche se non serve perchè non calcolo il valore di verità)

14 Grammatica JavaCC Introduzione dei non terminali negazione e var: utile nel visitor VarRenamingVisitor

15 Linterprete

16 Analisi del problema Dimostrazioni in logica dei predicati basate su procedure come Principio di risoluzione Forward chaining e Backward Chaining (usato dal prolog) che operano (prop. di correttezza e completezza) su teorie in forma a clausole Necessario uno step preliminare di trasformazione in clausole Algoritmo 8 passi Ogni passo un Visitor ClosedFormVisitor ImplicReductionVisitor

17 Analisi del problema VarRenamingVisitor NegReductionVisitor

18 Analisi del problema CongPrenexFormVisitor QuantificationsAHeadVisitor SkolemVisitor

19 Analisi del problema ForallRemoverVisitor Visitors in serie: assumono di essere applicati solo ad espressioni con determinate caratteristiche cioè già visitate e trasformate da visitor precedenti Visitor indipendenti: applicabili sempre, non fanno assunzioni Visitors in serie: assumono di essere applicati solo ad espressioni con determinate caratteristiche cioè già visitate e trasformate da visitor precedenti Visitor indipendenti: applicabili sempre, non fanno assunzioni

20 Architettura Catena di visitor (dallanalisi) Compilatore di espressioni della logica del primo ordine in clausole del primo ordine Manca la costruzione dellAST Dump della stringa, modifiche dove servono maggior sfruttamento possibile del tool javacc Maggiore rapidità di sviluppo - poca efficienza PARSER Input String String A visita A syntax tree input syntax treeA String B visita B syntax treeB.... String n visita n syntax tree n Oggetto VisitResult contenente stringa e syntaxtree

21 Architettura CompilerVisitor, VisitRsult e Factory

22 Architettura Schema globale

23 Un esempio di Visitor

24 Limiti – Caratteristiche non supportate - Future Work Concettualmente Sintassi astratta Implementazione dellunificazione e del principio di risoluzione Piano collaudo Implementazione Visitor che genera lAST e trasformazioni degli altri visitor sullAST, non sul output del parser Multithreading – soprattutto per GUI e pattern Observer

25 Fine


Scaricare ppt "FOLExpr Analyzer Un riconoscitore di teorie della logica del primo ordine per la loro conversione in forma a clausole Linguaggi e Modelli Computazionali."

Presentazioni simili


Annunci Google