human
I wrote the below code

    def match(function1, function2):
        'Return    the    mapping    that    equates    variables    between    two\n                                simplified    boolean    expressions    if    possible.\n\n                                By    "simplified"    we    mean    that    a    function    has    been    denested\n                                and    is    either    an    And    (or    an    Or)    whose    arguments    are    either\n                                symbols    (x),    negated    symbols    (Not(x)),    or    Or    (or    an    And)    whose\n                                arguments    are    only    symbols    or    negated    symbols.    For    example,\n                                And(x,    Not(y),    Or(w,    Not(z))).\n\n                                Basic.match    is    not    robust    enough    (see    issue    4835)    so    this    is\n                                a    workaround    that    is    valid    for    simplified    boolean    expressions\n                                '
        if (function1.__class__ != function2.__class__):
            return None
        if (len(function1.args) != len(function2.args)):
            return None
        if function1.is_Symbol:
            return {function1: function2}
        f1 = _finger(function1)
        f2 = _finger(function2)
        if (len(f1) != len(f2)):
            return False
        matchdict = {}
        for k in f1.keys():
            if (k not in f2):
                return False
            if (len(f1[k]) != len(f2[k])):
                return False
            for (i, x) in enumerate(f1[k]):
                matchdict[x] = f2[k][i]
        return matchdict
    a = simplify_logic(bool1)
    b = simplify_logic(bool2)
    m = match(a, b)
    if m:
        return (a, m)
    return (m is not None)

What's a good function header?
 ... Here's a good function header?
assistant
#Here's a good function header.

def bool_map(bool1, bool2):