# MCS-287 Notes for 2006-03-14

Comments on the Tucker and Noonan book:

• Page 57: Note that when σ is applied to a variable, the variable's name is implicitly quoted, contrary to normal mathematical convention. That is, although normally in math the notation σ(y) would mean to apply σ to whatever is denoted by the variable y, in the notation being defined here, σ is being applied directly to the name y itself. In terms of Scheme notation, &sigma(y) is defined as

```(sigma 'y)
```

rather than

```(sigma y)
```

Also, beware that Tucker and Noonan's definition of "natural join" is different from the definition used in relational database sysems and their underlying relational algebra. (Nor am I familiar with any other authors who use this term as Tucker and Noonan do.)

• Pages 58-60: Here, Tucker and Noonan's understanding of what is or is not quoted in arguments to σ becomes even more interesting. Sometimes the argument is implicitly quoted, just as on page 57. For example, σ(x) and σ(x+1) apply σ to the implicitly quoted expressions x and x+1. (In particular, the latter does not apply σ to 1 more than whatever x is.) However, in other contexts the argument should not be understood as quoted. For example, in σ(e), the variable e is not a Jay variable that will be found listed with a value in σ. Rather, it is a metavariable that denotes some Jay expression; the function σ should be aplied to that denoted expression. Similarly, in σ(s.source), nothing is quoted; the entire argument to σ is metanotation, not Jay. The name s refers to a Jay assignment statement. The selection operation ".source" is applied to that assignment statement to get the assignment statement's source expression (a Jay expression). That expression is what σ is applied to. Finally, there are instances where σ is applied to a partially quoted (and partially unquoted) argument. For example, σ(e1+e2) applies σ to something that is a Jay binary-operator expression with operator "+", not to some numerical value found through addition. That is, the "+" is implicitly quoted. However, the two operands are not implicitly quoted; each subscripted e should be understood as standing for some arbitrary Jay expression.

• Page 58: In the second to last line before the footnote, note that the set "{..., (x,5), ...}" is σ. For consistency, it would make sense to write this line with σ rather than the elliptical set notation.

Also, in the very last line before the footnote, it is incorrect to say that σ is equal to the new state. We are doing a mathematical explanation of imperative programming, not imperative programming itself. In math, a variable can only have one value, rather than changing from an old value to a new one as in imperative programming. If a name is desired for the new state, it would have to be a new name, such as σ1.

• Pages 59-60: The example concerning a `while` loop at the end of Section 3.3 needs a lot of fleshing out; working that example more carefully will be the most important thing for us to do in class. However, to conserve board space we will work this example with 100 replaced by 50.

Course web site: http://www.gustavus.edu/+max/courses/S2006/MCS-287/
Instructor: Max Hailperin <max@gustavus.edu>