New Solution: 
New Solution: 
New Solution: 
[e,d,lower3,a,lower1,true]
[e,d,lower3,b,a,lower1,true]
[e,d,lower3,b,lower1,true]
basicrule(d,[[],[]])
basicrule(d,[[],[]])
basicrule(d,[[],[]])
basicrule(d,[[],[]])
basicrule(e,[[],[]])
basicrule(e,[[],[]])
basicrule(e,[[],[]])
basicrule(e,[[],[]])
basicrule(false,[[lower3,e],[not lower1]])
basicrule(false,[[lower3,e],[not lower1]])
basicrule(false,[[lower3,e],[not lower1]])
basicrule(false,[[lower3,e],[not lower1]])
basicrule(false,[[upper2,lower3,e],[]])
basicrule(false,[[upper2,lower3,e],[]])
basicrule(false,[[upper2,lower3,e],[]])
basicrule(false,[[upper2,lower3,e],[]])
basicrule(true,[[],[]])
basicrule(true,[[],[]])
basicrule(true,[[],[]])
basicrule(true,[[],[]])
choicerule([a,b],[[lower3,e],[]])
choicerule([a,b],[[lower3,e],[]])
choicerule([a],[[lower3,e],[]])
choicerule([a],[[lower3,e],[]])
constrrule(lower1,weightConst(1,[[a,b],[]]),undef)
constrrule(lower3,weightConst(2,[[d],[not c]]),undef)
constrrule(upper2,weightConst(3,[[a,b],[]]),undef)
weightrule(lower1,weightConst(1,[[a = 1,b = 1],[]]),undef)
weightrule(lower1,weightConst(1,[[a = 1],[(not b) = 1]]),undef)
weightrule(lower1,weightConst(1,[[a = 1],[(not b) = 1]]),undef)
weightrule(lower3,weightConst(2,[[d = 1],[(not c) = 1]]),undef)
weightrule(lower3,weightConst(2,[[d = 1],[(not c) = 1]]),undef)
weightrule(lower3,weightConst(2,[[d = 1],[(not c) = 1]]),undef)
weightrule(upper2,weightConst(3,[[a = 1,b = 1],[]]),undef)
weightrule(upper2,weightConst(3,[[a = 1],[(not b) = 1]]),undef)
weightrule(upper2,weightConst(3,[[a = 1],[(not b) = 1]]),undef)
