It's minor style issue, but I don't see the need for the extra `_simplest_form` function here.  I would have left `simplify_logic` mostly unchanged, and just added two lines to the top of it:

    if form not in ('cnf', 'dnf', None):
        raise ValueError('form must be "cnf", "dnf", or None')