Skip to main content

Documentation Index

Fetch the complete documentation index at: https://mintlify.com/kyomega85/EnglishMatrix/llms.txt

Use this file to discover all available pages before exploring further.

EnglishMatrix supports 7 tenses defined in the Tense enum. Every mode that involves sentences — generation, quiz, and the tense table — uses these tenses. Tenses are randomly selected during sentence generation unless a specific tense is forced via the forcedTense parameter.
enum Tense
{
    PresentSimple,      // I eat
    PresentContinuous,  // I am eating
    PastSimple,         // I ate
    PastContinuous,     // I was eating
    FutureSimple,       // I will eat
    PresentPerfect,     // I have eaten
    Conditional         // I would eat
}
Each tense is identified in console output with its Spanish label, produced by TenseName():
static string TenseName(Tense t) => t switch
{
    Tense.PresentSimple     => "Presente simple",
    Tense.PresentContinuous => "Presente continuo",
    Tense.PastSimple        => "Pasado simple",
    Tense.PastContinuous    => "Pasado continuo",
    Tense.FutureSimple      => "Futuro simple",
    Tense.PresentPerfect    => "Presente perfecto",
    Tense.Conditional       => "Condicional",
    _ => ""
};

PresentSimple

Spanish label: Presente simple Formation: Subject + base verb (+ -s/-es/-ies for 3rd-person singular)
SubjectEnglish formSpanish form
II eatcomo
She/HeShe eatscome
WeWe eatcomemos
Notes on third-person singular: ConjugateEnglishPresent applies the following rules for 3rd-person subjects:
  • Verb ends in -y preceded by a consonant → drop -y, add -ies (e.g., studystudies)
  • Verb ends in -y preceded by a vowel → add -s (e.g., playplays)
  • Verb ends in -s, -sh, -ch, -x, or -o → add -es (e.g., watchwatches)
  • All other verbs → add -s (e.g., eateats)
In question mode (SentenceMode.Question), the auxiliary Do / Does is placed before the subject and the verb reverts to its bare infinitive form.

PresentContinuous

Spanish label: Presente continuo Formation: am/is/are + gerund (-ing form)
SubjectEnglish formSpanish form
II am eatingestoy comiendo
She/HeShe is eatingestá comiendo
WeWe are eatingestamos comiendo
Notes: The correct be form is selected in BuildEnglishVerb:
  • Iam
  • Third-person singular subjects (she, he, my mom, the teacher, etc.) → is
  • we, they, youare
In Spanish, BuildSpanishVerb uses estoy/está/estamos + the computed gerundio (e.g., comiendo, corriendo). In question mode the auxiliary Is/Am/Are is inverted before the subject.

PastSimple

Spanish label: Pasado simple Formation: Past form of the verb (regular: -ed; irregular: looked up from verbList)
SubjectEnglish formSpanish form
II atecomí
She/HeShe atecomió
WeWe atecomimos
Notes: GetPast() looks up the Past field from verbList. If a verb is not in verbList, it falls back to appending -ed. In question mode, auxiliary Did is placed before the subject and the verb reverts to its bare infinitive.

PastContinuous

Spanish label: Pasado continuo Formation: was/were + gerund (-ing form)
SubjectEnglish formSpanish form
II was eatingestaba comiendo
She/HeShe was eatingestaba comiendo
WeWe were eatingestábamos comiendo
Notes: The correct was/were form is selected:
  • I, he, she, it, and third-person singular subjects → was
  • we, they, youwere
In Spanish, BuildSpanishVerb uses estaba/estaba/estábamos + the gerundio. In question mode, Was/Were is inverted before the subject.

FutureSimple

Spanish label: Futuro simple Formation (English): will + bare infinitive Formation (Spanish): ir a + infinitivo (voy a/va a/vamos a)
SubjectEnglish formSpanish form
II will eatvoy a comer
She/HeShe will eatva a comer
WeWe will eatvamos a comer
Notes: EnglishMatrix uses the periphrastic future (ir a + infinitivo) in Spanish rather than the synthetic future tense, which is the natural equivalent at A1–A2 level. In question mode, Will is inverted before the subject.

PresentPerfect

Spanish label: Presente perfecto Formation (English): have/has + past participle Formation (Spanish): he/ha/hemos + participio pasado
SubjectEnglish formSpanish form
II have eatenhe comido
She/HeShe has eatenha comido
WeWe have eatenhemos comido
Notes: GetParticiple() looks up the Participle field from verbList. Spanish past participles are computed by GetSpanishPastParticiple(), which applies -ado/-ido endings and handles irregular forms: abrir → abierto, escribir → escrito, hacer → hecho, poner → puesto, romper → roto, ver → visto, volver → vuelto, and others. In question mode, Has/Have is inverted before the subject.

Conditional

Spanish label: Condicional Formation (English): would + bare infinitive Formation (Spanish): conditional stem + -ía/-íamos endings
SubjectEnglish formSpanish form
II would eatcomería
She/HeShe would eatcomería
WeWe would eatcomeríamos
Notes: The English conditional is uniform across all subjects — would never changes. In Spanish, BuildConditional() applies the appropriate endings to the Spanish infinitive stem, after checking for irregular stems.
The Conditional tense in Spanish uses special stem changes for certain irregular verbs. These are managed via a conditionalStems dictionary inside BuildSpanishVerb:
Spanish infinitiveConditional stem
tenertendr-
venirvendr-
poderpodr-
ponerpondr-
salirsaldr-
hacerhar-
decirdir-
quererquerr-
sabersabr-
For all other verbs, the conditional is formed by taking the full infinitive as the stem and appending -ía (yo/él) or -íamos (nosotros), for example comercomería, corrercorrería.
In question mode, Would is inverted before the subject.

Tense selection in modes

GenerateSentence accepts an optional Tense? forcedTense parameter:
static (string english, string spanish) GenerateSentence(
    bool includePlace  = true,
    bool includeTime   = true,
    SentenceMode mode  = SentenceMode.Normal,
    Tense? forcedTense = null
)
The tense is selected as follows:
var tense = forcedTense ?? (Tense)rnd.Next(7);
  • forcedTense = null (default): a random integer 06 is cast to the Tense enum, giving each of the 7 tenses an equal 1-in-7 probability of being selected for each sentence.
  • forcedTense = Tense.PastSimple (or any other value): every sentence produced by that call uses exactly that tense. The tense label printed in output reflects whichever tense was used.
The tense label always appears in brackets at the start of both the English and Spanish output lines, e.g. [Pasado simple] She ate pizza at home.

Build docs developers (and LLMs) love