How to define a simple Boolean term rewriter properly in Symbolics?

using SymbolicUtils, SymbolicUtils.Rewriters
r = Postwalk(Chain([@rule ~x & ~x => ~x]))
@syms a::Bool b::Bool
r(a & a) # a
r(a & a & a) # a
r((a & a) & b) # a & b
r(a & a & a & a) # a
1 Like