The definition of term in Enderton's Logic book

220 Views Asked by At

In page 74 of Enderton's book A Mathematical Introduction to Logic (Second Edition), Enderton defines term as follows:

"The terms are defined to be those expressions that can be built up from the constant symbols and the variables by prefixing the function symbols."

In this definition, I think that "the constant symbols and the variables" is not appropriate. It must be "the constant symbols or the variables".

What do you think?

2

There are 2 best solutions below

2
On

I think "and" is appropriate. If $c$ is a constant and we have a binary function $f$, then $f(c,x)$ is a valid term, where we use both a constant and a variable.

0
On

ANSWER 1

Here is a common mistake regarding recursive definitions. Imagine you want to define factorial, and set:

[base step] $n! = 1$, if $n=0$

[recursive step] $n! = n(n-1)!$, if $n>0$

Now, while it is true, when talking about the factorial of $n$, that either you are to deal with the base step (in case $m$ happens to be $0$) or you are to deal with the inductive step (in case $m$ happens to be greater than $0$), it is important to notice that both steps describe true facts about factorials. Accordingly, one might use logic to specify the behavior of the factorial function by writing: $$(\forall n)((n=0\to n!=1)\land(n>0\to n!=n(n-1)!))$$ Replacing $\land$ (and) by $\lor$ (or) in the above sentence would result in an assertion that would be true, for instance, for any operation $f$ that were to satisfy only one of those steps. Indeed, the expression $n=0\to f(n)=1$ is true, for instance, if $f$ is exponentiation having the argument $n$ as its power and any fixed constant $c$ in its base (as $f(0)=c^0=1$, for any constant $c$). But exponentiation obviously does not coincide with factorial (the latter grows faster!).


ANSWER 2

Unintentionally swapping or for and is more common than one might imagine. Imagine you want to describe the behavior of the typical conditional statement

IF b THEN do this ELSE do that

in your preferred programming language.

In that case both the following instructions are expected to be implemented:

(1) If the boolean condition evaluates to true, this should be done.

(2) If the boolean condition evaluates to false, that should be done.

Even in case this and that are alternatives that exclude each other, a conditional statement that altered the control flow according to only one of the above instructions could hardly be said to implement the standard IF-THEN-ELSE! So, again, we're not talking about either (1) or (2) being true about an execution, but both.