explanation of undo just to elaborate a little more on my undo in this edit it is true that at some level you can always replace a function by a relation giving the same information for a unary function symbol f you can substitute a relation symbol r and interpret it via r x y if and only if f x y however there are significant differences between languages that contain function symbols and ones that have only relation symbols function symbols have existential import in the sense that if you have a structure for a language with a function symbol f and a closed term t in the language then the structure must contain an interpretation for f t relation symbols don't give you that a structure for a language containing our relation symbol r above is not guaranteed to have an object y such that the structure satisfies r t y this is important for lots of tools used to analyze structures for example the ehrenfeucht fra ss game is usually defined for languages that have only relation and constant symbols if you allow non nullary function symbols the analysis gets more complicated