Is there a library for .NET that does parenthesis or expression reduction and optimization? Something that would take an expression such as (A & (((B) | (C)) | D))) and return
A & (B | C | D)
But also take (A & A) and return A
This is more in the domain of a standalone parser/lexical analyzer. But ANTLR has a rather nice C# binding, if that would suit your purposes.
It probably wouldn't be very much work to write a simple parser for strings of this sort and do the reduction yourself.