Axm

Subconjunto

ABA \subseteq B

⊂ é um C estilizado — de *contained*, "contido"; ⊆ acrescenta a barra de igualdade, como em ≤.

Símbolo

\subseteq é um CC estilizado e deitado — de contained, "contido" — com a barra que ecoa o \leq: assim como \leq admite igualdade, \subseteq admite que os dois conjuntos sejam iguais. ABA \subseteq B lê-se AA está contido em BB.

Definição

ABA \subseteq B significa que todo elemento de AA é também elemento de BB. Escrito como sentença da lógica de predicados, isso é literalmente uma condicional universal:

AB    x(xAxB)A \subseteq B \;\equiv\; \forall x \, (x \in A \rightarrow x \in B)

Essa é a ponte entre os dois assuntos. Subconjunto é a condicional, percorrida sobre todos os elementos. Estar contido em BB é, para cada objeto, manter a promessa: se está em AA, então está em BB.

Intuição

BB tem tudo o que AA tem, e possivelmente mais. Todo conjunto é subconjunto de si mesmo — AAA \subseteq A —, porque cada elemento de AA está, trivialmente, em AA. Quando a contenção é estrita (ABA \subseteq B e ABA \neq B), escrevemos ABA \subsetneq B.

O conjunto vazio está contido em tudo

A\varnothing \subseteq A vale para qualquer AA. A condicional universal explica por quê: em x(xxA)\forall x \, (x \in \varnothing \rightarrow x \in A) não há nenhum xx para o qual o antecedente xx \in \varnothing seja verdadeiro. Nada é acionado, nada pode falhar — é verdade vacuosa, a mesma que torna a condicional verdadeira quando o antecedente é falso.

Registro computacional

A.issubset(B) em Python. Em TypeScript, é exatamente subtipagem: A extends B vale quando todo valor de A é valor de B — Curry-Howard puro, \subseteq e extends sendo a mesma relação em registros diferentes.

{1, 2}.issubset({1, 2, 3})   # True

Subconjunto não é uma relação nova a memorizar — é a condicional que já conhecemos, dita sobre cada elemento.