def get_complete_phrases(ph2parse, tf_api):
    """Retrieve phrases completely covered by the parsings.
    
    The phrase atom parser runs on phrase_atoms, which are
    component parts of a complete phrase. In some cases the
    parser was unable to parse a phrase_atom, meaning that 
    some phrases are left without a complete parsing. This
    function only selects those phrases with complete parses.
    """
    F, L = tf_api.F, tf_api.L
    parsed_atoms = set(ph2parse)

    # add unparsed conjunctions
    # these are compensated for in the Composer object
    for atom in F.otype.s('phrase_atom'):
        if F.rela.v(atom) == 'Link':
            parsed_atoms.add(atom)

    # select only those phrases completely covered by the parser
    whole_phrases = []
    for phrase in F.otype.s('phrase'):
        ph_atoms = set(L.d(phrase, 'phrase_atom'))
        if parsed_atoms.issuperset(ph_atoms):
            whole_phrases.append(phrase)
           
    return whole_phrases