L’informatica nella scuola usando il PROLOG (seconda puntata)

L’informatica nella scuola  usando il  PROLOG (seconda puntata)

 L’informatica nella scuola

usando il  PROLOG
(seconda puntata)

(“Scuola e Didattica”, Editrice La Scuola,
Brescia, Anno XXXIV,  n.8 (15 gennaio 1989)

  

Seconda parte: ELABORAZIONE DELLE CONOSCENZE

Dopo aver
presentato, nella prima parte dell’articolo pubblicata sul n. 5, i primi
elementi del linguaggio PROLOG, l’Autore presenta qui ulteriori nozioni che
possono rappresentare il bagaglio minimo per affrontare un affascinante viaggio
nel mondo della programmazione logica
(La redazione)

 

Abbiamo visto che il computer può essere utilizzato per
archiviare informazioni: queste vengono conservate e restituite così come sono
state immagazzinate. Ora prenderemo in esame il computer come elabora­tore di
informazioni. Cominciamo intanto a familiarizzare con un’altra frase PROLOG. Ci
consentirà di tradurre il periodo:

         se la mamma sta in casa, Marco studia la lezione.

E’un periodo ipotetico, detto del primo tipo o della realtà:
l’evento espresso dalla proposizione reggente (Marco studia la lezione) si
verifica soltanto a condizione che, nell’IPOTESI che si verifichi prima e
realmente l’evento espresso dalla dipendente (la mamma sta in casa). Ecco come
si può tradurre in PROLOG:

       studia(marco,lezione):- sta_in(mamma,casa).

dove il simbolo :- si legge “SE”, o meglio “E’ VERO SE”.

 

studia(marco,lezione)   è detto TESTA della REGOLA.

sta_in(mamma,casa)      è detto CORPO della REGOLA.

 

Analogamente:

    Italiano: se il babbo ha comprato il gelato,  Giorgio lo
mangia.

   
PROLOG:mangia(giorgio,gelato):- ha_comprato(babbo,gelato).

 

In Italiano, la frase condizionale precede, in genere, la
conclusione; in PROLOG si ha il contrario. Se in italiano le condizioni sono più
di una, allora in PROLOG il CORPO della REGOLA sarà formato da più frasi
semplici separate fra loro da una virgola. Esempio:

    Italiano:   se la mamma sta in casa e lo controlla, Marco
studia la lezione.

    PROLOG:  studia(marco,lezione):-sta_in(mamma,casa),

                                                        
controlla(mamma,marco).

Solo se tutte e due le condizioni saranno verificate, Marco
studierà la lezione (indipendentemente dall’ordine con cui si susseguono le
condizioni stesse). Le REGOLE permettono di allargare la BASE DI CONOSCENZA,
precedentemente costituita solo da FATTI, aumentando le potenzialità di
rappresentazione e di interrogazione.

Come primo esempio, riprendiamo in esame l’AMBIENTE dell’altra
volta, nel quale figurava la seguente base di FATTI:

     abita_a(marco,roma).

     abita_a(giovanni,milano).

     abita_a(louis,parigi).

     abita_a(tiziana,roma).

     è_capitale_di(roma,italia).

     è_capitale_di(parigi,francia).

 

Vogliamo mettere il computer in grado di rispondere alla
domanda:

          chi abita in una capitale?

La domanda non è direttamente traducibile in PROLOG,
nel_nostro_AMBIENTE, in quanto nessuno dei due predicati di cui
disponiamo, cioè abita_a ed è_capitale_di, singolarmente preso, permette di
tradurre in PROLOG tale frase-domanda. La questione può essere risolta in più
modi.

Primo. Aggiungiamo i seguenti nuovi FATTI, coerenti con i
prece­denti:

        abita_in_capitale(marco).

        abita_in_capitale(louis).

        abita_in_capitale(tiziana).

A questo punto il computer alla

        Domanda: abita_in_capitale(Persona).

risponde ovviamente

        Persona = marco

        Persona = louis

        Persona = tiziana.

In effetti però, procedendo in questo modo, noi stessi abbiamo
allargato la BASE DI CONOSCENZA, in quanto noi stessi abbiamo effettuato
materialmente la ricerca delle persone che abitano in una capitale, escludendo,
ad esempio, Giovanni.

Secondo. C’è un modo più rapido, elegante e vantaggioso
per noi: far cercare al computer, in vece nostra, i nomi delle persone che
rispon­dono al requisito di abitare in una capitale. Come? Insegnando al
computer, attraverso una REGOLA, che cosa vuol dire che “una perso­na abita in
una capitale”. E lo dobbiamo insegnare, ovviamente, sulla base degli “schemi di
frase” che già fanno parte dell’AMBIENTE, cioè utilizzando i predica­ti abita_a
ed è_capitale_di. In altre parole, occorre esprimere il “nuovo” in termini di
vecchia conoscenza.

Diremo, ad esempio, che chi abita in una capitale è una persona
che abita in una città e questa città è capitale di un qualche stato.

Cioè:

          Se una persona abita in una città

          e questa città è capitale di uno stato (qualsiasi),

          allora quella persona abita in una capitale.

Ora possiamo tradurre il tutto in PROLOG mediante la REGOLA:

          abita_in_capitale(Persona):- 
abita_a(Persona,Città),è_capitale_di(Città,_).

dove la virgola sta al posto della congiunzione “e” (ed il
trattino “_” sta, in questo caso, per “stato qualsiasi”).

 

In pratica, è stato introdotto nella BASE DI CONOSCENZA il nuovo
predicato abita_in_capitale, non (come nel primo modo) attraverso una
elenca­zione di FATTI, ma come TESTA di una REGOLA, il cui CORPO è costituito da
predicati già noti. Alla                           

           Domanda : abita_in_capitale(Persona)

il computer cercherà, in vece nostra, in base a quanto gli
abbiamo insegnato, le persone abitanti in capitali e risponderà:

          Persona=marco

          Persona=louis

          Persona=tiziana

Questa volta però la fatica di selezionare le persone che
rispondono al requisito richiesto è stata addossata al computer!

In effetti, noi ci siamo limitati a dare una definizione, cioè
abbiamo descritto che cosa vuol dire abitare in una capitale, o, in altre
parole, abbiamo precisato qual è il requisito che contraddistingue la persona
che abita in una capitale:

una persona P abita in una capitale, se questa persona P abita
in una città C e questa città C è capitale di uno stato (interpretazione
dichiarativa).

Per il computer la stessa REGOLA suona invece così:

per trovare le persone che abitano in una capitale, devo
anzitutto individuare, per ogni persona la città dove abita e quindi devo
veri­ficare se questa città è capitale di uno stato qualsiasi (inter­pretazione
procedurale).

 

Seguiamo qualche altro esempio: si potrà intravedere quanto sia
vasto il campo di applicazione delle REGOLE nella rappresentazione e nella
elaborazione delle conoscenze.

Consideriamo il seguente AMBIENTE:

     mangia(leone,carne).

     mangia(uomo,carne).

     mangia(cane,carne).

     mangia(mucca,erba).

     mangia(dromedario,erba).

     mangia(uomo,erba).

     mangia(gatto,carne).

 

Potremmo arricchire la BASE DI CONOSCENZA aggiungendo alcune
REGOLE di facile lettura:

     è_erbivoro(Animale):-  mangia(Animale,erba).

     è_carnivoro(Animale):- mangia(Animale,carne).

     è_onnivoro(Animale):-  mangia(Animale,carne),

                                         mangia(Animale,erba).

 

A questo punto si possono porre domande, utilizzando anche i
nuovi predicati è_erbivoro, è_carnivoro, è_onnivoro definiti mediante

REGOLE: il computer risponderà …. a tono.

         

Altro AMBIENTE. Siamo a scuola.

     insegna(ricci,inglese,classe_2A).

     insegna(giorgi,matematica,classe_1B).

     insegna(rippi,italiano,classe_1B).

     frequenta(giorgio,classe_1B).

     frequenta(maria,classe_2A).

     frequenta(mirco,classe_1B).

 

Potremmo, ad esempio, scrivere una REGOLA che ci permetta di
individuare gli insegnanti di un dato ragazzo:

 

è_insegnante_di(Professore,Ragazzo):-
insegna(Professore,_,Classe),

                                                           
frequenta(Ragazzo,Classe).

Cioè: un professore è insegnante di un ragazzo, se quel
professore insegna (una materia qualsiasi) in una classe e il ragazzo frequenta
quella stessa classe.

In altre parole, è essenziale che esista_una_classe nella
quale opera­no entrambi, professore ed alunno.

Se poniamo la

                         Domanda:
è_insegnante_di(Professore,mirco)

avremo come risposta:

                         Professore=giorgi

                         Professore=rippi

Ma la stessa REGOLA può essere utilizzata anche ….all’inverso:

                         Domanda: è_insegnante_di(rippi,Ragazzo)

avremo come risposta:

                         Ragazzo=giorgio

                         Ragazzo=mirco

Ed ancora: se, nella domanda, entrambi gli argomenti sono
variabili, avremo di ritorno tutte le coppie possibili insegnante-alunno.

Analogamente si potrebbe definire “compagni di classe” ecc. In
pratica non esiste un limite alla varietà e al numero di REGOLE che si possono
introdurre su una BASE DI CONOSCENZA. Tanto più che la TESTA di una REGOLA può
essere utilizzata nel CORPO  di un’altra REGOLA e, addirit­tura, è possibile
costruire una REGOLA che utilizza, fra le condizio­ni, cioè nel CORPO, anche se
stessa (in versione di differente livel­lo).

Non possiamo trattarne più diffusamente, in questa sede. Qui ci
siamo limitati a mostrare alcuni esempi di applicazione del PROLOG per
descrivere ed elaborare conoscenze: l’AMBIENTE è un frammento di conoscenza,
espresso me­diante entità e relazioni. Singo­lare è il fatto che noi,
nell’introdurre le entità e le relazio­ni, possiamo continuare a “pensare in
modo ordinario”, cioè tenendo d’oc­chio e la correttezza sintattica e la
correttezza semantica: il com­puter, che manipolerà tali relazioni operando
esclusivamente sul piano sintatti­co, darà risposte che risultano essere
corrette (come abbiamo già avuto modo di vedere) anche rispetto alla semantica.

A questo proposi­to, è senz’al­tro suggestivo il seguente
AMBIENTE:

     è_mortale(P):-è_uomo(P).

     è_uomo(socrate).

 

La seconda frase si traduce: Socrate è un uomo.

La prima frase, tradotta alla lettera: se P è un uomo, allora P
è mortale. Cioè: Chi è uomo, è mortale. Ed anche: Ogni uomo è mortale. Infine:
Tutti gli uomini sono mortali.

In altre parole, il nostro AMBIENTE è costituito dalla
traduzione in PROLOG delle due premesse del famoso sillogismo aristotelico.

Ebbene se poniamo la domanda:

                              è_mortale(Chi)

si ha la risposta: Chi=socrate.

Il computer, che parla PROLOG, risponde ad ogni frase-domanda
utilizzando una regola di deduzione o inferenza più ampia di quella del
sillogismo. Anch’essa è tratta dalla logica: una scienza molto antica, che ha
conosciuto in questi ultimi due secoli un nuovo vigore, per l’apporto di più
ambiti disciplinari, soprattutto della matematica.

Lo vedremo la prossima
volta.

Condividi


Per rimanere aggiornato su tutte le novità iscriviti alla newsletter

Quando invii il modulo, controlla la tua inbox per confermare l'iscrizione

Privacy Policy