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:Tale dichiarazione va inserita all'inizio del programma Prolog in cui si definiscono le relazioni in oggetto.