在查看 PLT redex 时,我想玩简化规则;所以我为布尔值定义了这个最小的语言:
(define-language B0
(b T F (not b)))
我想简化一个链,(not (not ...))
所以我扩展了语言来处理上下文并定义了一个归约关系来简化not
:
(define-extended-language B1 B0
(C (not C) hole)
(BV T F))
(define red0
(reduction-relation
B1
(--> (in-hole C (not T)) (in-hole C F))
(--> (in-hole C (not F)) (in-hole C T))))
现在我想将我的语言扩展到布尔方程并允许not
在方程的每一边进行简化,所以我定义了:
(define-extended-language B2 B1
(E (= C b) (= b C)))
希望:
(define red1
(extend-reduction-relation red0 B2))
会做的事情。but no:red1
可以减少(not (not (not F)))))
但不能减少(= (not T) F)))
我在这里做了什么很傻的事情吗?