'For a regular verb (base form), returns the forms using a rule-based approach.'

def find_lexeme(self, verb):

    v = verb.lower()
    b = b0 = re.sub('en$', '', v)
    if b.endswith('v'):
        b = (b[:(-1)] + 'f')
    if b.endswith('z'):
        b = (b[:(-1)] + 's')
    if ((len(b) > 2) and (not is_vowel(b[(-1)])) and is_vowel(b[(-2)]) and (not is_vowel(b[(-3)]))):
        if (not v.endswith(('elen', 'deren', 'keren', 'nderen', 'tteren'))):
            b = ((b[:(-1)] + b[(-2)]) + b[(-1)])
    if ((len(b) > 1) and (not is_vowel(b[(-1)])) and (b[(-1)] == b[(-2)])):
        b = b[:(-1)]
    sg = (((not b.endswith('t')) and (b + 't')) or b)
    dt = ((b0 and (b0[(-1)] in 'xtckfshp') and 't') or (((not b.endswith('d')) and 'd') or ''))
    p = ((b + dt) + 'e')
    for (suffix, irregular) in (('erfde', 'ierf'), ('ijfde', 'eef'), ('ingde', 'ong'), ('inkte', 'onk')):
        if p.endswith(suffix):
            p = (p[:(- len(suffix))] + irregular)
            break
    pp = re.sub('tt$', 't', (('ge' + b) + dt))
    pp = ((pp.startswith(('geop', 'gein', 'geaf')) and ((pp[2:4] + 'ge') + pp[4:])) or pp)
    pp = ((pp.startswith(('gever', 'gebe', 'gege')) and pp[2:]) or pp)
    return [v, b, sg, sg, v, (b0 + 'end'), p, p, p, ((b + dt) + 'en'), p, pp]
