Semantic lexicon
The marking-enriched type of each word. Defaults are the author's lexicon; edit any
of them. Types are built from base e, t, num and marked
arrows (->+, ->-, -> for the dot).
Adapt function
The Adapt function is a list of fix-up lines. When two types do not fit during tagging, the tool tries these lines from top to bottom and uses the first one that matches. If none matches, nothing changes and tagging fails at that spot.
One line looks like this:
RULE : inLeft , inRight => outLeft , outRight :: polLeft , polRight :: LABEL
RULE says where the line may fire: app (application),
comp (composition), or coord (coordination).
inLeft , inRight are the two types coming in, and
outLeft , outRight are the two types you want instead. The two slots
are fixed by role, not by word order: inLeft is the functor (app),
the premise that supplies the result codomain (comp), or the left conjunct
(coord); inRight is the other one. In a backward rule the functor
sits on the right in the sentence but still matches inLeft. In these
patterns, an Uppercase letter (like T) stands for any type, and
a lowercase letter (like m) stands for any marking. The tool
matches the incoming types, then rewrites them to the output.
The last two parts are optional.
polLeft , polRight tell each rewritten side how to pass its
polarity down to its child. You can write d (keep the polarity as it
is), up, down, eq, flip(...)
(turn up into down and back), or md(..., dom) (combine the polarity
with a marking taken from the new type; use dom or cod
to point at which arrow). If you leave this out, both sides keep their polarity
(d , d).
LABEL is just the name shown on the node in the tree. If you
leave it out, it shows ADAPT.
What does the H example do?
e -> T and a quantifier argument (e->t) ->m t, it enlarges
the verb's argument slot so it can take the quantifier:
app : e -> T , (e->t) ->m t => ((e->t) ->m t) ->+ T , (e->t) ->m t.
With an empty adapt box you see the raw algorithm, which fails exactly where a fix is needed.What does the W example do?
e to np+ = (e->t) ->+ t on its own (the Montague
lift), so the two conjuncts arrive as quantifiers. If their types still differ, W sends
both to their join ∨, the least upper bound of the two types in a
preorder on types: coord : A , B => Join(A, B) , Join(A, B). For example
np+ ∨ np- = np•. For the details, see [Reference].