Make Fact.scala to use AndFact, OrFact and NotFact to avoid using anomynous classes and eliminate a by-name.