diff --git a/o-CNFpolymer/izda.py b/o-CNFpolymer/izda.py
new file mode 100644
index 0000000000000000000000000000000000000000..fd6a4c60582a90568307503216524ead87f73723
--- /dev/null
+++ b/o-CNFpolymer/izda.py
@@ -0,0 +1,90 @@
+TABPOS=['a','A','b','B','c','C']
+
+def invert(val):
+    assert val=='0' or val=='1'
+    return '1' if val=='0' else '0'
+
+def valueOf(var, assignment):
+    """ returns the value of a variable according to an assignment """
+    pos= TABPOS.index(var)
+    val= assignment[pos//2]
+    if (pos%2==0):
+        return val
+    else:
+        return invert(val)
+
+
+def ORop(valA, valB):
+    """ OR operator """
+    assert valA=='0' or valA=='1'
+    assert valB=='0' or valB=='1'
+    return '0' if valA=='0' and valB=='0' else '1'
+
+def OR3op(valA, valB, valC):
+    """ OR operator """
+    assert valA=='0' or valA=='1'
+    assert valB=='0' or valB=='1'
+    assert valC=='0' or valC=='1'
+    return '0' if valA=='0' and valB=='0' and valC=='0' else '1'
+
+def parseOR2(operation, assignment):
+    """ parsing x v y """
+    assert operation[2]=="v" and len(operation)==5, print("oulala2:[%s]"%operation)
+    argA, argB= operation[0], operation[4]
+    valA=valueOf(argA,assignment)
+    valB=valueOf(argB,assignment)
+    return ORop(valA,valB)
+        
+def parseOR3(operation, assignment):
+    """ parsing x v y v z"""
+    assert operation[2]=="v" and operation[6]=="v" and len(operation)==9, print("oulala3:[%s]"%operation)
+    argA, argB, argC= operation[0], operation[4],operation[8]
+    valA=valueOf(argA,assignment)
+    valB=valueOf(argB,assignment)
+    valC=valueOf(argC,assignment)
+    return OR3op(valA,valB,valC)
+
+
+
+def evaluate(operation,assignment):
+    arity=1+operation.count('v')
+    assert arity==2 or arity==3, print("oulala:"+operation)
+    if arity==2:
+        val=parseOR2(operation, assignment)
+    else: 
+        val=parseOR3(operation, assignment)
+    #print("evaluating %s on assignment:%s >> %s"%(operation,assignment,val))
+    return val
+
+
+def assign(a,b,c):
+    return "%s%s%s"%(a,b,c)
+
+def scanTab(clause):
+    transtab=""
+    for i in range(8):
+        a,b,c,=i//4,(i//2)%2,i%2
+        #print ( "i:%d %d %d %d"%(i,a,b,c) )
+        assi=assign(a,b,c)
+        res= evaluate(clause, assi)
+        transtab+=res
+    
+    W=int(transtab[::-1],2)
+    print("clause:%s W:%d transtab:%s"%(clause, W, transtab))
+
+
+listf0=['a v b','b v c','a v c']
+listf1=['A v b','a v B', 'B v c', 'b v C', 'A v c','a v C']
+
+listf2=['a v b v c','A v b v c','a v B v c', 'a v b v C', 'A v B v c', 'A v b v C', 'a v B v C', 'A v B v C']
+
+def evalFormulae(listFormulae):
+    print("-"*30)
+    for form in listFormulae:
+        scanTab(form)
+    print("-"*30)
+
+evalFormulae(listf0)
+evalFormulae(listf1)
+
+evalFormulae(listf2)
\ No newline at end of file