So, FOL logic in general is undecidable, but is the fragment that excludes function symbols and predicate symbols with arity > 1 decidable?
I'm guessing it's not since it does not seem possible to talk about arithmetic with only nullary and unary predicates.
I also have a sketch of a proof, but I'm not sure how to finish it up or, indeed, if it's right.
First, let's assume the domain of discourse is empty. If it is, then every expression headed by a quantifier e.g. $\forall x . P(x)$ or $\exists y. Q(y) \land R(y)$ can be replaced with $\top$ if the quantifier is $\forall$ and $\bot$ if the quantifier is $\exists$ .
Because the term is closed, performing this substitution in any order results in an expression consisting only of connectives and $\top$ and $\bot$ . This formula can then be rewritten into an equivalent formula according to the truth table of each connective, eventually resulting in $\top$ or $\bot$.
Second, let's assume that the domain of discourse is not empty.
If I start with an arbitrary expression $\phi$, I apply the following steps in order to reduce it to an equivalent form that I can check mechanically for truth.
Steps 1-6 are just "rewrite the expression in prenex CNF".
- Rename all the variables bound by any of the quantifiers anywhere to be unique within the formula.
- Replace $(\xi \leftrightarrow \psi)$ with $(\xi \land \psi) \lor ((\lnot \xi) \land (\lnot \psi))$
- Replace $(\xi \rightarrow \psi)$ with $((\lnot \xi) \lor \psi)$
- Rewrite the expression in negative normal form. (this will involve changing some of the quantifiers as $\lnot$ are pushed though them).
- Move all the quantifiers to the left edge of the formula (it is now in prenex normal form).
- Convert the matrix to CNF.
- Replace all nullary predicates with unary predicates and add a fresh variable for each predicate. (I.e. if $c()$ is a nullary predicate replace it with $\exists k (\; \cdots c'(k) \cdots \;)$. This removes nullary predicates without changing the truth value of the formula as a whole.
- "Transpose" the quantifiers and the top-level conjunctions in the matrix, i.e. send $\forall x. A \land B \land C$ to $(\forall x . A) \land (\forall x. B) \land (\forall x . C)$ .
- Check the body of each of the conjuncts for a "primitive tautology" described in the lemma below. Each conjunct is a tautology iff it contains a primitive tautology. The whole formula is a tautology iff all of its conjuncts are tautologies.
Lemma: Consider formulas in prenex normal form of the form $(1)$
$$Q_1a_1\cdots Q_na_n . \bigl[f_1(b_1) \lor \cdots \lor f_m(b_m)\bigr] \lor \bigl[ (\lnot g_1 (c_1)) \lor \cdots \lor (\lnot g_k(c_k)) \bigr] \tag{1}$$
where $Q_\mathbb{N}$ is a quantifier (either $\exists$ or $\forall$), $a_\mathbb{N}$, $b_\mathbb{N}, c_\mathbb{N}$ are all variables and $f_\mathbb{N}$ and $g_\mathbb{N}$ are unary predicates.
Such a formula is true if and only if it contains a "primitive tautology", i.e. for some value of $i$ and $j$, $f_i = g_j$ and $f_i$ and $g_j$ are not separately universally quantified.
The following are all primitive tautologies:
$$ \require{cancel} \xcancel{\forall x. \forall y . f(x) \lor \lnot f(y)} \tag{2a} $$ $$ \forall x. \exists y . f(x) \lor \lnot f(y) \tag{2b} $$ $$ \exists x. \forall y . f(x) \lor \lnot f(y) \tag{2c} $$ $$ \exists x. \exists y . f(x) \lor \lnot f(y) \tag{2d} $$ $$ \forall x. f(x) \lor \lnot f(x) \tag{2e} $$ $$ \exists x . f(x) \lor \lnot f(x) \tag{2f} $$
Adding a quantifier with an unused variable anywhere in the prenex preserves truth. For instance, $\forall x. \forall y. f(x) \lor \lnot f(y)$ can be sent to $ \forall x. \exists z . \forall w . \forall y . f(x) \lor \lnot f(y) $ .
Adding additional possibly-negated predicates to the disjunction preserves truth. For instance, $\forall x . \forall y . f(x) \lor \lnot f(y)$ can be sent to $\forall x . \forall y . f(x) \lor \lnot f(y) \lor g(x) $
By starting with one the base cases $(2b), (2c), (2d), (2e), (2f)$ by first adding free variables to the matrix, then adding additional disjuncts, any formula of the form (1) that contains a primitive contradiction can be created.
So, for the reverse direction, proving that a formula of the above form MUST have a primitive contradiction to be true, I'm stuck and don't know how to continue. I was considering negating it and then trying to show that any analytic tableaux one tried to construct would be impossible to close. But doing that is kind of unmotivated, I'd basically just be leaning on machinery I've seen before.