As a related note to the question above, the dual of a Boolean function is the complement of the original function, but with all inputs complemented. Thus, a self-dual boolean function would be such that its complement is the same as the function when its inputs are complemented.
A relatively easy way to prove this is based on the fact that each Boolean function has a unique SOP and POS representation. Say we have a function $f$, of $N$ boolean variables, $A_1, A_2, ... A_N$. Then
$$f(A_1, A_2, ...A_N) = \sum_{i\in I} m_i = \prod_{j\in I^C} M_j $$
where $m_i$ is a minterm which is part of that function's 'on-set' ($I$), $M_j$ is a maxterm and part of the function's 'off-set' ($I^C$). Note that the set $I$ is a subset of integer values between 0 and $2^N - 1$.
From de Morgan's law, we can easily prove that $m_i = M_i'$, that is, the i-th minterm is the complement of the i-th maxterm.
Using the classical definition of a Boolean dual (exchange $\cdot$ and $+$, 0s and 1s), the dual of the function $f$ is:
$$f^D(A_1, A_2, ... A_N) = \prod_{i\in I} m_i^D $$
where $m_i^D$ is the dual of the i-th minterm. It can be shown that $m_i^D = M_{2^N - i - 1}$ (for e.g. for a function of 2 Boolean variables, $m_1 = A_1'A_2$ $\Longrightarrow m_1^D = A_1' + A_2 = (A_1 A_2')' = m_2' = M_2$). Thus,
$$f^D(A_1, A_2, ... A_N) = \prod_{i\in I} m_i^D = \prod_{i\in I} m'_{2^N-i-1} $$
which, from de Morgan's law, gives us
$$f^D(A_1, A_2, ... A_N) = (\sum_{i\in I} m_{2^N-i-1})'$$
$\because$ the i-th minterm is the same as the $(2^N - i - 1)$-th minterm with complemented inputs,
$$f^D(A_1, A_2, ... A_N) = (f(A_1', A_2', ... A_N'))'$$
Thus, for a self-dual function,
$$f(A_1, A_2, ... A_N) = (f(A_1', A_2', ... A_N'))'$$