verb inf "like" verb pres "like" verb imp "<“>" "“" lquot This snippet shows 5 cohorts, each with one or more readings. The surface wordforms are in "<anglequotes>" while the lemmas/baseforms are in regular "quotes" followed by an unquoted set of tags, and we see some cohorts have several readings, ie. are ambiguous ("<like>" being ambiguous between 6 readings). The job of the CG parser is now to 1) remove as many wrong readings as it is safe to do given the context, 2) optionally apply one or more syntactic function labels to each cohort (or even dependency relations) and 3) disambiguate the applied labels/relations. Below is an example rule (again in VISL CG-3 format) for picking the third person reading of "was" (by removing the first person reading), given that there is no first person pronoun to the left: REMOVE (verb p1) IF (0C (verb)) (NEGATE *-1 (prn p1)) ; Here (verb p1) is a set of tags (order doesn't matter) that must match the reading we're removing. After IF follows a list of zero or more constraints, the first one says that in this cohort (position 0), all readings (the qualifier C, for Careful) have the tag verb. The second constraint says that if there is a cohort that is at least one word to the left (position *-1, the * meaning we may go further than one word and - meaning left) and that cohort is a first person pronoun, then the constraint does *not* match (NEGATE). In CG-3, rules may also be given names, e.g. SELECT:somename (…) IF, which show up in the trace output. A rule can also pick a single reading if we're sure that all the other readings must be wrong given the constraints: SELECT:quoting ("like" subj) IF (-1 ("<was>")) (1 (lquot) OR (":")) ; In this rule, we see that we can refer to both wordforms and baseforms in tagsets (they are treated just like any other tag, and a reading will always match its wordform). Here the second constraint uses OR to combine two tagsets. If this set is commonly used, we can give it a name and use the name – without the parentheses – like this: LIST prequote = lquot ":" ; SELECT:quoting ("like" subj) IF (-1 ("<was>")) (1 prequote) ; An equivalent definition would be SET prequote = (lquot) OR (":") ; . After running the above rules,