public bool IsAFact(Fact fact) { if (this.facts.Contains(fact)) { return(true); } NameVerbValueFact namefact = (NameVerbValueFact)fact; return(namefact.IsSatisfiedByContext(this.context)); }
private void ProcessRetractedFact(NameVerbValueFact fact) { IList <Rule> newretracted = new List <Rule>(); foreach (var rule in this.fired) { if (rule.Conditions.Any(c => c is NameVerbValueFact && ((NameVerbValueFact)c).Name == fact.Name)) { if (rule.RetractIfNotReady(this)) { newretracted.Add(rule); } } } foreach (var rule in newretracted) { this.fired.Remove(rule); this.notfired.Add(rule); } }