constraint now returns CP (), added some more comments
Tidied main with demo function
Removed dependency on GADTs by using simple ADTs

No effect on functionality