Uno studio sulla negazione in Programmazione Logica

2017 
La programmazione logica e un paradigma di programmazione che adotta costrutti logici sia per rappresentare che per elaborare l’informazione. Un programma logico e eseguito "ponendogli delle domande", dette query, e viene determinato, eseguendo un proof engine, a seconda che queste domande siano conseguenze del programma o meno. L’utilizzo delle regole e della sintassi della logica classica al primo ordine e un ovvio candidato a tale scopo, tuttavia i risultati di incompletezza ci dicono che, mentre potremmo essere in grado di dire quando una query segue, non possiamo dire in generale quando non lo fa: questo e il problema della negazione. In questo contesto si e quindi costretti a rinunciare alla completezza (in senso classico) della logica classica a favore di una efficienza sulle possibili query. Prolog e uno dei linguaggi di programmazione logica piu utilizzati, basato sulla logica classica al primo ordine. Escludendo la negazione, e in grado di calcolare esattamente relazioni ricorsivamente enumerabili; tuttavia, se aggiungiamo la negazione, dovremmo aspettarci di avere complementari di relazioni ricorsivamente enumerabili, che potrebbero essere non ricorsivamente enumerabili, e quindi non gestibili da Prolog [per maggiori informazioni sugli insiemi ricorsivamente enumerabili, vedasi Appendice A]. Per questo motivo in Prolog viene aggiunta una versione piu debole di negazione, la negazione come fallimento, in cui si conclude non X se X non e una conseguenza. L’obiettivo di questo studio e un’analisi delle problematiche causate dall’aggiunta della negazione, e una ricerca di metodi, per lo piu teorici, per poterle gestire.
    • Correction
    • Source
    • Cite
    • Save
    • Machine Reading By IdeaReader
    0
    References
    0
    Citations
    NaN
    KQI
    []