Disgregation: Difference between revisions

From formulasearchengine
Jump to navigation Jump to search
en>TimBentley
m Disambiguated: aggregationParticle aggregation using Dab solver
 
Somebody came to this page and changed a date that Carnot did something from 1824 to 1879. Carnot was dead in 1879. Vandalism?
Line 1: Line 1:
I am Oscar and I completely dig that title. Managing people has been his working day occupation for a whilst. North Dakota is exactly where me and my husband live. To do aerobics is a thing that I'm completely addicted to.<br><br>Also visit my web-site: [http://citymama.com.ua/profile_info.php?ID=38588 citymama.com.ua]
In [[computer science]] and [[recursion theory]] the '''McCarthy Formalism''' (1963) of [[computer]] scientist [[John McCarthy (computer scientist)|John McCarthy]] clarifies the notion of [[recursion (computer science)|recursive function]]s by use of the IF-THEN-ELSE construction common to computer science, together with four of the operators of [[primitive recursive function]]s: zero, successor, equality of numbers and composition. The conditional operator replaces both [[primitive recursion]] and the [[mu-operator]].
 
==Introduction==
 
===McCarthy's notion of ''conditional expression''===
McCarthy (1960)<ref>The 1963 reference has not been located.</ref> described his formalism this way:
:"In this article, we first describe a formalism for defining recursively. We believe this formalism has advantages both as a programming language and as a vehicle for developing a theory of computation....
:" We shall need a number of mathematical ideas and notations concerning functions in general. Most of the ideas are well known, but the notion of ''conditional expression'' is believed to be new, and the use of ''conditional expressions'' permits functions to be defined recursively in a new and convenient way."
 
===Minsky's explanation of the "formalism"===
In his 1967 ''Computation: Finite and Infinite Machines'', [[Marvin Minsky]] in his §10.6 '''Conditional Expressions: The McCarthy Formalism''' describes the "formalism" as follows:
: "Practical computer languages do not lend themselves to formal mathematical treatment--they are not designed to make it easy to prove theorems about the procedures they describe. In a paper by McCarthy [1963] we find a formalism that enhances the practical aspect of the recursive-function concept, while preserving and improving its mathematical clarity. ¶ McCarthy introduces "conditional expressions" of the form
:: f = ('''if''' ''p''<sub>1</sub> '''then''' ''e''<sub>1</sub> '''else''' ''e''<sub>2</sub>)
: where the ''e''<sub>i</sub> are expressions and ''p''<sub>1</sub> is a statement (or equation) that may be true or false. ¶ This expression means
:: See if ''p''<sub>1</sub> is true; if so the value of ''f'' is given by ''e''<sub>1</sub>.
:: IF ''p1'' is false, the value of ''f'' is given by ''e''<sub>2</sub>.
:This conditional expression . . . has also the power of the minimization operator. . ..
:The McCarthy formalism is like the general recursive (Kleene) system, in being based on some basic functions, composition, and equality, but with the conditional expression alone replacing both the primitive-recursive scheme and the minimization operator." (Minsky 1967:192-193)
 
Minsky uses the following operators in his demonstrations:<ref>Minsky (1967) does not include the identity operator in his description of [[primitive recursive function]]s. Why this is the case is not known.</ref>
* Zero
* Successor
* Equality of numbers
* Composition (substitution, replacement, assignment)<ref>Various authors use various names for this operation. Kleene calls it: "the schema of ''definition by substitution''. The expression for the ambiguous value of φ is obtained by substitution of expressions for the ambiguous values of χ<sub>1</sub>, . . ., χ<sub>m</sub> for the variables of ψ . . .. the function φ defined by an application of this schema we sometimes write ast '''S<sub>m</sub><sup>n</sup>'''(ψ, <sub>1</sub>, . . ., χ<sub>m</sub>." (Kleene 1952:220). Knuth names it the "all-important ''replacement'' operation (sometimes called ''assignment'' or ''substitution'')", and he symbolizes it with the " ← " arrow, e.g. "m ← n" means the value of variable ''m'' is to be replaced by the current value of variable ''n''" (cf Knuth 1973:3).</ref>  
* Conditional expression
From these he shows how to derive the ''predecessor'' function (i.e. DECREMENT); with this tool he derives the minimization operator necessary for "general" [[recursion]], as well as primitive-recursive definitions.
 
===Expansion of IF-THEN-ELSE to the CASE operator===
In his 1952 ''Introduction of Meta-Mathematics'' [[Stephen Kleene]] provides a definition of what it means to be a primitive recursive function:
:"A function φ is ''primitive recursive in'' ψ<sub>1</sub>, ...,ψ<sub>l</sub> (briefly '''Ψ'''), if there is a finite sequence φ<sub>1</sub>, ...,φ<sub>k</sub> of (occurrences of) functions ... such that each function of the sequence is either one of the functions '''Ψ''' (the assumed functions), or an initial function, or an immediate dependent of preceding functions, and the last function φ<sub>k</sub> is φ." (Kleene 1952:224)
In other words, given a "basis" function (it can be a constant such as 0), primitive recursion uses either the base or the previous value of the function to produce the value of the function; primitive recursion is sometimes called [[mathematical induction]]
 
Minsky (above) is describing a two-CASE operator. A demonstration that the ''nested'' IF-THEN-ELSE—the "[[case statement]]" (or "switch statement")--is [[primitive recursive]] can be found in Kleene 1952:229<ref>Kleene's 5 primitive recursion "schema" include the following:
*(I) zero constant: 0 or may be 0()
*(II) successor: S(0) = "1", S(1) = "2", etc.
*(III) projection: U<sub>i</sub><sup>n</sup> ( x<sub>1</sub> , ..., x<sub>n</sub> ) = x<sub>i</sub>, the x<sub>i</sub>'s are "parameters" fixed throughout the calculation, and U<sub>i</sub><sup>n</sup> project one of them out, the notation <math>\pi_i^n (x_1,\ldots,x_n) = x_i</math> is also used.
*(IV) substitution φ( x<sub>1</sub> , ..., x<sub>n</sub> ) = ψ ( χ<sub>1</sub>( x<sub>1</sub> , ..., x<sub>n</sub> ), ..., χ<sub>m</sub>( x<sub>1</sub> , ..., x<sub>n</sub> ))
*(V) primitive recursion; cf Kleene 1952:219.</ref> at "#F ('mutually-exclusive predicates')". The CASE operator behaves like a logical [[multiplexer]] and is simply an extension of the simpler two-case logical operator sometimes called AND-OR-SELECT (see more at [[Propositional formula]]). The CASE operator for three cases would be verbally described as: "If X is CASE 1 then DO "p" else if X is CASE 2 then do "q" else if X is CASE "3" then do "r" else do "default".
 
Boolos-Burgess-Jeffrey 2002 observe that in a particular instance the CASE operator, or a sequence of nested IF-THEN-ELSE statements, must be both [[mutually exclusive]], meaning that only one "case" holds (is true), and [[collectively exhaustive]], meaning ''every'' possible situation or "case" is "covered". These requirements are a consequence of the determinacy of [[Propositional logic]]; the correct implementation requires the use of [[truth table]]s and [[Karnaugh map]]s to specify and simplify the cases; see more at [[Propositional formula]]. The authors point out the power of "definition by cases":
:"...in more complicated examples, definition by cases makes it far easier to establish the (primitive) recursiveness of important functions. This is mainly because there are a variety of processes for defining new relations from old that can be shown to produce new (primitive) recursive relations when applied to (primitive) recursive relations." (Boolos-Burgess-Jeffrey 2002:74)
They prove, in particular, that the processes of [[substitution of variables|substitution]], [[graph relation]] (similar to the [[identity relation]] that plucks out (the value of) a particular variable from a list of variables), [[negation]] (logical NOT), [[Logical conjunction|conjunction]] (logical AND), [[disjunction]] (logical OR), bounded [[universal quantification]], or bounded [[existential quantification]] can be used together with definition by cases to create new primitive recursive functions (cf Boolos-Burgess-Jeffrey 2002:74-77).
 
==Notes==
{{Reflist}}
 
==References==
*[[George S. Boolos]], [[John P. Burgess]], and [[Richard C. Jeffrey]], 2002, ''Computability and Logic: Fourth Edition'', Cambridge University Press, Cambridge UK, ISBN 0-521-00758-5 paperback.
*[[John McCarthy (computer scientist)|John McCarthy]] (1960), ''Recursive Functions of Symbolic Expressions and Their Computation by Machine, Part I'', Communications of the ACM, 3, 184-195 (April 1960).
*[[Marvin Minsky]] (1967), ''Computation: Finite and Infinite Machines'', Prentice-Hall Inc, Englewood Cliffs, NJ.
 
{{DEFAULTSORT:Mccarthy Formalism}}
[[Category:Computability theory]]

Revision as of 22:33, 10 October 2012

In computer science and recursion theory the McCarthy Formalism (1963) of computer scientist John McCarthy clarifies the notion of recursive functions by use of the IF-THEN-ELSE construction common to computer science, together with four of the operators of primitive recursive functions: zero, successor, equality of numbers and composition. The conditional operator replaces both primitive recursion and the mu-operator.

Introduction

McCarthy's notion of conditional expression

McCarthy (1960)[1] described his formalism this way:

"In this article, we first describe a formalism for defining recursively. We believe this formalism has advantages both as a programming language and as a vehicle for developing a theory of computation....
" We shall need a number of mathematical ideas and notations concerning functions in general. Most of the ideas are well known, but the notion of conditional expression is believed to be new, and the use of conditional expressions permits functions to be defined recursively in a new and convenient way."

Minsky's explanation of the "formalism"

In his 1967 Computation: Finite and Infinite Machines, Marvin Minsky in his §10.6 Conditional Expressions: The McCarthy Formalism describes the "formalism" as follows:

"Practical computer languages do not lend themselves to formal mathematical treatment--they are not designed to make it easy to prove theorems about the procedures they describe. In a paper by McCarthy [1963] we find a formalism that enhances the practical aspect of the recursive-function concept, while preserving and improving its mathematical clarity. ¶ McCarthy introduces "conditional expressions" of the form
f = (if p1 then e1 else e2)
where the ei are expressions and p1 is a statement (or equation) that may be true or false. ¶ This expression means
See if p1 is true; if so the value of f is given by e1.
IF p1 is false, the value of f is given by e2.
This conditional expression . . . has also the power of the minimization operator. . ..
The McCarthy formalism is like the general recursive (Kleene) system, in being based on some basic functions, composition, and equality, but with the conditional expression alone replacing both the primitive-recursive scheme and the minimization operator." (Minsky 1967:192-193)

Minsky uses the following operators in his demonstrations:[2]

  • Zero
  • Successor
  • Equality of numbers
  • Composition (substitution, replacement, assignment)[3]
  • Conditional expression

From these he shows how to derive the predecessor function (i.e. DECREMENT); with this tool he derives the minimization operator necessary for "general" recursion, as well as primitive-recursive definitions.

Expansion of IF-THEN-ELSE to the CASE operator

In his 1952 Introduction of Meta-Mathematics Stephen Kleene provides a definition of what it means to be a primitive recursive function:

"A function φ is primitive recursive in ψ1, ...,ψl (briefly Ψ), if there is a finite sequence φ1, ...,φk of (occurrences of) functions ... such that each function of the sequence is either one of the functions Ψ (the assumed functions), or an initial function, or an immediate dependent of preceding functions, and the last function φk is φ." (Kleene 1952:224)

In other words, given a "basis" function (it can be a constant such as 0), primitive recursion uses either the base or the previous value of the function to produce the value of the function; primitive recursion is sometimes called mathematical induction

Minsky (above) is describing a two-CASE operator. A demonstration that the nested IF-THEN-ELSE—the "case statement" (or "switch statement")--is primitive recursive can be found in Kleene 1952:229[4] at "#F ('mutually-exclusive predicates')". The CASE operator behaves like a logical multiplexer and is simply an extension of the simpler two-case logical operator sometimes called AND-OR-SELECT (see more at Propositional formula). The CASE operator for three cases would be verbally described as: "If X is CASE 1 then DO "p" else if X is CASE 2 then do "q" else if X is CASE "3" then do "r" else do "default".

Boolos-Burgess-Jeffrey 2002 observe that in a particular instance the CASE operator, or a sequence of nested IF-THEN-ELSE statements, must be both mutually exclusive, meaning that only one "case" holds (is true), and collectively exhaustive, meaning every possible situation or "case" is "covered". These requirements are a consequence of the determinacy of Propositional logic; the correct implementation requires the use of truth tables and Karnaugh maps to specify and simplify the cases; see more at Propositional formula. The authors point out the power of "definition by cases":

"...in more complicated examples, definition by cases makes it far easier to establish the (primitive) recursiveness of important functions. This is mainly because there are a variety of processes for defining new relations from old that can be shown to produce new (primitive) recursive relations when applied to (primitive) recursive relations." (Boolos-Burgess-Jeffrey 2002:74)

They prove, in particular, that the processes of substitution, graph relation (similar to the identity relation that plucks out (the value of) a particular variable from a list of variables), negation (logical NOT), conjunction (logical AND), disjunction (logical OR), bounded universal quantification, or bounded existential quantification can be used together with definition by cases to create new primitive recursive functions (cf Boolos-Burgess-Jeffrey 2002:74-77).

Notes

43 year old Petroleum Engineer Harry from Deep River, usually spends time with hobbies and interests like renting movies, property developers in singapore new condominium and vehicle racing. Constantly enjoys going to destinations like Camino Real de Tierra Adentro.

References

  • George S. Boolos, John P. Burgess, and Richard C. Jeffrey, 2002, Computability and Logic: Fourth Edition, Cambridge University Press, Cambridge UK, ISBN 0-521-00758-5 paperback.
  • John McCarthy (1960), Recursive Functions of Symbolic Expressions and Their Computation by Machine, Part I, Communications of the ACM, 3, 184-195 (April 1960).
  • Marvin Minsky (1967), Computation: Finite and Infinite Machines, Prentice-Hall Inc, Englewood Cliffs, NJ.
  1. The 1963 reference has not been located.
  2. Minsky (1967) does not include the identity operator in his description of primitive recursive functions. Why this is the case is not known.
  3. Various authors use various names for this operation. Kleene calls it: "the schema of definition by substitution. The expression for the ambiguous value of φ is obtained by substitution of expressions for the ambiguous values of χ1, . . ., χm for the variables of ψ . . .. the function φ defined by an application of this schema we sometimes write ast Smn(ψ, 1, . . ., χm." (Kleene 1952:220). Knuth names it the "all-important replacement operation (sometimes called assignment or substitution)", and he symbolizes it with the " ← " arrow, e.g. "m ← n" means the value of variable m is to be replaced by the current value of variable n" (cf Knuth 1973:3).
  4. Kleene's 5 primitive recursion "schema" include the following:
    • (I) zero constant: 0 or may be 0()
    • (II) successor: S(0) = "1", S(1) = "2", etc.
    • (III) projection: Uin ( x1 , ..., xn ) = xi, the xi's are "parameters" fixed throughout the calculation, and Uin project one of them out, the notation πin(x1,,xn)=xi is also used.
    • (IV) substitution φ( x1 , ..., xn ) = ψ ( χ1( x1 , ..., xn ), ..., χm( x1 , ..., xn ))
    • (V) primitive recursion; cf Kleene 1952:219.