Assignment #4: Finite Map Spaces

Due Wednesday, February 27th, 8pm

Finite Map Spaces (FMSs) define an algebra where finite maps (visualized as vectors) can be added and modified.  Just as elements can be added to programs, we want the ability to remove (delete, subtract) existing elements from  a program. That is, we want subtract vectors, so that terms (e.g., fields, methods), classes (vectors of terms), packages (vectors of vectors of terms), etc. can be deleted from a design.  A term is deleted (removed) if its value is zero. 

(a) In this assignment, you are to define a subtraction operation on vectors (finite maps) such that at least the following properties hold:

You should provide proofs that the above properties hold.  (Hint: use the same assumptions as in the FMS paper).

(b) The canonical form of features that we discussed was F(x)= I +m*x, where I is a vector of introductions and m is a modifier.  Generalize this form to include subtraction.  Show that your proposed form satisfies the property of compositionality (i.e., the composition of two functions in your proposed form yields another function in your form).

(c) Suggest how subtraction might be implemented, say in AHEAD or in AspectJ.