Hyperplane

A hyperplane is a set of the form

$$\{x | a^T x = b\}$$

for some row vector $$a^T$$ and a scalar $$b$$. This set has several intuitive interpretations
 * It is the hyperplane with a normal vector $$a$$ and an offset distance of $$b$$ from the origin
 * $$\{x | a^T x = b\} = \{x | a^T (x-x_0)\} = x_0 + a^\perp$$ where $$x_0$$is any point belonging to the hyperspace, and $$a^\perp$$ is the set that contains all vectors that are orthogonal to $$a$$. Clearly, the latter sum operation is overloaded (its arguments are a set and a vector), and the definition of this overloading is straightforward (i.e., it's the set obtain by summing all the vectors in $$a^\perp$$ with the vector $$x_0$$).

Halfspace
Each hyperplane divides the space in which it lives into two halfspaces. A halfspace is formally defined as

$$\{x | a^T x \le b\}$$.

What's the point of hyperplanes?
Hyperplanes are fundamental constructs in complex optimization. For example, the separating hyperplane theorem dictates that any two disjoint convex sets are separated by at least one hyperplane. Moreover, there is also the supporting hyperplane theorem, which essentially says that a set is convex, there is a supporting hyperplane on each point on its boundary (i.e., a hyperplane that does not "touch" any point on the interior of the set).