Formalizzazione di una frase in logica del prim'ordine

specialdo
ciao a tutti!
sto studiando logica per sostenere un esame. Ho trovato delle dispense online per cercare di capire come tradurre una frase del linguaggio naturale in logica del prim'ordine ma ho difficoltà con alcune di queste. Se ve le posto, riuscite a darmi una soluzione? ve ne sarei veramente grato!

prima:
Colui che rende servizi alla patria ne verrà ricompensato ma diventerà un eroe solamente se è stato il solo.

seconda:
C'e chi ha avuto un solo compagno, chi non ne ha mai avuti e chi ne ha avuti diversi.

terza:
Esattamente tre degli invitati non sono fedeli e fra di essi non c'è Alcindoro.

quarta:
C'è un solo amico di Paolo che quando si impegna ottiene qualcosa.

Se lo sapete, potete dirmi come fare a tradurre frasi che dicono che è IL SOLO, o SOLO TRE PERSONE HANNO FATTO QUESTO ecc.. grazie in anticipo!!

Risposte
Pappappero1
In generale per dire che solo "un certo numero di elementi" soddisfano una certa proprietà, si deve usare in modo furbo il predicato di uguaglianza.

Ad esempio:

Mario è un poeta ed è l'unico poeta.

Prendo una costante (\(m\) = Mario), un predicato unario \(P\) (essere poeta) e voglio dire che Mario è un poeta, e se c'è qualcuno che è un poeta allora quel qualcuno è Mario:

\[ Pm \wedge (\forall x ( Px \to x=m))\]


Prendiamo ora la prima frase dei tuoi esempi:

Colui che rende servizi alla patria ne verrà ricompensato ma diventerà un eroe solamente se è stato il solo.

Traduciamola un po':

Ognuno, se rende servizi alla patria, viene ricompensato, e, sempre se rende servizi alla patria, diventa un eroe solo se è stato l'unico a rendere servizi alla patria.

Traduciamola un po':

Ognuno, se rende servizi alla patria, viene ricompensato, e, sempre se rende servizi alla patria, se diventa un eroe allora (vuol dire che) è stato l'unico a rendere servizi alla patria.

Traduciamo ancora un po':

Ognuno, se rende servizi alla patria, viene ricompensato, e, sempre se rende servizi alla patria, se diventa un eroe allora (vuol dire che), se qualcuno ha reso servizi alla patria, allora quel qualcuno è proprio lui.

A questo punto siamo pronti a portarla in logica: introduciamo un predicato unario $S$= rendere servizi alla patria, un predicato unario $R$ = essere ricompensato e un predicato unario $E$ = diventare un eroe.

\[ \forall x (Sx \to (Rx \wedge (Ex \to (\forall y (Sy \to y=x)))) ) \]

Rispondi
Per rispondere a questa discussione devi prima effettuare il login.