package edu.neu.ccs.demeterf.demfgen.lib; import edu.neu.ccs.demeterf.demfgen.lib.*; extern interface Comparable(X) : . nogen List(X) : Cons(X) | Empty(X). nogen Cons(X) = X *s List(X). nogen Empty(X)= . nogen Option(X): Some(X) | None(X). nogen Some(X) = X. nogen None(X) = . nogen RBColor : RED | BLACK. nogen RED = "red". nogen BLACK = "black". nogen RBTree(X:Comparable(X)) : RBNode(X) | RBLeaf(X). nogen RBLeaf(X:Comparable(X)) = . nogen RBNode(X:Comparable(X)) = "(node" *s RBColor *s X *s RBTree(X) *s RBTree(X) ")". nogen Entry(K:Comparable(K),V) = "(" K *s "->" *s V ")" implements Comparable(Entry(K,V)). nogen Map(K:Comparable(K),V) = "[" *s RBTree(Entry(K,V)) *s "]". nogen Wrap(X:Comparable(X)) = X implements Comparable(Wrap(X)). nogen Set(X:Comparable(X)) = "{" *s RBTree(Wrap(X)) *s "}".