private static Func<dynamic> GetDerivedUnknown(this Func<dynamic> fact, Func<dynamic> unknown) { if (unknown.LeftMatchesLeft(fact)) return unknown.CalculateDerivedFrom(fact); if (unknown.LeftMatchesLeft(fact.Invert())) return unknown.CalculateDerivedFrom(fact.Invert()); return null; }