I’ve been playing around with prolog and realised something. You can do everything without predicate names.

e.g. Just change all predicates

$$a(b,c,d,e,..)$$

into

$$prop(a,b,c,d,e,..)$$

Where $$prop$$ is some character that you can use for all function names.

So $$isRed(X)$$ becomes $$prop(isRed,X)$$.

Which makes me wonder if there is any point to prolog having function heads? Couldn’t everthing be done using lists? e.g. $$loves(romeo,juliet)$$ could just as easily be written $$[loves,romeo,juliet]$$ without loss of information.

Have I missed something or is there anything special about predicate function heads?