1. (40 points) Add a course drop method to the system that you implemented in Problem Set
1. Modularize your new implementation properly. For any new methods that you introduce:
1. Write a specication.
2. Write an implementation sketch.
3. Annotate the code.
2. (80 points) A partially ordered set (PoSet) is a pair (S; R) where S is a set and R S S
is a binary relation over S such that:
R is re
exive: 8 x 2 S : xRx
R is antisymmettric: 8 x; y 2 S : xRy ^ yRx ) x = y
R is transitive: 8 x; y; z 2 S : xRy ^ yRz ) xRz
R is called a partial order over S.
Implement PoSet as an abstract data type. Your implementation must provide the following
operations:
Create an empty partially ordered set (S; R), i.e., S = ;, R = ;.
Add an element x to S: S := S [ fxg, with R remaining unchanged.
Add an ordering between two existing elements x; y 2 S: R := R [ (x; y), provided that
this does not violate the partial order conditions.
Answer a membership query x 2 S.
Answer an ordering query (x; y) 2 R.
You may use any class in the Java collections framework.
Your solution must include the following:
1. An abstraction function and representation invariant for the class that implements PoSet.
2. Overview statements for every class.
3. Specication, implementation sketch, and annotation for all methods, with the exception
of very simple and obvious methods such as one line getter methods.