递归检查联合正规形式

时间:2016-12-03 21:59:09

标签: recursion racket conjunctive-normal-form

我正在使用Dr Racket检查传递的表达式是否为Conjunctive normal form。

代码首先检查表达式是否为正常形式。

(define (is-nnf? expr)
  (cond
   [ (is-constant? expr) #t ]
   [ (is-variable? expr) #t ]
   [ (is-not? expr) (is-variable? (op1 expr)) ]
   [ (is-or? expr) (and (is-nnf? (op1 expr)) (is-nnf? (op2 expr))) ]
   [ (is-and? expr) (and (is-nnf? (op1 expr)) (is-nnf? (op2 expr))) ]
  ) 
)

is-nnf递归检查表达式是否为正常形式。

我正在尝试编写一个名为is-cnf的类似表达式,以递归方式检查表达式是否处于联合正常形式。

  

是常数 - >检查表达式是否为常量(例如#t,#f)

     

is-variable - >检查表达式是否为变量(例如' a,' x)

     

is-not - >检查列表的第一个元素是否为“不”(例如。   '(不是x))

     

是 - 或 - >检查列表的第一个元素是否为' not(   例如。 '(或x y))

     

是 - 和 - >检查列表的第一个元素是否为a   ' not(例如'(和x y))

0 个答案:

没有答案