KnowledgeBase.KB.AskDynamicProperties C# (CSharp) Method

AskDynamicProperties() private method

private AskDynamicProperties ( Name property, Name perspective, IEnumerable constraints ) : IEnumerable
property Name
perspective Name
constraints IEnumerable
return IEnumerable
        private IEnumerable<BeliefPair> AskDynamicProperties(Name property, Name perspective, IEnumerable<SubstitutionSet> constraints)
        {
            if (m_dynamicProperties.Count == 0)
                yield break;

            Name tmpPropertyName = property.ReplaceUnboundVariables(TMP_MARKER);

            var d = m_dynamicProperties.Unify(tmpPropertyName).ToList();
            if (d.Count == 0)
                yield break;

            var results = d.SelectMany(p => p.Item1.Evaluate(this, perspective, p.Item2, constraints).ToList());

            foreach (var g in results.GroupBy(p => p.Value, p => p.Constraints))
            {
                yield return Tuples.Create(g.Key, g.Distinct());
            }
        }