# The Holy Trinity

### Core Concepts

At its core, logic has three parts: domains, condition values, and logical functions. With these basic parts one can explore the certainty of orthodox formal logic, the uncertainty of quantifiers, the expanse of sets, and the insight theory.

To understand what I'm on about, let's start at the end. A **logical function** is like any other function. What makes it specific is that its inputs can only take one of two values, and the function only outputs one of two values. These two values can be anything you want (true/false, left/right, 0/1, pizza/Chinese food...), but there can only be two.

A function's input variables are its **domain**. The domain is simply a sequence of two valued variables. The variables can represent any choices, and don't even need to be unique, but they do need a specific order. As such, two domains are the same if and only if they have the same variables and those variables are in the same order.
$$
\begin{array}{rcl}
(x,y,z) & = & (x,y,z) \\
(x,y,z) & \neq & (x,z,y) \\
(x,y,z) & \neq & (x,y,y)
\end{array}
$$

When employing any function one simply sets each input variable to specific values and the function returns a result. In a logical function, defining all input variables produces a **condition value** Each unique condition value is then mapped to an output value. In the following truth table (for a logical AND) the domain $(a,b)$ is represented on the left above each of the four possible condition values, and the conjunction on that domain is written above the function's output values.
$$
\begin{array}{cc|c}
a & b & a\land b \\
\hline F & F & F \\
T & F & F \\
F & T & F \\
T & T & T
\end{array}
$$

### Notation

**Domain:** Writing an ordered list of variables is okay when there are two or three, but more than that isn't great. For this reason I'll often write a domain as a bold letter followed by a superscript number that indicates how many members the sequence has. Here's an example where there are $n$ variables in the domain.
$$
\textbf{A}^n=(A_0,A_1,\ldots,A_{n-2},A_{n-1})
$$

**Condition Value:** A condition value, on some domain, can be expressed as the domain, encased in parentheses, and followed by the subscript CV. In that way, a condition value of the domain $\textbf{A}^n$ is written as $(\textbf{A}^n)_\text{CV}$.

Very often it is advantageous to consider a condition value as an index. Since the members of a domain can be easily seen as digits in a binary number, and counting numbers make great indices, representing a condition value as an integer works pretty well. The integer that represents a condition value on some domain, $\textbf{A}^n$, is calculated by first considering the values of each domain member as either 0 or 1, then treating them as digits in a binary number, like this: $$ \left(\textbf{A}^n\right)_\text{CV}=\sum_{i=0}^{n-1}A_i2^i $$

Typically, I will write a condition value using hexadecimal. Being a power of two, base sixteen's digits align perfectly with those of binary, while being more compact than base two, four, and eight, and less cumbersome than base thirty-two.

Given its integer value, a condition value can easily be represented by a variable. It is important, however, to remember that two condition values that produce the same number are not equal unless they are produced from the same domain.

**Logical Function:** Much like condition values, a truth function is written as a domain surrounded by parentheses and followed by a subscript. In this case, the subscript is the function's name. So, a function, $\alpha$, on the domain $\textbf{A}^n$ is written:
$$
\left(\textbf{A}^n\right)_\alpha
$$

Further, by representing the output of a function as the function's name followed by a subscript of the condition value that produces that output, a generalized function can produce a truth table. Below is just such a truth table for $(\textbf{A}^n)_\alpha$. $$ \begin{array}{rcl} \left(\textbf{A}^n\right)_\alpha & \rightarrow & \begin{array} {c|c} \left(\textbf{A}^n\right)_\text{CV} & \left(\textbf{A}^n\right)_\alpha \\ \hline 0 & \alpha_0 \\ 1 & \alpha_1 \\ \vdots & \vdots \\ 2^n-2 & \alpha_{2^n-2} \\ 2^n-1 & \alpha_{2^n-1} \end{array} \end{array} $$