private void PrintKnowledge(IKnowledge knowledge, Func <bool, bool> filter) { Log("Knowledge: "); foreach (var state in GetFullState()) { Log("\t" + PrintState(state) + ":"); var fun = knowledge.Get(state); if (GetFullState().Any(s => filter(fun(s)))) { if (GetFullState().All(s => fun(s))) { Log("\t\t... -> True"); } else if (GetFullState().All(s => fun(s) == false)) { Log("\t\t... -> False"); } else { foreach (var state2 in GetFullState()) { var result = fun(state2); if (filter(result)) { Log("\t\t" + PrintState(state2) + " -> " + (result ? "True" : "False")); } } } } } }
public Func <State, bool> Get(State stateTrue) { return((s) => { return Knowledge1.Get(stateTrue)(s) && Knowledge2.Get(stateTrue)(s); }); }
public bool Get(State state) { return(FullState.All(s => Imply(A.Get(s)(state), B.Get(s)(state)))); }