X-Git-Url: http://lambda.jimpryor.net/git/gitweb.cgi?p=lambda.git;a=blobdiff_plain;f=week1.mdwn;h=e49724d988b25111363940f35236ce3904053dee;hp=316cfa44fd9c7e5ac231ece21514d5837636c6d1;hb=4e8aec5cb86b2838e8d556a9f8d6b2bcda215555;hpb=be4f2e949a6cb783561a2bbdbd3ba4d66dadec3f diff --git a/week1.mdwn b/week1.mdwn index 316cfa44..e49724d9 100644 --- a/week1.mdwn +++ b/week1.mdwn @@ -114,19 +114,19 @@ The lambda calculus we'll be focusing on for the first part of the course has no Here is its syntax:
- **Variables**: `x`, `y`, `z`, ... +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) +Abstract: (λa M)
-We'll tend to write (λa M) as just `( \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)` +Application: (M N)
Some authors reserve the term "term" for just variables and abstracts. We won't participate in that convention; we'll probably just say "term" and "expression" indiscriminately for expressions of any of these three forms. @@ -142,7 +142,7 @@ 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: +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: ((\a M) N) @@ -150,7 +150,7 @@ that is, an application of an abstract to some other expression. This compound f The rule of beta-reduction permits a transition from that expression to the following: - M {a:=N} + M [a:=N] What this means is just `M`, with any *free occurrences* inside `M` of the variable `a` replaced with the term `N`. @@ -167,7 +167,7 @@ For instance: > T is defined to be `(x (\x (\y (x (y z)))))` -The first occurrence of `x` in `T` is free. The `\x` we won't regard as being an occurrence of `x`. The next occurrence of `x` occurs within a form that begins with `\x`, so it is bound as well. The occurrence of `y` is bound; and the occurrence of `z` is free. +The first occurrence of `x` in T is free. The `\x` we won't regard as being an occurrence of `x`. The next occurrence of `x` occurs within a form that begins with `\x`, so it is bound as well. The occurrence of `y` is bound; and the occurrence of `z` is free. Here's an example of beta-reduction: @@ -185,7 +185,7 @@ Different authors use different notations. Some authors use the term "contractio M ~~> N -We'll mean that you can get from M to N by one or more reduction steps. Hankin uses the symbol -> for one-step contraction, and the symbol ->> for zero-or-more step reduction. Hindley and Seldin use (triangle..sub1) and (triangle). +We'll mean that you can get from M to N by one or more reduction steps. Hankin uses the symbol for one-step contraction, and the symbol for zero-or-more step reduction. Hindley and Seldin use 1 and . When M and N are such that there's some P that M reduces to by zero or more steps, and that N also reduces to by zero or more steps, then we say that M and N are **beta-convertible**. We'll write that like this: @@ -193,7 +193,7 @@ When M and N are such that there's some P that M reduces to by zero or more step This is what plays the role of equality in the lambda calculus. Hankin uses the symbol `=` for this. So too do Hindley and Seldin. -In the metatheory, it's also sometimes useful to talk about formulas that are syntactically equivalent *before any reductions take place*. Hankin uses the symbol (three bars) for this. So too do Hindley and Seldin. We'll use that too, and will avoid using `=` when discussing metatheory for the lambda calculus. Instead we'll use `<~~>` as we said above. When we want to introduce a stipulative definition, we'll write it out longhand, as in: +In the metatheory, it's also sometimes useful to talk about formulas that are syntactically equivalent *before any reductions take place*. Hankin uses the symbol ≡ for this. So too do Hindley and Seldin. We'll use that too, and will avoid using `=` when discussing metatheory for the lambda calculus. Instead we'll use `<~~>` as we said above. When we want to introduce a stipulative definition, we'll write it out longhand, as in: > T is defined to be `(M N)`.