Hacked reduction.
authorEugen Sawin <sawine@me73.com>
Tue, 17 May 2011 04:10:39 +0200
changeset 809cc70d6f115
parent 7 cafa7d4b888d
child 9 7e81bfff0521
Hacked reduction.
smm.py
     1.1 --- a/smm.py	Tue May 17 03:38:02 2011 +0200
     1.2 +++ b/smm.py	Tue May 17 04:10:39 2011 +0200
     1.3 @@ -20,24 +20,23 @@
     1.4      r = Variable(["r"])
     1.5      formula = Imp([Eq([p, q]), r])
     1.6      formula = Not([Or([p, q])])
     1.7 -    formula = Not([Not([p])])
     1.8 +    #formula = Not([Not([p])])
     1.9      print formula
    1.10      print "reduced"
    1.11      print reduce(formula)
    1.12  
    1.13  
    1.14  def reduce(formula):
    1.15 -    print formula   
    1.16      map = {IMP: lambda (a, b): Or([Not([a]), b]),
    1.17             EQ: lambda (a, b): And([Or([Not([a]), b]), Or([a, Not([b])])]),
    1.18 -           NOT: lambda (a,): isinstance(a, Operator) and a.__class__([Not([v]) for v in a.values] or Not([a])),
    1.19 +           NOT: lambda (a,): not isinstance(a, Not) and a.__class__([Not([v]) for v in a.values]) or Not(a.values),
    1.20             AND: lambda (a, b): And([a, b]), 
    1.21 -           OR: lambda (a, b): Or([a, b]),
    1.22 -           VARIABLE: lambda (v,): v}
    1.23 +           OR: lambda (a, b): Or([a, b])}
    1.24      def values():
    1.25          return [reduce(v) for v in formula.values] 
    1.26  
    1.27      if not isinstance(formula, Operator) or formula.id not in map:
    1.28 +        print "skipped"
    1.29          return formula
    1.30      return map[formula.id](values())    
    1.31