Introduction To Omega

Monday March 29, 2009
Due Today:
Bring your laptop to classs!
Announcments:
Class Topic:
Downloading Omega. See the Omega page for some simple directions.
Summer School Notes part 1.
Some sources of information about Omega<
Omega users manual
Programming in Omega
Generic Programming in Omega.
The program we wrote in class with LTE and cdStar
Assigned today:
Get Omega working on your computer
Download Programming in Omega.
Read pages 17
Do exercises 1 & 2 (page 3), 3 (page 6), and 4, 5, & 6 (page 7).
Be prepared to discuss your solutions in class on Wednesday.

Wednesday March 31, 2009
Due Today:
exercises 1 & 2 (page 3), 3 (page 6), and 4, 5, & 6 (page 7) from Programming in Omega due today.
Announcements:
Class Topic:
Go over homework.
The TreeShape examples.
Continue with Summer School Notes part 1.
Witness types
The examples with Proof, LE, Plus, Even, etc.
Assigned today:
Read pages 812 of Programming in Omega.
Do exercises 8 & 9 (page 9), 10 & 11 (page 11), and 12 (page 12).

Monday April 5, 2009
Due Today:
Exercises 8 & 9 (page 9), 10 & 11 (page 11), and 12 (page 12) from Programming in Omega due today.
Announcments:
Class Topic:
Some code we discussed last time about plus commuting and a function with
multiply in its type. Also two different ways to encode a lessthanorequal
predicate, and relationships between them. The repEQ function and Liebniz equality.
Continue with Summer School Notes part 1.
Singleton types, Nat', Liebniz equality, computing values and proofs.
Assigned today:
Read pages 1317 of Programming in Omega.
Do exercises 13, 14, 15 (page 14), exercise 16 (page 15), exercise 17 (page 16).

Wednesday April 7, 2009
Due Today:
exercises 13, 14, 15 (page 14), exercise 16 (page 15), exercise 17 (page 16)from Programming in Omega due today.
Announcements:
Class Topic:
Go over homework.
13  same:: Nat' n > LE n n; predLE:: Nat' n > LE n (S n).
14  trans:: LE a b > LE b c > LE a c
15  f:: Nat' b > Plus b c > LE b c
16  sameNat:: Nat' a > Nat' b > Maybe(Equal a b)
17  filter (a > Bool) > Seq a n > exists m .(Nat' m,Seq a m)
Summer School Notes part 2.
pages 110, Libniz equality, and putting witnesses to work by
storing witness in data to enforce invariants.
pages 2536, Interpreters.
Untyped Interpreters. See example code.
extend this in class using GADTs to encode typed object language representations.
Assigned today:
Read Section 5, pages 3138 of Programming in Omega.
Do exercise 23, pages 3738.

Monday April 12, 2009
Due Today:
Announcments:
Class Topic:
Tom's exercise 17 code.
Summer School Notes part 2.
Staging the typed interpretor. Code to work on in class.
The code for a typed interpretor with variables.
Tags and Labels, reflecting names into the typenamespace. First Try.
Binding constructs using deBruin indices.
Assigned today:
Read Programming in Omega .
Section 3.11, pages 1728, Sections 5.45.6 pages 3436, Section 5.8 pages 3839, on staging.
Section 3.14, pages 2123 on Tags and Labels.
Do exercise 25 page 39. Use the staged interpretor and the
interpretor with variables we developed in class as
the base for your example. Implement as many 'optimizations' as you
can think of.

Wednesday April 14, 2009
Due Today:
Exercise 25 page 39 of Programming in Omega due today.
Announcements:
Class Topic:
After our discussion last time, I have thought of more ways to
view Tags and Labels as object language variables.
view1  A language with a fixed number of variables, and a fixed number of variables.
view2  Infinite number of positions by using natural numbers, but still a fixed number of variables.
view3  Using built in Tags and Labels for infinite positions and variables.
view4  Using position only. This is called De Bruijn indices.
Assigned today:
Read Programming in Omega
Section 5.15.11, Omega as a meta language, pages 3142.
Pay particular attention to Section 5.9
Do exercise 24, page 38 for next time.

Monday April 19, 2009
Due Today:
Do exercise 24, page 38 from Programming in Omega due today.
Announcments:
Class Topic:
Talk about homework. Evaluation using DeBruijn indices.
Finish our discussion about substitution in a system using De Bruijn indices.
Meta theory, reasoning about programs. Subject Reduction.
A helpful notes: Playing with Types.
Assigned today:
Read Programming in Omega
Section 5.12 5.14, pages 4250.
Using the dataypes from the Subject Reduction program
write a function bump:: E mode env t > E mode env t
that pushes every 'Shift' so that it applies only to variables
(or other Shifts applied to variables).

Wednesday April 21, 2009
Due Today:
Write a function bump:: E mode env t > E mode env t, due today (see April 21 assignment).
Announcements:
Class Topic:
Balanced Trees
Programming in Omega
Section 4, pp 2331, AVL Trees (code)
Appendix A, pp 6467, Red Black Trees (code)
Programming with Static Invariants in Omega
Section 4, pp 510, Binomial Heaps
Assigned today:
Implement 23 Trees. see directions.

Monday April 26, 2009
Due Today:
23 Trees due today.
Announcments:
Class Topic:
23 tree discussion
Read Programming in Omega
Section 6 pages 5052.
Some example proofs to work on.
Assigned today:
Programming in Omega. Exercise 27, page 55

Wednesday April 28, 2009
Due Today:
Programming in Omega. Exercise 27, page 55, due today.
Announcements:
Class Topic:
Read Programming in Omega
Sections 6.1, 6.2, and 6.3, pages 5563.
The working example we developed in class.
This imports our definition of value carrying Bits.
The code for a correct by typing bit adder.
Assigned today:
Programming in Omega. Exercises 32 and 33, page 62.

Monday May 3, 2009
Due Today:
Programming in Omega. Exercises 32 and 33 due tody.
Announcments:
Class Topic:
Go over homework.
More discussion about the adder. We'll continue to work on the
version we derived in class.
This imports our definition of value carrying Bits.
Assigned today:
Bring a list of 13 items you would be interested in working through
as a class. This will determine what we'll do for the next week or two
so put some thought into it.

Wednesday May 5, 2009
Due Today:
Announcements:
Class Topic:
In class we developed a framework for building
provably correct rewritesystems over value carrying bits.
The code we developed.
Assigned today:

Monday May 10, 2009
Due Today:
Announcments:
Class Topic:
Tom suggested a way to describe correct compilers.
The original stack based compilation algorithm.
An extended version using type indexes to ensure correctness.
Assigned today:
Extend the extended version above in some manner.

Wednesday May 12, 2009
Due Today:
Extensions to the extended version of the stack based compiler due today.
Announcements:
Class Topic:
We developed an extension to the compiler to stack code that
handles multi sorted expressions and conditions.
Assigned today:

Monday May 17, 2009
Due Today:
Announcments:
Class Topic:
Jake suggested looking at evolutionary programming, encoded
by typed functions that evolve.
A generator of typed functions, see the code using GADTs in Haskell.
Assigned today:
Extend the work above by
Functions for crossover
Functions for mutation
Evaluation of Expressions into functions
Randomize expression generation

Wednesday May 19, 2009
Due Today:
Announcements:
Class Topic:
Tim added some extensions to create real Haskell
functions from the generated functions: code.
Tom added some functions to randomly create functions: code.
Jake added some functions to perform crossover: code.
Dominic added code for random mutation of a term: code.
Assigned today:

Monday May 24, 2009
Due Today:
Announcments:
Class Topic:
We started formalizing a cache coherency protocol suggested by Dominic.
code here.
Assigned today:
Think about additional constructors for the OK judgement.

Wednesday May 26, 2009
Due Today:
Announcements:
Class Topic:
Assigned today:

Monday May 31, 2009
Memorial Day Holiday  No Classes

Wednesday June 2, 2009
Due Today:
Announcements:
Class Topic:
We discussed encoding a Learning Graph, where some
steps have prerequisites, can we enforce that prerequisites
always exist? See our code.
Assigned today:

?day June 7,8,9,0r 10, 2009
Final Exam Block:
End of Term Celebration.