Talk:Μ operator

message: "if and only if
    f(z) = 0 and
    for every y < z, f(y) is defined and f(y) > 0. "
Surely f(y) may be negative (Since it is a map from positive integers to integers). So shouldn't it be:
"if and only if
    f(z) = 0 and
    for every y < z, f(y) is defined and f(y) != 0. "
But I might be missing something so I shall not edit it myself. Anyone else?
: I'm pretty sure you could define it over any countable well-ordered set. You'd just need a starting point and a successor function. I agree that it might be useful to explain it in more generality but at the moment I'm just here to brush up. AP295 (talk) 18:53, 14 February 2021 (UTC)
thread_title:  Placeholder to put the section below table of contents. 

message: As far as I can tell, this page should be named mu operator according to WP:NAME; non ASCII titles are not permitted.  Otherwise, I would have renamed it myself a month ago.  Although the software accepts non ASCII titles, it does not handle them correctly; see :Category:Recursion theory.  Moreover, non ASCII titles are apparently not permitted by policy.  I hope that there is an easy way for some administrator to undo the renaming etc. CMummert 02:15, 19 August 2006 (UTC)
thread_title:  Undo rename 

message: The following is CMummert's explanation for the reason why the mu-operator is necessary if one wants to generate the partial recursive functions. wvbailey has added some subscripted numbers etc.:
:The motivation for the mu operator is this.  Suppose that you have the ability to effectively determine whether a natural number ai is in a particular set A:
:: A = { a1, ... ai, .... a?, .... } 
:And suppose furthermore that you have an effective function f such that you can prove that if you start with any number n and successively compute f(n), f(f(n)), f(f(f(n))), and so on, eventually you will find a number in A, i.e.
::f( ... f( f( f(n) ) ) ... )do q times = a?,  
:Define a function g that takes input n and returns the first number in A that can be found by iteratively applying f:
:: g(n, set A, f(n), t) = g(n, { a1, ... ai, ... a?, .... } → tfirst ai ε A
:: ε means "element of the set"
:: t is a counter that starts from 0 and increments up each time f( ) occurs; t represents the number of times f is iterated
 
:Then g should be effective as well.  This follows from the Church-Turing thesis: since I told you a mechanical procedure for finding g(n), the function g should be Turing computable.  And, if if you read "effective" to mean "computable" then this is correct - g will be a computable function if A is decidable and f is a computable function.  But even if f is a primitive recursive function and A is a primitive recursively decidable set, g may not be primitive recursive.  The problem is that although you know that for each n you will eventually find g(n), you don't know how many iterations t? are required.  
:So the function h(n,t) which applies f to n iteratively for t iterations will be primitive recursive if f is.   The definition of h is
::h(n,0) = n
::h(n,t+1) = f(h(n,t))
:But the function g is definable as h(n, \mu t\,[h(n,t) \in A])  but not generally definable as a primitive recursive fuction (without the mu operator).  So if you are interested in having a syntactic definition for every computable function, you need the mu operator as well as the syntax used to define primitive recursive functions.  It's essentially just a programming language in which the mu operator is used to construct loops.
----
This is from Minsky (1967) where he uses the McCarthy Formalism to provide the base functions for the partial recursive functions:
:μ(x, N) =def (if f(x) = N then x else μ(x',N))" (p. 192)
i.e.
:μ(x, N) = ( if f(x) = N then x else μ(x+1,N))
>Insert table here
> Example from §57 The u-operator, enumeration, diagonal procedure. Here, no bound on the iterating-number y ("unbounded search operator"): Kleene (1952) p. 280:
Kleene recasts the mu-operator in terms of the "product operator Π" as follows:
(VI'): here use x in place of the nasty mess "x1, ... xn" and Kleene used z' rather than z+1 and y'rather than y+1:
φ(x) = μy[ χ(x,y) = 0 ] =def
: π(x,s)= Πs<yχ(x, s)
: τ(z+1, 0, y) = y
: φ(x) = τ( π( x,y ), π( x,y+1 ), y )
Example: let y = 3 from table below: ??
: φ = τ( π(3), π(4), 3) = 3               
              	y=0   	y=1    	y=2             	y=3                    	y=4                             	y=5          	y=.......
χ(y)          	3     	1      	2               	0                      	9                               	0            	. . . .
π(y)= Πs<yχ(s)	1     	3      	3               	6                      	0                               	0            	. . . .
              	      	       	                	                       	                                	             	
s<y           	---   	0      	0, 1            	0, 1, 2                	0, 1, 2, 3                      	0, 1, 2, 3, 4	. . . .
χ(s)          	χ(0)=3	χ(1)=1 	χ(2)=2          	χ(3)=3                 	χ(4)=9                          	χ(5)=0       	0
Πs<yχ(s)      	---   	χ(0) =3	χ(0)*χ(1) =3*1=3	χ(0)*χ(1)*χ(2) =3*1*2=6	χ(0)*χ(1)*χ(2)*χ(3) =3*1*2*0 = 0	0            	0
χ ψ Ψ ψ φ τ Χ μ ≤ ≥ ≠
Better example: 
In Kleene's proof that the CASE( , ... , ) operator is a primitive recusive function (p.r.f) Kleene provides two versions of the proof. The first uses (i) "representing functions" for "the predicates Q", (ii) the ~sgn( ) p.r.f., (iii) and an "arithmetic calculation" in to derive the CASE operator. The second one uses a bounded mu-operator operating over a string of OR(Qi & "y=φi"). The two proofs result in the equivalent value for "φ", one searching in sequence (the mu-version) the other just doing the search "in parallel". The resulting output-value "φ" has to be the mu's value for its y, because "y=φi". This just (seems to) mean that:
Hypothesis: The bounded mu-operator for predicates is identical to the CASE operator.  
Definition of a predicate Qk: it has a truth value of { true "t", false "f" }.
The predicates Q1, ... Qm used in the definition of the “case” primitive recursive function must be “mutually exclusive” – only one of these predicates can be true at a time; the rest must be false.
Definition of a representing function of a predicate:
: If the truth value of predicate Qi  is "true" then its representing function ψi has a value of 0 [!]; if the truth value of Qi  = "false" then its representing function ψi = 1 [!]
Definition of the ~sgn( ) function is similarly “backwards”: ~sgn(a)= 1 if a=0 and vise versa.
So: ~sgn(ψ(Q)k)= 1 if Qk="true" and 0 if false.
In the “case functions” we omit the messy x = (x1, . .. , xm):
An approximate natural language form:
CASE( Q(x),φ(x) ) = φ =
: φ1 if Q1 = "true" OR ... OR φm if Qm = "true" OR φm+1 otherwise i.e. all the Qi are false.
Kleene's first proof CASE is a p.r.f. without using the mu-operator:
  
CASE( ψ(x),φ(x) ) = φ = 
: ~sg(ψ(Q)1)*φ1 + . . . + ~sg(ψ(Q)m)*φm *[ ψ(Q)1* . . .*ψ(Q)m ]*φm+1
Rewrite φ in quasi-natural language, simpler terms of the predicates Q: 
CASE( Q(x),φ(x) ) = "φ" =
: [ Q1 => t:1 or f:0]*φ1 + . . . +[ Qm => t:1 or f:0]*φm +[ Q1 => t:1 or f:0]* . . .* [ Qm) => t:1 or f:0]*φm+1
Kleene's second proof that CASE is a p.r.f. using the mu-operator:
CASE( Q(x),φ(x) ) ="φ" = y =
μyy≤φ1+...+φm+1 {(Q1 & y=φ1) V . . . V(Qm & y=φm) V (~Qm & . . . & ~Qm & y=φm+1) }
Since these are equivalent φ we can equate the two versions and see what we get – #2 is the “serial, iterative” version and #1 is the “parallel-"all-at-once version. To make "easier" to see what is happening: 
: Σφ =def φ1 + ... +φm+1,
: summation Σi=1i=Σφ, product Πi=1i=m, serial OR Vi=1i=m, serial AND &i=1i=Σ
Equate the "φ" from both proofs:
CASE( Q(x),φ(x) )= "φ" = y =
μyy≤Σφ { Vi=1i=Σφ (Qi & y=φi) V [ &i=1i=m (~Qi) & y=φm+1 ] }
: = Σi=1i=m [ (Qi => t:1 or f:0 )*φi ] + [ Πi=1i=m ( Qi => t:1 or f:0 ) ]*φm+1
Conclusion: The bounded mu-operator (for predicates) and the CASE operator seem to be functionally identical. The above does seem to agree with Kleene's "recasting" of his (VI) into (VI') for his proof of "Theorem III". So this means that Minsky and McCarthy are right -- the "IF-THEN-ELSE" = CASE( ) plus successor plus "equality of numbers y=φi, the "i" iterated and the various "CASEs" selected and compared, seems to generate a mu-operator:
:φ(x) = τ( π( x,y ), π( x,y+1 ), y ) = y 
wvbaileyWvbailey 21:39, 29 October 2006 (UTC)
thread_title:  Holding place: motivation for the mu-operator 

message: Could we agree on a name to use in the article?  In the first section it's called mu operator and in the rest of the article it's called μ operator.  Then there's the entire thing with the title.  First it different from the majority spelling used in the article.  Second forwhateverreason somebody thought it should be called μ operator and simply stuck  without moving the page.
--Dispenser 07:53, 29 December 2006 (UTC)
replies: text: Support for lowercase-first-letter was added as a hack only recently to Wikimedia software, and the article didn't follow suit (see μTorrent as a counterexample). I'd endorse the move to μ operator. Better still, I'll be bold and move it. Duja► 08:37, 29 December 2006 (UTC)
replies: text: Notice, though, that the only place where the article title is correct is the article itself (because the "fix" is just a hack) — it will still be displayed with uppercase Mu on Talk, History, Watchlist, Category etc. Duja► 08:53, 29 December 2006 (UTC)
thread_title:  Naming 

message: Should the article mu-recursive function be merged with this article? I think this article has the better title (ignoring issues of latin versus greek) since the class of mu-recursive functions already has its own page at computable function. --Quux0r 02:22, 11 April 2007 (UTC)
thread_title:  Merge 

message: This page isn't at all helpful in explaining the idea of 'Effective Minimum' to me.  Where are
the examples?  It really reads like it's written for experts by experts.  —Preceding unsigned comment added by Myrikhan (talk • contribs) 18:00, 3 April 2008 (UTC)
replies: text: The article is just plain poorly written. Trivialities are emphasized at the expense of main ideas, patently false claims are made, etc., etc., etc. Deepmath (talk) 05:54, 28 August 2008 (UTC)
replies: text:  @ "Trivialities are emphasized at the expense of main ideas" I could not have said it better myself. Far too many articles suffer from this exact problem. AP295 (talk) 17:07, 15 February 2021 (UTC)

text:  @ Looks like you were harassed and eventually booted for something you had on your user page. I can't see what that was, but dollars to donuts you were spot on. Wikipedia seems to shun observant and insightful editors. Incidentally, donuts cost more than a dollar now, so I suppose the idiom is somewhat anachronistic. Damned inflation. AP295 (talk) 17:29, 15 February 2021 (UTC)
thread_title:  Not Helpful 

message: I corrected the exemple 1 section: i inverted AND and OR and corrected the table of the example (the Sigma line before was 0 1 2 3 3 3.... while it is impossible to be 0 if the Pi line is 1 and the Sigma line is a sum of all the PI until then.  —Preceding unsigned comment added by 87.7.17.68 (talk) 21:05, 25 January 2010 (UTC)
thread_title:  Little correction 

message: I really think this page should be formatted with LaTeX equations, not text.
--Duncanka12 (talk) 11:27, 3 February 2010 (UTC)
replies: text: I have cleaned it up a little bit, 9 years later :P Joel Brennan (talk) 06:54, 16 May 2019 (UTC)
thread_title:  Math formatting 

message: I think the article title should have a hypen in order to be consistent with its contents, however I am unable to change the article name. Joel Brennan (talk) 08:11, 16 May 2019 (UTC)
thread_title:  hypen in article name 

message: I'd much prefer something along the lines of the definition and notation in "mathematical theory of computation" by Zohar Manna. We can still give credit where credit is due (to Kleene), but something like
For a given  R(y,\mathbf{x})  where  \mathbf{x} := x_1,\dots,x_k ,
 
\begin{align}
\mu_R(\mathbf{x}) &:= h_R(0,\mathbf{x}) \\
h_R(y,\mathbf{x}) &:= y \text{ if } R(y,\mathbf{x}) \text{ else } h_R(y+1, \mathbf{x}) 
\end{align}
would probably be a lot clearer (and does not abuse FOL syntax) AP295 (talk) 18:49, 14 February 2021 (UTC)
thread_title:  Current notation is incomprehensible