; Maria-Piotr Ewa-Adam ; ----------- -------- ; / | \ / | \ ; / | \ / | \ ; / Marek \ / Joanna \ ; Robert-Agata Jan-Anna Krzysztof-Agnieszka ; ------------ -------- ------------------- ; / \ / \ / \ ; / \ / \ / \ ; / \ / \ / \ ; Radek Beata Darek Tomek Jacek Iwona (deffacts kobiety (kobieta Maria) (kobieta Ewa) (kobieta Agata) (kobieta Anna) (kobieta Agnieszka) (kobieta Beata) (kobieta Iwona) (kobieta Joanna) ) (deffacts mezczyzni (mezczyzna Piotr) (mezczyzna Adam) (mezczyzna Marek) (mezczyzna Robert) (mezczyzna Jan) (mezczyzna Krzysztof) (mezczyzna Radek) (mezczyzna Darek) (mezczyzna Tomek) (mezczyzna Jacek) ) (deffacts rodzice (rodzic Maria Marek) (rodzic Maria Agata) (rodzic Maria Jan) (rodzic Piotr Marek) (rodzic Piotr Agata) (rodzic Piotr Jan) ;----------------------------- (rodzic Ewa Anna) (rodzic Ewa Joanna) (rodzic Ewa Krzysztof) (rodzic Adam Anna) (rodzic Adam Joanna) (rodzic Adam Krzysztof) ;----------------------------- (rodzic Agata Radek) (rodzic Agata Beata) (rodzic Robert Radek) (rodzic Robert Beata) ;----------------------------- (rodzic Anna Darek) (rodzic Anna Tomek) (rodzic Jan Darek) (rodzic Jan Tomek) ;----------------------------- (rodzic Agnieszka Jacek) (rodzic Agnieszka Iwona) (rodzic Krzysztof Jacek) (rodzic Krzysztof Iwona) ) (defrule matka (relacja matka|matki) (kobieta ?x) (rodzic ?x ?y) => (printout t ?x " jest matka " ?y crlf) ) (defrule ojciec (relacja ojciec|ojcowie) (mezczyzna ?x) (rodzic ?x ?y) => (printout t ?x " jest ojcem " ?y crlf) ) (defrule siostra (relacja siostra|siostry) (kobieta ?x) (rodzic ?z ?x) (rodzic ?z ?y&~?x) => (printout t ?x " jest siostra " ?y crlf) ) (defrule brat (relacja brat|bracia) (mezczyzna ?x) (rodzic ?z ?x) (rodzic ?z ?y&~?x) => (printout t ?x " jest bratem " ?y crlf) ) (defrule babcia (relacja babcia|babcie) (kobieta ?x) (rodzic ?x ?z) (rodzic ?z ?y) => (printout t ?x " jest babcia " ?y crlf) ) (defrule dziadek (relacja dziadek|dziadkowie) (mezczyzna ?x) (rodzic ?x ?z) (rodzic ?z ?y) => (printout t ?x " jest dziadkiem " ?y crlf) ) (defrule stryj "brat ojca" (relacja stryj|stryjowie) (mezczyzna ?x) (rodzic ?z ?x) (rodzic ?z ?y&~?x) (mezczyzna ?y) (rodzic ?y ?d) => (printout t ?x " jest stryjem " ?d crlf) ) (defrule wuj "brat matki" (relacja wuj|wujowie) (mezczyzna ?x) (rodzic ?z ?x) (rodzic ?z ?y) (kobieta ?y) (rodzic ?y ?d) => (printout t ?x " jest wujem " ?y crlf) ) (deffacts dopuszczalne-relacje (relacje matka matki ojciec ojcowie siostra siostry brat bracia babcia babcie dziadek dziadkowie stryj stryjowie wuj wujowie) ) (defrule zapytanie (not (dane ?)) => (printout t "Jakie pokrewienstwo Cie interesuje? ") (assert (dane (read))) ) (defrule sprawdzanie-tak (dane ?x) (relacje $? ?x $?) => (assert (relacja ?x)) ) (defrule sprawdzanie-nie ?i<-(dane ?x) (not (relacje $? ?x $?)) => (retract ?i) (printout t "Nie ma definicji takiego pokrewienstwa!" crlf) )