SlideServe
Menu
Préférences
© SlideServe · v2026

FOLExpr Analyzer

carlow avatar
25 diapositives · 393 Views · Sep 13, 2014

Linguaggi e Modelli Computazionali LS - Prof E.Denti. FOLExpr Analyzer. Un riconoscitore di teorie della logica del primo ordine per la loro conversione in forma a clausole. Scopo del Lavoro. Ricevere in input teorie in logica del primo ordine ( F irst O rder L ogic )

FOLExpr Analyzer - slide 1
01 / 25FOLExpr Analyzer
1 / 17

Télécharger la présentation

FOLExpr Analyzer
Une image / un lien ci-dessous est fourni (tel quel) pour télécharger la présentation

Politique de téléchargement : le contenu du site vous est fourni TEL QUEL pour votre information et votre usage personnel ; il ne peut être vendu, concédé sous licence ni partagé sur d’autres sites sans l’accord de son auteur.Le contenu vous est fourni TEL QUEL, pour votre information et votre usage personnel uniquement. Téléchargez la présentation en cliquant sur ce lien. Lors du téléchargement, si vous ne parvenez pas à télécharger une présentation, l’éditeur a peut-être supprimé le fichier de son serveur.Pendant le téléchargement, si vous ne parvenez pas à obtenir une présentation, le fichier a peut-être été supprimé par l’éditeur.

F I N

Plus de contenu associé

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

  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 l’algoritmo 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 Lexer 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 Parser: simbolo non terminale Termine • Dai lucidi del corso di Intelligenza Artificiale Parser: simbolo non terminale Atomo

  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 ;

  7. Analisi del Problema • 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 • Dai lucidi del corso di Intelligenza Artificiale Parser: simbolo non terminale Letterale

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

  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 l’interprete

  11. Grammatica iniziale: Il Parser Associatività a sx: ok! date le proprietà delle operazioni logiche Regole di precedenza descritte nei lucidi rispettate! 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 } Non è LL(k)! Ricorsione SX in FBF, DISG e CONG 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 funzione e costante: inglobate in TERM

  12. Verso una grammatica LL(1) FBF ::= DISG | FBF (→|↔) DISG DISG ::= CONG | DISGor CONG CONG ::= UNARIO | CONGand UNARIO • Per poter applicare l’analisi ricorsiva discendente si può eliminare la ricorsione sinistra da: • Ad Esempio: FBF ::= DISG | DISG Z ::= DISG (ε|Z) Z ::= (→|↔) DISG { (→|↔) DISG } FBF ::= DISG | FBF (→|↔) 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 } • Ora abbiamo un riconoscitore deterministico • Ora la complessità del riconoscitore cresce linearmente con la lunghezza della teoria in ingresso

  13. Sintassi Concreta Ora associatività a destra! Va ancora bene per la semantica delle operazioni logiche (anche se non serve perchè non calcolo il valore di verità) 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 }

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

  15. L’interprete

  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 NegReductionVisitor VarRenamingVisitor

  18. Analisi del problema QuantificationsAHeadVisitor CongPrenexFormVisitor 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

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

  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 dell’unificazione e del principio di risoluzione • Piano collaudo • Implementazione • Visitor che genera l’AST e trasformazioni degli altri visitor sull’AST, non sul output del parser • Multithreading – soprattutto per GUI e pattern Observer

  25. Fine