Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- (defparameter *mapOldToNew* '())
- (defun var? (s) (equal #\? (char (symbol-name s) 0)))
- (defun createNewClausule (oldClausule)
- (cond
- ((null oldClausule)
- (progn
- (setq *mapoldtonew* '())
- '()))
- (t (cons (processClausule (car oldClausule)) (createNewClausule (cdr oldClausule)) ))
- ))
- (defun processClausule (clausule)
- (cond
- ((null clausule) '())
- ((not (var? (car clausule))) (cons (car clausule) (processClausule (cdr clausule)) ))
- (t (cond
- ;; cold start for the symbol
- ((null (assoc (car clausule) *mapOldtonew* :test #'equal))
- (progn
- (let*
- (
- (newSymbol (list (car clausule) (gensym (symbol-name (car clausule)) )))
- )
- (setq *mapoldtonew* (cons newSymbol *mapOldtonew*))
- (cons (cadr newSymbol) (processClausule (cdr clausule)))
- ))
- )
- ;; new local symbol for this clausule
- ((consp (assoc (car clausule) *mapoldtonew* :test #'eql))
- (cons (cadr (assoc (car clausule) *mapoldtonew* :test #'eql))
- (processClausule (cdr clausule))
- )
- ))
- )))
- (defun replaceWithDiffVariables (clausuleSet)
- (cond
- ((null clausuleSet) '())
- (t (cons (createNewClausule (car clausuleSet))
- (replaceWithDiffVariables (cdr clausuleSet))) )
- ))
- (setq clausuleSet1
- '(
- ((not Hrana ?x) (Voli Sasha ?x))
- ((not Jede Srdjan ?x) (Jede Ceca ?x))
- ((not Jede ?x ?y) (Otruje_se ?x ?y) (Hrana ?y))
- ))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement