Logica primo ordine..
Ciao ragazzi,sto avendo difficoltà a tradurre dall'italiano alla logica del primo ordine alcune frasi..
Questo è un esempio di esercizio, su cui devo esercitarmi, il resto sono tutti simili
Si traducano le seguenti frasi nella logica dei predicati del primo
ordine, poi in forma a clausole:
- Chiunque è in vacanza e ha tanti soldi è felice
-Chiunque vince al superenalotto ha tanti soldi
- Chiunque gioca a qualche gioco ed è fortunato vince a quel gioco
- Claudio è in vacanza
- Claudio è fortunato
- Claudio gioca al superenalotto
Si usi poi il principio di risoluzione per dimostrare che esiste qualcuno
che è felice
Volevo sapere come muovermi per formalizzare le frasi.. se partire da un insieme su cui fare i ragionamenti..
Ad esempio insieme delle persone che hanno soldi.. che ha come sottoinsieme le persone che sono in vacanza , felici e che giocano al superenalotto..
Le regole per formalizzare le conosco solo che non sempre è lo stesso ..
Questo è un esempio di esercizio, su cui devo esercitarmi, il resto sono tutti simili
Si traducano le seguenti frasi nella logica dei predicati del primo
ordine, poi in forma a clausole:
- Chiunque è in vacanza e ha tanti soldi è felice
-Chiunque vince al superenalotto ha tanti soldi
- Chiunque gioca a qualche gioco ed è fortunato vince a quel gioco
- Claudio è in vacanza
- Claudio è fortunato
- Claudio gioca al superenalotto
Si usi poi il principio di risoluzione per dimostrare che esiste qualcuno
che è felice
Volevo sapere come muovermi per formalizzare le frasi.. se partire da un insieme su cui fare i ragionamenti..
Ad esempio insieme delle persone che hanno soldi.. che ha come sottoinsieme le persone che sono in vacanza , felici e che giocano al superenalotto..
Le regole per formalizzare le conosco solo che non sempre è lo stesso ..
Risposte
Io partirei definendo le proposizioni:
VA(x)="x è in vacanza"
S(x)="x ha tanti soldi"
FE(x)="x è felice"
VI(x,y)="x vince al gioco y"
G(x,y)="x gioca al gioco y"
FO(x)="x è fortunato"
A questo punto dovrebbe essere abbastanza naturale tradurre le tue frasi in formule del primo ordine, fammi sapere
VA(x)="x è in vacanza"
S(x)="x ha tanti soldi"
FE(x)="x è felice"
VI(x,y)="x vince al gioco y"
G(x,y)="x gioca al gioco y"
FO(x)="x è fortunato"
A questo punto dovrebbe essere abbastanza naturale tradurre le tue frasi in formule del primo ordine, fammi sapere

La soluzione è questa (presa in rete) volevo sapere se prima di arrivarci esisteva qualche metodo più semplice e intuitivo.. Ad esempio partire da alcuni insieme, perchè delle volte è facile che si puo fare confusione.
∀X1(vacanza(X1) ∧ ha_soldi(X1) → felice(X1))
∀X2 (vince(X2,superenalotto) → ha_soldi(X2))
∀X∀Y (gioca(X,Y) ∧ fortunato(X) → vince(X,Y))
∀X1(vacanza(X1) ∧ ha_soldi(X1) → felice(X1))
∀X2 (vince(X2,superenalotto) → ha_soldi(X2))
∀X∀Y (gioca(X,Y) ∧ fortunato(X) → vince(X,Y))
Ti riferisci ad un metodo intuitivo per tradurre frasi dall'italiano al linguaggio del primo ordine o per dimostrare che esiste qualcuno che è felice?
Esatto, dato che l'italiano è troppo vago come linguaggio.. un metodo intuitivo in generale per tradurre dall'italiano in logica
In generale quando trovi affermazioni nella forma chiunque, ogni, tutti, ecc... ti deve venire il sospetto che si tratti di un quantificatore universale ($AA$), quando trovi affermazioni nella forma esiste, qualche, ecc... ti deve venire il sospetto che si tratti di un quantificatore esistenziale ($EE$).
Quando trovi affermazioni nella forma se [...] allora ti deve venire il sospetto che si tratti di un'implicazione.
Congiunzione, disgiunzione e negazione sono forse le più semplici da riconoscere in quanto traducono rispettivamente e, o, non.
Ad esempio la frase "chiunque è in vacanza e ha tanti soldi è felice" significa che "per ogni persona x, se x è in vacanza e x ha tanti soldi allora x è felice", ovvero (scritto con il tuo linguaggio del primo ordine) che $AAX(("vacanza"(X)nnha_soldi(X))->felice(X))$.
La soluzione che hai proposto tu (sempre riferito alla prima frase) può essere interpretata in due modi (uno corretto e uno no) a seconda di quale connettivo interpreti per primo tra la congiunzione e l'implicazione: o decidi un'ordine di priorità per capire quali connettivi hanno la precedenza sugli altri oppure più semplicemente aggiungi delle parentesi (dove?) per evitare situazioni di questo tipo.
Se ti interessa allenarti ulteriormente ti posso far avere qualche foglio su traduzioni di questo tipo.
Quando trovi affermazioni nella forma se [...] allora ti deve venire il sospetto che si tratti di un'implicazione.
Congiunzione, disgiunzione e negazione sono forse le più semplici da riconoscere in quanto traducono rispettivamente e, o, non.
Ad esempio la frase "chiunque è in vacanza e ha tanti soldi è felice" significa che "per ogni persona x, se x è in vacanza e x ha tanti soldi allora x è felice", ovvero (scritto con il tuo linguaggio del primo ordine) che $AAX(("vacanza"(X)nnha_soldi(X))->felice(X))$.
La soluzione che hai proposto tu (sempre riferito alla prima frase) può essere interpretata in due modi (uno corretto e uno no) a seconda di quale connettivo interpreti per primo tra la congiunzione e l'implicazione: o decidi un'ordine di priorità per capire quali connettivi hanno la precedenza sugli altri oppure più semplicemente aggiungi delle parentesi (dove?) per evitare situazioni di questo tipo.
Se ti interessa allenarti ulteriormente ti posso far avere qualche foglio su traduzioni di questo tipo.
Grazie adesso è piu' chiaro.. In effetti in rete ci stanno poche cose sulla logica del primo ordine