<< pagina principale < ······················ << articoli < ······················


I sillogismi categorici col Prolog

di Roberto Ricci

1.

Un sillogismo è un particolare schema di ragionamento e un sillogismo categorico si applica alle proposizioni categoriche, espressioni le cui strutture possono essere assimilate alle seguenti quattro:

A. 'tutti gli X sono degli Y'

E. 'tutti gli X sono dei non Y' ( equivale a 'nessun X è Y')

I. 'alcuni X sono degli Y'

O. 'alcuni X sono dei non Y'

Le proposizioni che hanno strutture di tipo A ed E si dicono, inoltre, universali, rispettivamente affermative e negative, mentre quelle di tipo I ed O si dicono, inoltre, particolari, rispettivamente affermative e negative. In un sillogismo categorico le premesse sono proposizioni categoriche che hanno un termine, cioè soggetto o predicato, in comune; la conclusione è una proposizione categorica che ha per soggetto il soggetto della seconda premessa e per predicato il predicato della prima, termini non comuni.

Un esempio di sillogismo categorico, del tipo detto Barbara, è:

tutti gli uomini sono mortali,

tutti i greci sono uomini

quindi tutti i greci sono mortali.

Un altro esempio, del tipo detto anche Darii, è: tutti gli spartani sono guerrieri, alcuni greci sono spartani quindi alcuni greci sono guerrieri. Spesso i sillogismi vengono rappresentati con schemi come:

tutti gli uomini sono mortali
tutti i greci sono uomini 
————————————————————————
tutti i greci sono mortali. 

Aristotele per primo studiò in modo sistematico queste forme di ragionamento individuando 19 sillogismi categorici corretti, ma il loro numero può essere ampliato fino a comprenderne 24.

Per elencarli in maniera sintetica si ricorre ad una classificazione che li distingue in 4 figure a seconda della disposizioni dei termini.

figure

1 2 3 4
...Z...X

...Y...Z

...Y...X

...X...Z

...Y...Z

....Y...X

...Z...X

...Z...Y

...Y...X

...X...Z

...Z...Y

...Y...X

 

Ad esempio i sillogismi del tipo Barbara o quelli del tipo Darii sono della prima figura.

Un esempio di sillogismo della terza figura è: tutti i greci sono uomini, alcuni greci sono spartani quindi alcuni spartani sono uomini. In conseguenza i sillogismi categorici validi possono essere rappresentati nella tabella seguente:

  1^modo 2^modo 3^modo 4^modo 5^modo 6^modo
1 figura: A
A

A
E
A

E
A
I

I
E
I

O
A
A

I
E
A

O
2 figura: E
A

E
A
E

E
E
I

O
A
O

O
E
A

O
A
E

O
3 figura: A
A

I
I
A

I
A
I

I
E
A

O
O
A

O
E
I

O
4 figura: A
A

I
A
E

E
I
A

I
E
A

O
E
I

O
A
E

O

 

E` interessante osservare ad esempio che:

tutti gli X sono degli Y = non ( alcuni X sono dei non Y )

alcuni X sono degli Y = non ( tutti gli X sono dei non Y )

o soprattutto che ( regole dette di conversione semplice ):

tutti gli X sono dei non Y = tutti gli Y sono dei non X

alcuni X sono degli Y = alcuni Y sono degli X

Si può osservare inoltre che la deduzione ( detta reductio ad subalternatam )

tutti gli X sono degli Y 
————————————————————————
alcuni X sono degli Y 

è alla base di alcuni dei sillogismi categorici validi sopra elencati. Oggi, invece, tale assunto non è condiviso: 'tutti gli X sono Y' viene considerata vera anche se non ci sono X, mentre 'alcuni X sono Y' risulterebbe falsa.

Aristotele mostrò che tutti i sillogismi categorici validi potevano essere ridotti a quelli della prima figura. Negli anni venti-trenta di questo secolo il logico polacco Lukasiewicz ha messo in evidenza come la teoria aristotelica dei sillogismi categorici sia un semplice esempio di sistema assiomatico- deduttivo, in cui gli assiomi sono costituiti dai sillogismi della prima figura mentre tra le regole figurano quelle della riduzione alla subalterna, della conversione semplice e del ragionamento per assurdo.

 

 

2.

In Prolog possiamo rappresentare le proposizioni categoriche ad esempio nella forma

sono(<quantificatore>(<termine>),<termine>)

essendo

<quantificatore> ::= tutti / alcuni

<termine> ::= <identificatore> / non (<identificatore>)

Così, ad esempio, la proposizione 'tutti gli uomini sono mortali' si rappresenterebbe con:

sono(tutti(uomini),mortali).

Possiamo rappresentare inoltre la base di conoscenza relativa alle regole di ragionamento in maniera assai compatta:

regola :- 
	sono(tutti(Y),X), /* reductio ad subalternatam */ 
	not sono(alcuni(Y),X), 
	assert(sono(alcuni(Y),X)). 
regola :- 
	sono(tutti(Y),non(X)), /* conversione semplice */ 
	not sono(tutti(X),non(Y)), 
	assert(sono(tutti(X),non(Y))). 
regola :- 
	sono(alcuni(Y),X), /* conversione semplice */ 
	not sono(alcuni(X),Y), assert(sono(alcuni(X),Y)). 
regola :- 
	sono(tutti(Z),X), 
	sono(tutti(Y),Z), 
	not sono(tutti(Y),X), 
	assert(sono(tutti(Y),X)). /* sillogismo BARBARA */ 
regola :- 
	sono(tutti(Z),X), 
	sono(alcuni(Y),Z), 
	not sono(alcuni(Y),X), 
	assert(sono(alcuni(Y),X)). /* sillogismo DARII */ 

Le regole rappresentano schemi di ragionamento elementare e consentono di aggiungere alla base di conoscenze, mediante il predicato predefinito 'assert(...)' che vuol dire appunto "asserisci ...", una nuova proposizione categorica , ciò nel caso vi siano le premesse opportune e non sia già stata dedotta quella stessa conclusione. Infine:

deduci :- ripeti, not regola. 

è il predicato, senza argomenti come 'regola' e come 'ripeti', definito più sotto, che permette di ripetere se possibile l'applicazione di qualcuna delle regole alle proposizioni categoriche via via dedotte. ripeti. ripeti :- ripeti. Così, ad esempio, si può colloquiare con l'automa nel modo seguente:

?- assert(sono(tutti(greci),uomini)), assert(sono(alcuni(greci),spartani)). 
yes 

in modo da fornire all'automa Prolog una prima base di fatti; su questa base compirà le deduzioni dopo che l'utente avrà formulato la richiesta:

?- deduci. 
yes 

A questo punto il colloquio può proseguire con l'interrogazione finalizzata ad ottenere visione di tutte le conclusioni ottenute:

?- sono(Soggetto,Predicato). 
Soggetto = tutti(greci) Predicato = uomini 
Soggetto = alcuni(greci) Predicato = spartani 
Soggetto = alcuni(spartani) Predicato = greci 
Soggetto = alcuni(spartani) Predicato = uomini 
Soggetto = alcuni(uomini) Predicato = spartani 
Soggetto = alcuni(greci) Predicato = uomini 
Soggetto = alcuni(uomini) Predicato = greci 
Soggetto = alcuni(uomini) Predicato = uomini 

Escludendo invece dalla base di conoscenza la regola di 'reductio ad subalternatam' si otterrebbero le seguenti risposte:

Soggetto = tutti(greci) Predicato = uomini 
Soggetto = alcuni(greci) Predicato = spartani 
Soggetto = alcuni(spartani) Predicato = greci 
Soggetto = alcuni(spartani) Predicato = uomini 
Soggetto = alcuni(uomini) Predicato = spartani 

Oppure, asserendo che 'tutti gli ateniesi sono greci' e 'nessuno spartano è ateniese' con

?- assert(sono(tutti(ateniesi),greci)), assert(sono(tutti(spartani),non(ateniesi))).

alla domanda

?- sono(Soggetto,Predicato). 

si può ottenere la risposta:

Soggetto = tutti(ateniesi) Predicato = greci 
Soggetto = tutti(spartani) Predicato = non(ateniesi) 
Soggetto = alcuni(ateniesi) Predicato = greci 
Soggetto = alcuni(spartani) Predicato = non(ateniesi) 
Soggetto = tutti(ateniesi) Predicato = non(spartani) 
Soggetto = alcuni(ateniesi) Predicato = non(spartani) 
Soggetto = alcuni(greci) Predicato = ateniesi 
Soggetto = alcuni(non(ateniesi)) Predicato = spartani 
Soggetto = alcuni(non(spartani)) Predicato = ateniesi 
Soggetto = alcuni(greci) Predicato = greci 
Soggetto = alcuni(non(spartani)) Predicato = greci 
Soggetto = alcuni(greci) Predicato = greci 
Soggetto = alcuni(greci) Predicato = non(spartani) 
Soggetto = alcuni(non(ateniesi)) Predicato = non(ateniesi) 
Soggetto = alcuni(non(spartani)) Predicato = non(spartani) 

Invece, senza la reduction ad subalternatam si avrebbe soltanto:

Soggetto = tutti(ateniesi) Predicato = greci 
Soggetto = tutti(spartani) Predicato = non(ateniesi) 
Soggetto = tutti(ateniesi) Predicato = non(spartani) 

Per dimostrare che dalla base di conoscenza descritta si possono inferire tutti gli altri sillogismi categorici validi basterà verificare caso per caso.