X-Git-Url: http://lambda.jimpryor.net/git/gitweb.cgi?a=blobdiff_plain;f=week1.mdwn;h=0207f0ceae92b3e0eafc4513fa279d8007de294e;hb=6ca041c08f7d5eccc1550af16de405c66fb23139;hp=5ae3e65f5c154f36a84432585178ed81bdb179ba;hpb=9452f39dcc5b7babde45142e2b24e3617813d6a6;p=lambda.git diff --git a/week1.mdwn b/week1.mdwn index 5ae3e65f..0207f0ce 100644 --- a/week1.mdwn +++ b/week1.mdwn @@ -39,8 +39,27 @@ Basics of Lambda Calculus The lambda calculus we'll be focusing on for the first part of the course has no types. (Some prefer to say it instead has a single type---but if you say that, you have to say that functions from this type to this type also belong to this type. Which is weird.) +Here is its syntax: + +
+Variables: x, y, z... +
+ +Each variable is an expression. For any expressions M and N and variable a, the following are also expressions: + +
+Abstract: (λa M) +
+ +We'll tend to write (λa M) as just `(\a M)`, so we don't have to write out the markup code for the λ. You can yourself write (λa M) or `(\a M)` or `(lambda a M)`. + +
+Application: (M N) +
+ Some authors reserve the term "term" for just variables and abstracts. We'll probably just say "term" and "expression" indiscriminately for expressions of any of these three forms. +
Examples of expressions: x @@ -52,6 +71,8 @@ Examples of expressions: (x (\x x)) ((\x (x x)) (\x (x x))) +
+ The lambda calculus has an associated proof theory. For now, we can regard the proof theory as having just one rule, called the rule of **beta-reduction** or "beta-contraction". Suppose you have some expression of the form: