I need to come up with a data structure to keep information about English verb forms. In most cases a verb can be in one of 4 forms: base, present participle, past participle and past simple, for example:
- take
- taking
- taken
- took
It's seemingly easy to define 4 types for each form and be over with it. However there are few exceptions that ruin this simple idea.
- Present single third person form, which is in our example would be "takes".
- Copular verb "to be" has multiple irregular forms in the present tense: "am", "is", "are" and "was" and "were" in the past tense
- Verbs like "may" that don't inflect in the present single third person form: "she may".
What data structure would be efficient, accurate yet unambiguous for representing such information (with exceptional cases) given the following requirements have to be met:
- for an arbitrary form answer the question what conjugations the form represents
- for an arbitrary conjugation and a form answer the question whether the form represents the given conjugation or not?