1 ---------
2 VORHER
3 ----------
4
5 rule(:varsigned => { :neg => subtree(:neg), :var =>subtree(:var) }) do
6 res = []
7 temp = []
8 if neg.to_s() == "!"
9 temp << -1
10 else
11 temp << 1
12 end
13 temp << var.to_s()
14 res << [temp]
15 res
16 end
17 rule(:and => { :left => subtree(:left), :right => subtree(:right) }) do
18 left + right
19 end
20 rule(:or => { :left => subtree(:left), :right => subtree(:right) }) do
21 res = []
22 left.each do |l|
23 right.each do |r|
24 res << (l + r)
25 end
26 end
27 res
28 end
29
30 -------------
31 NACHHER
32 ------------
33 rule(:literal => { :neg => simple(:neg), :atom =>subtree(:atom) }) {
34 [[[if neg.to_s() == "!" then -1 else 1 end, atom]]]
35 }
36 rule(:and => {:left => subtree(:left), :right => subtree(:right)}) {left + right}
37 rule(:or => {:left => subtree(:left), :right => subtree(:right)}) {
38 left.reduce([]){|res,l| right.each{|r| res << (l+r)} ; res}
39 }
40