Newsgroup: it.comp.programmare
Titolo: dubbio sugli insiemi

Dubbio teorico sugli insiemi:
se volessi rappresentare matematicamente la frase
"ho dei libri, ma meno di cento", scrivo: (1 <= libri < 100)
se ora volessi negare l'espressione, scrivo 
"non ho libri, oppure ne ho più di cento" (libri = 0 OR libri >= 100)
oppure:
"non ho libri, ma ne ho più di cento" (libri = 0 AND libri >= 100)
Qual'è quella più giusta?
Detta in altro modo:
NOT(A AND B) diventa NOT(A) AND NOT(B) oppure NOT(A) OR NOT(B) ??
O ancora:
not(true AND true) diventa (false AND false) oppure (false OR false) ?

ti rispondo come programmatore, meglio la prima senza negazioni, in
quanto riesci a scrivere codice più compatto, non ti serve negare due
volte per ottenere cio che hai già
ciao 
claudio

 volte per ottenere cio che hai già
Si, ma la mi domanda era un'altra ;)
Provo a spiegarmi meglio dal punto di vista della programmazione:
Quale delle due espressioni è vera:
not(true and true) == false and false;
not(true and true) == false or false;
Dal punto di vista strettamente teorico, non mi interessa cosa dice il
compilatore :)


NOT (A AND B) = NOT (A) OR NOT (B)
Comunque con questo tipo di dubbi (che sono di logica, non di teoria 
degli insiemi) consiglio di costruire le tabelle di verità


La seconda che hai detto. per negare che due cose sono contemporaneamente 
vere ti fasta che una sola sia falsa
Marco 

 vere ti fasta che una sola sia falsa
Quindi, rapportando il tutto al quesito iniziale, per negare la frase
"Ho dei libri, ma meno di cento" (1<=libri<100)
è sufficiente dire:
"Non ho libri" (libri=0)
E' giusto?

 NOT(A AND B) diventa NOT(A) AND NOT(B) oppure NOT(A) OR NOT(B) ??
Le due Leggi di De Morgan risolvono il tuo problema:
1) NOT(A AND B) = NOT(A) OR NOT(B)
2) NOT(A OR B) = NOT(A) AND NOT(B)
Quindi è giusta la seconda affermazione che hai fatto (ovvero la prima
Legge di De Morgan).
HTH,
-- 
[ Andrea Spadaccini - a.k.a. Lupino/Lupin85 - Catania - ICQ#: 91528290 ]
[ GPG ID: 5D41ABF0 - key @ 
pgp.mit.edu
 - Slackware 10.1 w/Linux 2.4.22 ]
[ Linux User # 313388 - MAIL: a.spadaccini(at)catania(dot)linux(dot)it ]

Qual'è quella più giusta?
Se (libri = 0 AND libri >=100), allora 0 >= 100 !!!
Lavau

 Se (libri = 0 AND libri >=100), allora 0 >= 100 !!!
Ok, (libri = 0 AND libri >=100) è chiaramente assurda, ma tornando al
problema iniziale, se ti dico:
se l'affermazione "ho dei libri, ma meno di cento" è falsa, qual'è
l'affermazione, unica ed inequivocabilmente, vera?



Qualcosa tipo: "Se ho libri, ne ho più di cento"?
Daniele

l'affermazione, unica ed inequivocabilmente, vera?
libri = 0 OR libri >=100
Lavau

 libri = 0 OR libri >=100
E fin qui ci siamo. Ora riesci a tradurlo in una frase in italiano,
sensata?
Io sono del parere che non esiste frase che esprima il concetto,
visto che non si può affermare contemporaneamente che:
"Non ho libri" e "Ho almeno cento libri".

 "Non ho libri" e "Ho almeno cento libri".
Perché invece se libri = 0 puoi avere che libri >= 100? In quel caso OR 
e XOR sono equivalenti per il caso 1-1 è impossibile.
Allora in italiano si usa "o", non "e".
"I fumetti non sono libri? Fai un po' te... ad ogni modo in questa 
stanza ci sono più di 99 libri oppure non ce n'è nessuno, a seconda di 
cosa decidi. In qualsiasi modo tu la metta, non potrai di certo andare a 
dire in giro che ho due libri in croce.".
Kiuhnm

Per sapere se ragioni correttamente usa le leggi di De Morgan:
not( A and B)= (not A) or (not B)
 "ho dei libri, ma meno di cento"
A={ho dei libri}
B={ho meno di ceno libri}
 "ho dei libri, ma meno di cento"=A and B
not  "ho dei libri, ma meno di cento" = not(A amd B)=(not A) or (not
B)=
"non ho libri o, se ce li ho, sono almeno(=>) cento".
Ora siamo sicuri!

 sensata?
Se ho dei libri ne ho almeno 100
Ciao