Main Page | Report this Page
 
   
Science Forum Index  »  Logic Forum  »  primitive recursive: obsolete?...
Page 1 of 1    
Author Message
Marshall...
Posted: Wed May 07, 2008 11:56 am
Guest
I suppose the primitive recursive functions are supposed
to be those functions that provably terminate, is that right?
But there are functions that are not primitive recursive
that provably terminate.

It seems like the more useful approach would be just
to speak in terms of what provably terminates. That's
the important quality, is it not? For example, structurally
recursive functions provably always terminate, but I don't
see that they meet the definition of primitive recursive.
Any function with an algorithm that is recursive, has a
nonrecursive base case, and for which an order exists
for some subset of its arguments, such that recursive
invocations of the function (i.e., not the base case) uses
arguments that are strictly less than the previous invocation,
and whose domain is a set of elements greater than or
equal than the base case, provably terminates. This
is old hat stuff, but isn't covered by "primitive recursive."

(Also, is there any possible sense in which, say, a projection
function can be considered in any way "recursive"? I don't
see how. And yet it is "primitive recursive.")

On a related note, it seems that often the idea of totality
and termination are conflated. That seems wrong to me.
That a theorem prover may not return a result when asked
to prove a theorem is a very different case than a division
algorithm being asked to divide two arbitrary rational
numbers. Even though either one might fail to return a
value, in the first case you don't know if that's what's
happening, and in the second case you always do.

If I'm missing something, feel free to point and laugh,
only please be sure to tell me what it is I'm missing if
you do. Thanks.


Marshall
Chris Menzel...
Posted: Wed May 07, 2008 12:37 pm
Guest
On Wed, 7 May 2008 14:56:33 -0700 (PDT), Marshall
<marshall.spight at (no spam) gmail.com> said:
Quote:
I suppose the primitive recursive functions are supposed
to be those functions that provably terminate, is that right?

Well, no, for exactly the reason you give (where by a function
"terminating" we just mean that it's total on N):

Quote:
But there are functions that are not primitive recursive that provably
terminate.

The Ackermann function being a standard example.
MoeBlee...
Posted: Wed May 07, 2008 1:54 pm
Guest
On May 7, 2:56 pm, Marshall <marshall.spi... at (no spam) gmail.com> wrote:
Quote:
I suppose the primitive recursive functions are supposed
to be those functions that provably terminate, is that right?
But there are functions that are not primitive recursive
that provably terminate.

It seems like the more useful approach would be just
to speak in terms of what provably terminates. That's
the important quality, is it not? For example, structurally
recursive functions provably always terminate, but I don't
see that they meet the definition of primitive recursive.
Any function with an algorithm that is recursive, has a
nonrecursive base case, and for which an order exists
for some subset of its arguments, such that recursive
invocations of the function (i.e., not the base case) uses
arguments that are strictly less than the previous invocation,
and whose domain is a set of elements greater than or
equal than the base case, provably terminates. This
is old hat stuff, but isn't covered by "primitive recursive."

(Also, is there any possible sense in which, say, a projection
function can be considered in any way "recursive"? I don't
see how. And yet it is "primitive recursive.")

On a related note, it seems that often the idea of totality
and termination are conflated. That seems wrong to me.
That a theorem prover may not return a result when asked
to prove a theorem is a very different case than a division
algorithm being asked to divide two arbitrary rational
numbers. Even though either one might fail to return a
value, in the first case you don't know if that's what's
happening, and in the second case you always do.

If I'm missing something, feel free to point and laugh,
only please be sure to tell me what it is I'm missing if
you do. Thanks.

Marshall

At least one reason to note the distinction between primitive
recursive functions and total recursive functions is that the
primitive recursive functions all have algorithms that require only a
"do for" loop and don't require a "do while" loop, which is a feature
not ensured for arbitrary total recursive functions. Also, the
distinction is useful, since definability and representability of the
primitive recursive functions marks other distinctions in the
requirements for various kinds of languages and theories.

MoeBlee
MoeBlee...
Posted: Wed May 07, 2008 2:16 pm
Guest
On May 7, 2:56 pm, Marshall <marshall.spi... at (no spam) gmail.com> wrote:
Quote:
I suppose the primitive recursive functions are supposed
to be those functions that provably terminate, is that right?

They are a proper subset of the set of number-theoretic functions that
are Turing total computable, thus by a computation that terminates.
The set of total recursive functions is the full set.

Quote:
But there are functions that are not primitive recursive
that provably terminate.

That have Turing computations that terminate, right.

Quote:
It seems like the more useful approach would be just
to speak in terms of what provably terminates. That's
the important quality, is it not?

For many purposes, yes. But there are other considerations too. Such
as, that primitive recursive functions have algorithms that don't
require "do while" loops but only "do for" loops.

Quote:
For example, structurally
recursive functions provably always terminate, but I don't
see that they meet the definition of primitive recursive.

What? Of course they meet the definition of primitive recursive. The
very definition is that the set of recursive functions is the least
set closed from the primitive recursive functions under the mu
operation.

Quote:
Any function with an algorithm that is recursive, has a
nonrecursive base case,

So by 'recursive' here you must mean in the sense of "iterated" or
"self-calling" or something like that. Okay.

Quote:
and for which an order exists
for some subset of its arguments, such that recursive
invocations of the function (i.e., not the base case) uses
arguments that are strictly less than the previous invocation,

Wait. Do you mean the arguments are always strictly less as numbers or
do you mean they are less in the sense of being from a previous
"step"?

Quote:
and whose domain is a set of elements greater than or
equal than the base case, provably terminates. This
is old hat stuff, but isn't covered by "primitive recursive."

If I understand what you're saying, primitive recursive DOES include
the operation of recursion as you describe it. All that primitive
recursion lacks in comparison with general recursion is the mu
operation.

Quote:
(Also, is there any possible sense in which, say, a projection
function can be considered in any way "recursive"? I don't
see how. And yet it is "primitive recursive.")

The projection functions are primitive recursive, a fortiori,
recursive. Why wouldn't they be? First, on the formulation front, they
adhere to the definitions. Second, on the intuitive front, they don't
defy Church's thesis since they are Turing computable.

Quote:
On a related note, it seems that often the idea of totality
and termination are conflated. That seems wrong to me.
That a theorem prover may not return a result when asked
to prove a theorem is a very different case than a division
algorithm being asked to divide two arbitrary rational
numbers. Even though either one might fail to return a
value, in the first case you don't know if that's what's
happening, and in the second case you always do.

Totality and termination are thought together in the sense that a
Turing machine to compute a total recursive function terminates on
every computation whereas one for a partial recursive function
terminates only if the function is indeed total. That's just a fact; I
don't see what sense there is in saying that anything has been
conflated.

MoeBlee
herbzet...
Posted: Thu May 08, 2008 8:49 pm
Guest
MoeBlee wrote:
Quote:
MoeBlee wrote:

the
primitive recursive functions all have algorithms that require only a
"do for" loop and don't require a "do while" loop

I meant 'do until' not 'do while' there.

"Do while X" = "Do until not-X".

--
hz
Chris Menzel...
Posted: Fri May 09, 2008 8:22 am
Guest
On Thu, 8 May 2008 09:46:45 -0700 (PDT), MoeBlee <jazzmobe at (no spam) hotmail.com> said:
Quote:
On May 7, 4:54 pm, MoeBlee <jazzm... at (no spam) hotmail.com> wrote:

the primitive recursive functions all have algorithms that require
only a "do for" loop and don't require a "do while" loop

I meant 'do until' not 'do while' there.

Either would do, no? They differ slightly in behavior, but those
constructs are exactly equivalent in terms of computational strength.
Anything you can program in terms of the one you can program in terms of
the other.
MoeBlee...
Posted: Fri May 09, 2008 12:31 pm
Guest
On May 9, 11:22 am, Chris Menzel <cmen... at (no spam) remove-this.tamu.edu> wrote:
Quote:
On Thu, 8 May 2008 09:46:45 -0700 (PDT), MoeBlee <jazzm... at (no spam) hotmail.com> said:

On May 7, 4:54 pm, MoeBlee <jazzm... at (no spam) hotmail.com> wrote:

the primitive recursive functions all have algorithms that require
only a "do for" loop and don't require a "do while" loop

I meant 'do until' not 'do while' there.

Either would do, no?  They differ slightly in behavior, but those
constructs are exactly equivalent in terms of computational strength.
Anything you can program in terms of the one you can program in terms of
the other.

I think so. I just made the qualification for the sake of being
uniform by choosing a particular terminology.

Do you have any thoughts on my question about the notion of
'finitistic'. Why do people limit 'finitistic' to primitive recursive?
Why not take finitistic as anything total recursive?

MoeBlee
Aatu Koskensilta...
Posted: Fri May 09, 2008 9:03 pm
Guest
On 2008-05-09, in sci.logic, MoeBlee wrote:
Quote:
Do you have any thoughts on my question about the notion of
'finitistic'. Why do people limit 'finitistic' to primitive recursive?
Why not take finitistic as anything total recursive?

Because not all total recursive functions are recognisable as such by
finitistic principles.

The restriction to primitive recursive functions stems from the fact
that the principle of definition by primitive recursion is equivalent
to the principle of induction. Solely on basis of our basic
understanding of the naturals as what one obtains from 0 by repeatedly
applying the "add one"-operation the principle of induction and the
principle of definition by primitive recursive induction are equally
compelling. This is the reason for taking primitive recursive
arithmetic as the canonical formalisation for finitism; if we further
allow that properties definable from primitive recursive properties by
means of the usual logical operations of first-order logic --
including unrestricted quantification --, in effect accepting the
totality of the naturals as something determinate, we get PA.

--
Aatu Koskensilta (aatu.koskensilta at (no spam) xortec.fi)

"Wovon man nicht sprechen kann, daruber muss man schweigen"
- Ludwig Wittgenstein, Tractatus Logico-Philosophicus
LauLuna...
Posted: Sat May 10, 2008 9:58 am
Guest
On May 10, 4:03 am, Aatu Koskensilta <aatu.koskensi... at (no spam) xortec.fi>
wrote:
Quote:
On 2008-05-09, in sci.logic, MoeBlee wrote:

Do you have any thoughts on my question about the notion of
'finitistic'. Why do people limit 'finitistic' to primitive recursive?
Why not take finitistic as anything total recursive?

Because not all total recursive functions are recognisable as such by
finitistic principles.

The restriction to primitive recursive functions stems from the fact
that the principle of definition by primitive recursion is equivalent
to the principle of induction. Solely on basis of our basic
understanding of the naturals as what one obtains from 0 by repeatedly
applying the "add one"-operation the principle of induction and the
principle of definition by primitive recursive induction are equally
compelling. This is the reason for taking primitive recursive
arithmetic as the canonical formalisation for finitism; if we further
allow that properties definable from primitive recursive properties by
means of the usual logical operations of first-order logic --
including unrestricted quantification --, in effect accepting the
totality of the naturals as something determinate, we get PA.

--
Aatu Koskensilta (aatu.koskensi... at (no spam) xortec.fi)

"Wovon man nicht sprechen kann, daruber muss man schweigen"
 - Ludwig Wittgenstein, Tractatus Logico-Philosophicus

A question concerning terminology:

'Primitive recursive' is to be opposed to 'total recursive' or to
'general recursive'?

If I remember, primitive recursive functions are all total, while
recursive functions may not be total, i.e. not defined for all
arguments, isn't it?
Chris Menzel...
Posted: Sat May 10, 2008 11:38 am
Guest
On Thu, 08 May 2008 21:49:21 -0400, herbzet <herbzet at (no spam) gmail.com> said:
Quote:
MoeBlee wrote:
MoeBlee wrote:

the primitive recursive functions all have algorithms that require
only a "do for" loop and don't require a "do while" loop

I meant 'do until' not 'do while' there.

"Do while X" = "Do until not-X".

Well, yeah, 'cept if X is false, "Do while X" will skip the associated
procedure whilst "Do until not-X" will run through it once.
Marshall...
Posted: Sat May 10, 2008 6:15 pm
Guest
On May 10, 2:38 pm, Chris Menzel <cmen... at (no spam) remove-this.tamu.edu> wrote:
Quote:
On Thu, 08 May 2008 21:49:21 -0400, herbzet <herb... at (no spam) gmail.com> said:

I meant 'do until' not 'do while' there.

"Do while X" = "Do until not-X".

Well, yeah, 'cept if X is false, "Do while X" will skip the associated
procedure whilst "Do until not-X" will run through it once.

I'm feeling a bit of disorientation. We're talking Pascal terminology
now, right? Not logic?


Marshall
Chris Menzel...
Posted: Sun May 11, 2008 9:22 am
Guest
On Sun, 11 May 2008 14:56:50 GMT, Aatu Koskensilta
<aatu.koskensilta at (no spam) xortec.fi> said:
Quote:
On 2008-05-10, in sci.logic, Chris Menzel wrote:
Well, yeah, 'cept if X is false, "Do while X" will skip the
associated procedure whilst "Do until not-X" will run through it
once.

That might well be. I'm not au courant on the intricacies of Pascal
and other such horrors of the programming language Pantheon.

Hey, careful now, those of us of the Turbo Pascal generation will always
have a special place in our hearts for Pascal! I learned to program in
LISP on a Symbolics 3640, and in the heady environment of mid-1980s
Stanford they were so common one could stumble over the damn things.
But after leaving, Turbo Pascal on my IBM clone was for me pretty much
the only game in town. Of course it wasn't nearly as sophisticated and
as mathematically elegant as LISP, but you just weren't going to
shoehorn a full LISP implementation complete with IDE and garbage
collection into 64k. At 50 bucks, TP gave the ordinary user a real
programming environment.

Quote:
MoeBlee's original point was, presumably, that primitive recursive
functions are those functions expressible in a programming language
with as its sole looping construct one that allows one to loop from n
to m, where m is a constant that must be determined prior to entering
the loop. That is, we can't have loping constructs of the kind "do
until condition X holds" or "do while condition X holds".

That was of course his point. And my point was nothing more than the
trivial nit it appears to be. Smile
Chris Menzel...
Posted: Sun May 11, 2008 9:31 am
Guest
On Sun, 11 May 2008 09:05:09 -0700 (PDT), Marshall
<marshall.spight at (no spam) gmail.com> said:
Quote:
On May 11, 2:39 am, William Hale <h... at (no spam) tulane.edu> wrote:
In article
326dd4b2-5f53-45e8-a8dd-05e3d044e... at (no spam) w5g2000prd.googlegroups.com>,

Marshall <marshall.spi... at (no spam) gmail.com> wrote:
On May 10, 2:38 pm, Chris Menzel <cmen... at (no spam) remove-this.tamu.edu
wrote:
On Thu, 08 May 2008 21:49:21 -0400, herbzet <herb... at (no spam) gmail.com
said:

I meant 'do until' not 'do while' there.

"Do while X" = "Do until not-X".

Well, yeah, 'cept if X is false, "Do while X" will skip the
associated procedure whilst "Do until not-X" will run through it
once.

I'm feeling a bit of disorientation. We're talking Pascal
terminology now, right?

The above distinction between "do while" and "do until" applies not
only to Pascal, but to all the common programming languages.

Sure. Or anyway, the distinction between a loop construct that
executes at least once and one that doesn't is common. The Pascal-y
flavor of the choice of terms I still find disorienting, though.
Pascal as a thought-leader! It is as if I woke up and found that
teenagers now think John Wayne is cool.

Smile I think the explanation is just that simple Algol-style languages
(of which Pascal is perhaps the best known) are a common choice for
approaching the theory of computability via programming.
herbzet...
Posted: Sun May 11, 2008 7:30 pm
Guest
Chris Menzel wrote:
Quote:

On Thu, 08 May 2008 21:49:21 -0400, herbzet <herbzet at (no spam) gmail.com> said:
MoeBlee wrote:
MoeBlee wrote:

the primitive recursive functions all have algorithms that require
only a "do for" loop and don't require a "do while" loop

I meant 'do until' not 'do while' there.

"Do while X" = "Do until not-X".

Well, yeah, 'cept if X is false, "Do while X" will skip the associated
procedure whilst "Do until not-X" will run through it once.

Yes, I forgot about that.

--
hz
 
Page 1 of 1       All times are GMT - 5 Hours
The time now is Tue May 13, 2008 9:48 pm