//import scala.concurrent._
//import scala.concurrent.duration._
//import ExecutionContext.Implicits.global
//import scala.language.postfixOps 
//import scala.language.reflectiveCalls
//lazy val f = Future {
  import CW8a._
  assert(der('a', ZERO | ONE) == (ZERO | ZERO))
  assert(der('a', (CHAR('a') | ONE) ~ CHAR('a')) == ALT((ONE | ZERO) ~ CHAR('a'), ONE))
  assert(der('a', STAR(CHAR('a'))) == (ONE ~ STAR(CHAR('a'))))
  assert(der('b', STAR(CHAR('a'))) == (ZERO ~ STAR(CHAR('a'))))
//}
//Await.result(f, 120 second)