Does anyone who works with (teaching?) boolean algebra think the following is a utility to include in boolalg?
>>> def truth_table(eq): ... free = list(ordered(eq.free_symbols)) ... rows = [free + [str(eq)]] ... for i in cartes(*[[true,false]]*len(free)): ... rows.append(list(i)) ... rows[-1].append(eq.subs(zip(free, i))) ... rows[-1] = ["1" if i else "0" for i in rows[-1]] ... return TableForm(rows, wipe_zeros=False) ... >>> truth_table(a&b|c) a b c Or(And(a, b), c) 1 1 1 1 1 1 0 1 1 0 1 1 1 0 0 0 0 1 1 1 0 1 0 0 0 0 1 1 0 0 0 0 >>> truth_table(~(~(a&b)|~(b&c))) a b c And(a, b, c) 1 1 1 1 1 1 0 0 1 0 1 0 1 0 0 0 0 1 1 0 0 1 0 0 0 0 1 0 0 0 0 0 -- You received this message because you are subscribed to the Google Groups "sympy" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To post to this group, send email to [email protected]. Visit this group at http://groups.google.com/group/sympy. For more options, visit https://groups.google.com/groups/opt_out.
