Conociendo SWI-Prolog

Hoy conoceremos los comandos más usados en SWI-Prolog, la implementación de código abierto del lenguaje de programación Prolog. Abrimos una terminal y tecleamos los siguientes comandos.

1. Conocer la versión instalada:

$ swipl --version

También está este otro:

$ swipl --abi-version

2. Obtener ayuda:

$ swipl --help

3. Conocer la arquitectura del host:

$ swipl --arch

4. Entrar al shell:

$ swipl

5. Salir del shell:

?- halt.

Supongamos que tenemos el siguiente programa.

holamundo.pl

% Hola, mundo en Prolog
main :- write("Hola, mundo en Prolog!!"),nl,halt.

6. Para cargarlo con SWI-Prolog tecleamos:

$ swipl -l holamundo.pl

Con esto cargamos el programa, y ahora invocamos su ``main`` para ejecutarlo:

?- main.
Hola, mundo en Prolog!!

Otra forma:

$ swipl -f holamundo.pl

Lo ejecutamos:

?- main.
Hola, mundo en Prolog!!

También de esta forma:

?- [mi_programa].

O de esta otra:

?- consult('mi_programa.pl').

7. Recargar automáticamente tras cambios.

?- make.

8. Borrar una definición.

?- abolish(padre/2).

9. Ver ayuda o documentación.

?- help(member).

10. Usar listas y predicados integrado.

?- member(X, [a,b,c]).

11. Trazar la ejecución paso a paso.

?- trace.
?- padre(juan, X).

12. Consultar una regla o hecho.

?- padre(juan, maria).

13. Buscar soluciones múltiples.

?- padre(juan, X).

14. Definir hechos y reglas.

padre(juan, maria).
padre(juan, pedro).
madre(ana, maria).

hijo(X, Y) :- padre(Y, X).

Manos a la obra con un programa Prolog

Teniendo este programa hecho en Prolog. Mostraremos como ejecutarlo con la herramienta SWI-Prolog.

subordinados.pl

% Hechos
subordinados(monica,grabriela).
subordinados(gabriela,ana).
subordinados(gabriela,jose).
subordinados(ana,irene).
subordinados(ana,carlos).
subordinados(jose,lorenzo).
subordinados(jose,lizardo).
subordinados(lorenzo,omar).
subordinados(lizardo,paco).


% Reglas
subordinado(Persona, Subordinado) :-
    subordinados(Persona, Subordinado).

subordinados_de(Persona) :-
    write('Los subordinados de '), write(Persona), write(' son:'), nl,
    subordinado(Persona, Subordinado),
    write(Subordinado), nl,
    fail.
    
subordinados_de(_).

Pasos:

1. Entrar al shell:

$ swipl

2. Cargar el programa.

?- [subordinados].

3. Recargar cambios.

?- make.

4. Consultar hechos.

?- subordinados(gabriela, X).

Salida:

X = ana ;
X = jose.

5. Listar subordinados.

?- subordinados_de(gabriela).

Salida:

Los subordinados de gabriela son:
ana
jose
false.

6. Explorar con traza.

?- trace.
?- subordinados_de(jose).

Verás la traza.

7. Eliminar un predicado.

?- abolish(subordinado/2).

8. Consultar ayuda.

?- help(write).

9. Salir de SWI-Prolog.

?- halt.

¡Hemos visto los comandos más comunes de SWI-Prolog y cómo usarlos en un programa!

Enlaces:

https://www.swi-prolog.org/
Tutorial de Swi-prolog (SWISH)

Comentarios