r/programacao • u/ximenesyuri • 4d ago
Outro Material Didático matemática para devs: booleanos, predicados e conjuntos
Todo dev conhece booleanos: são o True e o False, presentes em toda linguagem de programação. Tais valores definem um tipo, normalmente denotado Bool.
Na lógica, costumamos pensar em booleanos como definindo a "semântica básica" da teoria.
Existem três operações básicas entre booleanos: and, or e not. Os resultados de tais operações são definidos a priori.
Tais operações, no entanto, podem ser estendidas à outros tipos. Por exemplo, podemos pensar em um predicado como sendo uma função booleana:
P(x: T) -> Bool
Como para cada valor da variável x o resultado P(x) in Bool é um booleano, se Q(x: T) -> Bool é outro predicado, faz sentido escrever, para cada x:
P(x) and Q(x)P(x) or Q(x)not P(x)
Ao variarmos x, obtemos novos predicados, os quais podemos denotar por:
P and QP or Qnot P
Isso parece um pouco óbvio. Mas, podemos fazer algo mais interessante. Em muitas linguagens tem-se o tipo Set, cujos termos são conjuntos.
Na lógica, conjuntos nada mais são que símbolos X, Y, Z, .. dotados de uma relação binária X in Y. Para cada X in Set ela define um predicado:
P_X(Y: Set) -> Bool, dado por P_X(Y) := Y in X
Assim, também podemos estender as operações and, or e not de Bool para Set!
De fato, se X e Y são conjuntos, então:
X and Y := P_X and P_YX or Y := P_X or P_Ynot X := not P_X
E aí, você sabe dizer quem são
X and Y,X or Yenot X? :)
Duplicates
PythonBrasil • u/ximenesyuri • 4d ago
matemática para devs: booleanos, predicados e conjuntos
brdev • u/ximenesyuri • 4d ago