<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def split_predicate(ex: Extraction) -> Extraction: """ Ensure single word predicate by adding "before-predicate" and "after-predicate" arguments. """

    rel_toks = ex.toks[char_to_word_index(ex.rel.span[0], ex.sent) \
                       : char_to_word_index(ex.rel.span[1], ex.sent) + 1]
    if not rel_toks:
        return ex

    verb_inds = [tok_ind for (tok_ind, tok)
                 in enumerate(rel_toks)
                 if tok.tag_.startswith('VB')]

    last_verb_ind = verb_inds[-1] if verb_inds \
                    else (len(rel_toks) - 1)

    rel_parts = [element_from_span([rel_toks[last_verb_ind]],
                                   'V')]

    before_verb = rel_toks[ : last_verb_ind]
    after_verb = rel_toks[last_verb_ind + 1 : ]

    if before_verb:
        rel_parts.append(element_from_span(before_verb, "BV"))

    if after_verb:
        rel_parts.append(element_from_span(after_verb, "AV"))

    return Extraction(ex.sent, ex.toks, ex.arg1, rel_parts, ex.args2, ex.confidence)