[FOM] a very exciting claim

Andrej Bauer Andrej.Bauer at andrej.com
Thu Mar 23 04:00:13 EST 2006

On Wednesday 22 March 2006 14:36, Eray Ozkural wrote:
> Excuse my ignorance. Is this also why in many definitions, the
> properties relating to an object of type X, P1, P2, .., PN are given, and
> there is an additional property that says "No other object is X"? I am
> just trying to understand, because (naively) if I give an
> algorithm that enumerates all X, there is no need to make the claim
> of negating the rest. Can you please expand on these claims a little
> further?

I think you are referring to inductive defnitions, for example when we define 
a well-formed formula X to be a string of symbols following some rules 
P1, ..., Pn on how to make new formulas. Books in logic like to add "and no 
other string is a well-formed formula".

This is just a clumsy way of explaining inductive definitions. There are many 
better ways of doing it: to programmers explain them using inductive 
datatypes or grammars, to logicians explain them with 
introduction/elimination rules or induction principles, to mathematicians 
explain them with free algebras.

I am somewhat surprised at what Gabriel is saying:
> Finally, some things are shorter and nicer in a constructive
> mindset yet disturb the classical mind.  E.g., the definition of
> |x|.  Constructively: x if x is at least 0, -x if x is at most 0.
> Period. But a classical mathematical can't stop there.  He feels a need
> to say that |x| is defined for all x.  On the other hand, in a
> constructive mindset, one does not feel such a need.  Nothing is
> missing.

Irrespective of whether you're classical or constructive, if you want to 
define absolute value as a function R --> R in the way you suggest above, 
then you should first prove a pasting lemma which says that you can paste 
together f_1 : (-infinity, 0] --> R and f_2 : [0, infinity) into f : R --> R, 
provided they agree at 0. Classically this is rather easy since

  R = (-infinity, 0] union [0, infinity)

But constructively the above equation cannot be proved, so you need to worry 
_more_. I do not find it self-evident at all (with my constructive hat on) 
that the above definition of |x| defines a function for all real x (I know it 

Or to put it another way, suppose you define |x| as you said:

  if x <= 0 then |x| = -x,
  if x >= 0 then |x| = x.

Why is |x| defined for all x, constructively?

I personally prefer the definition |x| = max(-x,x), where max comes from a 
proof that (R, <=) is a lattice.


More information about the FOM mailing list