Go to » Web - QA - Dictionary - Encyclopedia - Images
 Web Opens New Window. Results 1 - 10 of about 19,100 for SKI combinator calculus 

SKI combinator calculus - Wikipedia, the free encyclopedia

  
SKI combinator calculus is a computational system that is a reduced, untyped ... O'Donnell, Mike "The SKI Combinator Calculus as a Universal System. ...
http://en.wikipedia.org/wiki/SKI_combinator_calculus

The SKI Combinator Calculus a universal formal system

  
The SKI Combinator Calculus. a universal formal system. The ceremony. alphabet ... The terms of the combinator calculus are certain finite linear sequences of ...
http://people.cs.uchicago.edu/~odonnell/Teacher/Lectures/Formal_Organization_of_Knowledge/Examples/combinator_calculus/

Combinatory logic - Wikipedia, the free encyclopedia

  
It has been suggested that SKI combinator calculus be merged into this article or section. ... SKI combinator calculus. B,C,K,W system. Fixed point combinator ...
http://en.wikipedia.org/wiki/Combinatory_logic

The SKI Combinator Calculus a universal formal system

  
The SKI Combinator Calculus. a universal formal system. The ceremony ... Really conventional presentations of the combinator calculus introduce the ...
http://people.cs.uchicago.edu/~odonnell/Teacher/Lectures/Formal_Organization_of_Knowledge/Examples/combinator_calculus.texpdf.pdf

Good Math, Bad Math : Friday Pathological Programming: Unlambda, or ...

  
... based on the SKI combinator calculus. ... in SKI; the Y combinator of lambda calculus is: ... A lambda calculus or SKI expression can be evaluated ...
http://scienceblogs.com/goodmath/2006/08/friday_pathological_programmin_3.php

SKI combinator calculus encyclopedia topics | Reference.com

  
Encyclopedia topics for SKI combinator calculus at Reference.com. ... O'Donnell, Mike " The SKI Combinator Calculus as a Universal System. ...
http://www.reference.com/browse/wiki/SKI_combinator_calculus

Good Math has moved to ScienceBlogs : Programming SKI

  
SKI ... is the pure lazy lambda calculus languages which use SKI for compilation. ... From Lambda calculus to Combinator Calculus. Friday Random Ten 5 ...
http://goodmath.blogspot.com/2006/05/programming-ski.html

SKI calculus in a Haskell shell

  
In the last few days, I've tried to learn a bit of combinatory logic, using mostly the SKI combinator calculus system. I'm currently reading An Introduction to ...
http://www.dzone.com/links/ski_calculus_in_a_haskell_shell.html

Evaluating expressions of the combinator calculus

  
... program in this page evaluates expressions of the SKI combinator calculus, built ... evaluate an expression of the combinator calculus until either there are no ...
http://000024.org/unlambdaj.html

SKI calculus in a Haskell shell - yogiblog

  
... a bit of combinatory logic, using mostly the SKI combinator calculus system. ... When translating large λ-expressions to SKI expressions by hand, it can be hard ...
http://journal.batard.info/post/2008/02/17/ski-calculus-in-a-haskell-shell
 MORE WEB RESULTS »  

 Questions 'n' Answers about 'SKI combinator calculus' Opens New Window.
We did not find QA results for: SKI combinator calculus. Try the suggestions below or type a new query above.

Suggestions:

  • Check your spelling.
  • Try more general words.
  • Try different words that mean the same thing.
  • Broaden your search by using fewer words.
 Dictionary Opens New Window.

Click on the word below to see the definition:
 
 Encyclopedia Opens New Window.

SKI combinator calculus is a computational system that is a reduced, untyped version of Lambda calculus.

All operations in Lambda calculus are expressed in SKI as binary trees whose leaves are one of the three symbols S, K, and I (called combinators). In fact, the symbol I is added only for convenience, and just the other two suffice for all of the purposes of the SKI system.

Although the most formal representation of the objects in this system requires binary trees, they are usually represented, for typesettability, as parenthesized expressions, either with all the subtrees parenthesized, or only the right-side children subtrees parenthesized. So, the tree whose left subtree is the tree KS and whose right subtree is the tree SK is usually typed as ((KS)(SK)), or more simply as KS(SK), instead of being fully drawn as a tree (as formality and readability would require).

Contents

[edit] Informal description

Informally, and using programming language jargon, a tree (xy) can be thought of as a "function" x applied to an "argument" y. When "evaluated" (i.e., when the function is "applied" to the argument), the tree "returns a value". i.e., transforms into another tree. Of course, all three of the "function", the "argument" and the "value" are either combinators, or binary trees, and if they are binary trees they too may be thought of as functions whenever the need arises.

The evaluation operation is defined as follows:

(x, y, and z represent expressions made from the functions S, K, and I, and set values):

I returns its argument:

Ixx

K, when applied to any argument x, yields a one-argument constant function Kx , which, when applied to any argument, returns x:

Kxyx

S is a substitution operator. It takes three arguments and then returns the first argument applied to the third, which is then applied to the result of the second argument applied to the third. More clearly:

Sxyzxz(yz)

Example computation: SKSK evaluates to KK(SK) by the S-rule. Then if we evaluate KK(SK), we get K by the K-rule. As no further rule can be applied, the computation halts here.

Note that, for all trees x and all trees y, SKxy will always evaluate to y in two steps, and the ultimate result of evaluating SKxy will always equal the result of evaluating y. We say that SKx and I are "functionally equivalent" because they always yield the same result when applied to any y.

Note that from these definitions it can be shown that SKI calculus is not the minimum system that can fully perform the computations of Lambda calculus, as all occurrences of I in any expression can be replaced by (SKK) or (SKS) or (S K whatever) and the resulting expression will yield the same result. So the "I" is merely syntactic sugar.

In fact, it is possible to define a complete system using only one combinator. An example is Chris Barker's iota combinator, defined as follows:

ιx = xSK

[edit] Formal definition

The terms and derivations in this system can also be more formally defined:

Terms: The set T of terms is defined recursively by the following rules.

  1. S, K, and I are terms.
  2. If τ1 and τ2 are terms, then (τ1τ2) is a term.
  3. Nothing is a term if not required to be so by the first two rules.

Derivations: A derivation is a finite sequence of terms defined recursively by the following rules (where all Greek letters represent valid terms or expressions with fully balanced parentheses):

  1. If Δ is a derivation ending in an expression of the form α(Iβ)ι, then Δ followed by the term αβι is a derivation.
  2. If Δ is a derivation ending in an expression of the form α((Kβ)γ)ι, then Δ followed by the term αβι is a derivation.
  3. If Δ is a derivation ending in an expression of the form α(((Sβ)γ)δ)ι, then Δ followed by the term α((βδ)(γδ))ι is a derivation.

Assuming a sequence is a valid derivation to begin with, it can be extended using these rules. [1]

[edit] SKI expressions

[edit] Self-application and recursion

SII is an expression that takes an argument and applies that argument to itself:

SIIα → Iα(Iα) → αα

One interesting property of this is that it makes the expression SII(SII) irreducible:

SII(SII) → I(SII)(I(SII)) → I(SII)(SII) → SII(SII)

Another thing that results from this is that it allows you to write a function that applies something to the self application of something else:

(S(Kα)(SII))β → Kαβ(SIIβ) → α(SIIβ) → α(ββ)

This function can be used to achieve recursion. If β is the function that applies α to the self application of something else, then self-applying β performs α recursively on ββ. More clearly, if:

β = S(Kα)(SII)

then:

SIIβ → ββ → α(ββ) → α(α(ββ)) → …

[edit] The reversal expression

S(K(SI))K reverses the following two terms:

S(K(SI))Kαβ →
K(SI)α(Kα)β →
SI(Kα)β →
Iβ(Kαβ) →
Iβα → βα

[edit] Boolean logic

SKI combinator calculus can also implement Boolean logic in the form of an if-then-else structure. An if-then-else structure consists of a Boolean expression that is either T (True) or F (False) and two arguments, such that:

Txyx

and

Fxyy

The key is in defining the two Boolean expressions. The first works just like one of our basic combinators:

T = K
Kxyx

The second is also fairly simple:

F = KI
KIxy Iy y

Once True and False are defined, all Boolean logic can be implemented in terms of if-then-else structures.

Boolean NOT (which returns the opposite of a given boolean) works the same as the if-then-else structure, with False and True as the second and third values, so it can be implemented as a postfix operation:

NOT = (F)(T) = (KI)(K)

If this is put in an if-then-else structure, it can be shown that this has the expected result

(T)NOT=T(F)(T)=F
(F)NOT=F(F)(T)=T

Boolean OR (which returns True if either of the two Boolean values surrounding it is True) works the same as an if-then-else structure with True as the second value, so it can be implemented as an infix operation:

OR = T = K

If this is put in an if-then-else structure, it can be shown that this has the expected result:

(T)OR(T)=T(T)(T)=T
(T)OR(F)=T(T)(F)=T
(F)OR(T)=F(T)(T)=T
(F)OR(F)=F(T)(F)=F

Boolean AND (which returns True if both of the two Boolean values surrounding it are True) works the same as an if-then-else structure with False as the third value, so it can be implemented as a postfix operation:

AND = F = KI

If this is put in an if-then-else structure, it can be shown that this has the expected result:

(T)(T)AND=T(T)(F)=T
(T)(F)AND=T(F)(F)=F
(F)(T)AND=F(T)(F)=F
(F)(F)AND=F(F)(F)=F

Because this defines True, False, NOT (as a postfix operator), OR (as an infix operator), and AND (as a postfix operator) in terms of SKI notation, this proves that the SKI system can fully express Boolean logic.

[edit] Intuitionistic logic

The combinators K and S correspond to two well-known axioms of sentential logic:

AK: A → (BA),
AS: (A → (BC)) → ((AB) → (AC)).

Function application corresponds to the rule modus ponens:

MP: from A and AB infer B.

The axioms AK and AS, and the rule MP are complete for the implicational fragment of intuitionistic logic. In order for combinatory logic to have as a model:

[edit] See also

[edit] References

  • Smullyan, Raymond, 1985. To Mock a Mockingbird. Knopf. ISBN 0-394-53491-3. A gentle introduction to combinatory logic, presented as a series of recreational puzzles using bird watching metaphors.
  • --------, 1994. Diagonalization and Self-Reference. Oxford Univ. Press. Chpts. 17-20 are a more formal introduction to combinatory logic, with a special emphasis on fixed point results.

[edit] External links



All text is available under the terms of the GNU Free Documentation License. (See Copyrights for details.)
Wikipedia® is a registered trademark of the Wikimedia Foundation, Inc.
Privacy policy - About Wikipedia - Disclaimers - Fundraising
 
 Images Opens New Window.
File Size: 4.599609375k
Dimensions: 558 x 536 pixels
File Format: gif
File Size: 0.2197265625k
Dimensions: 17 x 17 pixels
File Format: png
File Size: 27.19921875k
Dimensions: 774 x 563 pixels
File Format: gif
File Size: 15.19921875k
Dimensions: 674 x 556 pixels
File Format: gif
File Size: 11.099609375k
Dimensions: 603 x 555 pixels
File Format: gif
File Size: 0.267578125k
Dimensions: 17 x 17 pixels
File Format: png
File Size: 0.7314453125k
Dimensions: 23 x 250 pixels
File Format: png
File Size: 0.740234375k
Dimensions: 23 x 240 pixels
File Format: png
File Size: 0.513671875k
Dimensions: 22 x 142 pixels
File Format: png
File Size: 0.7578125k
Dimensions: 23 x 237 pixels
File Format: png
File Size: 0.853515625k
Dimensions: 23 x 208 pixels
File Format: png
File Size: 0.7041015625k
Dimensions: 23 x 145 pixels
File Format: png
 
 MORE IMAGES »  
Go to » Web - QA - Dictionary - Encyclopedia - Images