Download presentation
Presentation is loading. Please wait.
Published byMyles Summers Modified over 9 years ago
1
LOGICMOO INFERENCE ENGINE: Use only “decidable” fragments of Logic. (No false negatives and no false positives) Expect the systems Knowledge of the world to be incomplete. Expect our Knowledge of the world to be a “convenient generalization” of the truth. More Knowledge must make us run faster not slower. Since new Knowledge helps us understand the world better. It takes our generalized world and makes it more specific. Constraint based problems are solved faster be narrowing possibility. Know how to decide when we don’t know the answer. (Construct a proof showing why we don’t know an answer.) Surgical Conflict resolution.
2
Use only “decidable” fragments of Logic.. No false positives: Do not assume something is true unless we can both find concrete evidence to prove it and additionally fail to find cases that subsets of the evidence proves to be false. No false negatives: Do not assume something is false until we find concrete evidence that proves it false. And we additionally fail to find cases that subsets of this evidence proves to be true.
3
Use only “decidable” fragments of Logic. (No false positives). Do not assume something is true unless 1)We can both find concrete evidence to prove it and … (Prolog success) 2)additionally fail to find cases that subsets of the evidence found proves to be false. (Prolog failure) Arbitration Hint: Remove evidence that succeeds in #2. Retain only evidence that fails.
4
Use only “decidable” fragments of Logic. (No false negatives). Do not assume something is False unless 1)We can both find concrete evidence to prove it False (Prolog success) and … 2)additionally fail to find cases that subsets of the evidence found proves to be True. (Prolog failure) Arbitration Hint: Remove evidence that succeeds in #2. Retain only evidence that fails in #2.
5
Use only “decidable” fragments of Logic. Implementation? CNF -> HORN Translation. (From the 1970s/80s) Can this be enough?
6
Use only “decidable” fragments of Logic. Implementation?. ?- kif_add(male(P) => ~female(P)). %%%%%%%%%%%%%%%%%%%%%%% % kif = % all(P, (male(P)=> ~female(P))). % % pkif = % all(P, (male(P)=>not(female(P)))). % % cnf = % not(male(P))v not(female(P)). % % horn = % [ (not(female(P)):-male(P)), (not(male(P)):-female(P))]. % % succeed(user:boxlog_to_pfc((not(female(P)):-male(P)), (male(P), {is_unit(P)}==>neg(female(P))))). % % succeed(user:boxlog_to_pfc((not(male(P)):-female(P)), (female(P), {is_unit(P)}==>neg(male(P))))). % %%%%%%%%%%%%%%%%%%%%%%% Notice that we do not have the rule to prove anyone male to female? We have only rules to disprove! (Rules to narrow search space)
7
Use only “decidable” fragments of Logic. Implementation? % Humans are male or female ?- kif_add(human(P) => (female(P) v male(P))). %%%%%%%%%%%%%%%%%%%%%%% % kif = % all(P, (human(P)=>female(P)v male(P))). % % pkif = % all(P, (human(P)=>female(P)v male(P))). % % cnf = % not(human(P))v (female(P)v male(P)). % % horn = % % [ (female(P):-human(P), not(male(P))), % (male(P):-human(P), not(female(P))), % (not(human(P)):-not(female(P)), not(male(P))) % ]. % % succeed(user:boxlog_to_pfc((female(P):-human(P), not(male(P))), (human(P), neg(male(P)), {is_unit(P)}==>female(P)))). % % succeed(user:boxlog_to_pfc((male(P):-human(P), not(female(P))), (human(P), neg(female(P)), {is_unit(P)}==>male(P)))). % % succeed(user:boxlog_to_pfc((not(human(P)):-not(female(P)), not(male(P))), (neg(female(P)), neg(male(P)), {is_unit(P)}==>neg(human(P))))). % %%%%%%%%%%%%%%%%%%%%%%% We can prove something male (P) or female (P) as long as we can prove it is human(P) and prove that it is not male or female. How? The previous page shows how to disprove one or the other. We also can disprove something human(P) if we can prove with definite information that is neither male or female.
8
Use only “decidable” fragments of Logic. Implementation? % joe is male ==> male(joe). % pat is not female ==> ~female(pat). % We check that we cannot prove Pat is male. % Thus a query to ?- male(pat ). Will fail. :- test_if_failure( male(pat )). % Assert pat is human ==> human(pat). % Thus we can deduce he is male now :- test_if_success( male(pat )).
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.