public Database <T> Project(IFact <T> fact)
        {
            var newGivenFacts = new List <IFact <T> >(givenFacts);

            newGivenFacts.Add(fact);

            return(new Database <T>(newGivenFacts, Transactions.Where(x => fact.IsTrue(x)).ToList()));
        }