To define how English nouns and verbs are inflected.


§1. Noun inflections. The following trie looks at the start of a word, which we assume to be a noun, and decides whether to use the indefinite article "a" or "an". This is much more complicated than simply looking for a vowel as the first letter, as people often think until they try a few cases.

The following was compiled by Toby Nelson with the aid of a pronunciation dictionary and the "Official Scrabble Wordlist".

<singular-noun-to-its-indefinite-article> ::=
    <en-trie-indef-a> |
    <en-trie-indef-b> |
    <en-trie-indef-c>

§2. Exceptions to the exceptions:

<en-trie-indef-a> ::=
    oneir*          an |
    onero*          an |
    ukiyo-e         an |          Japanese style of 17th-19th cent. printmaking
    urao*           an |
    urial*          an |
    uvarovite*      an            a rare emerald-green garnet, Ca3Cr2(SiO4)3

§3. Then the exceptions:

<en-trie-indef-b> ::=
    eu*             a |          e.g., euphoria, eulogy
    ewe*            a |          female sheep
    ewftes          a |          Spens. form of an eft lizard
    ewghen          a |          made of yew, i.e., yewen
    ewk             a |
    houri           a |
    once*           a |          a Once and Future King
    one*            a |          but still use an for oneir- and onero-
    onst            a |          dialect form of once
    oui*            a |          e.g., a Ouija board or a ouistiti (a marmoset)
    u               a |          the letter U
    u-*             a |          e.g., U-boats
    u'*             a |          e.g., u's
    uakari          a |          the South American monkey
    ub*             a |          e.g., ubiquitous
    udal*           a |
    udomet*         a |
    uey             a |          colloquial for "U-turn", as in "he pulled a uey"
    ueys            a |
    ufo*            a |
    uganda*         a |          the country Uganda
    ugr*            a |
    uint*           a |
    uk*             a |
    ulex            a |          the genus of gorse
    uli*            a |
    ulo*            a |
    ulu*            a |
    una             a |          from "una corda", the musical term
    unabomb*        a |          the so-called Unabomber
    unalist         a |
    unanimit*       a |
    unanimous*      a |
    unesco          a |          the United Nations cultural body
    unescos         a |
    unia*           a |
    unic*           a |
    unif*           a |
    unig*           a |
    unil*           a |
    unio*           a |
    unip*           a |
    uniq*           a |
    unis*           a |
    unit*           a |
    univ*           a |
    upas*           a |
    ura*            a |
    ure*            a |
    uri*            a |
    uru*            a |
    usa*            a |
    use*            a |
    usi*            a |
    usu*            a |
    utas*           a |
    ute*            a |
    uti*            a |
    uto*            a |
    utr*            a |
    uttoxeter*      a |          the English town of Uttoxeter
    uva*            a |
    uvu*            a

§4. And finally the basic rules:

<en-trie-indef-c> ::=
    a*              an |
    e*              an |
    i*              an |
    o*              an |
    u*              an |
    f               an |
    f's             an |
    f-*             an |
    fbi             an |
    fo              an |
    frs             an |
    h               an |
    h's             an |
    h-*             an |          e.g., H-bomb
    haute*          an |          e.g., haute cuisine, hauteur
    heir*           an |
    hono*           an |          e.g., honorific, honorary doctorate
    hour*           an |
    l               an |
    l's             an |
    l-*             an |          e.g., L-plate
    m               an |
    m's             an |
    m-*             an |          e.g., M-ration
    n               an |
    n's             an |
    n-*             an |          e.g., N-dimensional manifold
    r               an |
    r's             an |
    r-*             an |
    rac             an |          Royal Automobile Club
    raf             an |          Royal Air Force
    rspca           an |          Royal Society for the Prevention of Cruelty to Animals
    rsvp            an |
    s               an |
    s's             an |
    s-*             an |
    x               an |
    x's             an |
    x-*             an |          e.g., X-ray
    xmas*           an |
    yb*             an |          these are mostly obs., Spens., and/or arch.
    yc*             an |
    yd*             an |
    yf*             an |
    yg*             an |
    ym*             an |
    yn*             an |
    yp*             an |          e.g., ypsilon
    yr*             an |
    ys*             an |
    yt*             an |          e.g., Ytterbium, Yttrium
    yw*             an

§5. Plural inflections. The following takes a single word, assumes it to be a noun which meaningfully has a plural, and modifies it to the plural form. ("Golf" is a noun which doesn't sensibly have a plural; the algorithm here would return "golves".)

The trie here was derived from a partial implementation of Damian Conway's algorithm: see his paper "An Algorithmic Approach to English Pluralization", online at his website. The use of tries makes this somewhat faster than Conway's reference implementation, which for clarity's sake consists of a long sequence of regular-expression matches.

Conway divides plurals into modern and classical forms, and in cases where a noun has both, we take the modern form. Thus "phalanxes", not "phalanges". Because we focus on single words, we also omit prepositional phrases ("under water") and position names qualified by following adjectives ("procurator fiscal", "postmaster general"). Otherwise we omit only two cases, both involving capitalised proper nouns: nationality adjectives used as if they were nouns ("I saw two Japanese walking into the airport") and names of people used as if they were count nouns for a category of people like the one named ("We need more Wills, more Henrys.") — these are not likely to arise much in Inform usage, and they are awkward to implement with our tries because they depend on prefix as well as suffix and require case-dependency.

In its written form (as of November 2009, anyway), Conway's paper omits an important step from Algorithm 1, though it's present in his Perl implementation: the regular case of a sibilant suffix. (Ironically, this means that as stated Algorithm 1 pluralizes "suffix" incorrectly, as "suffixs".) I have filled this omission. I have also amended step 11, which considers the regular plural of a sibilant plus "o" suffix to include an "e", so that Conway produces "torsoes", "bozoes"; we will have "torsos" and "bozos".

<singular-noun-to-its-plural> ::=
    ... <en-trie-plural-uninflected> |
    ... <en-trie-plural-pronouns> |
    ... <en-trie-plural-irregular> |
    ... <en-trie-plural-irregular-inflections> |
    ... <en-trie-plural-assimilated-classical-inflections> |
    ... <en-trie-plural-irregular-o-suffixes> |
    ... <en-trie-plural-regular-inflections> |
    ... <en-trie-plural-append-s>

§6. See Conway's table A.2. The following nouns, mostly names of kinds of animal, have the same plural as singular form: for example, chamois, salmon, goldfish.

<en-trie-plural-uninflected> ::=
    *fish           0 |
    *ois            0 |
    *sheep          0 |
    *deer           0 |
    *pox            0 |
    *itis           0 |
    bison           0 |
    flounder        0 |
    pliers          0 |
    bream           0 |
    gallows         0 |
    proceedings     0 |
    breeches        0 |
    graffiti        0 |
    rabies          0 |
    britches        0 |
    headquarters    0 |
    salmon          0 |
    carp            0 |
    herpes          0 |
    scissors        0 |
    chassis         0 |
    high-jinks      0 |
    sea-bass        0 |
    clippers        0 |
    homework        0 |
    series          0 |
    cod             0 |
    innings         0 |
    shears          0 |
    contretemps     0 |
    jackanapes      0 |
    species         0 |
    corps           0 |
    mackerel        0 |
    swine           0 |
    debris          0 |
    measles         0 |
    trout           0 |
    diabetes        0 |
    mews            0 |
    tuna            0 |
    djinn           0 |
    mumps           0 |
    whiting         0 |
    eland           0 |
    news            0 |
    wildebeest      0 |
    elk             0 |
    pincers         0

§7. We may as well pluralise pronouns while we're at it.

<en-trie-plural-pronouns> ::=
    i               we |
    you             you |
    thou            you |
    she             they |
    he              they |
    it              they |
    they            they |
    me              us |
    you             you |
    thee            you |
    her             them |
    him             them |
    it              them |
    them            them |
    myself          ourselves |
    yourself        yourself |
    thyself         yourself |
    herself         themselves |
    himself         themselves |
    itself          themselves |
    themself        themselves |
    oneself         oneselves

§8. We now reach Conway step 4. These are irregular plurals mostly coming from archaisms.

<en-trie-plural-irregular> ::=
    beef            beefs |             we neglect the classical "beeves"
    brother         brothers |       and "brethren"
    child           children |
    cow             cows |             and "kine"
    ephemeris       ephemerides |
    genie           genies |         and "genii"
    money           moneys |         and "monies"
    mongoose        mongooses |
    mythos          mythoi |
    octopus         octopuses |      and "octopodes"
    ox              oxen |
    soliloquy       soliloquies |
    trilby          trilbys

§9. Step 5. Now we reach a batch of irregular but fairly general inflected endings; for example, protozoon to protozoa, or metamorphosis to metamorphoses. Note that we differ from Conway in pluralizing blouse as blouses, not blice, and human as humans, not humen.

<en-trie-plural-irregular-inflections> ::=
    *human          humans |            Step 5 begins here
    *man            3men |
    *blouse         2ses |
    *louse          5lice |
    *mouse          5mice |
    *tooth          5teeth |
    *goose          5geese |
    *foot           4feet |
    *zoon           4zoa |
    *cis            3ces |
    *sis            3ses |
    *xis            3xes

§10. Step 6. These are inflections from Latin and Greek which have survived into modern English:

<en-trie-plural-assimilated-classical-inflections> ::=
    alumna          alumnae |             from table A.10
    alga            algae |
    vertebra        vertebrae |
    codex           codices |             from table A.14
    murex           murices |
    silex           silices |
    aphelion        aphelia |             from table A.19
    hyperbaton      hyperbata |
    perihelion      perihelia |
    asyndeton       asyndeta |
    noumenon        noumena |
    phenomenon      phenomena |
    criterion       criteria |
    organon         organa |
    prolegomenon    prolegomena |
    agendum         agenda |             from table A.20
    datum           data |
    extremum        extrema |
    bacterium       bacteria |
    desideratum     desiderata |
    stratum         strata |
    candelabrum     candelabra |
    erratum         errata |
    ovum            ova

§11. Step 11a. (We're not implementing Conway's steps in sequence: see below.) These -o endings are mostly loan words from Romance languages whose original inflections are assimilated.

<en-trie-plural-irregular-o-suffixes> ::=
    albino          albinos |
    alto            altos |
    archipelago     archipelagos |
    armadillo       armadillos |
    basso           bassos |
    canto           cantos |
    commando        commandos |
    contralto       contraltos |
    crescendo       crescendos |
    ditto           dittos |
    dynamo          dynamos |
    embryo          embryos |
    fiasco          fiascos |
    generalissimo   generalissimos |
    ghetto          ghettos |
    guano           guanos |
    inferno         infernos |
    jumbo           jumbos |
    lingo           lingos |
    lumbago         lumbagos |
    magneto         magnetos |
    manifesto       manifestos |
    medico          medicos |
    octavo          octavos |
    photo           photos |
    pro             pros |
    quarto          quartos |
    rhino           rhinos |
    solo            solos |
    soprano         sopranos |
    stylo           stylos |
    tempo           tempos

§12. Conway steps 8 to 11. These are regular inflections depending only on word endings.

<en-trie-plural-regular-inflections> ::=
    *ch             0es |          Step 8: "church" to "churches"
    *sh             0es |          "rush" to "rushes"
    *ss             0es |          "dress" to "dresses"
    *alf            1ves |          Step 9: "calf" to "calves"
    *elf            1ves |          "self" to "selves"
    *olf            1ves |          "wolf" to "wolves"
    *eaf            1ves |          "sheaf" to "sheaves"
    *arf            1ves |          "wharf" to "wharves"
    *nife           2ves |          "knife" to "knives"
    *life           2ves |          "life" to "lives"
    *wife           2ves |          "wife" to "wives"
    *ax             0es |          Sibilant additions: "fax" to "faxes"
    *ex             0es |          "sex" to "sexes"
    *ix             0es |          "Weetabix" to "Weetabixes"
    *ox             0es |          "fox" to "foxes"
    *ux             0es |          "flux" to "fluxes"
    *as             0es |          "gas" to "gases"
    *es             0es |
    *is             0es |          "mantis" to "mantises"
    *os             0es |          "thermos" to "thermoses"
    *us             0es |          "abacus" to "abacuses"
    *az             0es |
    *ez             0es |          "fez" to "fezes"
    *iz             0es |
    *oz             0es |
    *uz             0es |
    *zz             0es |
    *ay             0s |             Step 10 begins here
    *by             1ies |
    *cy             1ies |
    *dy             1ies |
    *ey             0s |
    *fy             1ies |
    *gy             1ies |
    *hy             1ies |
    *iy             0s |
    *jy             1ies |
    *ky             1ies |
    *ly             1ies |
    *my             1ies |
    *ny             1ies |
    *oy             0s |
    *py             1ies |
    *qy             1ies |
    *ry             1ies |
    *sy             1ies |
    *ty             1ies |
    *uy             0s |
    *vy             1ies |
    *wy             1ies |
    *xy             1ies |
    *yy             1ies |
    *zy             1ies |
    *ao             0s |             Step 11b begins here
    *bo             1oes |
    *co             1oes |
    *do             1oes |
    *eo             0s |
    *fo             1oes |
    *go             1oes |
    *ho             1oes |
    *io             0s |
    *jo             1oes |
    *ko             1oes |
    *lo             1oes |
    *mo             1oes |
    *no             1oes |
    *oo             0s |
    *po             1oes |
    *qo             1oes |
    *ro             1oes |
    *so             0s |
    *to             1oes |
    *uo             0s |
    *vo             1oes |
    *wo             1oes |
    *xo             0s |
    *yo             1oes |
    *zo             0s

§13. Lastly, the fallback if none of the above cases match: append an -s, of course.

<en-trie-plural-append-s> ::=
    *               0s                 Step 13

§14. Verb inflections. "Le verbe est l'âme d'une langue" (attributed to Georges Duhamel). And the care of the soul is, of course, complicated. For example, the source text can say something like this:

The verb to flaunt means to wear.

This tells Inform that a new verb's infinitive is "flaunt", but not how to construct its other parts. We will use Preform grammar not only to define how to construct English verbs, but also in a way enabling it to be used with other languages too.

Inform uses five different tenses (present, past, present perfect, past perfect, and future), three persons, two numbers, two senses (true and false), and two voices (active and passive); in addition, it keeps track of the infinitive, past participle and present participle of a verb. Altogether that makes 123 potentially different versions of the original text. But of course there's a great deal of duplication in this, and almost all of the versions can be made using a much smaller number of genuinely different inflected versions of the word.

Our general strategy works like this:

§15. This gives us a certain amount of choice. What exactly is "too irregular"? In French, are all -er, -ir, and -re verbs "regular"? (Consider "aller", for example.) In English, it's possible to say that there are seven or so classes of verbs, all regular by their own standards; but most people say there's just one class of verb, and then irregular exceptions.

Our approach will follow Greenbaum, "Oxford English Grammar", at 4.14. Like Greenbaum, we will use the term "form type" for the different possible inflected versions of a verb word. The verb "to be" has eight form types (be, am, is, are, was, were, been, being), but it's unique in that respect — so this is one we will consider to be "too irregular", and will handle as a special case.

All other English verbs have five form types, though in many cases two or more of these have the same spelling. These we will number as follows, for reasons which will become clear below:

In regular verbs the past and past participle are the same, as they are here: he flaunted (past); he had flaunted (past participle). But English has around 600 commonly occurring irregular verbs in which they are different, sometimes unpredictably so: he went (past); he had gone (past participle). Irregularity sometimes makes these forms coincide rather than making them different: for example, to set has just three distinct forms — to set, he sets, he set, he had set, setting.

§16. Form types are numbered from 0 up to, potentially, a constant called MAX_FORM_TYPES. (This is so large that there shouldn't ever be need for more.) Form type 0 is always the original text, and is used as the basis from which the others are generated. For English verbs Inform always sets form type 0 to the infinitive, but this needn't be true if it's more natural in other languages to do something else.

We then reserve form types 1 to 3 for infinitive, present participle, and past participle, respectively, and this is required to be the case in all languages. Form type 4 is reserved for the "adjoint infinitive": if we are given the English base text "be able to see", for example, this will be recognised (see below) as "be able to" plus "see", and "see" will be the "adjoint infinitive". For most verbs, we won't use it.

That means that form types 5 and upward are free to be used as needed by each language. English needs two: the present (5) and past (6) forms.

define BASE_FORM_TYPE 0
define INFINITIVE_FORM_TYPE 1
define PRESENT_PARTICIPLE_FORM_TYPE 2
define PAST_PARTICIPLE_FORM_TYPE 3
define ADJOINT_INFINITIVE_FORM_TYPE 4
define MAX_FORM_TYPES 123

§17. We're now ready to write the <verb-conjugation-instructions>. This is a block which looks at the infinitive of the verb and decides which of several conjugations should be used. Badly irregular verbs get conjugations of their own, and others are grouped together. In French, for example, we might use this block of instructions to divide into different cases for -er, -ir, and -re verbs.

Each row takes the form of a pattern of words to match, followed by a nonterminal giving the conjugation to use if a match is made. Matches are literal except:

Note that we have to make sure every possible infinitive text matches at least one line, and the best way to ensure that is to finish up with ... as the last pattern — this matches anything.

§18. The instructions for English are quite concise, except for the presence of the awkward contracted informal forms of verbs. (These aren't used in Inform assertion sentences, but are needed for text substitutions.)

<verb-conjugation-instructions> ::=
    be              <to-be-conjugation> |
    be able to ...  <to-be-able-to-auxiliary> |
    be able to      <to-be-able-to-conjugation> |
    could           <modal-conjugation> |
    may             <modal-conjugation> |
    might           <modal-conjugation> |
    must            <modal-conjugation> |
    should          <modal-conjugation> |
    would           <modal-conjugation> |
    auxiliary-have  <to-have-conjugation> |
    do              <to-do-conjugation> |
    're             <contracted-to-be-conjugation> |
    've             <contracted-to-have-conjugation> |
    aren't          <arent-conjugation> |
    can't           <cant-modal-conjugation> |
    don't           <informal-negated-modal-conjugation> |
    haven't         <informal-negated-modal-conjugation> |
    mayn't          <informal-negated-modal-conjugation> |
    mightn't        <informal-negated-modal-conjugation> |
    mustn't         <informal-negated-modal-conjugation> |
    wouldn't        <informal-negated-modal-conjugation> |
    couldn't        <informal-negated-modal-conjugation> |
    shouldn't       <informal-negated-modal-conjugation> |
    won't           <informal-negated-modal-conjugation> |
    ...             <regular-verb-conjugation>

§19. We will start with two auxiliary verbs, that is, verbs used to construct forms of other verbs. The first is "to have"; as we'll see, English uses this to construct perfect tenses:

Peter has opened the gate. Jane had closed it.

"To have" doesn't really mean that anybody possessed anything here, except perhaps a history. It's simply used in conjunction with the past participle ("opened" and "closed") to form a tense. Verbs like this are called "auxiliary".

But it's not actually true, despite what concise grammars say, that English uses "to have" here; it uses a slight variation which differs in the negated forms. We write

I have not taken the lantern.

rather than

I do not have taken the lantern.

which strictly speaking ought to be correct. Inform handles this by using a modified form of "to have", which we'll call "to auxiliary-have", which differs only in its negative forms. We're only going to give this present and past tenses since it's never needed except as an auxiliary.

Anyway, this is an example of a "conjugation". The purpose of this is to set a few special verb forms — such as the present and past participles — and then give a recipe to make all of the many forms which the verb can take within sentences. The verb forms are numbered — see above — and the recipe is called a "tabulation". We'll specify the format for this below, when we get to a more complicated example, but briefly: this one sets the present participle (2) to "having", the past participle (3) to "had", and then names <to-have-tabulation> as the tabulation. The text doesn't have to be a single word, and some ingenious tricks are possible to form it from other verb forms; see below.

The marker <auxiliary-verb-only> means that this form of "have" can only be accessed from other verb conjugations, not via a text substitution for "[have]".

<to-have-conjugation> ::=
    2 having |
    3 had |
    <auxiliary-verb-only> |
    <not-instance-of-verb-at-run-time> |
    <to-have-tabulation>

§20. Tabulations give instructions for how to construct 120 possible versions of the verb. These are divided up first into active and passive "voices":

Peter carries the lantern. [Active.]

The lantern is carried by Peter. [Passive.]

This makes two sets of 60. Each set contains five tenses, which in English are present (1), past (2), perfect (3), past perfect (4) and future (5).

Peter carries the lantern. [1]

Peter carried the lantern. [2]

Peter has carried the lantern. [3]

Peter had carried the lantern. [4]

Peter will carry the lantern. [5]

This makes five sets of 12. In each set there are six persons: first person singular, second person singular, third person singular, first person plural, second person plural, third person plural. We always write them in that order:

I carry the lantern. [1PS]

You carry the lantern. [2PS]

He carries the lantern. [3PS]

We carry the lantern. [1PP]

You [more than one person] carry the lantern. [2PP]

They carry the lantern. [3PP]

And that makes six sets of 2: the positive sense and the negative.

I carry the lantern. [Positive.]

I do not carry the lantern. [Negative]

To sum up, two voices times five tenses times six persons times two senses, which makes 120 versions in all.

A tabulation is best thought of as a short program to make these. Inform starts out with all 120 versions blank, and each tabulation step sets one or more versions. It's perfectly legal for later steps to override earlier ones; and it's legal to leave some versions unset, marking them not to be used. (We're going to ignore all of the passives and three of the active tenses, so we're only going to set 48 versions, in the case of auxiliary-to-have.)

Each step consists of a selector, followed by a text. The selector simply chooses which of the 120 forms to set. The selector always begins with "a" or "p", meaning active or passive; it can then optionally give a digit from 1 to 5, narrowing down to a given tense; and it can optionally give a plus or minus sign, narrowing down to positive or negative senses. In the following, for example, a2+ means active voice (a), past tense (2), positive (+). This nails down the selection to just 6 versions of the verb.

The text is used literally, except for the following:

    3 ( seek )

A simple example, then, which uses only feature (d) of these exotica:

<to-have-tabulation> ::=
    a1+        <to-have-present> |
    a1-        <to-have-present> not |
    a2+        had |
    a2-        had not

§21. And this is an example of splitting into cases for the six persons, 1PS, 2PS, 3PS, 1PP, 2PP, 3PP. I have, you have, he has, we have, you have, they have. (This is more excitingly varied in other languages, of course.)

<to-have-present> ::=
    have | have | has | have | have | have

§22. Next we have "to do", which is like "to have" in being fairly regular, as irregular verbs go. But we treat this as a special case because, again, we're going to need as an auxiliary verb when forming negatives ("Peter does not wear the hat" — note the "does not"). But this time we give the full treatment, creating all 60 active forms.

For the passive, though, we do something new. The selector p* is actually a way to set all 60 passive forms (which would normally be written p), but it tells Inform to use "to be" as an auxiliary. When we write the p* step:

    p*     done by

the effect is the same as writing:

    p      ( be ) done by

The difference is that Inform more efficiently implements the p* version, by implementing "done by" as if it were a preposition rather than as part of a verb. This parses more quickly and makes English passive forms play more nicely with implied uses of "to be". For example, in

number of things carried by the player (1)

Inform has to infer the meaning

number of things which are carried by the player (2)

and it can only do this if it recognises "carried by" as being prepositional in nature, like "on" or "in". In other words, if we wrote the p step above instead of the p* step, (2) would still work but (1) would not. (We may have to revisit this for languages other than English.)

<to-do-conjugation> ::=
    2         doing |
    3         done |
    <to-do-tabulation>

<to-do-tabulation> ::=
    a1+       <to-do-present> |
    a1-       <to-do-present> not |
    a2+       did |
    a2-       did not |
    a3        ( t1 auxiliary-have ) done |
    a4        ( t2 auxiliary-have ) done |
    a5+       will do |
    a5-       will not do |
    p*        done by

<to-do-present> ::=
    do | do | does | do | do | do

§23. Regular English verbs, then, look like so. We will, for the first time, make heavy use of our numbered verb forms: for example, for the verb "to take", they would be "take" (1), "taking" (2), "taken" (3), "takes" (5) and "took" (6). We start with the infinitive ("take") in verb form 1, but (2), (3), (5) and (6) are initially blank — we have to make them somehow.

We do this by giving their definitions not as fixed wording, as we did for the verbs above, but as tries which act on the infinitive to produce a wording. For example, <en-trie-present-participle> is a trie which performs:

    take --> taking

We will have to define these tries below. Note that the infinitive can consist of multiple words; if so, the first word is run through the tries, and the remaining words are left alone. For example, "grab onto" would be inflected to "grabs onto", "grabbing onto" and so on.

<regular-verb-conjugation> ::=
    2         <en-trie-present-participle> |
    3         <en-trie-past-participle> |
    5         <en-trie-present-verb-form> |
    6         <en-trie-past> |
    <regular-verb-tabulation>

§24. Here we see our auxiliary verbs in use. For the negated present tense, "Peter does not carry the ball"; for the negated past tense, "Peter did not carry the ball" — in both cases, this is "to do" plus the infinitive "take". For the perfect tenses, "to have" plus the past participle — "Peter has carried the ball", "Peter had carried the ball". For the future tense, "will" plus the infinitive — "Peter will carry the ball". (We're actually not going to implement this as a verb because all its forms are just "will", and because "to will" also means "to leave a bequest".)

<regular-verb-tabulation> ::=
    a1+       <regular-verb-present> |
    a1-       ( do ) 1 |
    a2+       6 |
    a2-       ( do ) 1 |
    a3        ( t1 auxiliary-have ) 3 |
    a4        ( t2 auxiliary-have ) 3 |
    a5+       will 1 |
    a5-       will not 1 |
    p*        3 by

§25. This looks odd, but what it says is that the present tense of a regular English verb is always the infinitive (I take, you take, we take, and so on) except for third person singular (he takes), which is different. (It's usually what the plural of the infinitive would be if the infinitive were a noun, as we'll see.)

<regular-verb-present> ::=
    1 | 1 | 5 | 1 | 1 | 1

§26. Now for our most irregular verb: "to be".

<to-be-conjugation> ::=
    2 being |
    3 been |
    <to-be-tabulation>

<to-be-tabulation> ::=
    a1+       <to-be-present> |
    a1-       <to-be-present> not |
    a2+       <to-be-past> |
    a2-       <to-be-past> not |
    a3        ( t1 auxiliary-have ) been |
    a4        ( t2 auxiliary-have ) been |
    a5+       will be |
    a5-       will not be

<to-be-present> ::=
    am | are | is | are | are | are

<to-be-past> ::=
    was | were | was | were | were | were

§27. Except for tense formation (Peter "will" take the ball), the most common modal verb which can be used in Inform source text is "can". For example:

the number of people who can see the King

This is modal because it makes the seeing only a possibility, not an actuality. An awkward thing about modal verbs in English is that they are deficient, that is, not all their forms even exist. "Can" has no infinitive. ("To can" means to put food into a sealed metal container, which isn't the same thing at all.) "Can" also has no perfect or future tenses. On the other hand, it does have inflected present and past tenses, and we need to implement that. So we will invent the infinitive form "be able to", and make the verb from that, but using "can" and "could" instead of "is able to" and "was able to". "Can" is rather irregular as a verb: the third person singular doesn't inflect ("he can", not "he cans"), and the negative is written "cannot" instead of "can not", presumably because we find the two "n"s awkward to elide, so we always pronounce it that way and the spelling now follows.

<to-be-able-to-conjugation> ::=
    2         <en-trie-present-participle> |
    3         <en-trie-past-participle> |
    <to-be-able-to-tabulation>

<to-be-able-to-tabulation> ::=
    a1+       can ++1 |
    a1-       cannot ++1 |
    a2+       could ++1 |
    a2-       could not ++1 |
    a3        ( t1 auxiliary-have ) been able to ++1 |
    a4        ( t2 auxiliary-have ) been able to ++1 |
    a5+       will be able to ++1 |
    a5-       will not be able to ++1

§28. Inform has only a simple understanding of what "can" means, so it doesn't allow the source text to use "can" in combination with arbitrary verbs. Instead, each legal combination has to be declared explicitly:

To be able to reach is a verb meaning ...

Inform implements all of this by passing "be able to reach" through the same verb-conjugation mechanisms as all other verbs ("take", "see", and so on). But at least the conjugation used is now simple. Recall that when the instructions grammar, right back at the start of this discussion of verbs, chooses which conjugation to use, it converts the text matching the wild-card ... into the "adjoint infinitive" form (4). We get to this conjugation by matching

    be able to ...

so, for example, "be able to reach" results in 4 being set to "reach".

Note also the construction 3 ( 4 ) in the passive. The 3 means "take the past participle of the verb in brackets", and the 4 means that the text of this verb's infinitive is the contents of verb form 4. So, for example, for "be able to reach", 3 ( 4 ) expands to 3 ( reach ) which expands to "reached", and we get passive forms like "Peter can be reached by Jane".

<to-be-able-to-auxiliary> ::=
    2        <en-trie-present-participle> |
    3        <en-trie-past-participle> |
    <to-be-able-to-auxiliary-tabulation>

<to-be-able-to-auxiliary-tabulation> ::=
    a        ( be able to ) 4 |
    p        ( be able to ) be 3 ( 4 ) by

§29. The following handles the other English modal verbs ("might", "should" and so on) surprisingly easily. The notation ++1 means that the verb being modified should appear in verb form 1, and so on: for example, "might not lead" as "might not" plus form 1 of "to lead", i.e., "lead".

<modal-conjugation> ::=
    2         <en-trie-present-participle> |
    3         <en-trie-past-participle> |
    <modal-tabulation>

<modal-tabulation> ::=
    a1+       4 ++1 |
    a1-       4 not ++1 |
    a2+       4 have ++2 |
    a2-       4 not have ++2 |
    a3+       4 have ++2 |
    a3-       4 not have ++2 |
    a4+       4 have ++2 |
    a4-       4 not have ++2 |
    a5+       4 ++1 |
    a5-       4 not ++1

§30. That completes our basic kit of verbs nicely. What's left is used only for generating text at run-time — for printing adaptive messages, that is; none of these oddball exceptional cases is otherwise used as a verb in Inform source text. None of them has any meaning to Inform.

Inform could fairly easily support the contractions "isn't", "aren't", "wasn't", "can't" and so on, but we've chosen not to do so. They save very little typing, and they greatly change the aesthetic style of Inform source text without changing its functionality. (If we allowed them, some authors would use them all the time, and other authors never, but others still would mix them incoherently.)

But we still want people to be able to write adaptive text which uses these contracted forms: otherwise, how could we write classic messages like

You can't go that way.

and have them adapt to other tenses and viewpoints?

First we'll tackle "to 's", the contracted form of "to be": I'm, you're, and so on. Exactly how these contractions are used in different tenses is something that varies with different dialects of English — for example, "you'll not take the ball" is now a little obsolete except in rural dialects — and we aren't even going to try to cope with that.

<contracted-to-be-conjugation> ::=
    2 being |
    3 been |
    <not-instance-of-verb-at-run-time> |
    <contracted-to-be-tabulation>

<contracted-to-be-tabulation> ::=
    a1+        <contracted-to-be-present> |
    a1-        <contracted-to-be-present> not |
    a2+        <contracted-to-be-past> |
    a2-        <contracted-to-be-past-negated> |
    a3+        <contracted-to-have-present> been |
    a3-        <contracted-to-have-present> not been |
    a4+        'd been |
    a4-        'd not been |
    a5+        'll be |
    a5-        'll not be

<contracted-to-be-present> ::=
    'm | 're | 's | 're | 're | 're

<contracted-to-be-past> ::=
    was | were | was | were | were | were

<contracted-to-be-past-negated> ::=
    wasn't | weren't | wasn't | weren't | weren't | weren't

§31. And now "to 've", the contracted form of "to have". A subtle dialect point here concerns the negated present tense:

Sorry, I don't have a clue. [US]

Sorry, I haven't got a clue. [British]

Sorry, I haven't a clue. [British, but antiquated]

Sorry, I didn't have a clue. [US or British]

Sorry, I hadn't got a clue. [British]

But the American forms are becoming more common in British English, so we'll go with those.

<contracted-to-have-conjugation> ::=
    2 having |
    3 had |
    <not-instance-of-verb-at-run-time> |
    <contracted-to-have-tabulation>

<contracted-to-have-tabulation> ::=
    a1+        <contracted-to-have-present> |
    a1-        <contracted-to-have-present> not |
    a2+        had |
    a2-        hadn't |
    a3+        <contracted-to-have-present> had |
    a3-        <contracted-to-have-present> not had |
    a4+        'd had |
    a4-        'd not had |
    a5+        'll have |
    a5-        'll not have

<contracted-to-have-present> ::=
    've | 've | 's | 've | 've | 've

§32. Now we come to "aren't", a negated form of "to be", but where the contraction occurs between the verb and the "not" rather than between the subject and the verb.

Again, Inform doesn't know or care what this means. We're simply going to teach it to conjugate it as if it were a verb in its own right. So "to aren't" will be conjugated "I am not", "you aren't", "he isn't", and so on. (We don't say "I amn't", possibly because the "mn" is too awkward, but possibly also because we'd more likely say "I'm not". Because this would make the spacing awkwardly difficult — we would need to backspace — we won't take that option here.)

<arent-conjugation> ::=
    2 <en-trie-present-participle> |
    3 <en-trie-past-participle> |
    <not-instance-of-verb-at-run-time> |
    <arent-tabulation>

<arent-tabulation> ::=
    a1+        <arent-present> |
    a2+        <arent-past> |
    a3+        <arent-perfect> |
    a4+        hadn't been |
    a5+        won't be

<arent-present> ::=
    am not | aren't | isn't | aren't | aren't | aren't

<arent-past> ::=
    wasn't | weren't | wasn't | weren't | weren't | weren't

<arent-perfect> ::=
    haven't been |    haven't been | hasn't been | haven't been | haven't been | haven't been

§33. And finally: the contracted informal negatives of various modal verbs which it's useful to be able to print, like the "can't" in

You can't go that way.

English has more modal verbs than one tends to remember, and the definition of "modal" itself arguable. This is the best we can do.

<informal-negated-modal-conjugation> ::=
    2         <en-trie-present-participle> |
    3         <en-trie-past-participle> |
    5         <en-trie-modal-contracted-past> |
    6         <en-trie-modal-contracted-future> |
    7         <en-trie-modal-contracted-present> |
    <not-instance-of-verb-at-run-time> |
    <informal-negated-modal-tabulation>

<informal-negated-modal-tabulation> ::=
    a1+        <informal-negated-modal-present> ++1 |
    a2+        5 ++2 |
    a3+        5 ++2 |
    a4+        5 ++2 |
    a5+        6 ++1

<informal-negated-modal-present> ::=
    1 | 1 | 7 | 1 | 1 | 1

§34. Together with special rules for can't, which is inevitably slightly different:

<cant-modal-conjugation> ::=
    2         <en-trie-present-participle> |
    3         <en-trie-past-participle> |
    <not-instance-of-verb-at-run-time> |
    <cant-modal-tabulation>

<cant-modal-tabulation> ::=
    a1+        can't ++1 |
    a2+        couldn't ++1 |
    a3+        ( t1 haven't ) been able to ++1 |
    a4+        ( t2 haven't ) been able to ++1 |
    a5+        won't be able to ++1

§35. We have special tries just to list the forms of the cases we will deal with. Tries can do fancy things (see below), but here they act just as a look-up table: for example, "won't" has present "won't", past "wouldn't" and future "won't".

Note that results of tries normally have to be single words; but that plus signs can be used if we absolutely have to introduce spaces.

<en-trie-modal-contracted-present> ::=
    can't       can't |
    don't       doesn't |
    haven't     hasn't |
    won't       won't |
    mayn't      mayn't |
    mightn't    mightn't |
    mustn't     mustn't |
    wouldn't    wouldn't |
    couldn't    couldn't |
    shouldn't   shouldn't

<en-trie-modal-contracted-past> ::=
    can't       couldn't |
    don't       didn't |
    haven't     hadn't |
    won't       wouldn't |
    mayn't      mayn't+have |
    mightn't    mightn't+have |
    mustn't     mustn't+have |
    wouldn't    wouldn't+have |
    couldn't    couldn't+have |
    shouldn't   shouldn't+have

<en-trie-modal-contracted-future> ::=
    can't       won't+be+able+to |
    don't       won't |
    haven't     won't+have |
    won't       won't |
    mayn't      mayn't |
    mightn't    mightn't |
    mustn't     mustn't |
    wouldn't    wouldn't |
    couldn't    couldn't |
    shouldn't   shouldn't

§36. That's the end of the conjugations — the easy part, it turns out. We now need to create the four tries to make verb forms out of the infinitive: the present participle, the past participle, the third-person singular present tense, and the past tense.

We'll start with the present participle. This is actually quite hard, because in some cases it depends on pronunciation rather than spelling. Greenbaum's "Oxford English Grammar" summarises the general rules at 4.16, as follows:

These are fairly clear-cut rules, though English doesn't enforce them in all cases, so that most dictionaries let you say either focusing or focussing, for example, and either gluing or glueing (note that rule (a) drops the -e from -ue endings, but it's not at all clear why this case should be different, which may be why people are doubtful here); and in America participles like traveling or programing or worshiping are allowed by some people (with -l, -m, -me, -p endings), but they aren't universal. Inform will stick to traditional English as described above.

The tricky thing is that (c) is really a phonetic rule, not a spelling rule. For example, we need to count a final -y and -w as vowels, not consonants, because that's what they sound like. But at least that can be read from the spelling, whereas the presence or absence of stress can't. An English word generally stresses just one syllable, and always stresses at least one, so a monosyllabic word is always stressed. With a polysyllabic word, there's no easy way to tell. Consider deter to deterring (stress on second syllable of deter), but meter to metering (stress on first syllable of meter).

§37. The following algorithm is due to Toby Nelson, who produced it from a dictionary of 14,689 English verbs, some of them quite obscure (to torpefy, anyone? to spuilzie? to cachinnate?). It's essentially a more detailed version of Greenbaum's rules above.

<en-trie-present-participle> ::=
    ... <en-trie-irregular-present-participle> |
    ... <en-trie-irregular-compound-present-participle> |
    ... <en-trie-regular-a-present-participle> |
    ... <en-trie-regular-b-present-participle> |
    ... <en-trie-regular-c-present-participle>

§38. First of all there are some irregular cases — some for the usual suspects, but others for oddball verbs where English breaks the normal phonetic rules for the sake of clarity. For example, the participle of "singe" ought to be "singing", but in fact we write "singeing", purely to make it different from the act of producing a song.

<en-trie-irregular-present-participle> ::=
    boob      0ing   |
    had       0ding  |
    quad      0ding  |
    quod      0ding  |
    squid     0ding  |
    whid      0ding  |
    ballad    0ing   |
    salad     0ing   |
    invalid   0ing   |
    ref       0fing  |
    stravaig  0ing   |
    scoog     0ing   |
    scoug     0ing   |
    yak       0king  |
    yok       0king  |
    lek       0king  |
    trek      0king  |
    spaniel   0ling  |
    vermeil   0ling  |
    madam     0ing   |
    buckram   0ing   |
    hem       0ming  |
    emblem    0ing   |
    item      0ing   |
    slalom    0ing   |
    alarum    0ing   |
    possum    0ing   |
    chalan    0ing   |
    challan   0ing   |
    tyran     0ning  |
    den       0ning  |
    hen       0ning  |
    ken       0ning  |
    misken    0ning  |
    pen       0ning  |
    unpen     0ning  |
    sten      0ning  |
    in        0ning  |
    gin       0ning  |
    begin     0ning  |
    bin       0ning  |
    sin       0ning  |
    damaskin  0ing   |
    trampolin 0ing   |
    chagrin   0ing   |
    satin     0ing   |
    on        0ning  |
    con       0ning  |
    don       0ning  |
    kon       0ning  |
    fillip    0ing   |
    turnip    0ing   |
    sip       0ping  |
    cop       0ping  |
    lop       0ping  |
    clop      0ping  |
    flop      0ping  |
    plop      0ping  |
    slop      0ping  |
    galop     0ping  |
    up        0ping  |
    cup       0ping  |
    gar       0ring  |
    mortar    0ing   |
    sker      0ring  |
    deter     0ring  |
    inter     0ring  |
    disinter  0ring  |
    reinter   0ring  |
    aver      0ring  |
    abhor     0ring  |
    vor       0ring  |
    demur     0ring  |
    fur       0ring  |
    smur      0ring  |
    caucus    0ing   |
    sus       0sing  |
    combat    0ing   |
    ballat    0ing   |
    curat     0ing   |
    quadrat   0ing   |
    bet       0ting  |
    abet      0ting  |
    fet       0ting  |
    fidget    0ing   |
    target    0ing   |
    crochet   0ing   |
    epithet   0ing   |
    ratchet   0ing   |
    let       0ting  |
    blet      0ting  |
    leaflet   0ting  |
    relet     0ting  |
    sublet    0ting  |
    underlet  0ting  |
    net       0ting  |
    benet     0ting  |
    overnet   0ting  |
    pet       0ting  |
    spet      0ting  |
    ret       0ting  |
    aret      0ting  |
    fret      0ting  |
    regret    0ting  |
    basset    0ing   |
    closet    0ing   |
    corset    0ing   |
    cosset    0ing   |
    gusset    0ing   |
    posset    0ing   |
    roset     0ing   |
    russet    0ing   |
    briquet   0ting  |
    coquet    0ting  |
    duet      0ting  |
    parquet   0ting  |
    covet     0ing   |
    unrivet   0ing   |
    velvet    0ing   |
    discomfit 0ing   |
    profit    0ing   |
    limit     0ing   |
    delimit   0ing   |
    vomit     0ing   |
    rit       0ting  |
    frit      0ting  |
    grit      0ting  |
    bit       0ting  |
    dit       0ting  |
    kit       0ting  |
    sit       0ting  |
    besit     0ting  |
    outsit    0ting  |
    resit     0ting  |
    picot     0ing   |
    ballot    0ing   |
    pilot     0ing   |
    parrot    0ing   |
    debut     0ing   |
    brut      0ing   |
    div       0ing   |
    ante      0ing   |  miscellaneous -e exceptions
    be        0ing   |
    binge     0ing   |
    birdie    0ing   |
    centre    0ing   |
    chasse    0ing   |
    cicerone  0ing   |
    dele      0ing   |
    ensilage  0ing   |
    facsimile 0ing   |
    glace     0ing   |
    jeelie    0ing   |
    longe     0ing   |
    lunge     0ing   |
    ouglie    0ing   |
    peenge    0ing   |
    pie       0ing   |
    quaere    0ing   |
    queue     0ing   |
    recce     0ing   |
    route     0ing   |
    reroute   0ing   |
    restringe 0ing   |
    saute     0eing  |
    schappe   0ing   |
    segue     0ing   |
    singe     0ing   |
    sortie    0ing   |
    stymie    0ing   |
    winge     0ing   |
    swinge    0ing   |
    tinge     0ing   |
    unbe      0ing   |
    vise      0ing   |
    vogue     1ing   |
    whinge    0ing   |
    aleye     1ing   |  a few -ye exceptions
    baye      1ing   |
    herye     1ing   |
    nye       1ing   |
    rallye    1ing   |
    reaedifye 1ing   |
    stye      1ing   |
    undersaye 1ing

§39. Now some exceptional forms where consonant doubling doesn't occur:

<en-trie-irregular-compound-present-participle> ::=
    *<gosyz>ie  0ing   |    e.g. boogieing
    *ae         0ing   |    e.g. spaeing
    *quit       0ting  |    acquitting, quitting, requitting
    *uret       0ting  |    carburetting, sulphuretting
    *budget     0ing   |    budgeting, underbudgeting
    *efer       0ring  |    deferring, preferring, referring
    *nfer       0ring  |    conferring, inferring
    *sfer       0ring  |    retransferring, transferring
    *bias       0sing  |    biassing, unbiassing
    *bishop     0ing   |    bishoping, unbishoping
    *woman      0ing   |    womaning, unwomaning
    *jambok     0king  |    jambokking, sjambokking
    *alog       0ing   |    dialoging, cataloging
    *daub       0ing        daubing, bedaubing

§40. And now rules for consonant doubling:

<en-trie-regular-a-present-participle> ::=
    *<aeiouy>b             0bing      |
    *<dglmpw>ad            0ding      |
    *<bhlnrtw>ed           0ding      |
    *<bklr>id              0ding      |
    *<cdghlnprst>od        0ding      |
    *<bchmprtw>ud          0ding      |
    *uf                    0fing      |
    *<aeiouy>g             0ging      |
    *<bcdhiklmnprstuv>al   0ling      |
    *<bcdfghkmnprstuvwz>el 0ling      |
    *<cfmnrtv>il           0ling      |
    *<bcrtv>ol             0ling      |
    *<cn>ul                0ling      |
    *<bcdghjlprw>am        0ming      |
    *<glt>em               0ming      |
    *<dhklnrw>im           0ming      |
    *lom                   0ming      |
    *<bcghlmrstv>um        0ming      |
    *<bcflmptvw>an         0ning      |
    *<ry>en                0ning      |
    *<dhklprtw>in          0ning      |
    *<fw>on                0ning      |
    *<dfghprst>un          0ning      |
    *<cdghjlmnprstwyz>ap   0ping      |
    *<klprt>ep             0ping      |
    *<dhklnprtuyz>ip       0ping      |
    *<bdhmprstuw>op        0ping      |
    *<dhpst>up             0ping      |
    *yp                    0ping      |
    *<bcfhjmnptw>ar        0ring      |
    *<fhmst>ir             0ring      |
    *dor                   0ring      |
    *<bclp>ur              0ring      |
    *<bgmpv>as             0sing      |
    *<mnrsu>es             0sing      |
    *<hmpw>is              0sing      |
    *<bcds>os              0sing      |
    *<bclm>us              0sing      |
    *<bcfhlmprtuvw>at      0ting      |
    *<ghjstvw>et           0ting      |
    *<fhlmnptw>it          0ting      |
    *<bcdhjlnprstw>ot      0ting      |
    *<bcghjlmnprt>ut       0ting      |
    *<ei>v                 0ving      |
    *iz                    0zing

§41. Finally:

<en-trie-regular-b-present-participle> ::=
    *<aeiou>c    0king      |
    *<eoy>e      0ing       |
    *ie          2ying

<en-trie-regular-c-present-participle> ::=
    *e           1ing       |
    *            0ing

§42. Next the past participle. As noted above, for most verbs this is the same as the past (e.g., he agreed and it was agreed); but there's a list of exceptions for Anglo-Saxon survivals (e.g., he chose and it was chosen). The exceptional cases were derived from Wikipedia's catalogue of irregular English verbs as it stood in May 2011, with a few archaisms and obscenities removed.

<en-trie-past-participle> ::=
    <en-trie-irregular-past-participle> |
    <en-trie-past>

<en-trie-irregular-past-participle> ::=
    be          been |
    have        had |
    do          did |
    arise       arisen |
    awake       awoken |
    bear        borne |
    beat        beaten |
    become      become |
    befall      befallen |
    beget       begotten |
    begin       begun |
    bespeak     bespoken |
    bite        bitten |
    blow        blown |
    break       broken |
    browbeat    browbeaten |
    choose      chosen |
    cleave      cloven |
    come        come |
    dive        dived |
    draw        drawn |
    drink       drunk |
    drive       driven |
    eat         eaten |
    fall        fallen |
    fly         flown |
    forbear     forborne |
    forbid      forbidden |
    forego      foregone |
    foreknow    foreknown |
    forelie     forlain |
    forerun     forerun |
    foresee     foreseen |
    forget      forgotten |
    forgive     forgiven |
    forgo       forgone |
    forsake     forsaken |
    forswear    forsworn |
    freeze      frozen |
    ghostwrite  ghostwritten |
    give        given |
    go          gone |
    grow        grown |
    hew         hewn |
    hide        hidden |
    interweave  interwoven |
    know        known |
    lade        laden |
    misbecome   misbecome |
    misbeget    misbegotten |
    mischoose   mischosen |
    misdo       misdone |
    misget      misgotten |
    misgive     misgiven |
    misknow     misknown |
    misshape    misshapen |
    misspeak    misspoken |
    mistake     mistaken |
    miswrite    miswritten |
    mow         mown |
    outdo       outdone |
    outgrow     outgrown |
    outgrow     outgrown |
    outrun      outrun |
    outshine    outshone |
    outswear    outsworn |
    outthrow    outthrown |
    overbear    overborne |
    overblow    overblown |
    overclothe  overclad |
    overcome    overcome |
    overdo      overdone |
    overdraw    overdrawn |
    overdrink   overdrunk |
    overdrive   overdriven |
    overeat     overeaten |
    overfly     overflown |
    overgrow    overgrown |
    overlie     overlain |
    override    overridden |
    overrun     overrun |
    oversee     overseen |
    oversew     oversewn |
    overshake   overshaken |
    overstride  overstridden |
    overtake    overtaken |
    overwear    overworn |
    overwrite   overwritten |
    partake     partaken |
    plead       pled |
    redo        redone |
    redraw      redrawn |
    regrow      regrown |
    rerun       rerun |
    resing      resung |
    retake      retaken |
    retread     retrodden |
    rewrite     rewritten |
    ride        ridden |
    ring        rung |
    rise        risen |
    rive        riven |
    run         run |
    saw         sawn |
    see         seen |
    sew         sewn |
    shake       shaken |
    shave       shaven |
    shear       shorn |
    shine       shone |
    shoe        shodden |
    show        shown |
    shrink      shrunk |
    shrive      shriven |
    sing        sung |
    sink        sunk |
    slay        slain |
    smite       smitten |
    sow         sown |
    speak       spoken |
    spin        spun |
    spit        spit |
    spring      sprung |
    steal       stolen |
    stink       stunk |
    stride      stridden |
    bestride    bestridden |
    strike      stricken |
    strive      striven |
    swear       sworn |
    swell       swollen |
    take        taken |
    tear        torn |
    thrive      thriven |
    throw       thrown |
    tread       trodden |
    underbear   underborne |
    underdo     underdone |
    underdraw   underdrawn |
    undergo     undergone |
    undergrow   undergrown |
    underrun    underrun |
    undertake   undertaken |
    underwrite  underwritten |
    undo        undone |
    wake        woken |
    wear        worn |
    weave       woven |
    withdraw    withdrawn |
    wring       wrung |
    write       written

§43. That's the mandatory participles sorted out; so now we move on to the two additional verb forms used by English. First, the present form: a curiosity of English is that this is almost always formed as if it were the plural of the infinitive — thus "touch" becomes "touches". There are just a handful of exceptions to this.

<en-trie-present-verb-form> ::=
    <en-trie-irregular-third-person-present> |
    ... <singular-noun-to-its-plural>

<en-trie-irregular-third-person-present> ::=
    be          is |
    have        has |
    do          does

§44. Second, the past. This is harder. Once again we have a catalogue of Anglo-Saxon past forms (e.g., he chose, not he chooses); and after those are out of the way, the rules are the same as for the present participle, except for adding -ed instead of -ing. The tricky part, again, is spotting when to double the consonant, which again depends on stress.

<en-trie-past> ::=
    ... <en-trie-irregular-past> |
    ... <en-trie-irregular-compound-past> |
    ... <en-trie-regular-a-past> |
    ... <en-trie-regular-b-past> |
    ... <en-trie-regular-c-past>

<en-trie-irregular-past> ::=
    be     was |
    do     did |
    go     went |
    in     0ned |
    on     0ned |
    up     0ped |
    bet    bet |
    abet   0ted |
    bid    bid |
    bin    0ned |
    bit    0ted |
    buy    bought |
    con    0ned |
    cop    0ped |
    cup    0ped |
    cut    cut |
    den    0ned |
    dig    dug |
    dit    0ted |
    div    0ed |
    don    0ned |
    eat    ate |
    fet    0ted |
    fit    fitted |
    fly    flew |
    fur    0red |
    gar    0red |
    get    got |
    gin    0ned |
    had    0ded |
    hem    0med |
    hen    0ned |
    hit    hit |
    ken    0ned |
    kit    0ted |
    kon    0ned |
    lay    laid |
    lek    0ked |
    let    let |
    let    0ted |
    lop    0ped |
    net    0ted |
    ante   0ed |
    nye    1ed |
    pay    paid |
    pen    penned |
    pet    0ted |
    pie    1ed |
    put    put |
    ref    0fed |
    ret    0ted |
    aret   0ted |
    rid    rid |
    rit    0ted |
    run    ran |
    say    said |
    see    saw |
    set    set |
    sin    0ned |
    sip    0ped |
    sit    sat |
    sus    0sed |
    aver   0red |
    vor    0red |
    wed    wedded |
    wet    wetted |
    win    won |
    yak    0ked |
    yok    0ked |
    baye   1ed |
    bear   bore |
    beat   beat |
    bend   bent |
    abhor  0red |
    abide  abided |
    bide    bided |
    bind    bound |
    bite    bit |
    blet    0ted |
    blow    blew |
    boob    0ed |
    brut    0ed |
    burn    burnt |
    cast    cast |
    clop    0ped |
    come    came |
    deal    dealt |
    dele    1ed |
    dive    dove |
    drag    dragged |
    draw    drew |
    duet    0ted |
    fall    fell |
    feed    fed |
    feel    felt |
    find    found |
    flee    fled |
    flop    0ped |
    fret    0ted |
    frit    0ted |
    give    gave |
    grit    0ted |
    grow    grew |
    hang    hung |
    have    had |
    hear    heard |
    hide    hid |
    hold    held |
    hurt    hurt |
    item    0ed |
    keep    kept |
    knit    knit |
    know    knew |
    lade    laded |
    lead    led |
    lend    lent |
    aleye   1ed |
    lose    lost |
    make    made |
    mean    meant |
    meet    met |
    plop    0ped |
    quad    0ded |
    quit    quit |
    quod    0ded |
    read    read |
    redo    redid |
    rend    rent |
    ride    rode |
    ring    rang |
    arise   arose |
    rise    rose |
    rive    rove |
    seek    sought |
    sell    sold |
    send    sent |
    shed    shed |
    shoe    shoed |
    shut    shut |
    sing    sang |
    sink    sank |
    sker    0red |
    slip    slipped |
    slit    slit |
    slop    0ped |
    smur    0red |
    spet    0ted |
    spin    span |
    spit    spat |
    sten    0ned |
    stye    1ed |
    swim    swam |
    take    took |
    tear    tore |
    tell    told |
    trek    0ked |
    unbe    1ed |
    undo    undid |
    vise    1ed |
    awake   awoke |
    wake    woke |
    wear    wore |
    weep    wept |
    whid    0ded |
    wind    wound |
    beget    begot |
    begin    began |
    benet    0ted |
    beset    beset |
    besit    0ted |
    binge    1ed |
    bleed    bled |
    break    broke |
    breed    bred |
    bring    brought |
    build    built |
    burst    burst |
    catch    caught |
    cling    clung |
    covet    0ed |
    creep    crept |
    curat    0ed |
    debut    0ed |
    demur    0red |
    deter    0red |
    drink    drank |
    drive    drove |
    fight    fought |
    fling    flung |
    forgo    forwent |
    galop    0ped |
    glace    0ed |
    grind    ground |
    herye    1ed |
    hoise    hoist |
    inlay    inlaid |
    input    input |
    inset    inset |
    inter    0red |
    kneel    knelt |
    alarum   0ed |
    leave    left |
    light    lit |
    limit    0ed |
    longe    1ed |
    lunge    1ed |
    madam    0ed |
    misdo    misdid |
    outdo    outdid |
    picot    0ed |
    pilot    0ed |
    prove    proved |
    queue    1ed |
    reave    reft |
    recce    1ed |
    recut    recut |
    relet    0ted |
    repay    repaid |
    rerun    reran |
    reset    reset |
    resit    0ted |
    roset    0ed |
    route    1ed |
    salad    0ed |
    satin    0ed |
    saute    0ed |
    scoog    0ed |
    scoug    0ed |
    segue    1ed |
    shake    shook |
    shall    should |
    shape    shaped |
    shave    shaved |
    shine    shined |
    shoot    shot |
    singe    1ed |
    sleep    slept |
    slide    slid |
    sling    slung |
    slink    slunk |
    smite    smote |
    speak    spoke |
    speed    sped |
    spell    spelt |
    spend    spent |
    split    split |
    squid    0ded |
    stand    stood |
    steal    stole |
    stick    stuck |
    sting    stung |
    stink    stank |
    swear    swore |
    sweep    swept |
    swing    swung |
    teach    taught |
    think    thought |
    throw    threw |
    tinge    1ed |
    tread    trod |
    tyran    0ned |
    unpen    0ned |
    unset    unset |
    upset    upset |
    vogue    1ed |
    vomit    0ed |
    weave    wove |
    winge    1ed |
    worth    worth |
    wring    wrang |
    write    wrote |
    ballad    0ed |
    ballat    0ed |
    ballot    0ed |
    basset    0ed |
    become    became |
    befall    befell |
    behold    beheld |
    birdie    1ed |
    caucus    0ed |
    centre    1ed |
    chalan    0ed |
    chasse    1ed |
    choose    chose |
    cleave    clove |
    closet    0ed |
    clothe    clothed |
    combat    0ed |
    coquet    0ted |
    corset    0ed |
    cosset    0ed |
    emblem    0ed |
    fidget    0ed |
    fillip    0ed |
    forbid    forbade |
    forego    forewent |
    forget    forgot |
    freeze    froze |
    gusset    0ed |
    jeelie    1ed |
    misfit    misfitted |
    misget    misgot |
    mishit    mishit |
    misken    0ned |
    mislay    mislaid |
    missay    missaid |
    misset    misset |
    mortar    0ed |
    naysay    naysaid |
    ouglie    1ed |
    outbid    outbid |
    output    output |
    outrun    outran |
    outsit    outsat |
    overdo    overdid |
    parrot    0ed |
    peenge    1ed |
    posset    0ed |
    possum    0ed |
    prepay    prepaid |
    preset    preset |
    profit    0ed |
    quaere    1ed |
    rallye    1ed |
    recast    recast |
    redraw    redrew |
    regret    0ted |
    regrow    regrew |
    re-lay    re-laid |
    remake    remade |
    reread    reread |
    resell    resold |
    resend    resent |
    resing    resang |
    retake    retook |
    retell    retold |
    rewind    rewound |
    russet    0ed |
    shrink    shrank |
    shrive    shrove |
    slalom    0ed |
    sortie    1ed |
    spread    spread |
    spring    sprang |
    stride    strode |
    strike    struck |
    string    strung |
    strive    strove |
    stymie    1ed |
    sublet    sublet |
    sunset    sunset |
    swinge    1ed |
    target    0ed |
    thrive    throve |
    turnip    0ed |
    unbend    unbent |
    unbind    unbound |
    unhear    unheard |
    unmake    unmade |
    unwind    unwound |
    uphold    upheld |
    velvet    0ed |
    waylay    waylaid |
    whinge    1ed |
    writhe    writhed |
    beseech    besought |
    bespeak    bespoke |
    briquet    0ted |
    buckram    0ed |
    chagrin    0ed |
    challan    0ed |
    crochet    0ed |
    delimit    0ed |
    epithet    0ed |
    forbear    forbore |
    forelay    forelaid |
    forelie    forlay |
    forerun    foreran |
    foresee    foresaw |
    forgive    forgave |
    forsake    forsook |
    gainsay    gainsaid |
    inbreed    inbred |
    invalid    0ed |
    leaflet    0ted |
    lipread    lipread |
    miscast    miscast |
    misdeal    misdealt |
    misfeed    misfed |
    misgive    misgave |
    mishear    misheard |
    mishold    misheld |
    miskeep    miskept |
    misknow    misknew |
    mislead    misled |
    misread    misread |
    missend    missent |
    mistake    mistook |
    outgrow    outgrew |
    outride    outrode |
    outsell    outsold |
    outswim    outswam |
    outtell    outtold |
    outwear    outwore |
    overbid    overbid |
    overbuy    overbought |
    overeat    overate |
    overfly    overflew |
    overhit    overhit |
    overlay    overlaid |
    overlie    overlay |
    overnet    0ted |
    overpay    overpaid |
    overrun    overran |
    oversee    oversaw |
    overset    overset |
    parquet    0ted |
    partake    partook |
    podcast    podcast |
    precast    precast |
    quadrat    0ed |
    ratchet    0ed |
    rebuild    rebuilt |
    reinter    0red |
    reroute    1ed |
    reshoot    reshot |
    rethink    rethought |
    retread    retrod |
    rewrite    rewrote |
    schappe    1ed |
    spaniel    0led |
    underdo    underdid |
    undergo    underwent |
    unrivet    0ed |
    vermeil    0led |
    webcast    webcast |
    backbite    backbit |
    bespread    bespread |
    bestride    bestrode |
    browbeat    browbeat |
    cicerone    1ed |
    crosscut    crosscut |
    damaskin    0ed |
    disinter    0red |
    ensilage    1ed |
    forecast    forecast |
    foreknow    foreknew |
    foretell    foretold |
    forswear    forswore |
    intercut    intercut |
    misbeget    misbegot |
    misshape    misshaped |
    misshoot    misshot |
    misspeak    misspoke |
    misspell    misspelt |
    misspend    misspent |
    miswrite    miswrote |
    outdrink    outdrunk |
    outfight    outfought |
    outshine    outshone |
    outspend    outspent |
    outswear    outswore |
    outthink    outthought |
    outthrow    outthrew |
    overbear    overbore |
    overbend    overbent |
    overblow    overblew |
    overcast    overcast |
    overcome    overcame |
    overdraw    overdrew |
    overfeed    overfed |
    overgrow    overgrew |
    overhang    overhung |
    overhear    overheard |
    overlend    overlent |
    override    overrode |
    oversell    oversold |
    overslip    overslipped |
    overtake    overtook |
    overwear    overwore |
    sightsee    sightsaw |
    stravaig    0ed |
    telecast    telecast |
    unclothe    unclothed |
    underbid    underbid |
    underbuy    underbought |
    undercut    undercut |
    underdig    underdug |
    underlay    underlaid |
    underlet    0ted |
    underlie    underlaid |
    underpay    underpaid |
    underrun    underran |
    unfreeze    unfroze |
    withdraw    withdrew |
    withhold    withheld |
    broadcast    broadcast |
    discomfit    0ed |
    facsimile    1ed |
    misbecome    misbecame |
    mischoose    mischose |
    outthrust    outthrust |
    overbreed    overbred |
    overbuild    overbuilt |
    overdrink    overdrank |
    overdrive    overdrove |
    overshake    overshook |
    overshine    overshone |
    overshoot    overshot |
    oversleep    overslept |
    overslide    overslid |
    overspend    overspent |
    overswing    overswung |
    overwrite    overwrote |
    proofread    proofread |
    reaedifye    1ed |
    restringe    1ed |
    simulcast    simulcast |
    trampolin    0ed |
    underbear    underbore |
    underbind    underbound |
    undercast    undercast |
    underdraw    underdrew |
    underfeed    underfed |
    undergrow    undergrew |
    underhang    underhung |
    undersaye    1ed |
    undersell    undersold |
    undertake    undertook |
    withstand    withstood |
    ghostwrite    ghostwrote |
    interbreed    interbred |
    interweave    interwove |
    overclothe    overclothed |
    overstride    overstrode |
    underbuild    underbuilt |
    undershoot    undershot |
    underspend    underspent |
    understand    understood |
    underwrite    underwrote |
    underclothe    underclothed |
    misunderstand    misunderstood

<en-trie-irregular-compound-past> ::=
    *<gosyz>ie 1ed   |    e.g. boogied
    *ae        1ed   |    e.g. spaed
    *quit     0ted   |    acquitted , quitted , requitted
    *uret     0ted   |    carburetted , sulphuretted
    *budget   0ed    |    budgeted , underbudgeted
    *efer     0red   |    deferred , preferred , referred
    *nfer     0red   |    conferred , inferred
    *sfer     0red   |    retransferred , transferred
    *bias     0sed   |    biassed , unbiassed
    *bishop   0ed    |    bishoped , unbishoped
    *woman    0ed    |    womaned , unwomaned
    *jambok   0ked   |    jambokked , sjambokked
    *alog     0ed    |    dialoged , cataloged
    *daub     0ed         daubed , bedaubed

<en-trie-regular-a-past> ::=
    *<aeiouy>b             0bed       |
    *<dglmpw>ad            0ded       |
    *<bhlnrtw>ed           0ded       |
    *<bklr>id              0ded       |
    *<cdghlnprst>od        0ded       |
    *<bchmprtw>ud          0ded       |
    *uf                    0fed       |
    *<aeiouy>g             0ged       |
    *<bcdhiklmnprstuv>al   0led       |
    *<bcdfghkmnprstuvwz>el 0led       |
    *<cfmnrtv>il           0led       |
    *<bcrtv>ol             0led       |
    *<cn>ul                0led       |
    *<bcdghjlprw>am        0med       |
    *<glt>em               0med       |
    *<dhklnrw>im           0med       |
    *lom                   0med       |
    *<bcghlmrstv>um        0med       |
    *<bcflmptvw>an         0ned       |
    *<ry>en                0ned       |
    *<dhklprtw>in          0ned       |
    *<fw>on                0ned       |
    *<dfghprst>un          0ned       |
    *<cdghjlmnprstwyz>ap   0ped       |
    *<klprt>ep             0ped       |
    *<dhklnprtuyz>ip       0ped       |
    *<bdhmprstuw>op        0ped       |
    *<dhpst>up             0ped       |
    *yp                    0ped       |
    *<bcfhjmnptw>ar        0red       |
    *<fhmst>ir             0red       |
    *dor                   0red       |
    *<bclp>ur              0red       |
    *<bgmpv>as             0sed       |
    *<mnrsu>es             0sed       |
    *<hmpw>is              0sed       |
    *<bcds>os              0sed       |
    *<bclm>us              0sed       |
    *<bcfhlmprtuvw>at      0ted       |
    *<ghjstvw>et           0ted       |
    *<fhlmnptw>it          0ted       |
    *<bcdhjlnprstw>ot      0ted       |
    *<bcghjlmnprt>ut       0ted       |
    *<ei>v                 0ved       |
    *iz                    0zed

<en-trie-regular-b-past> ::=
    *<aeiou>c    0ked  |    magicked
    *<eioy>e     1ed   |    dried
    *<aeiou>y     0ed       played, conveyed, convoyed, guyed, preyed

<en-trie-regular-c-past> ::=
    *e           1ed   |
    *y           1ied  |    shied, tried
    *            0ed

§45. Present to past participles. Sentences like

The verb to carry means the carrying relation.

are only one way in which Inform creates new verbs; it also implicitly creates verbs when actions are declared:

Smoothing is an action applying to one thing.

Verbs like this are not stored in anything like the full conjugations above; the action knows just two forms of its verb, the present and past participles. This time the base text is the present participle ("smoothing"); the other inflection we need is the past participle ("smoothed"), and we need a trie which generates it from the present. This process is called "pasturising", which is, er, not actually an approved term from linguistics.

English is replete with exceptions — "catching" must become "caught", not "catched", for instance — so this trie consists of about 460 special cases followed by two general rules.

<pasturise-participle> ::=
    <en-trie-pasturise-exceptions> |
    ... <en-trie-pasturise-regular-y> |
    ... <en-trie-pasturise-regular>

<en-trie-pasturise-exceptions> ::=
    abiding         abided |
    alighting       alighted |
    arising         arisen |
    awaking         awakened |
    backbiting      backbitten |
    backsliding     backslidden |
    bearing         born |
    beating         beaten |
    becoming        become |
    befalling       befallen |
    begeting        begotten |
    begining        begun |
    beholding       beheld |
    bending         bent |
    bereaving       bereaved |
    beseeching      besought |
    besetting       beset |
    bestrewing      bestrewn |
    betting         bet |
    betaking        betaken |
    bethinking      bethought |
    binding         bound |
    biting          bitten |
    bleeding        bled |
    blowing         blown |
    breaking        broken |
    breeding        bred |
    bringing        brought |
    broadcasting    broadcast |
    browbeating     browbeaten |
    building        built |
    burning         burned |
    bursting        burst |
    busting         busted |
    buying          bought |
    casting         cast |
    catching        caught |
    chiding         chided |
    choosing        chosen |
    claping         clapped |
    clinging        clung |
    clothing        clothed |
    coming          come |
    costing         cost |
    creeping        crept |
    crossbreeding   crossbred |
    cutting         cut |
    daring          dared |
    daydreaming     daydreamed |
    dealing         dealt |
    digging         dug |
    dighting        dighted |
    disproving      disproved |
    diving          dived |
    doing           done |
    drawing         drawn |
    dreaming        dreamed |
    drinking        drunk |
    driving         driven |
    dwelling        dwelt |
    eating          eaten |
    enwinding       enwound |
    falling         fallen |
    feeding         fed |
    feeling         felt |
    fighting        fought |
    finding         found |
    fitting         fitted |
    fleeing         fled |
    flinging        flung |
    flying          flown |
    forbearing      forborne |
    forbiding       forbidden |
    fordoing        fordone |
    forecasting     forecast |
    foregoing       foregone |
    foreknowing     foreknown |
    foreruning      forerun |
    foreseeing      foreseen |
    foreshowing     foreshown |
    forespeaking    forespoken |
    foretelling     foretold |
    forgetting      forgotten |
    forgiving       forgiven |
    forsaking       forsaken |
    forswearing     forsworn |
    fraughting      fraught |
    freezing        frozen |
    frostbiting     frostbitten |
    gainsaying      gainsaid |
    getting         got |
    gilding         gilded |
    giving          given |
    going           gone |
    grinding        ground |
    growing         grown |
    halterbreaking  halterbroken |
    hamstringing    hamstrung |
    hand-feeding    hand-fed |
    handwriting     handwritten |
    hanging         hung |
    hearing         heard |
    heaving         heaved |
    hewing          hewn |
    hiding          hidden |
    hitting         hit |
    holding         held |
    hurting         hurt |
    inbreeding      inbred |
    inlaying        inlaid |
    inputing        input |
    insetting       inset |
    interbreeding   interbred |
    intercutting    intercut |
    interlaying     interlaid |
    intersetting    interset |
    interweaving    interwoven |
    interwinding    interwound |
    inweaving       inwoven |
    jerry-building  jerry-built |
    keeping         kept |
    kneeling        knelt |
    knitting        knitted |
    knowing         known |
    lading          laden |
    landsliding     landslid |
    laying          laid |
    leading         led |
    leaning         leaned |
    leaping         leaped |
    learning        learned |
    leaving         left |
    lending         lent |
    letting         let |
    lieing          lain |
    lighting        lit |
    lip-reading     lip-read |
    losing          lost |
    making          made |
    meaning         meant |
    meeting         met |
    misbecoming     misbecome |
    miscasting      miscast |
    miscutting      miscut |
    misdealing      misdealt |
    misdoing        misdone |
    mishearing      misheard |
    mishitting      mishit |
    mislaying       mislaid |
    misleading      misled |
    mislearning     mislearned |
    misreading      misread |
    missaying       missaid |
    missending      missent |
    missetting      misset |
    misspeaking     misspoken |
    misspelling     misspelled |
    misspending     misspent |
    misswearing     missworn |
    mistaking       mistaken |
    misteaching     mistaught |
    mistelling      mistold |
    misthinking     misthought |
    misunderstanding  misunderstood |
    miswearing      misworn |
    misweding       miswed |
    miswriting      miswritten |
    mowing          mowed |
    offsetting      offset |
    outbiding       outbid |
    outbreeding     outbred |
    outdoing        outdone |
    outdrawing      outdrawn |
    outdrinking     outdrunk |
    outdriving      outdriven |
    outfighting     outfought |
    outflying       outflown |
    outgrowing      outgrown |
    outlaying       outlaid |
    outleaping      outleaped |
    outputing       output |
    outriding       outridden |
    outruning       outrun |
    outseeing       outseen |
    outselling      outsold |
    outshining      outshined |
    outshooting     outshot |
    outsinging      outsung |
    outsitting      outsat |
    outsleeping     outslept |
    outsmelling     outsmelled |
    outspeaking     outspoken |
    outspeeding     outsped |
    outspending     outspent |
    outspining      outspun |
    outspringing    outsprung |
    outstanding     outstood |
    outswearing     outsworn |
    outswiming      outswum |
    outtelling      outtold |
    outthinking     outthought |
    outthrowing     outthrown |
    outwearing      outworn |
    outwinding      outwound |
    outwriting      outwritten |
    overbearing     overborne |
    overbiding      overbid |
    overbreeding    overbred |
    overbuilding    overbuilt |
    overbuying      overbought |
    overcasting     overcast |
    overcoming      overcome |
    overcutting     overcut |
    overdoing       overdone |
    overdrawing     overdrawn |
    overdrinking    overdrunk |
    overeating      overeaten |
    overfeeding     overfed |
    overhanging     overhung |
    overhearing     overheard |
    overlaying      overlaid |
    overleaping     overleaped |
    overlieing      overlain |
    overpaying      overpaid |
    overriding      overridden |
    overruning      overrun |
    overseeing      overseen |
    overselling     oversold |
    oversetting     overset |
    oversewing      oversewn |
    overshooting    overshot |
    oversleeping    overslept |
    oversowing      oversown |
    overspeaking    overspoken |
    overspending    overspent |
    overspilling    overspilled |
    overspining     overspun |
    overspreading   overspread |
    overspringing   oversprung |
    overstanding    overstood |
    overstrewing    overstrewn |
    overstriding    overstridden |
    overstriking    overstruck |
    overtaking      overtaken |
    overthinking    overthought |
    overthrowing    overthrown |
    overwearing     overworn |
    overwinding     overwound |
    overwriting     overwritten |
    partaking       partaken |
    paying          paid |
    pleading        pleaded |
    praying         prayed |
    prebuilding     prebuilt |
    predoing        predone |
    premaking       premade |
    prepaying       prepaid |
    preselling      presold |
    presetting      preset |
    preshrinking    preshrunk |
    presplitting    presplit |
    proofreading    proofread |
    proving         proven |
    putting         put |
    quick-freezing  quick-frozen |
    quiting         quit |
    reading         read |
    reawaking       reawaken |
    rebiding        rebid |
    rebinding       rebound |
    rebroadcasting  rebroadcast |
    rebuilding      rebuilt |
    recasting       recast |
    recutting       recut |
    redealing       redealt |
    redoing         redone |
    redrawing       redrawn |
    reeving         reeved |
    refitting       refitted |
    regrinding      reground |
    regrowing       regrown |
    rehanging       rehung |
    rehearing       reheard |
    reknitting      reknitted |
    relearning      relearned |
    relighting      relit |
    remaking        remade |
    rending         rent |
    repaying        repaid |
    rereading       reread |
    reruning        rerun |
    reselling       resold |
    resending       resent |
    resetting       reset |
    resewing        resewn |
    retaking        retaken |
    reteaching      retaught |
    retearing       retorn |
    retelling       retold |
    rethinking      rethought |
    retreading      retread |
    retrofitting    retrofitted |
    rewaking        rewaken |
    rewearing       reworn |
    reweaving       rewoven |
    reweding        rewed |
    reweting        rewet |
    rewining        rewon |
    rewinding       rewound |
    rewriting       rewritten |
    riding          rid |
    riding          ridden |
    ringing         rung |
    rising          risen |
    riving          riven |
    roughcasting    roughcast |
    running         run |
    sand-casting    sand-cast |
    sawing          sawed |
    saying          said |
    seeing          seen |
    seeking         sought |
    self-feeding    self-fed |
    self-sowing     self-sown |
    selling         sold |
    sending         sent |
    setting         set |
    sewing          sewn |
    shaking         shaken |
    shaving         shaved |
    shearing        sheared |
    sheding         shed |
    shining         shined |
    shoeing         shoed |
    shooting        shot |
    showing         shown |
    shrinking       shrunk |
    shriving        shriven |
    shutting        shut |
    sight-reading   sight-read |
    singing         sung |
    sinking         sunk |
    siting          sat |
    skywriting      skywritten |
    sleeping        slept |
    sliding         slid |
    slinging        slung |
    slinking        slinked |
    slitting        slit |
    smelling        smelled |
    smiting         smitten |
    sneaking        sneaked |
    sowing          sown |
    speaking        spoken |
    speeding        sped |
    spelling        spelled |
    spending        spent |
    spilling        spilled |
    spinning        spun |
    spitting        spit |
    splitting       split |
    spoiling        spoiled |
    spoon-feeding   spoon-fed |
    spreading       spread |
    springing       sprung |
    stall-feeding   stall-fed |
    standing        stood |
    staving         staved |
    stealing        stolen |
    sticking        stuck |
    stinging        stung |
    stinking        stunk |
    strewing        strewn |
    striding        stridden |
    striking        struck |
    stringing       strung |
    striping        stripped |
    striving        striven |
    subletting      sublet |
    sunburning      sunburned |
    swearing        sworn |
    sweating        sweat |
    sweeping        swept |
    swelling        swollen |
    swiming         swum |
    swinging        swung |
    taking          taken |
    teaching        taught |
    tearing         torn |
    telecasting     telecast |
    telling         told |
    test-driving    test-driven |
    test-flying     test-flown |
    thinking        thought |
    thriving        thrived |
    throwing        thrown |
    thrusting       thrust |
    treading        trodden |
    troubleshooting troubleshot |
    typecasting     typecast |
    typesetting     typeset |
    typewriting     typewritten |
    unbearing       unborn |
    unbending       unbent |
    unbinding       unbound |
    unbuilding      unbuilt |
    underbiding     underbid |
    underbuying     underbought |
    undercutting    undercut |
    underfeeding    underfed |
    undergoing      undergone |
    underlaying     underlaid |
    underletting    underlet |
    underlieing     underlain |
    underruning     underrun |
    underselling    undersold |
    undershooting   undershot |
    underspending   underspent |
    understanding   understood |
    undertaking     undertaken |
    underthrusting  underthrust |
    underwriting    underwritten |
    undoing         undone |
    undrawing       undrawn |
    unfreezing      unfrozen |
    unhanging       unhung |
    unhiding        unhidden |
    unholding       unheld |
    unknitting      unknitted |
    unlading        unladen |
    unlaying        unlaid |
    unlearning      unlearned |
    unmaking        unmade |
    unreeving       unreeved |
    unsaying        unsaid |
    unsewing        unsewn |
    unslinging      unslung |
    unspining       unspun |
    unsticking      unstuck |
    unstringing     unstrung |
    unswearing      unsworn |
    unteaching      untaught |
    unthinking      unthought |
    unweaving       unwoven |
    unwinding       unwound |
    unwriting       unwritten |
    upholding       upheld |
    upsetting       upset |
    vexing          vexed |
    waking          woken |
    waylaying       waylaid |
    wearing         worn |
    weaving         woven |
    weding          wed |
    weeping         wept |
    wetting         wet |
    wining          won |
    winding         wound |
    withdrawing     withdrawn |
    withholding     withheld |
    withstanding    withstood |
    wringing        wrung |
    writing         written

<en-trie-pasturise-regular-y> ::=
    *aying          3ed    |         e.g., "slaying" to "slayed"
    *eying          3ed    |         e.g., "preying" to "preyed"
    *oying          3ed    |         e.g., "toying" to "toyed"
    *ying           4ied          e.g., "verifying" to "verified"

<en-trie-pasturise-regular> ::=
    *ing            3ed          e.g., "smashing" to "smashed"

§46. Adjective agreements. English doesn't inflect adjectives at all (let's not argue about "blond" and "blonde"), so the following are just stubs.

<adjective-to-plural> ::=
    *                0

<adjective-to-masculine-singular> ::=
    *                0

<adjective-to-feminine-singular> ::=
    *                0

<adjective-to-masculine-plural> ::=
    *                0

<adjective-to-feminine-plural> ::=
    *                0

§47. Grading of adjectives is more interesting. These spelling rules are taken from the Oxford English Grammar at 4.24, "Gradability and comparison". Something we can't easily implement is that a final vowel plus consonant doesn't result in doubling the consonant (in the way that "big" becomes "bigger") if that closing syllable is unstressed, but fortunately this is rare in English adjectives.

<adjective-to-comparative> ::=
    good                                  better |
    well                                  better |
    bad                                   worse |
    far                                   farther |
    *e                                    1er |      e.g. "close" to "closer"
    *<bcdfghkmlnprstvwxyz>y               1ier |     e.g. "ugly" to "uglier"
    *<aeiou><aeiou><bcdfghkmlnprstvxyz>   0er |      e.g. "cheap" to "cheaper" not "cheapper"
    *<aeiou><bcdfghkmlnprstvxyz>          0+er |     e.g. "fit" to "fitter"
    *                                     0er

<adjective-to-superlative> ::=
    good                                  best |
    well                                  best |
    bad                                   worst |
    far                                   farthest |
    *e                                    1est |
    *<bcdfghkmlnprstvwxyz>y               1iest |
    *<aeiou><aeiou><bcdfghkmlnprstvxyz>   0est |
    *<aeiou><bcdfghkmlnprstvxyz>          0+est |
    *                                     0est

§48. To the best of my knowledge there's no technical term for "the noun which is formed from an adjective to refer to the quality it measures", so the Inform source code calls this the "quiddity". English permits several competing forms of these to be constructed, depending on the adjective's spelling (for example, "brutal" can become "brutality", but "small" can't become "smallity"), but in general, except for Anglo-Saxon cases, the "-ness" suffix seems universally possible. For simplicity we'll use that; note the OEG's warning at 9.21 that this avoids problems where these forms, though notionally equivalent, have diverged in meaning: e.g., "casualty" should mean the same as "casualness", but no longer does. The "-ness" form is sometimes less elegant, but never means the wrong thing.

<adjective-to-quiddity> ::=
    *ong                            3ength |     e.g. "strong" to "strength"
    *<bcdfghkmlnprstvwxyz>y         1iness |     e.g. "happy" to "happiness"
    *                               0ness

§49. English has almost no noun cases at all, with the only exceptions being Anglo-Saxon pronouns (thus we distinguish "they" and "them" as nominative and accusative, for example); and pronouns we handle separately in any case. We won't bother to distinguish gender:

<grammatical-case-names> ::=
    nominative | accusative

<noun-declension> ::=
    *    <en-noun-declension-group> <en-noun-declension-tables>

§50. And the sorting into groups sorts everything into "group 1", the only group:

<en-noun-declension-group> ::=
    *            1

<en-noun-declension-tables> ::=
    <en-noun-declension-uninflected>

§51. And in this single group, nominative and accusative forms are identical to the stem in both singular and plural.

<en-noun-declension-uninflected> ::=
    0 | 0 |
    0 | 0

§52. English articles only inflect slightly, to show indefinite plurals; they don't distinguish nominative from accusative.

<article-declension> ::=
    *           <en-article-declension>

<en-article-declension> ::=
    a           a    a
                some some |
    the         the  the
                the  the