def find_lexeme(verb):
    """ For a regular verb (base form), returns the forms using a rule-based approach.
    
    taken from pattern.en, because it wouldn't go into py2app properly
    """
    vowels = ['a', 'e', 'i', 'o', 'u']
    v = verb.lower()
    if len(v) > 1 and v.endswith('e') and v[-2] not in vowels:
        return [v, v, v, v + 's', v, v[:-1] + 'ing'] + [v + 'd'] * 6
    if len(v) > 1 and v.endswith('y') and v[-2] not in vowels:
        return [v, v, v, v[:-1] + 'ies', v, v + 'ing'] + [v[:-1] + 'ied'] * 6
    if v.endswith(('ss', 'sh', 'ch', 'x')):
        return [v, v, v, v + 'es', v, v + 'ing'] + [v + 'ed'] * 6
    if v.endswith('ic'):
        return [v, v, v, v + 'es', v, v + 'king'] + [v + 'ked'] * 6
    if len(v) > 1 and v[-1] not in vowels and v[-2] not in vowels:
        return [v, v, v, v + 's', v, v + 'ing'] + [v + 'ed'] * 6
    if len(v) > 1 and v.endswith(('y', 'w')) and v[-2] in vowels or len(v
        ) > 2 and v[-1] not in vowels and v[-2] in vowels and v[-3
        ] in vowels or len(v) > 3 and v[-1] not in vowels and v[-3
        ] in vowels and v[-4] in vowels:
        return [v, v, v, v + 's', v, v + 'ing'] + [v + 'ed'] * 6
    if len(v) > 2 and v[-1] not in vowels and v[-2] in vowels and v[-3
        ] not in vowels:
        return [v, v, v, v + 's', v, v + v[-1] + 'ing'] + [v + v[-1] + 'ed'
            ] * 6
    return [v, v, v, v + 's', v, v + 'ing'] + [v + 'ed'] * 6
