public void Add(PROBLEM input, SOLUTION output)
        {
            foreach (var observer in Observers)
            {
                var observations = new List <Observation>();
                //observer.GetObservations(fact, observations);

                Observations.AddRange(observations);
            }

            var constraints = new List <Constraint <SOLUTION> >();

            // Use observations to form conclusions
            foreach (var observation in Observations)
            {
            }

            Constraints = constraints;
        }