Fondamenti di Intelligenza Artificiale M
A.A. 2010-2011

Istruzioni per l'uso di SICStus Prolog


Questo documento vuole fornire qualche indicazione e sottolineare alcuni aspetti a proposito del sistema SICStus Prolog, pur non volendo e non potendo proporsi in alternativa al manuale del sistema.


Avvio di SICStus Prolog

Il sistema viene avviato, al prompt della shell, dal comando sicstus. All'avvio il sistema si identifica e presenta il proprio prompt, con un output del tipo:
SICStus 3 #3: Fri Dec 20 10:50:05 MET 1996
| ?-



Caricamento di programmi

I programmi Prolog possono essere caricati nel sistema mediante il comando consult:
| ?- consult(parenti).
{consulting /export/users/michela/parenti.pl...}
{/export/users/michela/parenti.pl consulted, 9 msec 12000 bytes}
yes
| ?-
Il sistema consulta il programma parenti.pl (si noti che l'estensione è fissa e non va specificata) cercandolo nella directory corrente (ad es. /export/users/michela/). In alternativa, è possibile specificare un file Prolog al momento dell'avvio del sistema:
lia01% sicstus -l parenti
SICStus 3 #3: Fri Dec 20 10:50:05 MET 1996
{compiling /export/users/michela/parenti.pl...}
{/export/users/michela/parenti.pl compiled, 55 msec 13552 bytes}
| ?-
Per caricare più programmi o ricaricare uno stesso programma (magari modificato da un'altra shell) è comunque necessario il comando consult.


Tracing

Il comando trace consente di seguire passo passo la risoluzione delle clausole; tale modalità può poi essere disabilitata con il comando notrace.


Operatori aritmetici e di confronto

Gli operatori aritmetici e di confronto che si rendono talvolta necessari possono avere simboli diversi da quelli definiti nel Prolog standard. È sempre bene consultare il manuale prima di utilizzare un nuovo operatore, per evitare di perdere tempo ed energie cercando errori che non esistono e che sono dovuti semplicemente ad un significato del simbolo diverso da quello atteso.


Dichiarazioni dinamiche

Quando si voglia utilizzare i predicati assert e retract occorre porre l'attenzione su una particolarità del sistema SICStus: per ottimizzare le prestazioni il sistema compila i programmi (o meglio le basi di conoscenza) che vengono caricate. È quindi evidente il problema che si pone nel tentare di modificare a run-time un insieme di regole e fatti già compilati. Affinchè sia possibile aggiungere o togliere clausole (o fatti) ad una relazione è necessario dichiarare che tale relazione è da ritenersi dinamica, cioè non definita staticamente a priori. Ad esempio, la seguente dichiarazione previene la compilazione delle clausole relative alle relazioni member/2 e empty/1:
:- dynamic user: member/2,
user : empty/1.
Tale dichiarazione va inserita all'inizio del programma Prolog in cui si definiscono le relazioni in oggetto.


SICStus Prolog User's Manual

Si ricorda nuovamente che la guida di riferimento rimane comunque il manuale utente fornito a corredo del sistema disponibile in laboratorio oppure in remoto all'indirizzo: http://www.sics.se/ps/sicstus.html
Last Update: Monday, March 29, 2010 10:29 . Contact webmaster of this site