(deffacts dane (lista a b a a c c b a a a b c a b c a c) ) (defrule nowy ?i<-(lista ?x $?reszta) (not (licznik ?x ?)) => (retract ?i) (assert (lista $?reszta)) (assert (licznik ?x 1)) ) (defrule kolejny ?i<-(lista ?x $?reszta) ?ii<-(licznik ?x ?n) => (retract ?i ?ii) (assert (lista $?reszta)) (assert (licznik ?x (+ ?n 1))) )