I'm trying to learn descriptive complexity, and I'm having trouble on a basic level wrapping my head around what it means for a logical formula to define a computational language. I've tried and failed to find a gentle introduction to the field online, but I'd be appreciative if someone could point me towards one.
Let's take a super basic example. Let's say take the formula $\forall x \, \exists y \, \lnot R(x, y)$. Questions:
Is the definition of $R$ an intrinsic part of the formula, or is it specified by the "input string" given to the formula? Can $R$ be anything? Does the statement $R(x, y)$ need to be computationally efficient to check?
I have read that the input string is a representation of a "universe," which contains three pieces: a list of "objects" $\{0, \dots, n-1\}$, a set of relation symbols $\{R_1, \dots, R_m\}$, and a set of constant symbols $\{c_1, \dots, c_k\}$. Why are these useful? Aren't the relation and constant symbols already specified in the formula to which the input string is provided?
Apologies if these are basic questions - my understanding is currently very poor. Thanks for reading!