Disjunktive Normalform in Python

Was ist der beste Weg, mit Python eine Folge von ANDs und ORs in @ umzuwandel disjunktive Normalform (auch als "Summe der Produkte" bekannt)?

b AND (c OR (a AND d))

wir

(b AND c) OR (b AND a AND d)

Ich möchte diese auch lexikographisch sortieren

(a AND b AND d) OR (b AND c)

Antworten auf die Frage(2)

Ihre Antwort auf die Frage