private object TermExpansion(object unexpanded)
{
if (CheckForPredicateInfoInThisKB(term_expansion, 2) == null && Global.CheckForPredicateInfoInThisKB(term_expansion, 2) == null)
// Don't bother if not defined.
return unexpanded;
// Attempt to expand it
var expanded = new LogicVariable(expansion);
// Try this KB
if (CheckForPredicateInfoInThisKB(term_expansion, 2) != null)
// ReSharper disable UnusedVariable
#pragma warning disable 0168
foreach (var ignore in Prove(new Structure(term_expansion, unexpanded, expanded)))
#pragma warning restore 0168
{
return Term.CopyInstantiation(expanded);
}
// Try the global KB
if (this != Global && Global.CheckForPredicateInfoInThisKB(term_expansion, 2) != null)
#pragma warning disable 0168
foreach (var ignore in Global.Prove(new Structure(term_expansion, unexpanded, expanded)))
#pragma warning restore 0168
// ReSharper restore UnusedVariable
{
return Term.CopyInstantiation(expanded);
}
// Expansion failed, so use unexpanded version.
return unexpanded;
}