human
Complete this python program:
def compute_known_facts(known_facts, known_facts_keys):
assistant
#Here is the Python code you requested.

    """Compute the various forms of knowledge compilation used by the
    assumptions system.
    This function is typically applied to the results of the ``get_known_facts``
    and ``get_known_facts_keys`` functions defined at the bottom of
    this file.
    """
    from textwrap import dedent, wrap
    fact_string = dedent('                """\n                The    contents    of    this    file    are    the    return    value    of\n                ``sympy.assumptions.ask.compute_known_facts``.\n\n                Do    NOT    manually    edit    this    file.\n                Instead,    run    ./bin/ask_update.py.\n                """\n\n                from    sympy.core.cache    import    cacheit\n                from    sympy.logic.boolalg    import    And,    Not,    Or\n                from    sympy.assumptions.ask    import    Q\n\n                #    -{    Known    facts    in    Conjunctive    Normal    Form    }-\n                @cacheit\n                def    get_known_facts_cnf():\n                                return    And(\n                                                %s\n                                )\n\n                #    -{    Known    facts    in    compressed    sets    }-\n                @cacheit\n                def    get_known_facts_dict():\n                                return    {\n                                                %s\n                                }\n                ')
    LINE = ',\n                                '
    HANG = ('    ' * 8)
    cnf = to_cnf(known_facts)
    c = LINE.join([str(a) for a in cnf.args])
    mapping = single_fact_lookup(known_facts_keys, cnf)
    items = sorted(mapping.items(), key=str)
    keys = [str(i[0]) for i in items]
    values = [('set(%s)' % sorted(i[1], key=str)) for i in items]
    m = (LINE.join(['\n'.join(wrap(('%s:    %s' % (k, v)), subsequent_indent=HANG, break_long_words=False)) for (k, v) in zip(keys, values)]) + ',')
    return (fact_string % (c, m))