A pivot: Zero, One or Many ?

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.

Written by Eddy.