Pragmatically, I find that relations are a good place to start. Now, I pause to examine the alternatives that naturally suggest themselves, and try not to fall into the trap of post hoc justification.
I have chosen to work from relations. One may formalise a relation as a
predicate with two free variables
(do I relate this to
that ?), a collection as a predicate with one free variable
(is
this a member of me ?) and, indeed, a statement as a predicate with
no free variables
. Going the other way, we can intelligibly consider
multi-relations
of form do I relate this, then that,
to some other ?
(a predicate with three free variables) and so on.
Why settle on two ?
The answer has two parts:
These are both implementation truths. On the one hand, the customer
(Physics) needs certain tools, among which mappings predominate; when described
as predicates, mappings are a variety of 2-relation (ie what's normally
called a relation - a mapping never relates any given input
to more than
one output
). On the other, the implementor finds that one can do
anything with the variety of relation required by the customer; a relation whose
values are all fixed points models a collection, by constraining input = output
on a mapping and only leaving the question do I relate this to
itself
as a model for is this a member of me ?
; likewise, a
relation whose final values are relations models a 3-relation using do I
relate this to something which relates that to some
other ?
; inductively, one can likewise model arbitrary
multi-relations as [relations whose final values are ...]
relations
.
One may equally formalise a multi-relation, generally, as a mapping which
takes values and yield a truth value
which says whether the
multi-relation says yes
to that sequence of values. I find this more
intelligible when expressed as a mapping which takes a list of values
and returns a truth value
; with Haskell B. Curie, I find I prefer the
mapping
idiom to work on a basis which views f(a, b, c) as mentioning a
function, f, which accepts some value, a, as an input
and yields a
result, f(a), which is, likewise, a function accepting b to yield f(a,b), which
in its turn accepts c to yield the value f(a, b, c), which might not be a
function; f(a, b, c) = ((f(a))(b))(c), though I can refine this via the
denotational form which admits f(a, ..., w) whenever: f relates a to some ...
relation which relates w to some F and there is only one F for which this is
true. Example: f(a,b) will make sense if f relates a to various relations, but
there is exactly one value to which any of these relates b; illustrate ?
One must chose whether to formalise a multi-relation (or, indeed, a function of many arguments) as such or as a mapping whose input is a list of values. I find this discipline more helpful than inconvenient: the two are functionally equivalent, so it seldom hurts overly to be wrong - and such errors are easy to correct, - but discovering which idiom describes each case best reveals much about each case.
In any case, one must have 2-relations as the style of predicate
which yields a mapping; which physics wants; and 2-relations provide a natural
implementation of arbitrary multi-relations, including collections and
statements; so it suffices to use only what we must have.