(deffacts data (vector a b c d e f g) (inverse) ) (defrule inverse ?idx <- (vector ?x $?rest) ?idxi <- (inverse $?inv) => (retract ?idx ?idxi) (assert (vector $?rest) (inverse ?x $?inv)) )