\chapter{Teoria degli insiemi}

Il concetto di insieme è primitivo e pertanto non definito formalmente
in questa sede. Viene tuttavia definita la terminologia che riguarda
le teoria dei suddetti insiemi.

Quando si leggerà $a \in S$, s'intenderà che ``$a$ appartiene all'insieme $S$'', mentre
$a \notin S$ si legge ``$a$ non appartiene all'insieme $S$''. Un insieme $A$ si dice
sottoinsieme di $B$ ($A \subseteq B$) quando $a \in A \rightarrow a \in B$; in particolare
si dice sottoinsieme proprio di $B$ ($A \subset B$) quando
$A \subseteq B \land \exists b \in B \mid b \notin A$.

Due insiemi $A$ e $B$ sono uguali se e solo se $A \subseteq B \land B \subseteq A$.
L'insieme vuoto è l'insieme che non ha elementi, ed è sottoinsieme di ogni insieme.

\section{L'operazione di unione}

L'unione di due insiemi $A$ e $B$ è un'operazione che restituisce un insieme
$A \cup B = \{x \mid x \in A \lor x \in B\}$.

Tale operazione si può estendere a più insiemi mediante l'introduzione di
un \textit{insieme di indici} $T$ per una famiglia di insiemi. Un insieme di
indici $T$ rispetto a un famiglia $F=\{A_t\}$ ha la seguente proprietà: $\forall t \in
    T, \exists A_t \in F$; ossia è in grado di enumerare gli insiemi della famiglia $F$.

L'unione è pertanto definita su una famiglia $F$ come $\bigcup_{t \in T} A_t =
    \{x \mid (\exists t \in T \mid x \in A_t)\}$.

L'unione gode delle seguente proprietà: $A \subseteq B \rightarrow A \cup B = B$
(in particolare, $A \cup \emptyset = A$).

\section{L'operazione di intersezione}

Analogamente a come è stata definita l'unione, l'intersezione è un'operazione che
resistuisce un insieme $A \cap B = \{x \mid x \in A \land x \in B\}$; ossia estesa a più
insiemi: $\bigcap_{t \in T} A_t = \{x \mid (\forall t \in T \mid x \in A_t)\}$.

In modo opposto all'unione, l'intersezione è tale per cui $A \subseteq B \rightarrow
    A \cap B = A$ (in particolare, $A \cap \emptyset = \emptyset$).

\subsection{Relazioni tra l'operazione di intersezione e di unione}

Si può facilmente dimostrare la seguente relazione, valida per qualunque scelta
di insiemi $A$, $B$ e $C$: $(A \cup B) \cap C = (A \cap C) \cup (B \cap C)$.

\begin{proof}
    Prima di tutto, un elemento di entrambi i due insiemi appartiene obbligatoriamente a $C$:
    nel caso del primo membro, il motivo è banale; riguardo al secondo membro, invece, ci accorgiamo
    che esso appartiene almeno a uno dei due insiemi dell'unione, riconducendoci a un'intersezione
    con l'insieme $C$.

    Ogni elemento di $(A \cup B) \cap C$ appartiene inoltre ad almeno $A$ o $B$, e quindi,
    appartenendo anche a $C$, appartiene a $A \cap C$ o $B \cap C$, e quindi a $(A \cap C) \cup (B \cap C)$.
    Pertanto $(A \cup B) \cap C \subseteq (A \cap C) \cup (B \cap C)$.

    In direzione opposta, ogni elemento di $(A \cap C) \cup (B \cap C)$ appartiene almeno
    ad uno di dei due insiemi dell'unione. Per appartenere all'intersezione, tale elemento
    appartiene ad almeno $A$ o $B$; e quindi appartiene ad $A \cup B$. Appartenendo anche a $C$,
    appartiene anche $(A \cup B) \cap C$. Quindi $(A \cap C) \cup (B \cap C) \subseteq (A \cup B) \cap C$.

    Valendo l'inclusione in entrambe le direzioni, $(A \cup B) \cap C = (A \cap C) \cup (B \cap C)$.
\end{proof}

\section{L'operazione di sottrazione e di complemento}

L'operazione di sottrazione su due insiemi $A$ e $B$ è definita come
$A \setminus B = \{x \mid x \in A \land x \notin B\}$. Si può facilmente
verificare che $A = (A \cap B) \cup (A \setminus B)$.

\begin{proof}
    Ogni elemento di $A$ può appartenere o non appartenere a $B$: nel primo caso,
    appartiene anche a $A \cap B$, e quindi a $(A \cap B) \cup (A \setminus B)$;
    altrimenti appartiene per definizione a $A \setminus B$, e quindi sempre
    a $(A \cap B) \cup (A \setminus B)$. Pertanto $A \subseteq (A \cap B) \cup (A \setminus B)$.

    Ogni elemento di $(A \cap B) \cup (A \setminus B)$ appartiene ad almeno uno
    dei due operandi dell'unione; in entrambi i casi deve appartenere ad $A$. Quindi
    $(A \cap B) \cup (A \setminus B) \subseteq A$.
\end{proof}

In particolare, se $B \subseteq A$, $A \setminus B$ si dice \textbf{complemento di $B$ in $A$}.

L'operazione di complemento viene indicata con $A'$ qualora sia noto l'universo di riferimento $U$
per cui $A' = U \setminus A$.

\subsection{Le leggi di De Morgan}

Si possono dimostrare le seguenti proprietà:

\begin{itemize}
    \item $(A \cup B)' = A' \cap B'$
    \item $(A \cap B)' = A' \cup B'$
\end{itemize}

\begin{proof}[Prima legge di De Morgan]
    Un elemento che appartiene a $(A \cup B)'$ non appartiene né a $A$ né a $B$, e quindi
    appartiene sia a $A'$ che a $B'$, pertanto anche alla loro intersezione $A' \cap B'$
    [$(A \cup B)' \subseteq A' \cap B'$].

    Allo stesso modo, un elemento di $A' \cap B'$ non appartiene né ad $A$ né a $B$, e quindi
    non appartiene ad $A \cup B$, appartenendo dunque a $(A \cup B)'$
    [$A' \cap B' \subseteq (A \cup B)'$]. Pertanto $(A \cup B)' = A' \cap B'$.
\end{proof}

\begin{proof}[Seconda legge di De Morgan]
    Un elemento che appartiene a $(A \cap B)'$ può appartenere al più ad $A$ o esclusivamente
    a $B$; pertanto appartiene ad almeno $A'$ o $B'$, e qunidi alla loro unione
        [$(A \cap B)' \subseteq A' \cup B'$].

    Allo stesso modo, un elemento di $A' \cup B'$ appartiene ad almeno $A'$ o $B'$, e quindi
    non può appartenere a entrambi $A$ e $B$, appartenendo dunque a $(A \cap B)'$
    [$A' \cup B' \subseteq (A \cap B)'$]. Pertanto $(A \cap B)' = A' \cup B'$.
\end{proof}

\subsection{La logica affrontata con gli insiemi}

In modo veramente interessante, ogni operatore logico segue la logica
dell'insiemistica (e viceversa); laddove l'operatore $\cup$ (o $\cap$) ha una certa proprietà,
la soddisfa anche $\lor$ (o $\land$).

Quindi valgono tutte le leggi sopracitate:

\begin{itemize}
    \item $(a \lor b) \land c = (a \land c) \lor (b \land c)$
    \item $(a \land b) \lor c = (a \lor c) \land (b \lor c)$
    \item $\lnot (a \land b) = \lnot a \lor \lnot b$
    \item $\lnot (a \lor b) = \lnot a \land \lnot b$
\end{itemize}

\section{Il prodotto cartesiano}

Il prodotto cartesiano di una famiglia ordinata di insiemi $F$ con un certo insieme
di indici $T$ è l'insieme
$\bigtimes_{t \in T} A_t = \{(a_{t_0}, a_{t_1}, \ldots) \mid a_{t_0} \in A_{t_0} \land
    a_{t_1} \in A_{t_1} \land \ldots\}$. In particolare, il prodotto cartesiano di
due due insiemi $A$ e $B$ si indica con $A \times B = \{(a, b) \mid a \in A \land b \in B\}$.

Una $n$-tupla ordinata, ossia la forma in cui è raccolto un certo elemento di un prodotto cartesiano,
è uguale ad una altra tupla se e solo se ogni elemento di una tupla è uguale a quello
corrispondente in ordine dell'altra: pertanto, in generale, $(a, b) \neq (b, a)$.

Inoltre, il prodotto cartesiano $A \times A$ viene indicato con $A^2$ (analogamente,
$A^n = \bigtimes_{i=1}^{n} A$).
