Consider the following statements regarding atom in first order programming
An atom is a predicate applied to a tuple of objects.
Atoms: An atom evaluates to a number.
- A scalar, a real-valued constant
- A predicate applied to 0 or more terms: $pred(t_1,...,t_n)$. Each predicate is annotated with its range, a bounded interval of $\mathbb{R}$ or $\mathbb{Z}$.
Confused with the above definition. Does atom can be a predicate with partial number of elements in its inputs assigned to objects? I mean does an atom is a variable free predicate or not?
Example:
Is_son_of(Rama,Dasharatha, Rama) is an atom for sure.
But Is_son_of(Ravana, Bhoomi, x) is an atom or not where x is a variable?
An atom is an atomic sentence i.e. a sentence that is not "decomposable" in further sentences.
This means that is a sentence where no connectives occur.
In the syntax of predicate logic, an atomic formula is a predicate symbol $P(x_1, \ldots, x_n)$ with $n$ "argument places" (place holders to be filled with "inputs") with $n$ terms (i.e. "names") of the language.
According to the syntax specifications of the language, variables : $x,y,\ldots$ are terms.
A sentence is a formula without free occurrences of variables.
Thus, $\text {Is_son_of}(\text{Tom},x)$ is a correct (well-formed) formula but it is not a sentence, because in it we have an occurrence of the free variable $x$.
$\text {Is_son_of}(\text{Tom},\text{Bill})$ instead, is a sentence, and thus an atomic one.