\documentclass[11pt,a4paper]{article}
\usepackage{amsfonts,graphicx}
\usepackage[pdfstartview=FitH,urlcolor=blue,colorlinks=true,bookmarks=true]{hyperref}
\pagestyle{plain}   % do page numbering ('empty' turns off)
\frenchspacing      % no aditional spaces after periods
\setlength{\parskip}{8pt}\parindent=0pt  % no paragraph indentation

\newcommand{\commOut}[1]{}
\newcommand{\subsubsubsection}[1]{\textbf{#1}.}

\title{The GF Resource Grammar Library}
\author{Author: Aarne Ranta}
\begin{document}
\date{Last update: Tue Jun 13 11:43:19 2006}
\maketitle

\tableofcontents

\clearpage


This document is about the 
GF Resource Grammar Library. It presuppose knowledge of GF and its
module system, knowledge that can be acquired e.g. from the GF
tutorial. We start with an introduction to the library, and proceed to
details with the aim of covering all that one needs to know 
in order to use the library. 
How to write one's own resource grammar (i.e. to implement the API for
a new language), is covered by a separate Resource-HOWTO document.

\section{Motivation}
The GF Resource Grammar Library contains grammar rules for
10 languages (some more are under construction). Its purpose
is to make these rules available for application programmers,
who can thereby concentrate on the semantic and stylistic
aspects of their grammars, without having to think about 
grammaticality. The targeted level of application grammarians
is skilled programmer without knowledge linguistics, but with
a good knowledge of the target languages. Such a combination of
skills is typical of programmers who want to localize
software to new languages.

The current resource languages are
-\texttt{Dan}ish
-\texttt{Eng}lish
-\texttt{Fin}nish
-\texttt{Fre}nch
-\texttt{Ger}man
-\texttt{Ita}lian
-\texttt{Nor}wegian
-\texttt{Rus}sian
-\texttt{Spa}nish
-\texttt{Swe}dish

The first three letters (\texttt{Dan} etc) are used in grammar module names.

To give an example application, consider
music playing devices. In the application,
we may have a semantical category \texttt{Kind}, examples
of \texttt{Kind}s being \texttt{Song} and \texttt{Artist}. In German, for instance, \texttt{Song} 
is linearized into the noun "Lied", but knowing this is not
enough to make the application work, because the noun must be 
produced in both singular and plural, and in four different
cases. By using the resource grammar library, it is enough to
write

\begin{verbatim}
  lin Song = reg2N "Lied" "Lieder" neuter
\end{verbatim}
and the eight forms are correctly generated. The resource grammar
library contains a complete set of inflectional paradigms (such as
\texttt{regN2} here), enabling the definition of any lexical items.

The resource grammar library is not only about inflectional paradigms - it
also has syntax rules. The music player application
might also want to modify songs with properties, such as "American",
"old", "good". The German grammar for adjectival modifications is
particularly complex, because adjectives have to agree in gender,
number, and case, and also depend on what determiner is used
("ein Amerikanisches Lied" vs. "das Amerikanische Lied"). All this
variation is taken care of by the resource grammar function

\begin{verbatim}
  fun AdjCN : AP -> CN -> CN
\end{verbatim}
and the resource grammar implementation of the rule adding properties
to kinds is

\begin{verbatim}
  lin PropKind kind prop = AdjCN prop kind
\end{verbatim}
given that 

\begin{verbatim}
  lincat Prop = AP
  lincat Kind = CN
\end{verbatim}
The resource library API is devided into language-specific and language-independet
parts. To put it roughly,

\begin{itemize}
\item the lexicon API is language-specific
\item the syntax API is language-independent
\end{itemize}

Thus, to render the above example in French instead of German, we need to
pick a different linearization of \texttt{Song},

\begin{verbatim}
  lin Song = regGenN "chanson" feminine
\end{verbatim}
But to linearize \texttt{PropKind}, we can use the very same rule as in German.
The resource function \texttt{AdjCN} has different implementations in the two
languages, but the application programmer need not care about the difference.

\subsection{A complete example}
To summarize the example, and also give a template for a programmer to work on,
here is the complete implementation of a small system with songs and properties.
The abstract syntax defines a "domain ontology":

\begin{verbatim}
  abstract Music = {
    cat 
      Kind, 
      Property ;
    fun 
      PropKind : Kind -> Property -> Kind ; 
      Song : Kind ;
      American : Property ;
    }
\end{verbatim}
The concrete syntax is defined independently of language, by opening
two interfaces: the resource \texttt{Grammar} and an application lexicon.

\begin{verbatim}
  incomplete concrete MusicI of Music = open Grammar, MusicLex in {
    lincat 
      Kind = CN ;
      Property = AP ;
    lin
      PropKind k p = AdjCN p k ;
      Song = UseN song_N ;
      American = PositA american_A ;
    }
\end{verbatim}
The application lexicon \texttt{MusicLex} has an abstract syntax that extends
the resource category system \texttt{Cat}.

\begin{verbatim}
  abstract MusicLex = Cat ** {
    fun
      song_N : N ;
      american_A : A ;
    }
\end{verbatim}
Each language has its own concrete syntax, which opens the inflectional paradigms
module for that language:

\begin{verbatim}
  concrete MusicLexGer of MusicLex = CatGer ** open ParadigmsGer in {
    lin
      song_N = reg2N "Lied" "Lieder" neuter ;
      american_A = regA "amerikanisch" ;
    }

  concrete MusicLexFre of MusicLex = CatFre ** open ParadigmsFre in {
    lin
      song_N = regGenN "chanson" feminine ;
      american_A = regA "am�ricain" ;
    }
\end{verbatim}
The top-level \texttt{Music} grammars are obtained by instantiating the two interfaces
of \texttt{MusicI}:

\begin{verbatim}
  concrete MusicGer of Music = MusicI with
    (Grammar = GrammarGer),
    (MusicLex = MusicLexGer) ;

  concrete MusicFre of Music = MusicI with
    (Grammar = GrammarFre),
    (MusicLex = MusicLexFre) ;
\end{verbatim}
Both of these files can use the same \texttt{path}, defined as

\begin{verbatim}
  --# -path=.:present:prelude
\end{verbatim}
The \texttt{present} category contains the compiled resources, restricted to
present tense; \texttt{alltenses} has the full resources.

To localize the music player system to a new language, all that is needed is two modules,
one implementing \texttt{MusicLex} and the other instantiating \texttt{Music}. The latter is
completely trivial, whereas the former one involves the choice of correct
vocabulary and inflectional paradigms. For instance, Finnish is added as follows:

\begin{verbatim}
  concrete MusicLexFin of MusicLex = CatFin ** open ParadigmsFin in {
    lin
      song_N = regN "kappale" ;
      american_A = regA "amerikkalainen" ;
    }

  concrete MusicFin of Music = MusicI with
    (Grammar = GrammarFin),
    (MusicLex = MusicLexFin) ;
\end{verbatim}
More work is of course needed if the language-independent linearizations in
MusicI are not satisfactory for some language. The resource grammar guarantees
that the linearizations are possible in all languages, in the sense of grammatical,
but they might of course be inadequate for stylistic reasons. Assume, 
for the sake of argument, that adjectival modification does not sound good in
English, but that a relative clause would be preferrable. One can then start as
before,

\begin{verbatim}
  concrete MusicLexEng of MusicLex = CatEng ** open ParadigmsEng in {
    lin
      song_N = regN "song" ;
      american_A = regA "American" ;
    }

  concrete MusicEng0 of Music = MusicI with
    (Grammar = GrammarEng),
    (MusicLex = MusicLexEng) ;
\end{verbatim}
The module \texttt{MusicEng0} would not be used on the top level, however, but
another module would be built on top of it, with a restricted import from
\texttt{MusicEng0}. \texttt{MusicEng} inherits everything from \texttt{MusicEng0} 
except \texttt{PropKind}, and
gives its own definition of this function:

\begin{verbatim}
  concrete MusicEng of Music = MusicEng0 - [PropKind] ** open GrammarEng in {
    lin
      PropKind k p = 
        RelCN k (UseRCl TPres ASimul PPos (RelVP IdRP (UseComp (CompAP p)))) ;
    }
\end{verbatim}

\subsection{Parsing with resource grammars?}
The intended use of the resource grammar is as a library for writing
application grammars. It is not designed for e.g. parsing newspaper text. There
are several reasons why this is not so practical:

\begin{itemize}
\item Efficiency: the resource grammar uses complex data structures, in
particular, discontinuous constituents, which make parsing slow and the
parser size huge.
\item Completeness: the resource grammar does not necessarily cover all rules
of the language - only enough many to be able to express everything
in one way or another.
\item Lexicon: the resource grammar has a very small lexicon, only meant for test
purposes.
\item Semantics: the resource grammar has very little semantic control, and may
accept strange input or deliver strange interpretations.
\item Ambiguity: parsing in the resource grammar may return lots of results many
of which are implausible.
\end{itemize}

All of these problems should be solved in application grammars. 
The task of resource grammars is just to take care of low-level linguistic 
details such as inflection, agreement, and word order.

It is for the same reasons that resource grammars are not adequate for translation.
That the syntax API is implemented for different languages of course makes
it possible to translate via it - but there is no guarantee of translation
equivalence. Of course, the use of parametrized implementations such as \texttt{MusicI}
above only extends to those cases where the syntax API does give translation
equivalence - but this must be seen as a limiting case, and real applications
will often use only restricted inheritance of \texttt{MusicI}.

\section{To find rules in the resource grammar library}
\subsection{Inflection paradigms}
Inflection paradigms are defined separately for each language \textit{L}
in the module \texttt{Paradigms}\textit{L}. To test them, the command \texttt{cc} (= \texttt{compute\_concrete})
can be used:

\begin{verbatim}
  > i -retain german/ParadigmsGer.gf

  > cc regN "Schlange"
  {
    s : Number => Case => Str = table Number {
      Sg => table Case {
        Nom => "Schlange" ;
        Acc => "Schlange" ;
        Dat => "Schlange" ;
        Gen => "Schlange"
        } ;
      Pl => table Case {
        Nom => "Schlangen" ;
        Acc => "Schlangen" ;
        Dat => "Schlangen" ;
        Gen => "Schlangen"
        }
      } ;
    g : Gender = Fem
  }
\end{verbatim}
For the sake of convenience, every language implements these four paradigms:

\begin{verbatim}
  oper
    regN : Str -> N ;   -- regular nouns
    regA : Str -> A :   -- regular adjectives
    regV : Str -> V ;   -- regular verbs
    dirV : V   -> V2 ;  -- direct transitive verbs
\end{verbatim}
It is often possible to initialize a lexicon by just using these functions,
and later revise it by using the more involved paradigms. For instance, in
German we cannot use \texttt{regN "Lied"} for \texttt{Song}, because the result would be a
Masculine noun with the plural form \texttt{"Liede"}. The individual \texttt{Paradigms} modules
tell what cases are covered by the regular heuristics.

As a limiting case, one could even initialize the lexicon for a new language
by copying the English (or some other already existing) lexicon. This will
produce language with correct grammar but with content words directly borrowed from
English.

\subsection{Syntax rules}
Syntax rules should be looked for in the abstract modules defining the
API. There are around 10 such modules, each defining constructors for
a group of one or more related categories. For instance, the module
\texttt{Noun} defines how to construct common nouns, noun phrases, and determiners.
Thus the proper place to find out how nouns are modified with adjectives
is \texttt{Noun}, because the result of the construction is again a common noun.

Browsing the libraries is helped by the gfdoc-generated HTML pages. 
However, this is still not easy, and the most efficient way is 
probably to use the parser.
Even though parsing is not an intended end-user application 
of resource grammars, it is a useful technique for application grammarians
to browse the library. To find out what resource function does some
particular job, you can just parse a string that exemplifies this job. For
instance, to find out how sentences are built using transitive verbs, write

\begin{verbatim}
  > i english/LangEng.gf
 
  > p -cat=Cl -fcfg "she loves him"

  PredVP (UsePron she_Pron) (ComplV2 love_V2 (UsePron he_Pron))
\end{verbatim}
Parsing with the English resource grammar has an acceptable speed, but
with most languages it takes just too much resources even to build the
parser. However, examples parsed in one language can always be linearized into
other languages:

\begin{verbatim}
  > i italian/LangIta.gf

  > l PredVP (UsePron she_Pron) (ComplV2 love_V2 (UsePron he_Pron))

  lo ama
\end{verbatim}
Therefore, one can use the English parser to write an Italian grammar, and also
to write a language-independent (incomplete) grammar. One can also parse strings
that are bizarre in English but the intended way of expression in another language.
For instance, the phrase for "I am hungry" in Italian is literally "I have hunger".
This can be built by parsing "I have beer" in LanEng and then writing

\begin{verbatim}
  lin IamHungry = 
    let beer_N = regGenN "fame" feminine 
    in
    PredVP (UsePron i_Pron) (ComplV2 have_V2 
      (DetCN (DetSg MassDet NoOrd) (UseN beer_N))) ;
\end{verbatim}
which uses ParadigmsIta.regGenN. 

\subsection{Example-based grammar writing}
The technique of parsing with the resource grammar can be used in GF source files,
endowed with the suffix \texttt{.gfe} ("GF examples"). The suffix tells GF to preprocess
the file by replacing all expressions of the form

\begin{verbatim}
  in Module.Cat "example string"
\end{verbatim}
by the syntax trees obtained by parsing "example string" in \texttt{Cat} in \texttt{Module}.
For instance,

\begin{verbatim}
  lin IamHungry = 
    let beer_N = regGenN "fame" feminine 
    in
    (in LangEng.Cl "I have beer") ;
\end{verbatim}
will result in the rule displayed in the previous section. The normal binding rules
of functional programming (and GF) guarantee that local bindings of identifiers
take precedence over constants of the same forms. Thus it is also possible to
linearize functions taking arguments in this way:

\begin{verbatim}
  lin
    PropKind car_N old_A = in LangEng.CN "old car" ;
\end{verbatim}
However, the technique of example-based grammar writing has some limitations:

\begin{itemize}
\item Ambiguity. If a string has several parses, the first one is returned, and
it may not be the intended one. The other parses are shown in a comment, from
where they must/can be picked manually.
\item Lexicality. The arguments of a function must be atomic identifiers, and are thus
not available for categories that have no lexical items. For instance, the \texttt{PropKind}
rule above gives the result
\begin{verbatim}
  lin
    PropKind car_N old_A = AdjCN (UseN car_N) (PositA old_A) ;  
\end{verbatim}
However, it is possible to write a special lexicon that gives atomic rules for
all those categories that can be used as arguments, for instance,
\begin{verbatim}
  fun
    cat_CN : CN ;
    old_AP : AP ;
\end{verbatim}
and then use this lexicon instead of the standard one included in \texttt{Lang}.
\end{itemize}

\subsection{Special-purpose APIs}
To give an analogy with a well-known type setting program, GF can be compared
with TeX and the resource grammar library with LaTeX. As TeX frees the author
from thinking about low-level problems of page layout, so GF frees the grammarian
from writing parsing and generation algorithms. But quite a lot of knowledge of
\textit{how} to write grammars is still needed, and the resource grammar library helps
GF grammarians in a way similar to how the LaTeX macro package helps TeX authors.

But even LaTeX is often too detailed and low-level, and users are encouraged to
develop their own macro packages. The same applies to GF resource grammars:
the application grammarian might not need all the choises that the resource
provides, but would prefer less writing and higher-level programming.
To this end, application grammarians may want to write their own views on the
resource grammar. An example of this is already provided, in 
\texttt{mathematical/Predication}.
Instead of the \texttt{NP-VP} structure, it permits clause construction directly from
verbs and adjectives and their arguments:

\begin{verbatim}
  predV     : V  -> NP -> Cl ;             -- "x converges"
  predV2    : V2 -> NP -> NP -> Cl ;       -- "x intersects y"
  predV3    : V3 -> NP -> NP -> NP -> Cl ; -- "x intersects y at z"
  predVColl : V  -> NP -> NP -> Cl ;       -- "x and y intersect"
  predA     : A  -> NP -> Cl ;             -- "x is even"
  predA2    : A2 -> NP -> NP -> Cl ;       -- "x is divisible by y"
\end{verbatim}
The implementation of this module is the functor \texttt{PredicationI}:

\begin{verbatim}
  predV v x = PredVP x (UseV v) ;
  predV2 v x y = PredVP x (ComplV2 v y) ;
  predV3 v x y z = PredVP x (ComplV3 v y z) ;
  predVColl v x y = PredVP (ConjNP and_Conj (BaseNP x y)) (UseV v) ;
  predA a x = PredVP x (UseComp (CompAP (PositA a))) ;
  predA2 a x y = PredVP x (UseComp (CompAP (ComplA2 a y))) ;
\end{verbatim}
Of course, \texttt{Predication} can be opened together with \texttt{Grammar}, but using
the resulting grammar for parsing can be frustrating, since having both
ways of building clauses simultaneously available will produce spurious
ambiguities. Using \texttt{Predication} without \texttt{Verb} for parsing is a better idea,
since parsing is also made more efficient without rules for the \texttt{VP} category.

The use of special-purpose APIs is to some extent just an alternative
to grammar writing by parsing, and its importance may decrease as parsing
with resource grammars gets more efficient.

\section{Overview of syntactic structures}
\subsection{Texts. phrases, and utterances}
The outermost linguistic structure is \texttt{Text}. \texttt{Text}s are composed
from Phrases (\texttt{Phr}) followed by punctuation marks - either of ".", "?" or
"!" (with their proper variants in Spanish and Arabic). Here is an 
example of a \texttt{Text} string.

\begin{verbatim}
  John walks. Why? He doesn't want to sleep!
\end{verbatim}
Phrases are mostly built from Utterances (\texttt{Utt}), which in turn are
declarative sentences, questions, or imperatives - but there
are also "one-word utterances" consisting of noun phrases
or other subsentential phrases. Some Phrases are atomic,
for instance "yes" and "no". Here are some examples of Phrases.

\begin{verbatim}
  yes
  come on, John
  but John walks
  give me the stick please
  don't you know that he is sleeping
  a glass of wine
  a glass of wine please
\end{verbatim}
There is no connection between the punctuation marks and the
types of utterances. This reflects the fact that the punctuation
mark in a real text is selected as a function of the speech act
rather than the grammatical form of an utterance. The following
text is thus well-formed.

\begin{verbatim}
  John walks. John walks? John walks!
\end{verbatim}
What is the difference between Phrase and Utterance? Just technical:
a Phrase is an Utterance with an optional leading conjunction ("but")
and an optional tailing vocative ("John", "please").

\subsection{Sentences and clauses}
The richest of the categories below Utterance is \texttt{S}, Sentence. A Sentence
is formed from a Clause (\texttt{Cl}), by fixing its Tense, Anteriority, and Polarity.
The difference between Sentence and Clause is thus also rather technical.
For example, each of the following strings has a distinct syntax tree
in the category Sentence:

\begin{verbatim}
  John walks
  John doesn't walk
  John walked
  John didn't walk
  John has walked
  John hasn't walked
  John will walk
  John won't walk
  ...
\end{verbatim}
whereas in the category Clause all of them are just different forms of
the same tree.

The following syntax tree of the Text "John walks." gives an overview
of the structural levels.

\begin{verbatim}
Node Constructor             Value type  Other constructors
-----------------------------------------------------------
 1.  TFullStop               Text        TQuestMark
 2.    (PhrUtt               Phr             
 3.      NoPConj             PConj       but_PConj
 4.      (UttS               Utt         UttQS
 5.        (UseCl            S           UseQCl
 6.           TPres          Tense       TPast
 7.           ASimul         Anter       AAnter
 8.           PPos           Pol         PNeg
 9.           (PredVP        Cl              
10.             (UsePN       NP          UsePron, DetCN
11.               john_PN)   PN          mary_PN
12.             (UseV        VP          ComplV2, ComplV3
13.               walk_V)))) V           sleep_V
14.      NoVoc)              Voc         please_Voc
15.    TEmpty                Text            
\end{verbatim}
Here are some examples of the results of changing constructors.

\begin{verbatim}
 1. TFullStop -> TQuestMark   John walks?
 3. NoPConj   -> but_PConj    But John walks.
 6. TPres     -> TPast        John walked.
 7. ASimul    -> AAnter       John has walked.
 8. PPos      -> PNeg         John doesn't walk.
11. john_PN   -> mary_PN      Mary walks.
13. walk_V    -> sleep_V      John sleeps.
14. NoVoc     -> please_Voc   John sleeps please.
\end{verbatim}
All constructors cannot of course be changed so freely, because the
resulting tree would not remain well-typed. Here are some changes involving
many constructors:

\begin{verbatim}
 4- 5. UttS (UseCl ...) -> 
         UttQS (UseQCl (... QuestCl ...)) Does John walk?
10-11. UsePN john_PN    -> 
         UsePron we_Pron                  We walk.
12-13. UseV walk_V      -> 
         ComplV2 love_V2 this_NP          John loves this. 
\end{verbatim}

\subsection{Parts of sentences}
The linguistic phenomena mostly discussed in both traditional grammars and modern
syntax belong to the level of Clauses, that is, lines 9-13, and occasionally
to Sentences, lines 5-13. At this level, the major categories are
\texttt{NP} (Noun Phrase) and \texttt{VP} (Verb Phrase). A Clause typically consists of just an
\texttt{NP} and a \texttt{VP}. The internal structure of both \texttt{NP} and \texttt{VP} can be very complex,
and these categories are mutually recursive: not only can a \texttt{VP} contain an \texttt{NP},

\begin{verbatim}
  [VP loves [NP Mary]]
\end{verbatim}
but also an \texttt{NP} can contain a \texttt{VP}

\begin{verbatim}
  [NP every man [RS who [VP walks]]]
\end{verbatim}
(a labelled bracketing like this is of course just a rough approximation of
a GF syntax tree, but still a useful device of exposition).

Most of the resource modules thus define functions that are used inside
NPs and VPs. Here is a brief overview:

\textbf{Noun}. How to construct NPs. The main three mechanisms 
for constructing NPs are

\begin{itemize}
\item from proper names: "John"
\item from pronouns: "we"
\item from common nouns by determiners: "this man"
\end{itemize}

The \texttt{Noun} module also defines the construction of common nouns. 
The most frequent ways are

\begin{itemize}
\item lexical noun items: "man"
\item adjectival modification: "old man"
\item relative clause modification: "man who sleeps"
\item application of relational nouns: "successor of the number"
\end{itemize}

\textbf{Verb}. 
How to construct VPs. The main mechanism is verbs with their arguments, for instance,

\begin{itemize}
\item one-place verbs: "walks"
\item two-place verbs: "loves Mary"
\item three-place verbs: "gives her a kiss"
\item sentence-complement verbs: "says that it is cold"
\item VP-complement verbs: "wants to give her a kiss"
\end{itemize}

A special verb is the copula, "be" in English but not even realized 
by a verb in all languages.
A copula can take different kinds of complement: 

\begin{itemize}
\item an adjectival phrase: "(John is) old"
\item an adverb: "(John is) here"
\item a noun phrase: "(John is) a man"
\end{itemize}

\textbf{Adjective}. 
How to constuct \texttt{AP}s. The main ways are

\begin{itemize}
\item positive forms of adjectives: "old"
\item comparative forms with object of comparison: "older than John"
\end{itemize}

\textbf{Adverb}. 
How to construct \texttt{Adv}s. The main ways are

\begin{itemize}
\item from adjectives: "slowly"
\end{itemize}

\subsection{Modules and their names}
The resource modules are named after the kind of phrases that are constructed in them,
and they can be roughly classified by the "level" or "size" of expressions that are
formed in them:

\begin{itemize}
\item Larger than sentence: \texttt{Text}, \texttt{Phrase} 
\item Same level as sentence: \texttt{Sentence}, \texttt{Question}, \texttt{Relative}
\item Parts of sentence: \texttt{Adjective}, \texttt{Adverb}, \texttt{Noun}, \texttt{Verb}
\item Cross-cut (coordination): \texttt{Conjunction}
\end{itemize}

Because of mutual recursion such as in embedded sentences, this classification is
not a complete order. However, no mutual dependence is needed between the 
modules in a formal sense - they can all be compiled separately. This is due
to the module \texttt{Cat}, which defines the type system common to the other modules.
For instance, the types \texttt{NP} and \texttt{VP} are defined in \texttt{Cat}, and the module \texttt{Verb} only
needs to know what is given in \texttt{Cat}, not what is given in \texttt{Noun}. To implement
a rule such as

\begin{verbatim}
  Verb.ComplV2 : V2 -> NP -> VP
\end{verbatim}
it is enough to know the linearization type of \texttt{NP} 
(as well as those of \texttt{V2} and \texttt{VP}, all
given in \texttt{Cat}). It is not necessary to know what
ways there are to build \texttt{NP}s (given in \texttt{Noun}), since all these ways must 
conform to the linearization type defined in \texttt{Cat}. Thus the format of
category-specific modules is as follows:

\begin{verbatim}
  abstract Adjective = Cat ** {...}
  abstract Noun      = Cat ** {...}
  abstract Verb      = Cat ** {...}
\end{verbatim}

\subsection{Top-level grammar and lexicon}
The module \texttt{Grammar} collects all the category-specific modules into
a complete grammar:

\begin{verbatim}
  abstract Grammar = 
    Adjective, Noun, Verb, ..., Structural, Idiom
\end{verbatim}
The module \texttt{Structural} is a lexicon of structural words (function words),
such as determiners.

The module \texttt{Idiom} is a collection of idiomatic structures whose
implementation is very language-dependent. An example is existential
structures ("there is", "es gibt", "il y a", etc).

The module \texttt{Lang} combines \texttt{Grammar} with a \texttt{Lexicon} of ca. 350 content words:

\begin{verbatim}
  abstract Lang = Grammar, Lexicon
\end{verbatim}
Using \texttt{Lang} instead of \texttt{Grammar} as a library may give 
for free some words needed in an application. But its main purpose is to
help testing the resource library. It does not seem possible to maintain
a general-purpose multilingual lexicon, and this is the form that the module
\texttt{Lexicon} has.

\subsection{Language-specific syntactic structures}
The API collected in \texttt{Grammar} has been designed to be implementable for
all languages in the resource package. It does contain some rules that
are strange or superfluous in some languages; for instance, the distinction
between definite and indefinite articles does not apply to Finnish and Russian.
But such rules are still easy to implement: they only create some superfluous
ambiguity in the languages in question.

But the library makes no claim that all languages should have exactly the same
abstract syntax. The common API is therefore extended by language-dependent
rules. The top level of each languages looks as follows (with English as example):

\begin{verbatim}
  abstract English = Grammar, ExtraEngAbs, DictEngAbs
\end{verbatim}
where \texttt{ExtraEngAbs} is a collection of syntactic structures specific to English,
and \texttt{DictEngAbs} is an English dictionary (at the moment, it consists of \texttt{IrregEngAbs},
the irregular verbs of English). Each of these language-specific grammars has 
the potential to grow into a full-scale grammar of the language. These grammar
can also be used as libraries, but the possibility of using functors is lost.

To give a better overview of language-specific structures, modules like \texttt{ExtraEngAbs}
are built from a language-independent module \texttt{ExtraAbs} by restricted inheritance:

\begin{verbatim}
  abstract ExtraEngAbs = Extra [f,g,...]
\end{verbatim}
Thus any category and function in \texttt{Extra} may be shared by a subset of all
languages. One can see this set-up as a matrix, which tells what \texttt{Extra} structures
are implemented in what languages. For the common API in \texttt{Grammar}, the matrix
is filled with 1's (everything is implemented in every language).

Language-specific extensions and the use of restricted
inheritance is a recent addition to the resource grammar library, and
has only been exploited in a very small scale so far.


\section{API Documentation}
\subsection{Top-level modules}

\subsubsection{Grammar}
This grammar a collection of the different grammar modules,
To test the resource, import \htmladdnormallink{Lang}{Lang.html}, which also contains
a lexicon.

\begin{verbatim}
  abstract Grammar = 
    Noun,
    Verb, 
    Adjective,
    Adverb,
    Numeral,
    Sentence, 
    Question,
    Relative,
    Conjunction,
    Phrase,
    Text,
    Structural,
    Idiom
    ** {} ;
\end{verbatim}

\commOut{Produced by 
gfdoc - a rudimentary GF document generator.
(c) Aarne Ranta (\htmladdnormallink{aarne@cs.chalmers.se}{mailto:aarne@cs.chalmers.se}) 2002 under GNU GPL.}


\subsubsection{Grammar with lexicon}
This grammar is just a collection of the different modules,
and the one that can be imported when one wants to test the
grammar. A module without a lexicon is \htmladdnormallink{Grammar}{Grammar.html},
which may be more suitable to open in applications.

\begin{verbatim}
  abstract Lang = 
    Grammar,
    Lexicon
    ** {} ;
\end{verbatim}

\subsection{Type system}
\commOut{Produced by 
gfdoc - a rudimentary GF document generator.
(c) Aarne Ranta (\htmladdnormallink{aarne@cs.chalmers.se}{mailto:aarne@cs.chalmers.se}) 2002 under GNU GPL.}


\subsubsection{The category system}
The category system is central to the library in the sense
that the other modules (\texttt{Adjective}, \texttt{Adverb}, \texttt{Noun}, \texttt{Verb} etc)
communicate through it. This means that a e.g. a function using
\texttt{NP}s in \texttt{Verb} need not know how \texttt{NP}s are constructed in \texttt{Noun}:
it is enough that both \texttt{Verb} and \texttt{Noun} use the same type \texttt{NP},
which is given here in \texttt{Cat}.

Some categories are inherited from \htmladdnormallink{Common}{Common.html}.
The reason they are defined there is that they have the same
implementation in all languages in the resource (typically,
just a string). These categories are
\texttt{AdA, AdN, AdV, Adv, Ant, CAdv, IAdv, PConj, Phr}, 
\texttt{Pol, SC, Tense, Text, Utt, Voc}.

Moreover, the list categories \texttt{ListAdv, ListAP, ListNP, ListS}
are defined on \texttt{Conjunction} and only used locally there.

\begin{verbatim}
  abstract Cat = Common ** {
  
    cat
\end{verbatim}

\subsubsubsection{Sentences and clauses}
Constructed in \htmladdnormallink{Sentence}{Sentence.html}, and also in
\htmladdnormallink{Idiom}{Idiom.html}.

\begin{verbatim}
      S ;     -- declarative sentence                e.g. "she lived here"
      QS ;    -- question                            e.g. "where did she live"
      RS ;    -- relative                            e.g. "in which she lived"
      Cl ;    -- declarative clause, with all tenses e.g. "she looks at this"
      Slash ; -- clause missing NP (S/NP in GPSG)    e.g. "she looks at"
      Imp ;   -- imperative                          e.g. "look at this"
\end{verbatim}

\subsubsubsection{Questions and interrogatives}
Constructed in \htmladdnormallink{Question}{Question.html}.

\begin{verbatim}
      QCl ;   -- question clause, with all tenses    e.g. "why does she walk"
      IP ;    -- interrogative pronoun               e.g. "who"
      IComp ; -- interrogative complement of copula  e.g. "where"
      IDet ;  -- interrogative determiner            e.g. "which"
\end{verbatim}

\subsubsubsection{Relative clauses and pronouns}
Constructed in \htmladdnormallink{Relative}{Relative.html}.

\begin{verbatim}
      RCl ;   -- relative clause, with all tenses    e.g. "in which she lives"
      RP ;    -- relative pronoun                    e.g. "in which"
\end{verbatim}

\subsubsubsection{Verb phrases}
Constructed in \htmladdnormallink{Verb}{Verb.html}.

\begin{verbatim}
      VP ;    -- verb phrase                         e.g. "is very warm"
      Comp ;  -- complement of copula, such as AP    e.g. "very warm"
\end{verbatim}

\subsubsubsection{Adjectival phrases}
Constructed in \htmladdnormallink{Adjective}{Adjective.html}.

\begin{verbatim}
      AP ;    -- adjectival phrase                   e.g. "very warm"
\end{verbatim}

\subsubsubsection{Nouns and noun phrases}
Constructed in \htmladdnormallink{Noun}{Noun.html}. 
Many atomic noun phrases e.g. \textit{everybody}
are constructed in \htmladdnormallink{Structural}{Structural.html}.
The determiner structure is

\begin{verbatim}
Predet (QuantSg | QuantPl Num) Ord
\end{verbatim}
as defined in \htmladdnormallink{Noun}{Noun.html}.

\begin{verbatim}
      CN ;    -- common noun (without determiner)    e.g. "red house"
      NP ;    -- noun phrase (subject or object)     e.g. "the red house"
      Pron ;  -- personal pronoun                    e.g. "she"
      Det ;   -- determiner phrase                   e.g. "all the seven"
      Predet; -- predeterminer (prefixed Quant)      e.g. "all"
      QuantSg;-- quantifier ('nucleus' of sing. Det) e.g. "every"
      QuantPl;-- quantifier ('nucleus' of plur. Det) e.g. "many"
      Quant ; -- quantifier with both sg and pl      e.g. "this/these"
      Num ;   -- cardinal number (used with QuantPl) e.g. "seven"
      Ord ;   -- ordinal number (used in Det)        e.g. "seventh"
\end{verbatim}

\subsubsubsection{Numerals}
Constructed in \htmladdnormallink{Numeral}{Numeral.html}.

\begin{verbatim}
      Numeral;-- cardinal or ordinal,                e.g. "five/fifth"
\end{verbatim}

\subsubsubsection{Structural words}
Constructed in \htmladdnormallink{Structural}{Structural.html}.

\begin{verbatim}
      Conj ;  -- conjunction,                        e.g. "and"
      DConj ; -- distributed conj.                   e.g. "both - and"
      Subj ;  -- subjunction,                        e.g. "if"
      Prep ;  -- preposition, or just case           e.g. "in"
\end{verbatim}

\subsubsubsection{Words of open classes}
These are constructed in \htmladdnormallink{Lexicon}{Lexicon.html} and in 
additional lexicon modules.

\begin{verbatim}
      V ;     -- one-place verb                      e.g. "sleep" 
      V2 ;    -- two-place verb                      e.g. "love"
      V3 ;    -- three-place verb                    e.g. "show"
      VV ;    -- verb-phrase-complement verb         e.g. "want"
      VS ;    -- sentence-complement verb            e.g. "claim"
      VQ ;    -- question-complement verb            e.g. "ask"
      VA ;    -- adjective-complement verb           e.g. "look"
      V2A ;   -- verb with NP and AP complement      e.g. "paint"
  
      A ;     -- one-place adjective                 e.g. "warm"
      A2 ;    -- two-place adjective                 e.g. "divisible"
  
      N ;     -- common noun                         e.g. "house"
      N2 ;    -- relational noun                     e.g. "son"
      N3 ;    -- three-place relational noun         e.g. "connection"
      PN ;    -- proper name                         e.g. "Paris"
  
  }
\end{verbatim}

\commOut{Produced by 
gfdoc - a rudimentary GF document generator.
(c) Aarne Ranta (\htmladdnormallink{aarne@cs.chalmers.se}{mailto:aarne@cs.chalmers.se}) 2002 under GNU GPL.}


\subsubsection{Infrastructure with common implementations.}
This module defines the categories that uniformly have the linearization
\texttt{\{s : Str\}} in all languages. 
Moreover, this module defines the abstract parameters of tense, polarity, and
anteriority, which are used in \htmladdnormallink{Phrase}{Phrase.html} to generate different
forms of sentences. Together they give 2 x 4 x 4 = 16 sentence forms.
These tenses are defined for all languages in the library. More tenses
can be defined in the language extensions, e.g. the \textit{passé simple} of
Romance languages.

\begin{verbatim}
  abstract Common = {
  
    cat
\end{verbatim}

\subsubsubsection{Top-level units}
Constructed in \htmladdnormallink{Text}{Text.html}: \texttt{Text}.

\begin{verbatim}
      Text ;  -- text consisting of several phrases  e.g. "He is here. Why?"
\end{verbatim}

Constructed in \htmladdnormallink{Phrase}{Phrase.html}:

\begin{verbatim}
      Phr ;   -- phrase in a text                    e.g. "but be quiet please"
      Utt ;   -- sentence, question, word...         e.g. "be quiet"
      Voc ;   -- vocative or "please"                e.g. "my darling"
      PConj ; -- phrase-beginning conj.              e.g. "therefore"
\end{verbatim}

Constructed in \htmladdnormallink{Sentence}{Sentence.html}:

\begin{verbatim}
      SC ;    -- embedded sentence or question       e.g. "that it rains"
\end{verbatim}

\subsubsubsection{Adverbs}
Constructed in \htmladdnormallink{Adverb}{Adverb.html}.  
Many adverbs are constructed in \htmladdnormallink{Structural}{Structural.html}.

\begin{verbatim}
      Adv ;   -- verb-phrase-modifying adverb,       e.g. "in the house"
      AdV ;   -- adverb directly attached to verb    e.g. "always"
      AdA ;   -- adjective-modifying adverb,         e.g. "very"
      AdN ;   -- numeral-modifying adverb,           e.g. "more than"
      IAdv ;  -- interrogative adverb                e.g. "why"
      CAdv ;  -- comparative adverb                  e.g. "more"
\end{verbatim}

\subsubsubsection{Tense, polarity, and anteriority}
\begin{verbatim}
      Tense ; -- tense: present, past, future, conditional
      Pol ;   -- polarity: positive, negative
      Ant ;   -- anteriority: simultaneous, anterior
  
    fun
      PPos, PNeg : Pol ;           -- I sleep/don't sleep
  
      TPres  : Tense ;                
      ASimul : Ant ;
      TPast, TFut, TCond : Tense ; -- I slept/will sleep/would sleep --# notpresent
      AAnter : Ant ;               -- I have slept                   --# notpresent
  
  }
\end{verbatim}

\subsection{Phrase category modules}
\commOut{Produced by 
gfdoc - a rudimentary GF document generator.
(c) Aarne Ranta (\htmladdnormallink{aarne@cs.chalmers.se}{mailto:aarne@cs.chalmers.se}) 2002 under GNU GPL.}


\subsubsection{Adjectives and adjectival phrases}
\begin{verbatim}
  abstract Adjective = Cat ** {
  
    fun
\end{verbatim}

The principal ways of forming an adjectival phrase are
positive, comparative, relational, reflexive-relational, and
elliptic-relational.
(The superlative use is covered in \htmladdnormallink{Noun}{Noun.html}.\texttt{SuperlA}.)

\begin{verbatim}
      PositA  : A -> AP ;         -- warm
      ComparA : A -> NP -> AP ;   -- warmer than Spain
      ComplA2 : A2 -> NP -> AP ;  -- divisible by 2
      ReflA2  : A2 -> AP ;        -- divisible by itself
      UseA2   : A2 -> A ;         -- divisible
\end{verbatim}

Sentence and question complements defined for all adjectival
phrases, although the semantics is only clear for some adjective.

\begin{verbatim}
      SentAP  : AP -> SC -> AP ;  -- great that she won, uncertain if she did
\end{verbatim}

An adjectival phrase can be modified by an \textbf{adadjective}, such as \textit{very}.

\begin{verbatim}
      AdAP    : AdA -> AP -> AP ; -- very uncertain
\end{verbatim}

The formation of adverbs from adjective (e.g. \textit{quickly}) is covered
by \htmladdnormallink{Adverb}{Adverb.html}.

\begin{verbatim}
  }
\end{verbatim}

\commOut{Produced by 
gfdoc - a rudimentary GF document generator.
(c) Aarne Ranta (\htmladdnormallink{aarne@cs.chalmers.se}{mailto:aarne@cs.chalmers.se}) 2002 under GNU GPL.}


\subsubsection{Adverbs and adverbial phrases}
\begin{verbatim}
  abstract Adverb = Cat ** {
  
    fun
\end{verbatim}

The two main ways of forming adverbs are from adjectives and by
prepositions from noun phrases.

\begin{verbatim}
      PositAdvAdj : A -> Adv ;                 -- quickly
      PrepNP      : Prep -> NP -> Adv ;        -- in the house
\end{verbatim}

Comparative adverbs have a noun phrase or a sentence as object of
comparison.

\begin{verbatim}
      ComparAdvAdj  : CAdv -> A -> NP -> Adv ; -- more quickly than John
      ComparAdvAdjS : CAdv -> A -> S -> Adv ;  -- more quickly than he runs
\end{verbatim}

Adverbs can be modified by 'adadjectives', just like adjectives.

\begin{verbatim}
      AdAdv  : AdA -> Adv -> Adv ;             -- very quickly
\end{verbatim}

Subordinate clauses can function as adverbs.

\begin{verbatim}
      SubjS : Subj -> S -> Adv ;               -- when he arrives
      AdvSC : SC -> Adv ;                      -- that he arrives ---- REMOVE?
\end{verbatim}

Comparison adverbs also work as numeral adverbs.

\begin{verbatim}
      AdnCAdv : CAdv -> AdN ;                  -- more (than five)
  
  }
\end{verbatim}

\commOut{Produced by 
gfdoc - a rudimentary GF document generator.
(c) Aarne Ranta (\htmladdnormallink{aarne@cs.chalmers.se}{mailto:aarne@cs.chalmers.se}) 2002 under GNU GPL.}


\subsubsection{Coordination}
Coordination is defined for many different categories; here is
a sample. The rules apply to \textbf{lists} of two or more elements,
and define two general patterns: 

\begin{itemize}
\item ordinary conjunction: X,...X and X
\item distributed conjunction: both X,...,X and X
\end{itemize}

\textbf{Note}. This module uses right-recursive lists. If backward
compatibility with API 0.9 is needed, use
\htmladdnormallink{SeqConjunction}{SeqConjunction.html}.

\begin{verbatim}
  abstract Conjunction = Cat ** {
\end{verbatim}

\subsubsubsection{Rules}
\begin{verbatim}
    fun
      ConjS    : Conj -> [S] -> S ;     -- "John walks and Mary runs"
      ConjAP   : Conj -> [AP] -> AP ;   -- "even and prime"
      ConjNP   : Conj -> [NP] -> NP ;   -- "John or Mary"
      ConjAdv  : Conj -> [Adv] -> Adv ; -- "quickly or slowly"
  
      DConjS   : DConj -> [S] -> S ;    -- "either John walks or Mary runs"
      DConjAP  : DConj -> [AP] -> AP ;  -- "both even and prime"
      DConjNP  : DConj -> [NP] -> NP ;  -- "either John or Mary"
      DConjAdv : DConj -> [Adv] -> Adv; -- "both badly and slowly"
\end{verbatim}

\subsubsubsection{Categories}
These categories are only used in this module.

\begin{verbatim}
    cat
      [S]{2} ; 
      [Adv]{2} ; 
      [NP]{2} ; 
      [AP]{2} ;
\end{verbatim}

\subsubsubsection{List constructors}
The list constructors are derived from the list notation and therefore
not given explicitly. But here are their type signatures:

\begin{verbatim}
    --  BaseC : C -> C   -> [C] ;  -- for C = S, AP, NP, Adv
    --  ConsC : C -> [C] -> [C] ;
  }
\end{verbatim}

\commOut{Produced by 
gfdoc - a rudimentary GF document generator.
(c) Aarne Ranta (\htmladdnormallink{aarne@cs.chalmers.se}{mailto:aarne@cs.chalmers.se}) 2002 under GNU GPL.}


\subsubsection{Idiomatic expressions}
\begin{verbatim}
  abstract Idiom = Cat ** {
\end{verbatim}

This module defines constructions that are formed in fixed ways,
often different even in closely related languages.

\begin{verbatim}
    fun
      ImpersCl  : VP -> Cl ;        -- it rains
      GenericCl : VP -> Cl ;        -- one sleeps
  
      CleftNP   : NP  -> RS -> Cl ; -- it is you who did it
      CleftAdv  : Adv -> S  -> Cl ; -- it is yesterday she arrived
  
      ExistNP   : NP -> Cl ;        -- there is a house
      ExistIP   : IP -> QCl ;       -- which houses are there
  
      ProgrVP   : VP -> VP ;        -- be sleeping
  
      ImpPl1    : VP -> Utt ;       -- let's go
  
  }
\end{verbatim}

\commOut{Produced by 
gfdoc - a rudimentary GF document generator.
(c) Aarne Ranta (\htmladdnormallink{aarne@cs.chalmers.se}{mailto:aarne@cs.chalmers.se}) 2002 under GNU GPL.}


\subsubsection{The construction of nouns, noun phrases, and determiners}
\begin{verbatim}
  abstract Noun = Cat ** {
\end{verbatim}

\subsubsubsection{Noun phrases}
The three main types of noun phrases are

\begin{itemize}
\item common nouns with determiners
\item proper names
\item pronouns
\end{itemize}

\begin{verbatim}
    fun
      DetCN   : Det -> CN -> NP ;   -- the man
      UsePN   : PN -> NP ;          -- John
      UsePron : Pron -> NP ;        -- he
\end{verbatim}

Pronouns are defined in the module \htmladdnormallink{Structural}{Structural.html}.
A noun phrase already formed can be modified by a \texttt{Predet}erminer.

\begin{verbatim}
      PredetNP : Predet -> NP -> NP; -- only the man 
\end{verbatim}

A noun phrase can also be postmodified by the past participle of a
verb or by an adverb.

\begin{verbatim}
      PPartNP : NP -> V2  -> NP ;    -- the number squared
      AdvNP   : NP -> Adv -> NP ;    -- Paris at midnight
\end{verbatim}

\subsubsubsection{Determiners}
The determiner has a fine-grained structure, in which a 'nucleus'
quantifier and two optional parts can be discerned. 
The cardinal numeral is only available for plural determiners.
(This is modified from CLE by further dividing their \texttt{Num} into 
cardinal and ordinal.)

\begin{verbatim}
      DetSg : QuantSg ->        Ord -> Det ;  -- this best man
      DetPl : QuantPl -> Num -> Ord -> Det ;  -- these five best men
\end{verbatim}

Quantifiers that have both forms can be used in both ways.

\begin{verbatim}
      SgQuant : Quant -> QuantSg ;            -- this
      PlQuant : Quant -> QuantPl ;            -- these
\end{verbatim}

Pronouns have possessive forms. Genitives of other kinds
of noun phrases are not given here, since they are not possible
in e.g. Romance languages.

\begin{verbatim}
      PossPron : Pron -> Quant ;    -- my (house)
\end{verbatim}

All parts of the determiner can be empty, except \texttt{Quant}, which is
the \textit{kernel} of a determiner.

\begin{verbatim}
      NoNum  : Num ;
      NoOrd  : Ord ;
\end{verbatim}

\texttt{Num} consists of either digits or numeral words.

\begin{verbatim}
      NumInt     : Int -> Num ;     -- 51
      NumNumeral : Numeral -> Num ; -- fifty-one
\end{verbatim}

The construction of numerals is defined in \htmladdnormallink{Numeral}{Numeral.html}.
\texttt{Num} can  be modified by certain adverbs.

\begin{verbatim}
      AdNum : AdN -> Num -> Num ;   -- almost 51
\end{verbatim}

\texttt{Ord} consists of either digits or numeral words.

\begin{verbatim}
      OrdInt     : Int -> Ord ;     -- 51st
      OrdNumeral : Numeral -> Ord ; -- fifty-first
\end{verbatim}

Superlative forms of adjectives behave syntactically in the same way as
ordinals.

\begin{verbatim}
      OrdSuperl : A -> Ord ;        -- largest
\end{verbatim}

Definite and indefinite constructions are sometimes realized as
neatly distinct words (Spanish \textit{un, unos ; el, los}) but also without
any particular word (Finnish; Swedish definites).

\begin{verbatim}
      DefArt   : Quant ;            -- the (house), the (houses)
      IndefArt : Quant ;            -- a (house), (houses)
\end{verbatim}

Nouns can be used without an article as mass nouns. The resource does
not distinguish mass nouns from other common nouns, which can result
in semantically odd expressions.

\begin{verbatim}
      MassDet  : QuantSg ;          -- (beer)
\end{verbatim}

Other determiners are defined in \htmladdnormallink{Structural}{Structural.html}.

\subsubsubsection{Common nouns}
Simple nouns can be used as nouns outright.

\begin{verbatim}
      UseN : N -> CN ;              -- house
\end{verbatim}

Relational nouns take one or two arguments.

\begin{verbatim}
      ComplN2 : N2 -> NP -> CN ;    -- son of the king
      ComplN3 : N3 -> NP -> N2 ;    -- flight from Moscow (to Paris)
\end{verbatim}

Relational nouns can also be used without their arguments.
The semantics is typically derivative of the relational meaning.

\begin{verbatim}
      UseN2   : N2 -> CN ;          -- son
      UseN3   : N3 -> CN ;          -- flight
\end{verbatim}

Nouns can be modified by adjectives, relative clauses, and adverbs
(the last rule will give rise to many 'PP attachement' ambiguities
when used in connection with verb phrases).

\begin{verbatim}
      AdjCN   : AP -> CN  -> CN ;   -- big house
      RelCN   : CN -> RS  -> CN ;   -- house that John owns
      AdvCN   : CN -> Adv -> CN ;   -- house on the hill
\end{verbatim}

Nouns can also be modified by embedded sentences and questions.
For some nouns this makes little sense, but we leave this for applications
to decide. Sentential complements are defined in \htmladdnormallink{Verb}{Verb.html}.

\begin{verbatim}
      SentCN  : CN -> SC  -> CN ;   -- fact that John smokes, question if he does
\end{verbatim}

\subsubsubsection{Apposition}
This is certainly overgenerating.

\begin{verbatim}
      ApposCN : CN -> NP -> CN ;    -- number x, numbers x and y
  
  } ;
\end{verbatim}

\commOut{Produced by 
gfdoc - a rudimentary GF document generator.
(c) Aarne Ranta (\htmladdnormallink{aarne@cs.chalmers.se}{mailto:aarne@cs.chalmers.se}) 2002 under GNU GPL.}


\subsubsection{Numerals}
This grammar defines numerals from 1 to 999999. 
The implementations are adapted from the
\htmladdnormallink{numerals library}{http://www.cs.chalmers.se/~aarne/GF/examples/numerals/} 
which defines numerals for 88 languages.
The resource grammar implementations add to this inflection (if needed)
and ordinal numbers.
\textbf{Note}. Number 1 as defined 
in the category \texttt{Numeral} here should not be used in the formation of
noun phrases, and should therefore be removed. Instead, one should use
\htmladdnormallink{Structural}{Structural.html}\texttt{.one\_Quant}. This makes the grammar simpler
because we can assume that numbers form plural noun phrases.

\begin{verbatim}
  abstract Numeral = Cat ** {
  
  cat 
    Digit ;       -- 2..9
    Sub10 ;       -- 1..9
    Sub100 ;      -- 1..99
    Sub1000 ;     -- 1..999
    Sub1000000 ;  -- 1..999999
  
  fun 
    num : Sub1000000 -> Numeral ;
  
    n2, n3, n4, n5, n6, n7, n8, n9 : Digit ;
  
    pot01 : Sub10 ;                               -- 1
    pot0 : Digit -> Sub10 ;                       -- d * 1
    pot110 : Sub100 ;                             -- 10
    pot111 : Sub100 ;                             -- 11
    pot1to19 : Digit -> Sub100 ;                  -- 10 + d
    pot0as1 : Sub10 -> Sub100 ;                   -- coercion of 1..9
    pot1 : Digit -> Sub100 ;                      -- d * 10
    pot1plus : Digit -> Sub10 -> Sub100 ;         -- d * 10 + n
    pot1as2 : Sub100 -> Sub1000 ;                 -- coercion of 1..99
    pot2 : Sub10 -> Sub1000 ;                     -- m * 100
    pot2plus : Sub10 -> Sub100 -> Sub1000 ;       -- m * 100 + n
    pot2as3 : Sub1000 -> Sub1000000 ;             -- coercion of 1..999
    pot3 : Sub1000 -> Sub1000000 ;                -- m * 1000
    pot3plus : Sub1000 -> Sub1000 -> Sub1000000 ; -- m * 1000 + n
  
  }
\end{verbatim}

\commOut{Produced by 
gfdoc - a rudimentary GF document generator.
(c) Aarne Ranta (\htmladdnormallink{aarne@cs.chalmers.se}{mailto:aarne@cs.chalmers.se}) 2002 under GNU GPL.}


\commOut{Produced by 
gfdoc - a rudimentary GF document generator.
(c) Aarne Ranta (\htmladdnormallink{aarne@cs.chalmers.se}{mailto:aarne@cs.chalmers.se}) 2002 under GNU GPL.}


\subsubsection{Phrases and utterances}
\begin{verbatim}
  abstract Phrase = Cat ** {
\end{verbatim}

When a phrase is built from an utterance it can be prefixed
with a phrasal conjunction (such as \textit{but}, \textit{therefore})
and suffixing with a vocative (typically a noun phrase).

\begin{verbatim}
    fun
      PhrUtt   : PConj -> Utt -> Voc -> Phr ; -- But go home my friend.
\end{verbatim}

Utterances are formed from sentences, questions, and imperatives.

\begin{verbatim}
      UttS     : S -> Utt ;                   -- John walks
      UttQS    : QS -> Utt ;                  -- is it good
      UttImpSg : Pol -> Imp -> Utt;           -- (don't) help yourself
      UttImpPl : Pol -> Imp -> Utt;           -- (don't) help yourselves
\end{verbatim}

There are also 'one-word utterances'. A typical use of them is
as answers to questions.
\textbf{Note}. This list is incomplete. More categories could be covered.
Moreover, in many languages e.g. noun phrases in different cases
can be used.

\begin{verbatim}
      UttIP   : IP   -> Utt ;                 -- who
      UttIAdv : IAdv -> Utt ;                 -- why
      UttNP   : NP   -> Utt ;                 -- this man
      UttAdv  : Adv  -> Utt ;                 -- here
      UttVP   : VP   -> Utt ;                 -- to sleep
\end{verbatim}

The phrasal conjunction is optional. A sentence conjunction
can also used to prefix an utterance.

\begin{verbatim}
      NoPConj   : PConj ;                      
      PConjConj : Conj -> PConj ;             -- and
\end{verbatim}

The vocative is optional. Any noun phrase can be made into vocative,
which may be overgenerating (e.g. \textit{I}).

\begin{verbatim}
      NoVoc   : Voc ;
      VocNP   : NP -> Voc ;                   -- my friend
  
  }
\end{verbatim}

\commOut{Produced by 
gfdoc - a rudimentary GF document generator.
(c) Aarne Ranta (\htmladdnormallink{aarne@cs.chalmers.se}{mailto:aarne@cs.chalmers.se}) 2002 under GNU GPL.}


\subsubsection{Questions and interrogative pronouns}
\begin{verbatim}
  abstract Question = Cat ** {
\end{verbatim}

A question can be formed from a clause ('yes-no question') or
with an interrogative.

\begin{verbatim}
    fun
      QuestCl     : Cl -> QCl ;                  -- does John walk
      QuestVP     : IP -> VP -> QCl ;            -- who walks
      QuestSlash  : IP -> Slash -> QCl ;         -- who does John love
      QuestIAdv   : IAdv -> Cl -> QCl ;          -- why does John walk
      QuestIComp  : IComp -> NP -> QCl ;         -- where is John
\end{verbatim}

Interrogative pronouns can be formed with interrogative
determiners. 

\begin{verbatim}
      IDetCN  : IDet -> Num -> Ord -> CN -> IP;  -- which five best songs
      AdvIP   : IP -> Adv -> IP ;                -- who in Europe
  
      PrepIP  : Prep -> IP -> IAdv ;             -- with whom
  
      CompIAdv : IAdv -> IComp ;                 -- where
\end{verbatim}

More \texttt{IP}, \texttt{IDet}, and \texttt{IAdv} are defined in
\htmladdnormallink{Structural}{Structural.html}.

\begin{verbatim}
  }
\end{verbatim}

\commOut{Produced by 
gfdoc - a rudimentary GF document generator.
(c) Aarne Ranta (\htmladdnormallink{aarne@cs.chalmers.se}{mailto:aarne@cs.chalmers.se}) 2002 under GNU GPL.}


\subsubsection{Relative clauses and pronouns}
\begin{verbatim}
  abstract Relative = Cat ** {
  
    fun
\end{verbatim}

The simplest way to form a relative clause is from a clause by
a pronoun similar to \textit{such that}.

\begin{verbatim}
      RelCl    : Cl -> RCl ;            -- such that John loves her
\end{verbatim}

The more proper ways are from a verb phrase (formed in \htmladdnormallink{Verb}{Verb.html}) 
or a sentence with a missing noun phrase (formed in \htmladdnormallink{Sentence}{Sentence.html}).

\begin{verbatim}
      RelVP    : RP -> VP -> RCl ;      -- who loves John
      RelSlash : RP -> Slash -> RCl ;   -- whom John loves
\end{verbatim}

Relative pronouns are formed from an 'identity element' by prefixing
or suffixing (depending on language) prepositional phrases.

\begin{verbatim}
      IdRP  : RP ;                      -- which
      FunRP : Prep -> NP -> RP -> RP ;  -- all the roots of which 
  
  }
\end{verbatim}

\commOut{Produced by 
gfdoc - a rudimentary GF document generator.
(c) Aarne Ranta (\htmladdnormallink{aarne@cs.chalmers.se}{mailto:aarne@cs.chalmers.se}) 2002 under GNU GPL.}


\subsubsection{Sentences, clauses, imperatives, and sentential complements}
\begin{verbatim}
  abstract Sentence = Cat ** {
\end{verbatim}

\subsubsubsection{Clauses}
The \texttt{NP VP} predication rule form a clause whose linearization
gives a table of all tense variants, positive and negative.
Clauses are converted to \texttt{S} (with fixed tense) in \htmladdnormallink{Tensed}{Tensed.html}.

\begin{verbatim}
    fun
      PredVP    : NP -> VP -> Cl ;         -- John walks
\end{verbatim}

Using an embedded sentence as a subject is treated separately.
This can be overgenerating. E.g. \textit{whether you go} as subject
is only meaningful for some verb phrases.

\begin{verbatim}
      PredSCVP  : SC -> VP -> Cl ;         -- that you go makes me happy
\end{verbatim}

\subsubsubsection{Clauses missing object noun phrases}
This category is a variant of the 'slash category' \texttt{S/NP} of
GPSG and categorial grammars, which in turn replaces
movement transformations in the formation of questions
and relative clauses. Except \texttt{SlashV2}, the construction 
rules can be seen as special cases of function composition, in
the style of CCG.
\textbf{Note} the set is not complete and lacks e.g. verbs with more than 2 places.

\begin{verbatim}
      SlashV2   : NP -> V2 -> Slash ;      -- (whom) he sees
      SlashVVV2 : NP -> VV -> V2 -> Slash; -- (whom) he wants to see 
      AdvSlash  : Slash -> Adv -> Slash ;  -- (whom) he sees tomorrow
      SlashPrep : Cl -> Prep -> Slash ;    -- (with whom) he walks 
\end{verbatim}

\subsubsubsection{Imperatives}
An imperative is straightforwardly formed from a verb phrase.
It has variation over positive and negative, singular and plural.
To fix these parameters, see \htmladdnormallink{Phrase}{Phrase.html}.

\begin{verbatim}
      ImpVP     : VP -> Imp ;              -- go
\end{verbatim}

\subsubsubsection{Embedded sentences}
Sentences, questions, and infinitival phrases can be used as
subjects and (adverbial) complements.

\begin{verbatim}
      EmbedS    : S  -> SC ;               -- that you go
      EmbedQS   : QS -> SC ;               -- whether you go
      EmbedVP   : VP -> SC ;               -- to go
\end{verbatim}

\subsubsubsection{Sentences}
These are the 2 x 4 x 4 = 16 forms generated by different
combinations of tense, polarity, and
anteriority, which are defined in \htmladdnormallink{Tense}{Tense.html}.

\begin{verbatim}
    fun
      UseCl  : Tense -> Ant -> Pol -> Cl  -> S ;
      UseQCl : Tense -> Ant -> Pol -> QCl -> QS ;
      UseRCl : Tense -> Ant -> Pol -> RCl -> RS ;
  
  }
\end{verbatim}

Examples for English \texttt{S}/\texttt{Cl}:

Pres  Simul  Pos  ODir  : he sleeps
Pres  Simul  Neg  ODir  : he doesn't sleep
Pres  Anter  Pos  ODir  : he has slept
Pres  Anter  Neg  ODir  : he hasn't slept
Past  Simul  Pos  ODir  : he slept
Past  Simul  Neg  ODir  : he didn't sleep
Past  Anter  Pos  ODir  : he had slept
Past  Anter  Neg  ODir  : he hadn't slept
Fut   Simul  Pos  ODir  : he will sleep
Fut   Simul  Neg  ODir  : he won't sleep
Fut   Anter  Pos  ODir  : he will have slept
Fut   Anter  Neg  ODir  : he won't have slept
Cond  Simul  Pos  ODir  : he would sleep
Cond  Simul  Neg  ODir  : he wouldn't sleep
Cond  Anter  Pos  ODir  : he would have slept
Cond  Anter  Neg  ODir  : he wouldn't have slept
\commOut{Produced by 
gfdoc - a rudimentary GF document generator.
(c) Aarne Ranta (\htmladdnormallink{aarne@cs.chalmers.se}{mailto:aarne@cs.chalmers.se}) 2002 under GNU GPL.}


\subsubsection{Structural Words}

Here we have some words belonging to closed classes and appearing
in all languages we have considered.
Sometimes they are not really meaningful, e.g. \texttt{we\_Pron} in Spanish
should be replaced by masculine and feminine variants.

\begin{verbatim}
  abstract Structural = Cat ** {
  
    fun
\end{verbatim}

This is an alphabetical list of structural words

\begin{verbatim}
    above_Prep : Prep ;
    after_Prep : Prep ;
    all_Predet : Predet ;
    almost_AdA : AdA ;   
    almost_AdN : AdN ;   
    although_Subj : Subj ;
    always_AdV : AdV ;
    and_Conj : Conj ;
    because_Subj : Subj ;
    before_Prep : Prep ;
    behind_Prep : Prep ;
    between_Prep : Prep ;
    both7and_DConj : DConj ;
    but_PConj : PConj ;
    by8agent_Prep : Prep ;
    by8means_Prep : Prep ;
    can8know_VV : VV ;
    can_VV : VV ;
    during_Prep : Prep ;
    either7or_DConj : DConj ;
    every_Det : Det ;
    everybody_NP : NP ;
    everything_NP : NP ;
    everywhere_Adv : Adv ;
    first_Ord : Ord ;
    few_Det : Det ;
    from_Prep : Prep ;
    he_Pron : Pron ;
    here_Adv : Adv ;
    here7to_Adv : Adv ;
    here7from_Adv : Adv ;
    how_IAdv : IAdv ;
    how8many_IDet : IDet ;
    i_Pron : Pron ;
    if_Subj : Subj ;
    in8front_Prep : Prep ;
    in_Prep : Prep ;
    it_Pron : Pron ;
    less_CAdv : CAdv ;
    many_Det : Det ;
    more_CAdv : CAdv ;
    most_Predet : Predet ;
    much_Det : Det ;
    must_VV : VV ;
    no_Phr : Phr ;
    on_Prep : Prep ;
    one_Quant : QuantSg ;
    only_Predet : Predet ;
    or_Conj : Conj ;
    otherwise_PConj : PConj ;
    part_Prep : Prep ;
    please_Voc : Voc ;
    possess_Prep : Prep ;
    quite_Adv : AdA ;
    she_Pron : Pron ;
    so_AdA : AdA ;
    someSg_Det : Det ;
    somePl_Det : Det ;
    somebody_NP : NP ;
    something_NP : NP ;
    somewhere_Adv : Adv ;
    that_Quant : Quant ;
    that_NP : NP ;
    there_Adv : Adv ;
    there7to_Adv : Adv ;
    there7from_Adv : Adv ;
    therefore_PConj : PConj ;
    these_NP : NP ;
    they_Pron : Pron ; 
    this_Quant : Quant ;
    this_NP : NP ;
    those_NP : NP ;
    through_Prep : Prep ;
    to_Prep : Prep ;
    too_AdA : AdA ;
    under_Prep : Prep ;
    very_AdA : AdA ;
    want_VV : VV ;
    we_Pron : Pron ;
    whatPl_IP : IP ;
    whatSg_IP : IP ;
    when_IAdv : IAdv ;
    when_Subj : Subj ;
    where_IAdv : IAdv ;
    whichPl_IDet : IDet ;
    whichSg_IDet : IDet ;
    whoPl_IP : IP ;
    whoSg_IP : IP ;
    why_IAdv : IAdv ;
    with_Prep : Prep ;
    without_Prep : Prep ;
    yes_Phr : Phr ;
    youSg_Pron : Pron ;
    youPl_Pron : Pron ;
    youPol_Pron : Pron ;
  
  }
\end{verbatim}

\commOut{Produced by 
gfdoc - a rudimentary GF document generator.
(c) Aarne Ranta (\htmladdnormallink{aarne@cs.chalmers.se}{mailto:aarne@cs.chalmers.se}) 2002 under GNU GPL.}


\subsubsection{Texts}
\begin{verbatim}
  abstract Text = Common ** {
  
    fun
      TEmpty : Text ;
      TFullStop : Phr -> Text -> Text ;
      TQuestMark : Phr -> Text -> Text ;
      TExclMark : Phr -> Text -> Text ;
  
  }
\end{verbatim}

\commOut{Produced by 
gfdoc - a rudimentary GF document generator.
(c) Aarne Ranta (\htmladdnormallink{aarne@cs.chalmers.se}{mailto:aarne@cs.chalmers.se}) 2002 under GNU GPL.}


\subsubsection{The construction of verb phrases}
\begin{verbatim}
  abstract Verb = Cat ** {
\end{verbatim}

\subsubsubsection{Complementization rules}
Verb phrases are constructed from verbs by providing their
complements. There is one rule for each verb category.

\begin{verbatim}
    fun
      UseV     : V   -> VP ;              -- sleep
      ComplV2  : V2  -> NP -> VP ;        -- use it
      ComplV3  : V3  -> NP -> NP -> VP ;  -- send a message to her
  
      ComplVV  : VV  -> VP -> VP ;        -- want to run
      ComplVS  : VS  -> S  -> VP ;        -- know that she runs
      ComplVQ  : VQ  -> QS -> VP ;        -- ask if she runs
  
      ComplVA  : VA  -> AP -> VP ;        -- look red
      ComplV2A : V2A -> NP -> AP -> VP ;  -- paint the house red
\end{verbatim}

\subsubsubsection{Other ways of forming verb phrases}
Verb phrases can also be constructed reflexively and from
copula-preceded complements.

\begin{verbatim}
      ReflV2   : V2 -> VP ;               -- use itself
      UseComp  : Comp -> VP ;             -- be warm
\end{verbatim}

Passivization of two-place verbs is another way to use
them. In many languages, the result is a participle that
is used as complement to a copula (\textit{is used}), but other
auxiliary verbs are possible (Ger. \textit{wird angewendet}, It.
\textit{viene usato}), as well as special verb forms (Fin. \textit{käytetään},
Swe. \textit{används}).

\textbf{Note}. the rule can be overgenerating, since the \texttt{V2} need not
take a direct object.

\begin{verbatim}
      PassV2   : V2 -> VP ;               -- be used
\end{verbatim}

Adverbs can be added to verb phrases. Many languages make
a distinction between adverbs that are attached in the end
vs. next to (or before) the verb.

\begin{verbatim}
      AdvVP    : VP -> Adv -> VP ;        -- sleep here
      AdVVP    : AdV -> VP -> VP ;        -- always sleep
\end{verbatim}

\textbf{Agents of passives} are constructed as adverbs with the
preposition \htmladdnormallink{Structural}{Structural.html}\texttt{.8agent\_Prep}.

\subsubsubsection{Complements to copula}
Adjectival phrases, noun phrases, and adverbs can be used.

\begin{verbatim}
      CompAP   : AP  -> Comp ;            -- (be) small
      CompNP   : NP  -> Comp ;            -- (be) a soldier
      CompAdv  : Adv -> Comp ;            -- (be) here
\end{verbatim}

\subsubsubsection{Coercions}
Verbs can change subcategorization patterns in systematic ways,
but this is very much language-dependent. The following two
work in all the languages we cover.

\begin{verbatim}
      UseVQ   : VQ -> V2 ;                -- ask (a question)
      UseVS   : VS -> V2 ;                -- know (a secret)
  
  }
\end{verbatim}

\subsection{Inflectional paradigms}
Author: 
Last update: Tue Jun 13 11:43:19 2006

\commOut{Produced by 
gfdoc - a rudimentary GF document generator.
(c) Aarne Ranta (\htmladdnormallink{aarne@cs.chalmers.se}{mailto:aarne@cs.chalmers.se}) 2002 under GNU GPL.}

==

\# -path=.:../scandinavian:../common:../abstract:../../prelude


\subsubsection{Danish Lexical Paradigms}
Aarne Ranta 2003

This is an API to the user of the resource grammar 
for adding lexical items. It gives functions for forming
expressions of open categories: nouns, adjectives, verbs.

Closed categories (determiners, pronouns, conjunctions) are
accessed through the resource syntax API, \texttt{Structural.gf}. 

The main difference with \texttt{MorphoDan.gf} is that the types
referred to are compiled resource grammar types. We have moreover
had the design principle of always having existing forms, rather
than stems, as string arguments of the paradigms.

The structure of functions for each word class \texttt{C} is the following:
first we give a handful of patterns that aim to cover all
regular cases. Then we give a worst-case function \texttt{mkC}, which serves as an
escape to construct the most irregular words of type \texttt{C}.
However, this function should only seldom be needed: we have a
separate module \texttt{IrregularEng}, which covers all irregularly inflected
words.

\begin{verbatim}
  resource ParadigmsDan = 
    open 
      (Predef=Predef), 
      Prelude, 
      CommonScand, 
      ResDan, 
      MorphoDan, 
      CatDan in {
\end{verbatim}

\subsubsubsection{Parameters}
To abstract over gender names, we define the following identifiers.

\begin{verbatim}
  oper
    Gender : Type ; 
  
    utrum   : Gender ;
    neutrum : Gender ;
\end{verbatim}

To abstract over number names, we define the following.

\begin{verbatim}
    Number : Type ; 
  
    singular : Number ;
    plural   : Number ;
\end{verbatim}

To abstract over case names, we define the following.

\begin{verbatim}
    Case : Type ;
  
    nominative : Case ;
    genitive   : Case ;
\end{verbatim}

Prepositions used in many-argument functions are just strings.

\begin{verbatim}
    Preposition : Type = Str ;
\end{verbatim}

\subsubsubsection{Nouns}
Worst case: give all four forms. The gender is computed from the
last letter of the second form (if \textit{n}, then \texttt{utrum}, otherwise \texttt{neutrum}).

\begin{verbatim}
    mkN  : (dreng,drengen,drenger,drengene : Str) -> N ;
\end{verbatim}

The regular function takes the singular indefinite form
and computes the other forms and the gender by a heuristic.
The heuristic is that all nouns are \texttt{utrum} with the
plural ending \textit{er///}r//.

\begin{verbatim}
    regN : Str -> N ;
\end{verbatim}

Giving gender manually makes the heuristic more reliable.

\begin{verbatim}
    regGenN : Str -> Gender -> N ;
\end{verbatim}

This function takes the singular indefinite and definite forms; the
gender is computed from the definite form.

\begin{verbatim}
    mk2N : (bil,bilen : Str) -> N ;
\end{verbatim}

This function takes the singular indefinite and definite and the plural
indefinite

\begin{verbatim}
    mk3N : (bil,bilen,biler : Str) -> N ;
\end{verbatim}

\subsubsubsection{Compound nouns}
All the functions above work quite as well to form compound nouns,
such as \textit{fotboll}. 

\subsubsubsection{Relational nouns}
Relational nouns (\textit{daughter of x}) need a preposition. 

\begin{verbatim}
    mkN2 : N -> Preposition -> N2 ;
\end{verbatim}

The most common preposition is \textit{av}, and the following is a
shortcut for regular, \texttt{nonhuman} relational nouns with \textit{av}.

\begin{verbatim}
    regN2 : Str -> Gender -> N2 ;
\end{verbatim}

Use the function \texttt{mkPreposition} or see the section on prepositions below to  
form other prepositions.

Three-place relational nouns (\textit{the connection from x to y}) need two prepositions.

\begin{verbatim}
    mkN3 : N -> Preposition -> Preposition -> N3 ;
\end{verbatim}

\subsubsubsection{Relational common noun phrases}
In some cases, you may want to make a complex \texttt{CN} into a
relational noun (e.g. \textit{the old town hall of}). However, \texttt{N2} and
\texttt{N3} are purely lexical categories. But you can use the \texttt{AdvCN}
and \texttt{PrepNP} constructions to build phrases like this.

\subsubsubsection{Proper names and noun phrases}
Proper names, with a regular genitive, are formed as follows

\begin{verbatim}
    regPN : Str -> Gender -> PN ;          -- John, John's
\end{verbatim}

Sometimes you can reuse a common noun as a proper name, e.g. \textit{Bank}.

\begin{verbatim}
    nounPN : N -> PN ;
\end{verbatim}

To form a noun phrase that can also be plural and have an irregular
genitive, you can use the worst-case function.

\begin{verbatim}
    mkNP : Str -> Str -> Number -> Gender -> NP ; 
\end{verbatim}

\subsubsubsection{Adjectives}
Non-comparison one-place adjectives need three forms: 

\begin{verbatim}
    mkA : (galen,galet,galne : Str) -> A ;
\end{verbatim}

For regular adjectives, the other forms are derived. 

\begin{verbatim}
    regA : Str -> A ;
\end{verbatim}

In most cases, two forms are enough.

\begin{verbatim}
    mk2A : (stor,stort : Str) -> A ;
\end{verbatim}

\subsubsubsection{Two-place adjectives}
Two-place adjectives need a preposition for their second argument.

\begin{verbatim}
    mkA2 : A -> Preposition -> A2 ;
\end{verbatim}

Comparison adjectives may need as many as five forms. 

\begin{verbatim}
    mkADeg : (stor,stort,store,storre,storst : Str) -> A ;
\end{verbatim}

The regular pattern works for many adjectives, e.g. those ending
with \textit{ig}.

\begin{verbatim}
    regADeg : Str -> A ;
\end{verbatim}

Just the comparison forms can be irregular.

\begin{verbatim}
    irregADeg : (tung,tyngre,tyngst : Str) -> A ;
\end{verbatim}

Sometimes just the positive forms are irregular.

\begin{verbatim}
    mk3ADeg : (galen,galet,galna : Str) -> A ;
    mk2ADeg : (bred,bredt        : Str) -> A ;
\end{verbatim}

If comparison is formed by \textit{mer, //mest}, as in general for//
long adjective, the following pattern is used:

\begin{verbatim}
    compoundA : A -> A ; -- -/mer/mest norsk
\end{verbatim}

\subsubsubsection{Adverbs}
Adverbs are not inflected. Most lexical ones have position
after the verb. Some can be preverbal (e.g. \textit{always}).

\begin{verbatim}
    mkAdv : Str -> Adv ;
    mkAdV : Str -> AdV ;
\end{verbatim}

Adverbs modifying adjectives and sentences can also be formed.

\begin{verbatim}
    mkAdA : Str -> AdA ;
\end{verbatim}

\subsubsubsection{Prepositions}
A preposition is just a string.

\begin{verbatim}
    mkPreposition : Str -> Preposition ;
\end{verbatim}

\subsubsubsection{Verbs}
The worst case needs six forms.

\begin{verbatim}
    mkV : (spise,spiser,spises,spiste,spist,spis : Str) -> V ;
\end{verbatim}

The 'regular verb' function is the first conjugation.

\begin{verbatim}
    regV : (snakke : Str) -> V ;
\end{verbatim}

The almost regular verb function needs the infinitive and the preteritum.

\begin{verbatim}
    mk2V : (leve,levde : Str) -> V ;
\end{verbatim}

There is an extensive list of irregular verbs in the module \texttt{IrregDan}.
In practice, it is enough to give three forms, as in school books.

\begin{verbatim}
    irregV : (drikke, drakk, drukket  : Str) -> V ;
\end{verbatim}

\subsubsubsection{Verbs with //være// as auxiliary}
By default, the auxiliary is \textit{have}. This function changes it to \textit{være}.

\begin{verbatim}
    vaereV : V -> V ;
\end{verbatim}

\subsubsubsection{Verbs with a particle}
The particle, such as in \textit{switch on}, is given as a string.

\begin{verbatim}
    partV  : V -> Str -> V ;
\end{verbatim}

\subsubsubsection{Deponent verbs}
Some words are used in passive forms only, e.g. \textit{hoppas}, some as
reflexive e.g. \textit{ångra sig}.

\begin{verbatim}
    depV  : V -> V ;
    reflV : V -> V ;
\end{verbatim}

\subsubsubsection{Two-place verbs}
Two-place verbs need a preposition, except the special case with direct object.
(transitive verbs). Notice that a particle comes from the \texttt{V}.

\begin{verbatim}
    mkV2  : V -> Preposition -> V2 ;
  
    dirV2 : V -> V2 ;
\end{verbatim}

\subsubsubsection{Three-place verbs}
Three-place (ditransitive) verbs need two prepositions, of which
the first one or both can be absent.

\begin{verbatim}
    mkV3     : V -> Str -> Str -> V3 ;    -- speak, with, about
    dirV3    : V -> Str -> V3 ;           -- give,_,to
    dirdirV3 : V -> V3 ;                  -- give,_,_
\end{verbatim}

\subsubsubsection{Other complement patterns}
Verbs and adjectives can take complements such as sentences,
questions, verb phrases, and adjectives.

\begin{verbatim}
    mkV0  : V -> V0 ;
    mkVS  : V -> VS ;
    mkV2S : V -> Str -> V2S ;
    mkVV  : V -> VV ;
    mkV2V : V -> Str -> Str -> V2V ;
    mkVA  : V -> VA ;
    mkV2A : V -> Str -> V2A ;
    mkVQ  : V -> VQ ;
    mkV2Q : V -> Str -> V2Q ;
  
    mkAS  : A -> AS ;
    mkA2S : A -> Str -> A2S ;
    mkAV  : A -> AV ;
    mkA2V : A -> Str -> A2V ;
\end{verbatim}

Notice: categories \texttt{V2S, V2V, V2A, V2Q} are in v 1.0 treated
just as synonyms of \texttt{V2}, and the second argument is given
as an adverb. Likewise \texttt{AS, A2S, AV, A2V} are just \texttt{A}.
\texttt{V0} is just \texttt{V}.

\begin{verbatim}
    V0, V2S, V2V, V2A, V2Q : Type ;
    AS, A2S, AV, A2V : Type ;
\end{verbatim}


\commOut{Produced by 
gfdoc - a rudimentary GF document generator.
(c) Aarne Ranta (\htmladdnormallink{aarne@cs.chalmers.se}{mailto:aarne@cs.chalmers.se}) 2002 under GNU GPL.}

==

\# -path=.:../abstract:../../prelude:../common


\subsubsection{English Lexical Paradigms}
Aarne Ranta 2003--2005

This is an API to the user of the resource grammar 
for adding lexical items. It gives functions for forming
expressions of open categories: nouns, adjectives, verbs.

Closed categories (determiners, pronouns, conjunctions) are
accessed through the resource syntax API, \texttt{Structural.gf}. 

The main difference with \texttt{MorphoEng.gf} is that the types
referred to are compiled resource grammar types. We have moreover
had the design principle of always having existing forms, rather
than stems, as string arguments of the paradigms.

The structure of functions for each word class \texttt{C} is the following:
first we give a handful of patterns that aim to cover all
regular cases. Then we give a worst-case function \texttt{mkC}, which serves as an
escape to construct the most irregular words of type \texttt{C}.
However, this function should only seldom be needed: we have a
separate module \texttt{IrregularEng}, which covers all irregularly inflected
words.

The following modules are presupposed:

\begin{verbatim}
  resource ParadigmsEng = open 
    (Predef=Predef), 
    Prelude, 
    MorphoEng,
    CatEng
    in {
\end{verbatim}

\subsubsubsection{Parameters}
To abstract over gender names, we define the following identifiers.

\begin{verbatim}
  oper
    Gender : Type ; 
  
    human     : Gender ;
    nonhuman  : Gender ;
    masculine : Gender ;
\end{verbatim}

To abstract over number names, we define the following.

\begin{verbatim}
    Number : Type ; 
  
    singular : Number ;
    plural   : Number ;
\end{verbatim}

To abstract over case names, we define the following.

\begin{verbatim}
    Case : Type ;
  
    nominative : Case ;
    genitive   : Case ;
\end{verbatim}

Prepositions are used in many-argument functions for rection.

\begin{verbatim}
    Preposition : Type ;
\end{verbatim}

\subsubsubsection{Nouns}
Worst case: give all four forms and the semantic gender.

\begin{verbatim}
    mkN  : (man,men,man's,men's : Str) -> N ;
\end{verbatim}

The regular function captures the variants for nouns ending with
\textit{s},\textit{sh},\textit{x},\textit{z} or \textit{y}: \textit{kiss - kisses}, \textit{flash - flashes}; 
\textit{fly - flies} (but \textit{toy - toys}),

\begin{verbatim}
    regN : Str -> N ;
\end{verbatim}

In practice the worst case is just: give singular and plural nominative.

\begin{verbatim}
    mk2N : (man,men : Str) -> N ;
\end{verbatim}

All nouns created by the previous functions are marked as
\texttt{nonhuman}. If you want a \texttt{human} noun, wrap it with the following
function:

\begin{verbatim}
    genderN : Gender -> N -> N ;
\end{verbatim}

\subsubsubsection{Compound nouns}
A compound noun ia an uninflected string attached to an inflected noun,
such as \textit{baby boom}, \textit{chief executive officer}.

\begin{verbatim}
    compoundN : Str -> N -> N ;
\end{verbatim}

\subsubsubsection{Relational nouns}
Relational nouns (\textit{daughter of x}) need a preposition. 

\begin{verbatim}
    mkN2 : N -> Preposition -> N2 ;
\end{verbatim}

The most common preposition is \textit{of}, and the following is a
shortcut for regular relational nouns with \textit{of}.

\begin{verbatim}
    regN2 : Str -> N2 ;
\end{verbatim}

Use the function \texttt{mkPreposition} or see the section on prepositions below to  
form other prepositions.

Three-place relational nouns (\textit{the connection from x to y}) need two prepositions.

\begin{verbatim}
    mkN3 : N -> Preposition -> Preposition -> N3 ;
\end{verbatim}

\subsubsubsection{Relational common noun phrases}
In some cases, you may want to make a complex \texttt{CN} into a
relational noun (e.g. \textit{the old town hall of}).

\begin{verbatim}
    cnN2 : CN -> Preposition -> N2 ;
    cnN3 : CN -> Preposition -> Preposition -> N3 ;
\end{verbatim}

\subsubsubsection{Proper names and noun phrases}
Proper names, with a regular genitive, are formed as follows

\begin{verbatim}
    regPN : Str -> Gender -> PN ;          -- John, John's
\end{verbatim}

Sometimes you can reuse a common noun as a proper name, e.g. \textit{Bank}.

\begin{verbatim}
    nounPN : N -> PN ;
\end{verbatim}

To form a noun phrase that can also be plural and have an irregular
genitive, you can use the worst-case function.

\begin{verbatim}
    mkNP : Str -> Str -> Number -> Gender -> NP ; 
\end{verbatim}

\subsubsubsection{Adjectives}
Non-comparison one-place adjectives need two forms: one for
the adjectival and one for the adverbial form (\textit{free - freely})

\begin{verbatim}
    mkA : (free,freely : Str) -> A ;
\end{verbatim}

For regular adjectives, the adverbial form is derived. This holds
even for cases with the variation \textit{happy - happily}.

\begin{verbatim}
    regA : Str -> A ;
\end{verbatim}

\subsubsubsection{Two-place adjectives}
Two-place adjectives need a preposition for their second argument.

\begin{verbatim}
    mkA2 : A -> Preposition -> A2 ;
\end{verbatim}

Comparison adjectives may two more forms. 

\begin{verbatim}
    ADeg : Type ;
  
    mkADeg : (good,better,best,well : Str) -> ADeg ;
\end{verbatim}

The regular pattern recognizes two common variations: 
\textit{-e} (\textit{rude} - \textit{ruder} - \textit{rudest}) and
\textit{-y} (\textit{happy - happier - happiest - happily})

\begin{verbatim}
    regADeg : Str -> ADeg ;      -- long, longer, longest
\end{verbatim}

However, the duplication of the final consonant is nor predicted,
but a separate pattern is used:

\begin{verbatim}
    duplADeg : Str -> ADeg ;      -- fat, fatter, fattest
\end{verbatim}

If comparison is formed by \textit{more, //most}, as in general for//
long adjective, the following pattern is used:

\begin{verbatim}
    compoundADeg : A -> ADeg ; -- -/more/most ridiculous
\end{verbatim}

From a given \texttt{ADeg}, it is possible to get back to \texttt{A}.

\begin{verbatim}
    adegA : ADeg -> A ;
\end{verbatim}

\subsubsubsection{Adverbs}
Adverbs are not inflected. Most lexical ones have position
after the verb. Some can be preverbal (e.g. \textit{always}).

\begin{verbatim}
    mkAdv : Str -> Adv ;
    mkAdV : Str -> AdV ;
\end{verbatim}

Adverbs modifying adjectives and sentences can also be formed.

\begin{verbatim}
    mkAdA : Str -> AdA ;
\end{verbatim}

\subsubsubsection{Prepositions}
A preposition as used for rection in the lexicon, as well as to
build \texttt{PP}s in the resource API, just requires a string.

\begin{verbatim}
    mkPreposition : Str -> Preposition ;
    mkPrep        : Str -> Prep ;
\end{verbatim}

(These two functions are synonyms.)

\subsubsubsection{Verbs}
Except for \textit{be}, the worst case needs five forms: the infinitive and
the third person singular present, the past indicative, and the
past and present participles.

\begin{verbatim}
    mkV : (go, goes, went, gone, going : Str) -> V ;
\end{verbatim}

The regular verb function recognizes the special cases where the last
character is \textit{y} (\textit{cry - cries} but \textit{buy - buys}) or \textit{s}, \textit{sh}, \textit{x}, \textit{z}
(\textit{fix - fixes}, etc).

\begin{verbatim}
    regV : Str -> V ;
\end{verbatim}

The following variant duplicates the last letter in the forms like
\textit{rip - ripped - ripping}.

\begin{verbatim}
    regDuplV : Str -> V ;
\end{verbatim}

There is an extensive list of irregular verbs in the module \texttt{IrregularEng}.
In practice, it is enough to give three forms, 
e.g. \textit{drink - drank - drunk}, with a variant indicating consonant
duplication in the present participle.

\begin{verbatim}
    irregV     : (drink, drank, drunk  : Str) -> V ;
    irregDuplV : (get,   got,   gotten : Str) -> V ;
\end{verbatim}

\subsubsubsection{Verbs with a particle.}
The particle, such as in \textit{switch on}, is given as a string.

\begin{verbatim}
    partV  : V -> Str -> V ;
\end{verbatim}

\subsubsubsection{Reflexive verbs}
By default, verbs are not reflexive; this function makes them that.

\begin{verbatim}
    reflV  : V -> V ;
\end{verbatim}

\subsubsubsection{Two-place verbs}
Two-place verbs need a preposition, except the special case with direct object.
(transitive verbs). Notice that a particle comes from the \texttt{V}.

\begin{verbatim}
    mkV2  : V -> Preposition -> V2 ;
  
    dirV2 : V -> V2 ;
\end{verbatim}

\subsubsubsection{Three-place verbs}
Three-place (ditransitive) verbs need two prepositions, of which
the first one or both can be absent.

\begin{verbatim}
    mkV3     : V -> Preposition -> Preposition -> V3 ; -- speak, with, about
    dirV3    : V -> Preposition -> V3 ;                -- give,_,to
    dirdirV3 : V -> V3 ;                               -- give,_,_
\end{verbatim}

\subsubsubsection{Other complement patterns}
Verbs and adjectives can take complements such as sentences,
questions, verb phrases, and adjectives.

\begin{verbatim}
    mkV0  : V -> V0 ;
    mkVS  : V -> VS ;
    mkV2S : V -> Str -> V2S ;
    mkVV  : V -> VV ;
    mkV2V : V -> Str -> Str -> V2V ;
    mkVA  : V -> VA ;
    mkV2A : V -> Str -> V2A ;
    mkVQ  : V -> VQ ;
    mkV2Q : V -> Str -> V2Q ;
  
    mkAS  : A -> AS ;
    mkA2S : A -> Str -> A2S ;
    mkAV  : A -> AV ;
    mkA2V : A -> Str -> A2V ;
\end{verbatim}

Notice: categories \texttt{V2S, V2V, V2A, V2Q} are in v 1.0 treated
just as synonyms of \texttt{V2}, and the second argument is given
as an adverb. Likewise \texttt{AS, A2S, AV, A2V} are just \texttt{A}.
\texttt{V0} is just \texttt{V}.

\begin{verbatim}
    V0, V2S, V2V, V2A, V2Q : Type ;
    AS, A2S, AV, A2V : Type ;
\end{verbatim}


\commOut{Produced by 
gfdoc - a rudimentary GF document generator.
(c) Aarne Ranta (\htmladdnormallink{aarne@cs.chalmers.se}{mailto:aarne@cs.chalmers.se}) 2002 under GNU GPL.}

==

\# -path=.:../abstract:../common:../../prelude


\subsubsection{Finnish Lexical Paradigms}
Aarne Ranta 2003--2005

This is an API to the user of the resource grammar 
for adding lexical items. It gives functions for forming
expressions of open categories: nouns, adjectives, verbs.

Closed categories (determiners, pronouns, conjunctions) are
accessed through the resource syntax API, \texttt{Structural.gf}. 

The main difference with \texttt{MorphoFin.gf} is that the types
referred to are compiled resource grammar types. We have moreover
had the design principle of always having existing forms, rather
than stems, as string arguments of the paradigms.

The structure of functions for each word class \texttt{C} is the following:
first we give a handful of patterns that aim to cover all
regular cases. Then we give a worst-case function \texttt{mkC}, which serves as an
escape to construct the most irregular words of type \texttt{C}.
However, this function should only seldom be needed: we have a
separate module \texttt{IrregularFin}, which covers all irregularly inflected
words.

The following modules are presupposed:

\begin{verbatim}
  resource ParadigmsFin = open 
    (Predef=Predef), 
    Prelude, 
    MorphoFin,
    CatFin
    in {
\end{verbatim}

flags optimize=all ;

\begin{verbatim}
    flags optimize=noexpand ;
\end{verbatim}

\subsubsubsection{Parameters}
To abstract over gender, number, and (some) case names, 
we define the following identifiers. The application programmer
should always use these constants instead of their definitions
in \texttt{TypesInf}.

\begin{verbatim}
  oper
    Number   : Type ;
  
    singular : Number ;
    plural   : Number ;
  
    Case        : Type ;
    nominative  : Case ; 
    genitive    : Case ; 
    partitive   : Case ; 
    translative : Case ; 
    inessive    : Case ; 
    elative     : Case ; 
    illative    : Case ; 
    adessive    : Case ; 
    ablative    : Case ; 
    allative    : Case ;
\end{verbatim}

The following type is used for defining \textbf{rection}, i.e. complements
of many-place verbs and adjective. A complement can be defined by
just a case, or a pre/postposition and a case.

\begin{verbatim}
    prePrep     : Case -> Str -> Prep ;  -- ilman, partitive
    postPrep    : Case -> Str -> Prep ;  -- takana, genitive
    postGenPrep :         Str -> Prep ;  -- takana
    casePrep    : Case ->        Prep ;  -- adessive
\end{verbatim}

\subsubsubsection{Nouns}
The worst case gives ten forms and the semantic gender.
In practice just a couple of forms are needed, to define the different
stems, vowel alternation, and vowel harmony.

\begin{verbatim}
  oper
    mkN : (talo,   talon,   talona, taloa, taloon,
           taloina,taloissa,talojen,taloja,taloihin : Str) -> N ;
\end{verbatim}

The regular noun heuristic takes just one form (singular
nominative) and analyses it to pick the correct paradigm.
It does automatic grade alternation, and is hence not usable
for words like \textit{auto} (whose genitive would become \textit{audon}).

\begin{verbatim}
    regN : (talo : Str) -> N ;
\end{verbatim}

If \texttt{regN} does not give the correct result, one can try and give 
two or three forms as follows. Examples of the use of these
functions are given in \texttt{BasicFin}. Most notably, \texttt{reg2N} is used
for nouns like \textit{kivi - kiviä}, which would otherwise become like
\textit{rivi - rivejä}. \texttt{regN3} is used e.g. for 
\textit{sydän - sydämen - sydämiä}, which would otherwise become
\textit{sydän - sytämen}.

\begin{verbatim}
    reg2N : (savi,savia : Str) -> N ;
    reg3N : (vesi,veden,vesiä : Str) -> N ;
\end{verbatim}

Some nouns have an unexpected singular partitive, e.g. \textit{meri}, \textit{lumi}.

\begin{verbatim}
    sgpartN : (meri : N) -> (merta : Str) -> N ;
    nMeri   : (meri : Str) -> N ;
\end{verbatim}

The rest of the noun paradigms are mostly covered by the three
heuristics.

Nouns with partitive \textit{a///}ä// are a large group. 
To determine for grade and vowel alternation, three forms are usually needed:
singular nominative and genitive, and plural partitive.
Examples: \textit{talo}, \textit{kukko}, \textit{huippu}, \textit{koira}, \textit{kukka}, \textit{syylä}, \textit{särki}...

\begin{verbatim}
    nKukko : (kukko,kukon,kukkoja : Str) -> N ;
\end{verbatim}

A special case are nouns with no alternations: 
the vowel harmony is inferred from the last letter,
which must be one of \textit{o}, \textit{u}, \textit{ö}, \textit{y}.

\begin{verbatim}
    nTalo : (talo : Str) -> N ;
\end{verbatim}

Another special case are nouns where the last two consonants
undergo regular weak-grade alternation:
\textit{kukko - kukon}, \textit{rutto - ruton}, \textit{hyppy - hypyn}, \textit{sampo - sammon},
\textit{kunto - kunnon}, \textit{sisältö - sisällön}, .

\begin{verbatim}
    nLukko : (lukko : Str) -> N ;
\end{verbatim}

\textit{arpi - arven}, \textit{sappi - sapen}, \textit{kampi - kammen};\textit{sylki - syljen}

\begin{verbatim}
    nArpi  : (arpi : Str) -> N ;
    nSylki : (sylki : Str) -> N ;
\end{verbatim}

Foreign words ending in consonants are actually similar to words like
\textit{malli///}mallin\textit{/}malleja\textit{, with the exception that the //i} is not attached
to the singular nominative. Examples: \textit{linux}, \textit{savett}, \textit{screen}.
The singular partitive form is used to get the vowel harmony. (N.B. more than 
1-syllabic words ending in \textit{n} would have variant plural genitive and 
partitive forms, like \textit{sultanien///}sultaneiden//, which are not covered.)

\begin{verbatim}
    nLinux : (linuxia : Str) -> N ;
\end{verbatim}

Nouns of at least 3 syllables ending with \textit{a} or \textit{ä}, like \textit{peruna}, \textit{tavara},
\textit{rytinä}.

\begin{verbatim}
    nPeruna : (peruna : Str) -> N ;
\end{verbatim}

The following paradigm covers both nouns ending in an aspirated \textit{e}, such as
\textit{rae}, \textit{perhe}, \textit{savuke}, and also many ones ending in a consonant
(\textit{rengas}, \textit{kätkyt}). The singular nominative and essive are given.

\begin{verbatim}
    nRae : (rae, rakeena : Str) -> N ;
\end{verbatim}

The following covers nouns with partitive \textit{ta///}tä//, such as
\textit{susi}, \textit{vesi}, \textit{pieni}. To get all stems and the vowel harmony, it takes
the singular nominative, genitive, and essive.

\begin{verbatim}
    nSusi : (susi,suden,sutta : Str) -> N ;
\end{verbatim}

Nouns ending with a long vowel, such as \textit{puu}, \textit{pää}, \textit{pii}, \textit{leikkuu},
are inflected according to the following.

\begin{verbatim}
    nPuu : (puu : Str) -> N ;
\end{verbatim}

One-syllable diphthong nouns, such as \textit{suo}, \textit{tie}, \textit{työ}, are inflected by
the following.

\begin{verbatim}
    nSuo : (suo : Str) -> N ;
\end{verbatim}

Many adjectives but also nouns have the nominative ending \textit{nen} which in other
cases becomes \textit{s}: \textit{nainen}, \textit{ihminen}, \textit{keltainen}. 
To capture the vowel harmony, we use the partitive form as the argument.

\begin{verbatim}
    nNainen : (naista : Str) -> N ;
\end{verbatim}

The following covers some nouns ending with a consonant, e.g.
\textit{tilaus}, \textit{kaulin}, \textit{paimen}, \textit{laidun}.

\begin{verbatim}
    nTilaus : (tilaus,tilauksena : Str) -> N ;
\end{verbatim}

Special case:

\begin{verbatim}
    nKulaus : (kulaus : Str) -> N ;
\end{verbatim}

The following covers nouns like \textit{nauris} and adjectives like \textit{kallis}, \textit{tyyris}.
The partitive form is taken to get the vowel harmony.

\begin{verbatim}
    nNauris : (naurista : Str) -> N ;
\end{verbatim}

Separately-written compound nouns, like \textit{sambal oelek}, \textit{Urho Kekkonen},
have only their last part inflected.

\begin{verbatim}
    compN : Str -> N -> N ;
\end{verbatim}

Nouns used as functions need a case, of which by far the commonest is
the genitive.

\begin{verbatim}
    mkN2  : N -> Prep -> N2 ;
    genN2 : N -> N2 ;
  
    mkN3  : N -> Prep -> Prep -> N3 ;
\end{verbatim}

Proper names can be formed by using declensions for nouns.
The plural forms are filtered away by the compiler.

\begin{verbatim}
    mkPN  : N -> PN ;
    mkNP  : N -> Number -> NP ; 
\end{verbatim}

\subsubsubsection{Adjectives}
Non-comparison one-place adjectives are just like nouns.

\begin{verbatim}
    mkA : N -> A ;
\end{verbatim}

Two-place adjectives need a case for the second argument.

\begin{verbatim}
    mkA2 : A -> Prep -> A2 ;
\end{verbatim}

Comparison adjectives have three forms. The comparative and the superlative
are always inflected in the same way, so the nominative of them is actually
enough (except for the superlative \textit{paras} of \textit{hyvä}).

\begin{verbatim}
    mkADeg : (kiva : N) -> (kivempaa,kivinta : Str) -> A ;
\end{verbatim}

The regular adjectives are based on \texttt{regN} in the positive.

\begin{verbatim}
    regA : (punainen : Str) -> A ;
\end{verbatim}

\subsubsubsection{Verbs}
The grammar does not cover the potential mood and some nominal
forms. One way to see the coverage is to linearize a verb to
a table.
The worst case needs twelve forms, as shown in the following.

\begin{verbatim}
    mkV   : (tulla,tulee,tulen,tulevat,tulkaa,tullaan,
             tuli,tulin,tulisi,tullut,tultu,tullun : Str) -> V ;
\end{verbatim}

The following heuristics cover more and more verbs.

\begin{verbatim}
    regV  : (soutaa : Str) -> V ;
    reg2V : (soutaa,souti : Str) -> V ;
    reg3V : (soutaa,soudan,souti : Str) -> V ;
\end{verbatim}

The subject case of verbs is by default nominative. This dunction can change it.

\begin{verbatim}
    subjcaseV : V -> Case -> V ;
\end{verbatim}

The rest of the paradigms are special cases mostly covered by the heuristics.
A simple special case is the one with just one stem and without grade alternation.

\begin{verbatim}
    vValua : (valua : Str) -> V ;
\end{verbatim}

With two forms, the following function covers a variety of verbs, such as
\textit{ottaa}, \textit{käyttää}, \textit{löytää}, \textit{huoltaa}, \textit{hiihtää}, \textit{siirtää}.

\begin{verbatim}
    vKattaa : (kattaa, katan : Str) -> V ;
\end{verbatim}

When grade alternation is not present, just a one-form special case is needed
(\textit{poistaa}, \textit{ryystää}).

\begin{verbatim}
    vOstaa : (ostaa : Str) -> V ;
\end{verbatim}

The following covers 
\textit{juosta}, \textit{piestä}, \textit{nousta}, \textit{rangaista}, \textit{kävellä}, \textit{surra}, \textit{panna}.

\begin{verbatim}
    vNousta : (nousta, nousen : Str) -> V ;
\end{verbatim}

This is for one-syllable diphthong verbs like \textit{juoda}, \textit{syödä}.

\begin{verbatim}
    vTuoda : (tuoda : Str) -> V ;
\end{verbatim}

All the patterns above have \texttt{nominative} as subject case.
If another case is wanted, use the following.

\begin{verbatim}
    caseV : Case -> V -> V ;
\end{verbatim}

The verbs \textit{be} is special.

\begin{verbatim}
    vOlla : V ;
\end{verbatim}

Two-place verbs need a case, and can have a pre- or postposition.

\begin{verbatim}
    mkV2 : V -> Prep -> V2 ;
\end{verbatim}

If the complement needs just a case, the following special function can be used.

\begin{verbatim}
    caseV2 : V -> Case -> V2 ;
\end{verbatim}

Verbs with a direct (accusative) object
are special, since their complement case is finally decided in syntax.
But this is taken care of by \texttt{ClauseFin}.

\begin{verbatim}
    dirV2 : V -> V2 ;
\end{verbatim}

\subsubsubsection{Three-place verbs}
Three-place (ditransitive) verbs need two prepositions, of which
the first one or both can be absent.

\begin{verbatim}
    mkV3     : V -> Prep -> Prep -> V3 ;    -- speak, with, about
    dirV3    : V -> Case -> V3 ;            -- give,_,to
    dirdirV3 : V         -> V3 ;            -- acc, allat
\end{verbatim}

\subsubsubsection{Other complement patterns}
Verbs and adjectives can take complements such as sentences,
questions, verb phrases, and adjectives.

\begin{verbatim}
    mkV0  : V -> V0 ;
    mkVS  : V -> VS ;
    mkV2S : V -> Prep -> V2S ;
    mkVV  : V -> VV ;
    mkV2V : V -> Prep -> V2V ;
    mkVA  : V -> Prep -> VA ;
    mkV2A : V -> Prep -> Prep -> V2A ;
    mkVQ  : V -> VQ ;
    mkV2Q : V -> Prep -> V2Q ;
  
    mkAS  : A -> AS ;
    mkA2S : A -> Prep -> A2S ;
    mkAV  : A -> AV ;
    mkA2V : A -> Prep -> A2V ;
\end{verbatim}

Notice: categories \texttt{V2S, V2V, V2Q} are in v 1.0 treated
just as synonyms of \texttt{V2}, and the second argument is given
as an adverb. Likewise \texttt{AS, A2S, AV, A2V} are just \texttt{A}.
\texttt{V0} is just \texttt{V}.

\begin{verbatim}
    V0, V2S, V2V, V2Q : Type ;
    AS, A2S, AV, A2V : Type ;
\end{verbatim}

The definitions should not bother the user of the API. So they are
hidden from the document.
Author: 
Last update: Tue Jun 13 11:43:19 2006

\commOut{Produced by 
gfdoc - a rudimentary GF document generator.
(c) Aarne Ranta (\htmladdnormallink{aarne@cs.chalmers.se}{mailto:aarne@cs.chalmers.se}) 2002 under GNU GPL.}

==

\# -path=.:../romance:../common:../abstract:../../prelude


\subsubsection{French Lexical Paradigms}
Aarne Ranta 2003

This is an API to the user of the resource grammar 
for adding lexical items. It gives functions for forming
expressions of open categories: nouns, adjectives, verbs.

Closed categories (determiners, pronouns, conjunctions) are
accessed through the resource syntax API, \texttt{Structural.gf}. 

The main difference with \texttt{MorphoFre.gf} is that the types
referred to are compiled resource grammar types. We have moreover
had the design principle of always having existing forms, rather
than stems, as string arguments of the paradigms.

The structure of functions for each word class \texttt{C} is the following:
first we give a handful of patterns that aim to cover all
regular cases. Then we give a worst-case function \texttt{mkC}, which serves as an
escape to construct the most irregular words of type \texttt{C}.
However, this function should only seldom be needed: we have a
separate module \texttt{IrregularEng}, which covers all irregularly inflected
words.

\begin{verbatim}
  resource ParadigmsFre = 
    open 
      (Predef=Predef), 
      Prelude, 
      CommonRomance, 
      ResFre, 
      MorphoFre, 
      CatFre in {
  
    flags optimize=all ;
\end{verbatim}

\subsubsubsection{Parameters}
To abstract over gender names, we define the following identifiers.

\begin{verbatim}
  oper
    Gender : Type ; 
  
    masculine : Gender ;
    feminine  : Gender ;
\end{verbatim}

To abstract over number names, we define the following.

\begin{verbatim}
    Number : Type ; 
  
    singular : Number ;
    plural   : Number ;
\end{verbatim}

Prepositions used in many-argument functions are either strings
(including the 'accusative' empty string) or strings that
amalgamate with the following word (the 'genitive' \textit{de} and the
'dative' \textit{à}).

\begin{verbatim}
    Preposition : Type ;
  
    accusative : Preposition ;
    genitive   : Preposition ;
    dative     : Preposition ;
  
    mkPreposition : Str -> Preposition ;
\end{verbatim}

\subsubsubsection{Nouns}
Worst case: give both two forms and the gender. 

\begin{verbatim}
    mkN  : (oeil,yeux : Str) -> Gender -> N ;
\end{verbatim}

The regular function takes the singular form,
and computes the plural and the gender by a heuristic. The plural 
heuristic currently
covers the cases \textit{pas-pas}, \textit{prix-prix}, \textit{nez-nez}, 
\textit{bijou-bijoux}, \textit{cheveu-cheveux}, \textit{plateau-plateaux}, \textit{cheval-chevaux}.
The gender heuristic is less reliable: it treats as feminine all
nouns ending with \textit{e} and \textit{ion}, all others as masculine.
If in doubt, use the \texttt{cc} command to test!

\begin{verbatim}
    regN : Str -> N ;
\end{verbatim}

Adding gender information widens the scope of the foregoing function.

\begin{verbatim}
    regGenN : Str -> Gender -> N ;
\end{verbatim}

\subsubsubsection{Compound nouns}
Some nouns are ones where the first part is inflected as a noun but
the second part is not inflected. e.g. \textit{numéro de téléphone}. 
They could be formed in syntax, but we give a shortcut here since
they are frequent in lexica.

\begin{verbatim}
    compN : N -> Str -> N ;
\end{verbatim}

\subsubsubsection{Relational nouns}
Relational nouns (\textit{fille de x}) need a case and a preposition. 

\begin{verbatim}
    mkN2 : N -> Preposition -> N2 ;
\end{verbatim}

The most common cases are the genitive \textit{de} and the dative \textit{à}, 
with the empty preposition.

\begin{verbatim}
    deN2 : N -> N2 ;
    aN2  : N -> N2 ;
\end{verbatim}

Three-place relational nouns (\textit{la connection de x à y}) need two prepositions.

\begin{verbatim}
    mkN3 : N -> Preposition -> Preposition -> N3 ;
\end{verbatim}

\subsubsubsection{Relational common noun phrases}
In some cases, you may want to make a complex \texttt{CN} into a
relational noun (e.g. \textit{the old town hall of}). However, \texttt{N2} and
\texttt{N3} are purely lexical categories. But you can use the \texttt{AdvCN}
and \texttt{PrepNP} constructions to build phrases like this.

\subsubsubsection{Proper names and noun phrases}
Proper names need a string and a gender.

\begin{verbatim}
    mkPN : Str -> Gender -> PN ;          -- Jean
\end{verbatim}

To form a noun phrase that can also be plural,
you can use the worst-case function.

\begin{verbatim}
    mkNP : Str -> Gender -> Number -> NP ; 
\end{verbatim}

\subsubsubsection{Adjectives}
Non-comparison one-place adjectives need four forms in the worst
case (masc and fem singular, masc plural, adverbial).

\begin{verbatim}
    mkA : (banal,banale,banaux,banalement : Str) -> A ;
\end{verbatim}

For regular adjectives, all other forms are derived from the
masculine singular. The heuristic takes into account certain
deviant endings: \textit{banal- -banaux}, \textit{chinois- -chinois}, 
\textit{heureux-heureuse-heureux}, \textit{italien-italienne}, \textit{jeune-jeune},
\textit{amer-amère}, \textit{carré- - -carrément}, \textit{joli- - -joliment}.

\begin{verbatim}
    regA : Str -> A ;
\end{verbatim}

These functions create postfix adjectives. To switch
them to prefix ones (i.e. ones placed before the noun in
modification, as in \textit{petite maison}), the following function is
provided.

\begin{verbatim}
    prefA : A -> A ;
\end{verbatim}

\subsubsubsection{Two-place adjectives}
Two-place adjectives need a preposition for their second argument.

\begin{verbatim}
    mkA2 : A -> Preposition -> A2 ;
\end{verbatim}

\subsubsubsection{Comparison adjectives}
Comparison adjectives are in the worst case put up from two
adjectives: the positive (\textit{bon}), and the comparative (\textit{meilleure}). 

\begin{verbatim}
    mkADeg : A -> A -> A ;
\end{verbatim}

If comparison is formed by \textit{plus}, as usual in French,
the following pattern is used:

\begin{verbatim}
    compADeg : A -> A ;
\end{verbatim}

For prefixed adjectives, the following function is
provided.

\begin{verbatim}
    prefA : A -> A ;
\end{verbatim}

\subsubsubsection{Adverbs}
Adverbs are not inflected. Most lexical ones have position
after the verb. 

\begin{verbatim}
    mkAdv : Str -> Adv ;
\end{verbatim}

Some appear next to the verb (e.g. \textit{toujours}).

\begin{verbatim}
    mkAdV : Str -> AdV ;
\end{verbatim}

Adverbs modifying adjectives and sentences can also be formed.

\begin{verbatim}
    mkAdA : Str -> AdA ;
\end{verbatim}

\subsubsubsection{Verbs}
Irregular verbs are given in the module \texttt{VerbsFre}. 
If a verb should be missing in that list, the module
\texttt{BeschFre} gives all the patterns of the \textit{Bescherelle} book.

Regular verbs are ones with the infinitive \textit{er} or \textit{ir}, the
latter with plural present indicative forms as \textit{finissons}.
The regular verb function is the first conjugation recognizes
these endings, as well as the variations among
\textit{aimer, céder, placer, peser, jeter, placer, manger, assiéger, payer}.

\begin{verbatim}
    regV : Str -> V ;
\end{verbatim}

Sometimes, however, it is not predictable which variant of the \textit{er}
conjugation is to be selected. Then it is better to use the function
that gives the third person singular present indicative and future 
((\textit{il}) \textit{jette}, \textit{jettera}) as second argument.

\begin{verbatim}
    reg3V : (jeter,jette,jettera : Str) -> V ;
\end{verbatim}

The function \texttt{regV} gives all verbs the compound auxiliary \textit{avoir}.
To change it to \textit{être}, use the following function. Reflexive implies \textit{être}.

\begin{verbatim}
    etreV : V -> V ;
    reflV : V -> V ;
\end{verbatim}

\subsubsubsection{Two-place verbs}
Two-place verbs need a preposition, except the special case with direct object.
(transitive verbs). Notice that a particle comes from the \texttt{V}.

\begin{verbatim}
    mkV2  : V -> Preposition -> V2 ;
  
    dirV2 : V -> V2 ;
\end{verbatim}

You can reuse a \texttt{V2} verb in \texttt{V}.

\begin{verbatim}
    v2V : V2 -> V ;
\end{verbatim}

\subsubsubsection{Three-place verbs}
Three-place (ditransitive) verbs need two prepositions, of which
the first one or both can be absent.

\begin{verbatim}
    mkV3     : V -> Preposition -> Preposition -> V3 ; -- parler, à, de
    dirV3    : V -> Preposition -> V3 ;                -- donner,_,à
    dirdirV3 : V -> V3 ;                               -- donner,_,_
\end{verbatim}

\subsubsubsection{Other complement patterns}
Verbs and adjectives can take complements such as sentences,
questions, verb phrases, and adjectives.

\begin{verbatim}
    mkV0  : V -> V0 ;
    mkVS  : V -> VS ;
    mkV2S : V -> Preposition -> V2S ;
    mkVV  : V -> VV ;  -- plain infinitive: "je veux parler"
    deVV  : V -> VV ;  -- "j'essaie de parler"
    aVV   : V -> VV ;  -- "j'arrive à parler"
    mkV2V : V -> Preposition -> Preposition -> V2V ;
    mkVA  : V -> VA ;
    mkV2A : V -> Preposition -> Preposition -> V2A ;
    mkVQ  : V -> VQ ;
    mkV2Q : V -> Preposition -> V2Q ;
  
    mkAS  : A -> AS ;
    mkA2S : A -> Preposition -> A2S ;
    mkAV  : A -> Preposition -> AV ;
    mkA2V : A -> Preposition -> Preposition -> A2V ;
\end{verbatim}

Notice: categories \texttt{V2S, V2V, V2Q} are in v 1.0 treated
just as synonyms of \texttt{V2}, and the second argument is given
as an adverb. Likewise \texttt{AS, A2S, AV, A2V} are just \texttt{A}.
\texttt{V0} is just \texttt{V}.

\begin{verbatim}
    V0, V2S, V2V, V2Q : Type ;
    AS, A2S, AV, A2V : Type ;
\end{verbatim}

\commOut{Produced by 
gfdoc - a rudimentary GF document generator.
(c) Aarne Ranta (\htmladdnormallink{aarne@cs.chalmers.se}{mailto:aarne@cs.chalmers.se}) 2002 under GNU GPL.}

==

\# -path=.:../common:../abstract:../../prelude


\subsubsection{German Lexical Paradigms}
Aarne Ranta \& Harald Hammarström 2003--2006

This is an API to the user of the resource grammar 
for adding lexical items. It gives functions for forming
expressions of open categories: nouns, adjectives, verbs.

Closed categories (determiners, pronouns, conjunctions) are
accessed through the resource syntax API, \texttt{Structural.gf}. 

The main difference with \texttt{MorphoGer.gf} is that the types
referred to are compiled resource grammar types. We have moreover
had the design principle of always having existing forms, rather
than stems, as string arguments of the paradigms.

The structure of functions for each word class \texttt{C} is the following:
first we give a handful of patterns that aim to cover all
regular cases. Then we give a worst-case function \texttt{mkC}, which serves as an
escape to construct the most irregular words of type \texttt{C}.
However, this function should only seldom be needed: we have a
separate module \texttt{IrregularGer}, which covers all irregularly inflected
words.

\begin{verbatim}
  resource ParadigmsGer = open 
    (Predef=Predef), 
    Prelude, 
    MorphoGer,
    CatGer
    in {
\end{verbatim}

\subsubsubsection{Parameters}
To abstract over gender names, we define the following identifiers.

\begin{verbatim}
  oper
    Gender    : Type ; 
  
    masculine : Gender ;
    feminine  : Gender ;
    neuter    : Gender ;
\end{verbatim}

To abstract over case names, we define the following.

\begin{verbatim}
    Case       : Type ; 
  
    nominative : Case ;
    accusative : Case ;
    dative     : Case ;
    genitive   : Case ;
\end{verbatim}

To abstract over number names, we define the following.

\begin{verbatim}
    Number    : Type ; 
  
    singular  : Number ;
    plural    : Number ;
\end{verbatim}

\subsubsubsection{Nouns}
Worst case: give all four singular forms, two plural forms (others + dative),
and the gender.

\begin{verbatim}
    mkN : (x1,_,_,_,_,x6 : Str) -> Gender -> N ; 
                                   -- mann, mann, manne, mannes, männer, männern
\end{verbatim}

The regular heuristics recognizes some suffixes, from which it
guesses the gender and the declension: \textit{e, ung, ion} give the
feminine with plural ending \textit{-n, -en}, and the rest are masculines
with the plural \textit{-e} (without Umlaut).

\begin{verbatim}
    regN : Str -> N ;
\end{verbatim}

The 'almost regular' case is much like the information given in an ordinary
dictionary. It takes the singular and plural nominative and the
gender, and infers the other forms from these.

\begin{verbatim}
    reg2N : (x1,x2 : Str) -> Gender -> N ;
\end{verbatim}

Relational nouns need a preposition. The most common is \textit{von} with
the dative. Some prepositions are constructed in \htmladdnormallink{StructuralGer}{StructuralGer.html}.

\begin{verbatim}
    mkN2  : N -> Prep -> N2 ;
    vonN2 : N -> N2 ;
\end{verbatim}

Use the function \texttt{mkPrep} or see the section on prepositions below to  
form other prepositions.

Three-place relational nouns (\textit{die Verbindung von x nach y}) need two prepositions.

\begin{verbatim}
    mkN3 : N -> Prep -> Prep -> N3 ;
\end{verbatim}

\subsubsubsection{Proper names and noun phrases}
Proper names, with a regular genitive, are formed as follows
The regular genitive is  \textit{s}, omitted after \textit{s}.

\begin{verbatim}
    mkPN  : (karolus, karoli : Str) -> PN ; -- karolus, karoli
    regPN : (Johann : Str) -> PN ;          -- Johann, Johanns ; Johannes, Johannes
\end{verbatim}

\subsubsubsection{Adjectives}
Adjectives need three forms, one for each degree.

\begin{verbatim}
    mkA : (x1,_,x3 : Str) -> A ; -- gut,besser,beste 
\end{verbatim}

The regular adjective formation works for most cases, and includes
variations such as \textit{teuer - teurer}, \textit{böse - böser}.

\begin{verbatim}
    regA : Str -> A ;
\end{verbatim}

Invariable adjective are a special case. 

\begin{verbatim}
    invarA : Str -> A ;            -- prima
\end{verbatim}

Two-place adjectives are formed by adding a preposition to an adjective.

\begin{verbatim}
    mkA2 : A -> Prep -> A2 ;
\end{verbatim}

\subsubsubsection{Adverbs}
Adverbs are just strings.

\begin{verbatim}
    mkAdv : Str -> Adv ;
\end{verbatim}

\subsubsubsection{Prepositions}
A preposition is formed from a string and a case.

\begin{verbatim}
    mkPrep : Str -> Case -> Prep ;
\end{verbatim}

Often just a case with the empty string is enough.

\begin{verbatim}
    accPrep : Prep ;
    datPrep : Prep ;
    genPrep : Prep ;
\end{verbatim}

A couple of common prepositions (always with the dative).

\begin{verbatim}
    von_Prep : Prep ;
    zu_Prep  : Prep ;
\end{verbatim}

\subsubsubsection{Verbs}
The worst-case constructor needs six forms:

\begin{itemize}
\item Infinitive, 
\item 3p sg pres. indicative, 
\item 2p sg imperative, 
\item 1/3p sg imperfect indicative, 
\item 1/3p sg imperfect subjunctive (because this uncommon form can have umlaut)
\item the perfect participle 
\end{itemize}

\begin{verbatim}
    mkV : (x1,_,_,_,_,x6 : Str) -> V ;   -- geben, gibt, gib, gab, gäbe, gegeben
\end{verbatim}

Weak verbs are sometimes called regular verbs.

\begin{verbatim}
    regV : Str -> V ;                    -- führen
\end{verbatim}

Irregular verbs use Ablaut and, in the worst cases, also Umlaut.

\begin{verbatim}
    irregV : (x1,_,_,_,x5 : Str) -> V ; -- sehen, sieht, sah, sähe, gesehen
\end{verbatim}

To remove the past participle prefix \textit{ge}, e.g. for the verbs
prefixed by \textit{be-, ver-}.

\begin{verbatim}
    no_geV : V -> V ;
\end{verbatim}

To add a movable suffix e.g. \textit{auf(fassen)}.

\begin{verbatim}
    prefixV : Str -> V -> V ;
\end{verbatim}

To change the auxiliary from \textit{haben} (default) to \textit{sein} and
vice-versa.

\begin{verbatim}
    seinV  : V -> V ;
    habenV : V -> V ;
\end{verbatim}

Reflexive verbs can take reflexive pronouns of different cases.

\begin{verbatim}
    reflV  : V -> Case -> V ;
\end{verbatim}

\subsubsubsection{Two-place verbs}
Two-place verbs need a preposition, except the special case with direct object
(accusative, transitive verbs). There is also a case for dative objects.

\begin{verbatim}
    mkV2  : V -> Prep -> V2 ;
  
    dirV2 : V -> V2 ;
    datV2 : V -> V2 ;
\end{verbatim}

\subsubsubsection{Three-place verbs}
Three-place (ditransitive) verbs need two prepositions, of which
the first one or both can be absent.

\begin{verbatim}
    mkV3     : V -> Prep -> Prep -> V3 ;  -- speak, with, about
    dirV3    : V -> Prep -> V3 ;                -- give,_,to
    accdatV3 : V -> V3 ;                               -- give,_,_
\end{verbatim}

\subsubsubsection{Other complement patterns}
Verbs and adjectives can take complements such as sentences,
questions, verb phrases, and adjectives.

\begin{verbatim}
    mkV0  : V -> V0 ;
    mkVS  : V -> VS ;
    mkV2S : V -> Prep -> V2S ;
    mkVV  : V -> VV ;
    mkV2V : V -> Prep -> V2V ;
    mkVA  : V -> VA ;
    mkV2A : V -> Prep -> V2A ;
    mkVQ  : V -> VQ ;
    mkV2Q : V -> Prep -> V2Q ;
  
    mkAS  : A -> AS ;
    mkA2S : A -> Prep -> A2S ;
    mkAV  : A -> AV ;
    mkA2V : A -> Prep -> A2V ;
\end{verbatim}

Notice: categories \texttt{V2S, V2V, V2A, V2Q} are in v 1.0 treated
just as synonyms of \texttt{V2}, and the second argument is given
as an adverb. Likewise \texttt{AS, A2S, AV, A2V} are just \texttt{A}.
\texttt{V0} is just \texttt{V}.

\begin{verbatim}
    V0, V2S, V2V, V2A, V2Q : Type ;
    AS, A2S, AV, A2V : Type ;
\end{verbatim}

\commOut{Produced by 
gfdoc - a rudimentary GF document generator.
(c) Aarne Ranta (\htmladdnormallink{aarne@cs.chalmers.se}{mailto:aarne@cs.chalmers.se}) 2002 under GNU GPL.}

==

\# -path=.:../romance:../common:../abstract:../../prelude


\subsubsection{Italian Lexical Paradigms}
Aarne Ranta 2003

This is an API to the user of the resource grammar 
for adding lexical items. It gives functions for forming
expressions of open categories: nouns, adjectives, verbs.

Closed categories (determiners, pronouns, conjunctions) are
accessed through the resource syntax API, \texttt{Structural.gf}. 

The main difference with \texttt{MorphoIta.gf} is that the types
referred to are compiled resource grammar types. We have moreover
had the design principle of always having existing forms, rather
than stems, as string arguments of the paradigms.

The structure of functions for each word class \texttt{C} is the following:
first we give a handful of patterns that aim to cover all
regular cases. Then we give a worst-case function \texttt{mkC}, which serves as an
escape to construct the most irregular words of type \texttt{C}.
However, this function should only seldom be needed: we have a
separate module \texttt{IrregularEng}, which covers all irregularly inflected
words.

\begin{verbatim}
  resource ParadigmsIta = 
    open 
      (Predef=Predef), 
      Prelude, 
      CommonRomance, 
      ResIta, 
      MorphoIta, 
      BeschIta,
      CatIta in {
  
    flags optimize=all ;
\end{verbatim}

\subsubsubsection{Parameters}
To abstract over gender names, we define the following identifiers.

\begin{verbatim}
  oper
    Gender : Type ; 
  
    masculine : Gender ;
    feminine  : Gender ;
\end{verbatim}

To abstract over number names, we define the following.

\begin{verbatim}
    Number : Type ; 
  
    singular : Number ;
    plural   : Number ;
\end{verbatim}

Prepositions used in many-argument functions are either strings
(including the 'accusative' empty string) or strings that
amalgamate with the following word (the 'genitive' \textit{de} and the
'dative' \textit{à}).

\begin{verbatim}
    Preposition : Type ;
  
    accusative : Preposition ;
    genitive   : Preposition ;
    dative     : Preposition ;
  
    mkPreposition : Str -> Preposition ;
\end{verbatim}

\subsubsubsection{Nouns}
Worst case: give both two forms and the gender. 

\begin{verbatim}
    mkN  : (uomi,uomini : Str) -> Gender -> N ;
\end{verbatim}

The regular function takes the singular form and the gender,
and computes the plural and the gender by a heuristic. 
The heuristic says that the gender is feminine for nouns
ending with \textit{a}, and masculine for all other words.

\begin{verbatim}
    regN : Str -> N ;
\end{verbatim}

To force a different gender, use one of the following functions.

\begin{verbatim}
    mascN : N -> N ;
    femN  : N -> N ;
\end{verbatim}

\subsubsubsection{Compound nouns}
Some nouns are ones where the first part is inflected as a noun but
the second part is not inflected. e.g. \textit{numéro de téléphone}. 
They could be formed in syntax, but we give a shortcut here since
they are frequent in lexica.

\begin{verbatim}
    compN : N -> Str -> N ;
\end{verbatim}

\subsubsubsection{Relational nouns}
Relational nouns (\textit{figlio di x}) need a case and a preposition. 

\begin{verbatim}
    mkN2 : N -> Preposition -> N2 ;
\end{verbatim}

The most common cases are the genitive \textit{di} and the dative \textit{a}, 
with the empty preposition.

\begin{verbatim}
    diN2 : N -> N2 ;
    aN2  : N -> N2 ;
\end{verbatim}

Three-place relational nouns (\textit{la connessione di x a y}) need two prepositions.

\begin{verbatim}
    mkN3 : N -> Preposition -> Preposition -> N3 ;
\end{verbatim}

\subsubsubsection{Relational common noun phrases}
In some cases, you may want to make a complex \texttt{CN} into a
relational noun (e.g. \textit{the old town hall of}). However, \texttt{N2} and
\texttt{N3} are purely lexical categories. But you can use the \texttt{AdvCN}
and \texttt{PrepNP} constructions to build phrases like this.

\subsubsubsection{Proper names and noun phrases}
Proper names need a string and a gender.

\begin{verbatim}
    mkPN : Str -> Gender -> PN ;          -- Jean
\end{verbatim}

To form a noun phrase that can also be plural,
you can use the worst-case function.

\begin{verbatim}
    mkNP : Str -> Gender -> Number -> NP ; 
\end{verbatim}

\subsubsubsection{Adjectives}
Non-comparison one-place adjectives need five forms in the worst
case (masc and fem singular, masc plural, adverbial).

\begin{verbatim}
    mkA : (solo,sola,soli,sole, solamente : Str) -> A ;
\end{verbatim}

For regular adjectives, all other forms are derived from the
masculine singular. 

\begin{verbatim}
    regA : Str -> A ;
\end{verbatim}

These functions create postfix adjectives. To switch
them to prefix ones (i.e. ones placed before the noun in
modification, as in \textit{petite maison}), the following function is
provided.

\begin{verbatim}
    prefA : A -> A ;
\end{verbatim}

\subsubsubsection{Two-place adjectives}
Two-place adjectives need a preposition for their second argument.

\begin{verbatim}
    mkA2 : A -> Preposition -> A2 ;
\end{verbatim}

\subsubsubsection{Comparison adjectives}
Comparison adjectives are in the worst case put up from two
adjectives: the positive (\textit{buono}), and the comparative (\textit{migliore}). 

\begin{verbatim}
    mkADeg : A -> A -> A ;
\end{verbatim}

If comparison is formed by \textit{più}, as usual in Italian,
the following pattern is used:

\begin{verbatim}
    compADeg : A -> A ;
\end{verbatim}

The regular pattern is the same as \texttt{regA} for plain adjectives, 
with comparison by \textit{plus}.

\begin{verbatim}
    regADeg : Str -> A ;
\end{verbatim}

\subsubsubsection{Adverbs}
Adverbs are not inflected. Most lexical ones have position
after the verb. 

\begin{verbatim}
    mkAdv : Str -> Adv ;
\end{verbatim}

Some appear next to the verb (e.g. \textit{sempre}).

\begin{verbatim}
    mkAdV : Str -> AdV ;
\end{verbatim}

Adverbs modifying adjectives and sentences can also be formed.

\begin{verbatim}
    mkAdA : Str -> AdA ;
\end{verbatim}

\subsubsubsection{Verbs}
Regular verbs are ones with the infinitive \textit{er} or \textit{ir}, the
latter with plural present indicative forms as \textit{finissons}.
The regular verb function is the first conjugation recognizes
these endings, as well as the variations among
\textit{aimer, céder, placer, peser, jeter, placer, manger, assiéger, payer}.

\begin{verbatim}
    regV : Str -> V ;
\end{verbatim}

The module \texttt{BeschIta} gives all the patterns of the \textit{Bescherelle}
book. To use them in the category \texttt{V}, wrap them with the function

\begin{verbatim}
    verboV : Verbo -> V ;
\end{verbatim}

The function \texttt{regV} gives all verbs the compound auxiliary \textit{avere}.
To change it to \textit{essere}, use the following function.
Reflexive implies \textit{essere}.

\begin{verbatim}
    essereV : V -> V ;
    reflV : V -> V ;
\end{verbatim}

\subsubsubsection{Two-place verbs}
Two-place verbs need a preposition, except the special case with direct object.
(transitive verbs). Notice that a particle comes from the \texttt{V}.

\begin{verbatim}
    mkV2  : V -> Preposition -> V2 ;
  
    dirV2 : V -> V2 ;
\end{verbatim}

You can reuse a \texttt{V2} verb in \texttt{V}.

\begin{verbatim}
    v2V : V2 -> V ;
\end{verbatim}

\subsubsubsection{Three-place verbs}
Three-place (ditransitive) verbs need two prepositions, of which
the first one or both can be absent.

\begin{verbatim}
    mkV3     : V -> Preposition -> Preposition -> V3 ; -- parler, à, de
    dirV3    : V -> Preposition -> V3 ;                -- donner,_,à
    dirdirV3 : V -> V3 ;                               -- donner,_,_
\end{verbatim}

\subsubsubsection{Other complement patterns}
Verbs and adjectives can take complements such as sentences,
questions, verb phrases, and adjectives.

\begin{verbatim}
    mkV0  : V -> V0 ;
    mkVS  : V -> VS ;
    mkV2S : V -> Preposition -> V2S ;
    mkVV  : V -> VV ;  -- plain infinitive: "je veux parler"
    deVV  : V -> VV ;  -- "j'essaie de parler"
    aVV   : V -> VV ;  -- "j'arrive à parler"
    mkV2V : V -> Preposition -> Preposition -> V2V ;
    mkVA  : V -> VA ;
    mkV2A : V -> Preposition -> Preposition -> V2A ;
    mkVQ  : V -> VQ ;
    mkV2Q : V -> Preposition -> V2Q ;
  
    mkAS  : A -> AS ;
    mkA2S : A -> Preposition -> A2S ;
    mkAV  : A -> Preposition -> AV ;
    mkA2V : A -> Preposition -> Preposition -> A2V ;
\end{verbatim}

Notice: categories \texttt{V2S, V2V, V2Q} are in v 1.0 treated
just as synonyms of \texttt{V2}, and the second argument is given
as an adverb. Likewise \texttt{AS, A2S, AV, A2V} are just \texttt{A}.
\texttt{V0} is just \texttt{V}.

\begin{verbatim}
    V0, V2S, V2V, V2Q : Type ;
    AS, A2S, AV, A2V : Type ;
\end{verbatim}

\subsubsubsection{The definitions of the paradigms}
The definitions should not bother the user of the API. So they are
hidden from the document.
Author: 
Last update: Tue Jun 13 11:43:19 2006

\commOut{Produced by 
gfdoc - a rudimentary GF document generator.
(c) Aarne Ranta (\htmladdnormallink{aarne@cs.chalmers.se}{mailto:aarne@cs.chalmers.se}) 2002 under GNU GPL.}

==

\# -path=.:../scandinavian:../common:../abstract:../../prelude


\subsubsection{Norwegian Lexical Paradigms}
Aarne Ranta 2003

This is an API to the user of the resource grammar 
for adding lexical items. It gives functions for forming
expressions of open categories: nouns, adjectives, verbs.

Closed categories (determiners, pronouns, conjunctions) are
accessed through the resource syntax API, \texttt{Structural.gf}. 

The main difference with \texttt{MorphoNor.gf} is that the types
referred to are compiled resource grammar types. We have moreover
had the design principle of always having existing forms, rather
than stems, as string arguments of the paradigms.

The structure of functions for each word class \texttt{C} is the following:
first we give a handful of patterns that aim to cover all
regular cases. Then we give a worst-case function \texttt{mkC}, which serves as an
escape to construct the most irregular words of type \texttt{C}.
However, this function should only seldom be needed: we have a
separate module \texttt{IrregularEng}, which covers all irregularly inflected
words.

\begin{verbatim}
  resource ParadigmsNor = 
    open 
      (Predef=Predef), 
      Prelude, 
      CommonScand, 
      ResNor, 
      MorphoNor, 
      CatNor in {
\end{verbatim}

\subsubsubsection{Parameters}
To abstract over gender names, we define the following identifiers.

\begin{verbatim}
  oper
    Gender : Type ; 
  
    masculine : Gender ;
    feminine  : Gender ;
    neutrum   : Gender ;
\end{verbatim}

To abstract over number names, we define the following.

\begin{verbatim}
    Number : Type ; 
  
    singular : Number ;
    plural   : Number ;
\end{verbatim}

To abstract over case names, we define the following.

\begin{verbatim}
    Case : Type ;
  
    nominative : Case ;
    genitive   : Case ;
\end{verbatim}

Prepositions used in many-argument functions are just strings.

\begin{verbatim}
    Preposition : Type = Str ;
\end{verbatim}

\subsubsubsection{Nouns}
Worst case: give all four forms. The gender is computed from the
last letter of the second form (if \textit{n}, then \texttt{utrum}, otherwise \texttt{neutrum}).

\begin{verbatim}
    mkN  : (dreng,drengen,drenger,drengene : Str) -> N ;
\end{verbatim}

The regular function takes the singular indefinite form
and computes the other forms and the gender by a heuristic.
The heuristic is that nouns ending \textit{e} are feminine like \textit{kvinne},
all others are masculine like \textit{bil}. 
If in doubt, use the \texttt{cc} command to test!

\begin{verbatim}
    regN : Str -> N ;
\end{verbatim}

Giving gender manually makes the heuristic more reliable.

\begin{verbatim}
    regGenN : Str -> Gender -> N ;
\end{verbatim}

This function takes the singular indefinite and definite forms; the
gender is computed from the definite form.

\begin{verbatim}
    mk2N : (bil,bilen : Str) -> N ;
\end{verbatim}

\subsubsubsection{Compound nouns}
All the functions above work quite as well to form compound nouns,
such as \textit{fotboll}. 

\subsubsubsection{Relational nouns}
Relational nouns (\textit{daughter of x}) need a preposition. 

\begin{verbatim}
    mkN2 : N -> Preposition -> N2 ;
\end{verbatim}

The most common preposition is \textit{av}, and the following is a
shortcut for regular, \texttt{nonhuman} relational nouns with \textit{av}.

\begin{verbatim}
    regN2 : Str -> Gender -> N2 ;
\end{verbatim}

Use the function \texttt{mkPreposition} or see the section on prepositions below to  
form other prepositions.

Three-place relational nouns (\textit{the connection from x to y}) need two prepositions.

\begin{verbatim}
    mkN3 : N -> Preposition -> Preposition -> N3 ;
\end{verbatim}

\subsubsubsection{Relational common noun phrases}
In some cases, you may want to make a complex \texttt{CN} into a
relational noun (e.g. \textit{the old town hall of}). However, \texttt{N2} and
\texttt{N3} are purely lexical categories. But you can use the \texttt{AdvCN}
and \texttt{PrepNP} constructions to build phrases like this.

\subsubsubsection{Proper names and noun phrases}
Proper names, with a regular genitive, are formed as follows

\begin{verbatim}
    regPN : Str -> Gender -> PN ;          -- John, John's
\end{verbatim}

Sometimes you can reuse a common noun as a proper name, e.g. \textit{Bank}.

\begin{verbatim}
    nounPN : N -> PN ;
\end{verbatim}

To form a noun phrase that can also be plural and have an irregular
genitive, you can use the worst-case function.

\begin{verbatim}
    mkNP : Str -> Str -> Number -> Gender -> NP ; 
\end{verbatim}

\subsubsubsection{Adjectives}
Non-comparison one-place adjectives need three forms: 

\begin{verbatim}
    mkA : (galen,galet,galne : Str) -> A ;
\end{verbatim}

For regular adjectives, the other forms are derived. 

\begin{verbatim}
    regA : Str -> A ;
\end{verbatim}

In most cases, two forms are enough.

\begin{verbatim}
    mk2A : (stor,stort : Str) -> A ;
\end{verbatim}

\subsubsubsection{Two-place adjectives}
Two-place adjectives need a preposition for their second argument.

\begin{verbatim}
    mkA2 : A -> Preposition -> A2 ;
\end{verbatim}

Comparison adjectives may need as many as five forms. 

\begin{verbatim}
    mkADeg : (stor,stort,store,storre,storst : Str) -> A ;
\end{verbatim}

The regular pattern works for many adjectives, e.g. those ending
with \textit{ig}.

\begin{verbatim}
    regADeg : Str -> A ;
\end{verbatim}

Just the comparison forms can be irregular.

\begin{verbatim}
    irregADeg : (tung,tyngre,tyngst : Str) -> A ;
\end{verbatim}

Sometimes just the positive forms are irregular.

\begin{verbatim}
    mk3ADeg : (galen,galet,galna : Str) -> A ;
    mk2ADeg : (bred,bredt        : Str) -> A ;
\end{verbatim}

If comparison is formed by \textit{mer, //mest}, as in general for//
long adjective, the following pattern is used:

\begin{verbatim}
    compoundA : A -> A ; -- -/mer/mest norsk
\end{verbatim}

\subsubsubsection{Adverbs}
Adverbs are not inflected. Most lexical ones have position
after the verb. Some can be preverbal (e.g. \textit{always}).

\begin{verbatim}
    mkAdv : Str -> Adv ;
    mkAdV : Str -> AdV ;
\end{verbatim}

Adverbs modifying adjectives and sentences can also be formed.

\begin{verbatim}
    mkAdA : Str -> AdA ;
\end{verbatim}

\subsubsubsection{Prepositions}
A preposition is just a string.

\begin{verbatim}
    mkPreposition : Str -> Preposition ;
\end{verbatim}

\subsubsubsection{Verbs}
The worst case needs six forms.

\begin{verbatim}
    mkV : (spise,spiser,spises,spiste,spist,spis : Str) -> V ;
\end{verbatim}

The 'regular verb' function is the first conjugation.

\begin{verbatim}
    regV : (snakke : Str) -> V ;
\end{verbatim}

The almost regular verb function needs the infinitive and the preteritum.

\begin{verbatim}
    mk2V : (leve,levde : Str) -> V ;
\end{verbatim}

There is an extensive list of irregular verbs in the module \texttt{IrregNor}.
In practice, it is enough to give three forms, as in school books.

\begin{verbatim}
    irregV : (drikke, drakk, drukket  : Str) -> V ;
\end{verbatim}

\subsubsubsection{Verbs with //være// as auxiliary}
By default, the auxiliary is \textit{have}. This function changes it to \textit{være}.

\begin{verbatim}
    vaereV : V -> V ;
\end{verbatim}

\subsubsubsection{Verbs with a particle.}
The particle, such as in \textit{switch on}, is given as a string.

\begin{verbatim}
    partV  : V -> Str -> V ;
\end{verbatim}

\subsubsubsection{Deponent verbs.}
Some words are used in passive forms only, e.g. \textit{hoppas}, some as
reflexive e.g. \textit{ångra sig}.

\begin{verbatim}
    depV  : V -> V ;
    reflV : V -> V ;
\end{verbatim}

\subsubsubsection{Two-place verbs}
Two-place verbs need a preposition, except the special case with direct object.
(transitive verbs). Notice that a particle comes from the \texttt{V}.

\begin{verbatim}
    mkV2  : V -> Preposition -> V2 ;
  
    dirV2 : V -> V2 ;
\end{verbatim}

\subsubsubsection{Three-place verbs}
Three-place (ditransitive) verbs need two prepositions, of which
the first one or both can be absent.

\begin{verbatim}
    mkV3     : V -> Str -> Str -> V3 ;    -- speak, with, about
    dirV3    : V -> Str -> V3 ;           -- give,_,to
    dirdirV3 : V -> V3 ;                  -- give,_,_
\end{verbatim}

\subsubsubsection{Other complement patterns}
Verbs and adjectives can take complements such as sentences,
questions, verb phrases, and adjectives.

\begin{verbatim}
    mkV0  : V -> V0 ;
    mkVS  : V -> VS ;
    mkV2S : V -> Str -> V2S ;
    mkVV  : V -> VV ;
    mkV2V : V -> Str -> Str -> V2V ;
    mkVA  : V -> VA ;
    mkV2A : V -> Str -> V2A ;
    mkVQ  : V -> VQ ;
    mkV2Q : V -> Str -> V2Q ;
  
    mkAS  : A -> AS ;
    mkA2S : A -> Str -> A2S ;
    mkAV  : A -> AV ;
    mkA2V : A -> Str -> A2V ;
\end{verbatim}

Notice: categories \texttt{V2S, V2V, V2A, V2Q} are in v 1.0 treated
just as synonyms of \texttt{V2}, and the second argument is given
as an adverb. Likewise \texttt{AS, A2S, AV, A2V} are just \texttt{A}.
\texttt{V0} is just \texttt{V}.

\begin{verbatim}
    V0, V2S, V2V, V2A, V2Q : Type ;
    AS, A2S, AV, A2V : Type ;
\end{verbatim}

\commOut{Produced by 
gfdoc - a rudimentary GF document generator.
(c) Aarne Ranta (\htmladdnormallink{aarne@cs.chalmers.se}{mailto:aarne@cs.chalmers.se}) 2002 under GNU GPL.}

==

\# -path=.:../abstract:../../prelude:../common


\subsubsection{Russian Lexical Paradigms}
Janna Khegai 2003--2005

This is an API to the user of the resource grammar 
for adding lexical items. It gives functions for forming
expressions of open categories: nouns, adjectives, verbs.

Closed categories (determiners, pronouns, conjunctions) are
accessed through the resource syntax API, \texttt{Structural.gf}. 

The main difference with \texttt{MorphoEng.gf} is that the types
referred to are compiled resource grammar types. We have moreover
had the design principle of always having existing forms, rather
than stems, as string arguments of the paradigms.

The structure of functions for each word class \texttt{C} is the following:
first we give a handful of patterns that aim to cover all
regular cases. Then we give a worst-case function \texttt{mkC}, which serves as an
escape to construct the most irregular words of type \texttt{C}.
However, this function should only seldom be needed: we have a
separate module \texttt{IrregularEng}, which covers all irregularly inflected
words.

The following modules are presupposed:

\begin{verbatim}
  resource ParadigmsRus = open 
    (Predef=Predef), 
    Prelude, 
    MorphoRus,
    CatRus,
    NounRus
    in {
  
  flags  coding=utf8 ;
\end{verbatim}

\subsubsubsection{Parameters}
To abstract over gender names, we define the following identifiers.

\begin{verbatim}
  oper
    Gender : Type ;
    masculine : Gender ;
    feminine  : Gender ;
    neuter    : Gender ;
\end{verbatim}

To abstract over case names, we define the following.

\begin{verbatim}
    Case : Type ;
  
    nominative    : Case ;
    genitive      : Case ;
    dative        : Case ;
    accusative    : Case ; 
    instructive   : Case ;
    prepositional : Case ;
\end{verbatim}

In some (written in English) textbooks accusative case 
is put on the second place. However, we follow the case order 
standard for Russian textbooks.
To abstract over number names, we define the following.

\begin{verbatim}
    Number : Type ;
  
    singular : Number ;
    plural   : Number ;
\end{verbatim}

\subsubsubsection{Nouns}
Best case: indeclinabe nouns: \textit{ÐºÐ¾ÑÐµ}, \textit{Ð¿Ð°Ð»ÑÑÐ¾}, \textit{ÐÐ£Ð}.

\begin{verbatim}
    Animacy: Type ; 
  
    animate: Animacy;
    inanimate: Animacy; 
  
     mkIndeclinableNoun: Str -> Gender -> Animacy -> N ; 
\end{verbatim}

Worst case - give six singular forms:
Nominative, Genetive, Dative, Accusative, Instructive and Prepositional;
corresponding six plural forms and the gender.
May be the number of forms needed can be reduced, 
but this requires a separate investigation.
Animacy parameter (determining whether the Accusative form is equal 
to the Nominative or the Genetive one) is actually of no help, 
since there are a lot of exceptions and the gain is just one form less.

\begin{verbatim}
    mkN  : (_,_,_,_,_,_,_,_,_,_,_,_ : Str) -> Gender -> Animacy -> N ; 
  
       -- Ð¼ÑÐ¶ÑÐ¸Ð½Ð°, Ð¼ÑÐ¶ÑÐ¸Ð½Ñ, Ð¼ÑÐ¶ÑÐ¸Ð½Ðµ, Ð¼ÑÐ¶ÑÐ¸Ð½Ñ, Ð¼ÑÐ¶ÑÐ¸Ð½Ð¾Ð¹, Ð¼ÑÐ¶ÑÐ¸Ð½Ðµ
       -- Ð¼ÑÐ¶ÑÐ¸Ð½Ñ, Ð¼ÑÐ¶ÑÐ¸Ð½, Ð¼ÑÐ¶ÑÐ¸Ð½Ð°Ð¼, Ð¼ÑÐ¶ÑÐ¸Ð½, Ð¼ÑÐ¶ÑÐ¸Ð½Ð°Ð¼Ð¸, Ð¼ÑÐ¶ÑÐ¸Ð½Ð°Ñ
\end{verbatim}

The regular function captures the variants for some popular nouns 
endings below:

\begin{verbatim}
    regN : Str -> N ;
\end{verbatim}

Here are some common patterns. The list is far from complete.
Feminine patterns.

\begin{verbatim}
    nMashina   : Str -> N ;    -- feminine, inanimate, ending with "-Ð°", Inst -"Ð¼Ð°ÑÐ¸Ð½-Ð¾Ð¹"
    nEdinica   : Str -> N ;    -- feminine, inanimate, ending with "-Ð°", Inst -"ÐµÐ´Ð¸Ð½Ð¸Ñ-ÐµÐ¹"
    nZhenchina : Str -> N ;    -- feminine, animate, ending with "-a"
    nNoga      : Str -> N ;    -- feminine, inanimate, ending with "Ð³_Ðº_Ñ-a"
    nMalyariya  : Str -> N ;    -- feminine, inanimate, ending with "-Ð¸Ñ"   
    nTetya     : Str -> N ;    -- feminine, animate, ending with "-Ñ"   
    nBol       : Str -> N ;    -- feminine, inanimate, ending with "-Ñ"(soft sign)     
\end{verbatim}

Neuter patterns. 

\begin{verbatim}
    nObezbolivauchee : Str -> N ;   -- neutral, inanimate, ending with "-ee" 
    nProizvedenie : Str -> N ;   -- neutral, inanimate, ending with "-e" 
    nChislo : Str -> N ;   -- neutral, inanimate, ending with "-o" 
    nZhivotnoe : Str -> N ;    -- masculine, inanimate, ending with "-ÐµÐ½Ñ"
\end{verbatim}

Masculine patterns. 
Ending with consonant: 

\begin{verbatim}
  nPepel : Str -> N ;    -- masculine, inanimate, ending with "-ÐµÐ»"- "Ð¿ÐµÐ¿-Ð»Ð°"
  
    nBrat: Str -> N ;   -- animate, Ð±ÑÐ°Ñ-ÑÑ
    nStul: Str -> N ;    -- same as above, but inanimate
    nMalush : Str -> N ; -- Ð¼Ð°Ð»ÑÑÐµÐ¹
    nPotolok : Str -> N ; -- Ð¿Ð¾ÑÐ¾Ð»-Ð¾Ðº - Ð¿Ð¾ÑÐ¾Ð»-ÐºÐ°
  
   -- the next four differ in plural nominative and/or accusative form(s) :
    nBank: Str -> N ;    -- Ð±Ð°Ð½Ðº-Ð¸ (Nom=Acc)
    nStomatolog : Str -> N ;  -- same as above, but animate
    nAdres     : Str -> N ;     -- Ð°Ð´ÑÐµÑ-Ð° (Nom=Acc)
    nTelefon   : Str -> N ;     -- ÑÐµÐ»ÐµÑÐ¾Ð½-Ñ (Nom=Acc)
  
    nNol       : Str -> N ;    -- masculine, inanimate, ending with "-Ñ" (soft sign)
    nUroven    : Str -> N ;    -- masculine, inanimate, ending with "-ÐµÐ½Ñ"
\end{verbatim}

Nouns used as functions need a preposition. The most common is with Genitive.

\begin{verbatim}
    mkFun  : N -> Prep -> N2 ;
    mkN2 : N -> N2 ;
    mkN3 : N -> Prep -> Prep -> N3 ;
\end{verbatim}

Proper names.

\begin{verbatim}
    mkPN  : Str -> Gender -> Animacy -> PN ;          -- "ÐÐ²Ð°Ð½", "ÐÐ°ÑÐ°"
    nounPN : N -> PN ;
\end{verbatim}

On the top level, it is maybe \texttt{CN} that is used rather than \texttt{N}, and
\texttt{NP} rather than \texttt{PN}.

\begin{verbatim}
    mkCN  : N -> CN ;
    mkNP  : Str -> Gender -> Animacy -> NP ;
\end{verbatim}

\subsubsubsection{Adjectives}
Non-comparison (only positive degree) one-place adjectives need 28 (4 by 7)
forms in the worst case:
Masculine  $|$ Feminine $|$ Neutral $|$ Plural
Nominative
Genitive
Dative
Accusative Inanimate
Accusative Animate
Instructive
Prepositional
Notice that 4 short forms, which exist for some adjectives are not included 
in the current description, otherwise there would be 32 forms for 
positive degree.
mkA : ( : Str) -$>$ A ;
The regular function captures the variants for some popular adjective
endings below:

\begin{verbatim}
     regA : Str -> Str -> A ;
\end{verbatim}

Invariable adjective is a special case.

\begin{verbatim}
     adjInvar : Str -> A ;          -- khaki, mini, hindi, netto
\end{verbatim}

Some regular patterns depending on the ending.

\begin{verbatim}
     AStaruyj : Str -> Str -> A ;             -- ending with "-ÑÐ¹"
     AMalenkij : Str -> Str -> A ;            -- ending with "-Ð¸Ð¹", Gen - "Ð¼Ð°Ð»ÐµÐ½ÑÐº-Ð¾Ð³Ð¾"
     AKhoroshij : Str -> Str -> A ;         --  ending with "-Ð¸Ð¹", Gen - "ÑÐ¾ÑÐ¾Ñ-ÐµÐ³Ð¾"
       AMolodoj : Str -> Str -> A ;             -- ending with "-Ð¾Ð¹", 
                                             -- plural - Ð¼Ð¾Ð»Ð¾Ð´-ÑÐµ"
     AKakoj_Nibud : Str -> Str -> Str -> A ;  -- ending with "-Ð¾Ð¹", 
                                             -- plural - "ÐºÐ°Ðº-Ð¸Ðµ"
\end{verbatim}

Two-place adjectives need a preposition and a case as extra arguments.

\begin{verbatim}
     mkA2 : A -> Str -> Case -> A2 ;  -- "Ð´ÐµÐ»Ð¸Ð¼ Ð½Ð°"
\end{verbatim}

Comparison adjectives need a positive adjective 
(28 forms without short forms). 
Taking only one comparative form (non-syntaxic) and 
only one superlative form (syntaxic) we can produce the
comparison adjective with only one extra argument -
non-syntaxic comparative form.
Syntaxic forms are based on the positive forms.
mkADeg : A -$>$ Str -$>$ ADeg ;
On top level, there are adjectival phrases. The most common case is
just to use a one-place adjective. 
ap : A  -$>$ IsPostfixAdj -$>$ AP ;

\subsubsubsection{Adverbs}
Adverbs are not inflected. Most lexical ones have position
after the verb. Some can be preverbal (e.g. \textit{always}).

\begin{verbatim}
    mkAdv : Str -> Adv ;
\end{verbatim}

\subsubsubsection{Verbs}
In our lexicon description (\textit{Verbum}) there are 62 forms: 
2 (Voice) by \{ 1 (infinitive) + [2(number) by 3 (person)](imperative) + 
[ [2(Number) by 3(Person)](present) + [2(Number) by 3(Person)](future) + 
4(GenNum)(past) ](indicative)+ 4 (GenNum) (subjunctive) \} 
Participles (Present and Past) and Gerund forms are not included, 
since they fuction more like Adjectives and Adverbs correspondingly
rather than verbs. Aspect regarded as an inherent parameter of a verb.
Notice, that some forms are never used for some verbs. Actually, 
the majority of verbs do not have many of the forms.

\begin{verbatim}
  Voice: Type; 
  Aspect: Type; 
\end{verbatim}

Tense : Type;  

\begin{verbatim}
  Bool: Type;
  Conjugation: Type ;
  
  first: Conjugation; -- "Ð³ÑÐ»Ñ-ÐÑÑ, Ð³ÑÐ»Ñ-ÐÐ¼"
  firstE: Conjugation; -- Verbs with vowel "Ñ": "Ð´Ð°ÑÑÑ" (give), "Ð¿ÑÑÑÑ" (drink)  
  second: Conjugation; -- "Ð²Ð¸Ð´-ÐÑÑ, Ð²Ð¸Ð´-ÐÐ¼"
  mixed: Conjugation; -- "ÑÐ¾Ñ-ÐÑÑ - ÑÐ¾Ñ-ÐÐ¼"
  dolzhen: Conjugation; -- irregular
  
  true: Bool;
  false: Bool;
  
  active: Voice ;
  passive: Voice ;
  imperfective: Aspect;
  perfective: Aspect ;  
\end{verbatim}

present : Tense ;
past : Tense ;
The worst case need 6 forms of the present tense in indicative mood
(\textit{Ñ Ð±ÐµÐ³Ñ}, \textit{ÑÑ Ð±ÐµÐ¶Ð¸ÑÑ}, \textit{Ð¾Ð½ Ð±ÐµÐ¶Ð¸Ñ}, \textit{Ð¼Ñ Ð±ÐµÐ¶Ð¸Ð¼}, \textit{Ð²Ñ Ð±ÐµÐ¶Ð¸ÑÐµ}, \textit{Ð¾Ð½Ð¸ Ð±ÐµÐ³ÑÑ}),
a past form (singular, masculine: \textit{Ñ Ð±ÐµÐ¶Ð°Ð»}), an imperative form 
(singular, second person: \textit{Ð±ÐµÐ³Ð¸}), an infinitive (\textit{Ð±ÐµÐ¶Ð°ÑÑ}).
Inherent aspect should also be specified.

\begin{verbatim}
     mkVerbum : Aspect -> (_,_,_,_,_,_,_,_,_ : Str) -> V ;
\end{verbatim}

Common conjugation patterns are two conjugations: 
first - verbs ending with \textit{-Ð°ÑÑ/-ÑÑÑ} and second - \textit{-Ð¸ÑÑ/-ÐµÑÑ}.
Instead of 6 present forms of the worst case, we only need
a present stem and one ending (singular, first person):
\textit{Ñ Ð»ÑÐ±-Ð»Ñ}, \textit{Ñ Ð¶Ð´-Ñ}, etc. To determine where the border
between stem and ending lies it is sufficient to compare 
first person from with second person form:
\textit{Ñ Ð»ÑÐ±-Ð»Ñ}, \textit{ÑÑ Ð»ÑÐ±-Ð¸ÑÑ}. Stems shoud be the same.
So the definition for verb \textit{Ð»ÑÐ±Ð¸ÑÑ}  looks like:
regV Imperfective Second \textit{Ð»ÑÐ±} \textit{Ð»Ñ} \textit{Ð»ÑÐ±Ð¸Ð»} \textit{Ð»ÑÐ±Ð¸} \textit{Ð»ÑÐ±Ð¸ÑÑ};

\begin{verbatim}
     regV :Aspect -> Conjugation -> (_,_,_,_,_ : Str) -> V ; 
\end{verbatim}

For writing an application grammar one usualy doesn't need
the whole inflection table, since each verb is used in 
a particular context that determines some of the parameters
(Tense and Voice while Aspect is fixed from the beginning) for certain usage. 
The \textit{V} type, that have these parameters fixed. 
We can extract the \textit{V} from the lexicon.
mkV: Verbum -$>$ Voice -$>$  V ;
mkPresentV: Verbum -$>$ Voice -$>$ V ;
Two-place verbs, and the special case with direct object. Notice that
a particle can be included in a \texttt{V}.

\begin{verbatim}
     mkV2     : V   -> Str -> Case -> V2 ;   -- "Ð²Ð¾Ð¹ÑÐ¸ Ð² Ð´Ð¾Ð¼"; "Ð²", accusative
     mkV3  : V -> Str -> Str -> Case -> Case -> V3 ; -- "ÑÐ»Ð¾Ð¶Ð¸ÑÑ Ð¿Ð¸ÑÑÐ¼Ð¾ Ð² ÐºÐ¾Ð½Ð²ÐµÑÑ"
     dirV2    : V -> V2 ;                    -- "Ð²Ð¸Ð´ÐµÑÑ", "Ð»ÑÐ±Ð¸ÑÑ"
     tvDirDir : V -> V3 ; 
\end{verbatim}

\commOut{Produced by 
gfdoc - a rudimentary GF document generator.
(c) Aarne Ranta (\htmladdnormallink{aarne@cs.chalmers.se}{mailto:aarne@cs.chalmers.se}) 2002 under GNU GPL.}

==

\# -path=.:../romance:../common:../abstract:../../prelude


\subsubsection{Spanish Lexical Paradigms}
Aarne Ranta 2003

This is an API to the user of the resource grammar 
for adding lexical items. It gives functions for forming
expressions of open categories: nouns, adjectives, verbs.

Closed categories (determiners, pronouns, conjunctions) are
accessed through the resource syntax API, \texttt{Structural.gf}. 

The main difference with \texttt{MorphoSpa.gf} is that the types
referred to are compiled resource grammar types. We have moreover
had the design principle of always having existing forms, rather
than stems, as string arguments of the paradigms.

The structure of functions for each word class \texttt{C} is the following:
first we give a handful of patterns that aim to cover all
regular cases. Then we give a worst-case function \texttt{mkC}, which serves as an
escape to construct the most irregular words of type \texttt{C}.

\begin{verbatim}
  resource ParadigmsSpa = 
    open 
      (Predef=Predef), 
      Prelude, 
      CommonRomance, 
      ResSpa, 
      MorphoSpa, 
      BeschSpa,
      CatSpa in {
  
    flags optimize=all ;
\end{verbatim}

\subsubsubsection{Parameters}
To abstract over gender names, we define the following identifiers.

\begin{verbatim}
  oper
    Gender : Type ; 
  
    masculine : Gender ;
    feminine  : Gender ;
\end{verbatim}

To abstract over number names, we define the following.

\begin{verbatim}
    Number : Type ; 
  
    singular : Number ;
    plural   : Number ;
\end{verbatim}

Prepositions used in many-argument functions are either strings
(including the 'accusative' empty string) or strings that
amalgamate with the following word (the 'genitive' \textit{de} and the
'dative' \textit{à}).

\begin{verbatim}
    Preposition : Type ;
  
    accusative : Preposition ;
    genitive   : Preposition ;
    dative     : Preposition ;
  
    mkPreposition : Str -> Preposition ;
\end{verbatim}

\subsubsubsection{Nouns}
Worst case: two forms (singular + plural),
and the gender.

\begin{verbatim}
    mkN  : (_,_ : Str) -> Gender -> N ;   -- uomo, uomini, masculine
\end{verbatim}

The regular function takes the singular form and the gender,
and computes the plural and the gender by a heuristic. 
The heuristic says that the gender is feminine for nouns
ending with \textit{a} or \textit{z}, and masculine for all other words.
Nouns ending with \textit{a}, \textit{o}, \textit{e} have the plural with \textit{s},
those ending with \textit{z} have \textit{ces} in plural; all other nouns
have \textit{es} as plural ending. The accent is not dealt with.

\begin{verbatim}
    regN : Str -> N ;
\end{verbatim}

To force a different gender, use one of the following functions.

\begin{verbatim}
    mascN : N -> N ;
    femN  : N -> N ;
\end{verbatim}

\subsubsubsection{Compound nouns}
Some nouns are ones where the first part is inflected as a noun but
the second part is not inflected. e.g. \textit{numéro de téléphone}. 
They could be formed in syntax, but we give a shortcut here since
they are frequent in lexica.

\begin{verbatim}
    compN : N -> Str -> N ;
\end{verbatim}

\subsubsubsection{Relational nouns}
Relational nouns (\textit{fille de x}) need a case and a preposition. 

\begin{verbatim}
    mkN2 : N -> Preposition -> N2 ;
\end{verbatim}

The most common cases are the genitive \textit{de} and the dative \textit{a}, 
with the empty preposition.

\begin{verbatim}
    deN2 : N -> N2 ;
    aN2  : N -> N2 ;
\end{verbatim}

Three-place relational nouns (\textit{la connessione di x a y}) need two prepositions.

\begin{verbatim}
    mkN3 : N -> Preposition -> Preposition -> N3 ;
\end{verbatim}

\subsubsubsection{Relational common noun phrases}
In some cases, you may want to make a complex \texttt{CN} into a
relational noun (e.g. \textit{the old town hall of}). However, \texttt{N2} and
\texttt{N3} are purely lexical categories. But you can use the \texttt{AdvCN}
and \texttt{PrepNP} constructions to build phrases like this.

\subsubsubsection{Proper names and noun phrases}
Proper names need a string and a gender.

\begin{verbatim}
    mkPN : Str -> Gender -> PN ;          -- Jean
\end{verbatim}

To form a noun phrase that can also be plural,
you can use the worst-case function.

\begin{verbatim}
    mkNP : Str -> Gender -> Number -> NP ; 
\end{verbatim}

\subsubsubsection{Adjectives}
Non-comparison one-place adjectives need five forms in the worst
case (masc and fem singular, masc plural, adverbial).

\begin{verbatim}
    mkA : (solo,sola,soli,sole, solamente : Str) -> A ;
\end{verbatim}

For regular adjectives, all other forms are derived from the
masculine singular. The types of adjectives that are recognized are
\textit{alto}, \textit{fuerte}, \textit{util}.

\begin{verbatim}
    regA : Str -> A ;
\end{verbatim}

These functions create postfix adjectives. To switch
them to prefix ones (i.e. ones placed before the noun in
modification, as in \textit{petite maison}), the following function is
provided.

\begin{verbatim}
    prefA : A -> A ;
\end{verbatim}

\subsubsubsection{Two-place adjectives}
Two-place adjectives need a preposition for their second argument.

\begin{verbatim}
    mkA2 : A -> Preposition -> A2 ;
\end{verbatim}

\subsubsubsection{Comparison adjectives}
Comparison adjectives are in the worst case put up from two
adjectives: the positive (\textit{bueno}), and the comparative (\textit{mejor}). 

\begin{verbatim}
    mkADeg : A -> A -> A ;
\end{verbatim}

If comparison is formed by \textit{mas}, as usual in Spanish,
the following pattern is used:

\begin{verbatim}
    compADeg : A -> A ;
\end{verbatim}

The regular pattern is the same as \texttt{regA} for plain adjectives, 
with comparison by \textit{mas}.

\begin{verbatim}
    regADeg : Str -> A ;
\end{verbatim}

\subsubsubsection{Adverbs}
Adverbs are not inflected. Most lexical ones have position
after the verb. 

\begin{verbatim}
    mkAdv : Str -> Adv ;
\end{verbatim}

Some appear next to the verb (e.g. \textit{siempre}).

\begin{verbatim}
    mkAdV : Str -> AdV ;
\end{verbatim}

Adverbs modifying adjectives and sentences can also be formed.

\begin{verbatim}
    mkAdA : Str -> AdA ;
\end{verbatim}

\subsubsubsection{Verbs}
Regular verbs are ones inflected like \textit{cortar}, \textit{deber}, or \textit{vivir}.
The regular verb function is the first conjugation (\textit{ar}) recognizes
the variations corresponding to the patterns
\textit{actuar, cazar, guiar, pagar, sacar}. The module \texttt{BeschSpa} gives
the complete set of \textit{Bescherelle} conjugations.

\begin{verbatim}
    regV : Str -> V ;
\end{verbatim}

The module \texttt{BeschSpa} gives all the patterns of the \textit{Bescherelle}
book. To use them in the category \texttt{V}, wrap them with the function

\begin{verbatim}
    verboV : Verbum -> V ;
\end{verbatim}

To form reflexive verbs:

\begin{verbatim}
    reflV : V -> V ;
\end{verbatim}

Verbs with a deviant passive participle: just give the participle
in masculine singular form as second argument.

\begin{verbatim}
    special_ppV : V -> Str -> V ; 
\end{verbatim}

\subsubsubsection{Two-place verbs}
Two-place verbs need a preposition, except the special case with direct object.
(transitive verbs). Notice that a particle comes from the \texttt{V}.

\begin{verbatim}
    mkV2  : V -> Preposition -> V2 ;
  
    dirV2 : V -> V2 ;
\end{verbatim}

You can reuse a \texttt{V2} verb in \texttt{V}.

\begin{verbatim}
    v2V : V2 -> V ;
\end{verbatim}

\subsubsubsection{Three-place verbs}
Three-place (ditransitive) verbs need two prepositions, of which
the first one or both can be absent.

\begin{verbatim}
    mkV3     : V -> Preposition -> Preposition -> V3 ; -- parler, à, de
    dirV3    : V -> Preposition -> V3 ;                -- donner,_,à
    dirdirV3 : V -> V3 ;                               -- donner,_,_
\end{verbatim}

\subsubsubsection{Other complement patterns}
Verbs and adjectives can take complements such as sentences,
questions, verb phrases, and adjectives.

\begin{verbatim}
    mkV0  : V -> V0 ;
    mkVS  : V -> VS ;
    mkV2S : V -> Preposition -> V2S ;
    mkVV  : V -> VV ;  -- plain infinitive: "je veux parler"
    deVV  : V -> VV ;  -- "j'essaie de parler"
    aVV   : V -> VV ;  -- "j'arrive à parler"
    mkV2V : V -> Preposition -> Preposition -> V2V ;
    mkVA  : V -> VA ;
    mkV2A : V -> Preposition -> Preposition -> V2A ;
    mkVQ  : V -> VQ ;
    mkV2Q : V -> Preposition -> V2Q ;
  
    mkAS  : A -> AS ;
    mkA2S : A -> Preposition -> A2S ;
    mkAV  : A -> Preposition -> AV ;
    mkA2V : A -> Preposition -> Preposition -> A2V ;
\end{verbatim}

Notice: categories \texttt{V2S, V2V, V2Q} are in v 1.0 treated
just as synonyms of \texttt{V2}, and the second argument is given
as an adverb. Likewise \texttt{AS, A2S, AV, A2V} are just \texttt{A}.
\texttt{V0} is just \texttt{V}.

\begin{verbatim}
    V0, V2S, V2V, V2Q : Type ;
    AS, A2S, AV, A2V  : Type ;
\end{verbatim}

\commOut{Produced by 
gfdoc - a rudimentary GF document generator.
(c) Aarne Ranta (\htmladdnormallink{aarne@cs.chalmers.se}{mailto:aarne@cs.chalmers.se}) 2002 under GNU GPL.}

==

\# -path=.:../scandinavian:../common:../abstract:../../prelude


\subsubsection{Swedish Lexical Paradigms}
Aarne Ranta 2003

This is an API to the user of the resource grammar 
for adding lexical items. It gives functions for forming
expressions of open categories: nouns, adjectives, verbs.

Closed categories (determiners, pronouns, conjunctions) are
accessed through the resource syntax API, \texttt{Structural.gf}. 

The main difference with \texttt{MorphoSwe.gf} is that the types
referred to are compiled resource grammar types. We have moreover
had the design principle of always having existing forms, rather
than stems, as string arguments of the paradigms.

The structure of functions for each word class \texttt{C} is the following:
first we give a handful of patterns that aim to cover all
regular cases. Then we give a worst-case function \texttt{mkC}, which serves as an
escape to construct the most irregular words of type \texttt{C}.
However, this function should only seldom be needed: we have a
separate module \texttt{IrregularEng}, which covers all irregularly inflected
words.

\begin{verbatim}
  resource ParadigmsSwe = 
    open 
      (Predef=Predef), 
      Prelude, 
      CommonScand, 
      ResSwe, 
      MorphoSwe, 
      CatSwe in {
\end{verbatim}

\subsubsubsection{Parameters}
To abstract over gender names, we define the following identifiers.

\begin{verbatim}
  oper
    Gender : Type ; 
  
    utrum     : Gender ;
    neutrum   : Gender ;
\end{verbatim}

To abstract over number names, we define the following.

\begin{verbatim}
    Number : Type ; 
  
    singular : Number ;
    plural   : Number ;
\end{verbatim}

To abstract over case names, we define the following.

\begin{verbatim}
    Case : Type ;
  
    nominative : Case ;
    genitive   : Case ;
\end{verbatim}

Prepositions used in many-argument functions are just strings.

\begin{verbatim}
    Preposition : Type = Str ;
\end{verbatim}

\subsubsubsection{Nouns}
Worst case: give all four forms. The gender is computed from the
last letter of the second form (if \textit{n}, then \texttt{utrum}, otherwise \texttt{neutrum}).

\begin{verbatim}
    mkN  : (apa,apan,apor,aporna : Str) -> N ;
\end{verbatim}

The regular function takes the singular indefinite form and computes the other
forms and the gender by a heuristic. The heuristic is currently 
to treat all words ending with \textit{a} like \textit{flicka}, with \textit{e} like \textit{rike},
and otherwise like \textit{bil}.
If in doubt, use the \texttt{cc} command to test!

\begin{verbatim}
    regN : Str -> N ;
\end{verbatim}

Adding the gender manually greatly improves the correction of \texttt{regN}.

\begin{verbatim}
    regGenN : Str -> Gender -> N ;
\end{verbatim}

In practice the worst case is often just: give singular and plural indefinite.

\begin{verbatim}
    mk2N : (nyckel,nycklar : Str) -> N ;
\end{verbatim}

This heuristic takes just the plural definite form and infers the others.
It does not work if there are changes in the stem.

\begin{verbatim}
    mk1N : (bilarna : Str) -> N ;
\end{verbatim}

\subsubsubsection{Compound nouns}
All the functions above work quite as well to form compound nouns,
such as \textit{fotboll}. 

\subsubsubsection{Relational nouns}
Relational nouns (\textit{daughter of x}) need a preposition. 

\begin{verbatim}
    mkN2 : N -> Preposition -> N2 ;
\end{verbatim}

The most common preposition is \textit{av}, and the following is a
shortcut for regular, \texttt{nonhuman} relational nouns with \textit{av}.

\begin{verbatim}
    regN2 : Str -> Gender -> N2 ;
\end{verbatim}

Use the function \texttt{mkPreposition} or see the section on prepositions below to  
form other prepositions.

Three-place relational nouns (\textit{the connection from x to y}) need two prepositions.

\begin{verbatim}
    mkN3 : N -> Preposition -> Preposition -> N3 ;
\end{verbatim}

\subsubsubsection{Relational common noun phrases}
In some cases, you may want to make a complex \texttt{CN} into a
relational noun (e.g. \textit{the old town hall of}). However, \texttt{N2} and
\texttt{N3} are purely lexical categories. But you can use the \texttt{AdvCN}
and \texttt{PrepNP} constructions to build phrases like this.

\subsubsubsection{Proper names and noun phrases}
Proper names, with a regular genitive, are formed as follows

\begin{verbatim}
    regPN : Str -> Gender -> PN ;          -- John, John's
\end{verbatim}

Sometimes you can reuse a common noun as a proper name, e.g. \textit{Bank}.

\begin{verbatim}
    nounPN : N -> PN ;
\end{verbatim}

To form a noun phrase that can also be plural and have an irregular
genitive, you can use the worst-case function.

\begin{verbatim}
    mkNP : Str -> Str -> Number -> Gender -> NP ; 
\end{verbatim}

\subsubsubsection{Adjectives}
Adjectives may need as many as seven forms. 

\begin{verbatim}
    mkA : (liten, litet, lilla, sma, mindre, minst, minsta : Str) -> A ;
\end{verbatim}

The regular pattern works for many adjectives, e.g. those ending
with \textit{ig}.

\begin{verbatim}
    regA : Str -> A ;
\end{verbatim}

Just the comparison forms can be irregular.

\begin{verbatim}
    irregA : (tung,tyngre,tyngst : Str) -> A ;
\end{verbatim}

Sometimes just the positive forms are irregular.

\begin{verbatim}
    mk3A : (galen,galet,galna : Str) -> A ;
    mk2A : (bred,brett        : Str) -> A ;
\end{verbatim}

Comparison forms may be compound (\textit{mera svensk} - \textit{mest svensk}).

\begin{verbatim}
    compoundA : A -> A ;
\end{verbatim}

\subsubsubsection{Two-place adjectives}
Two-place adjectives need a preposition for their second argument.

\begin{verbatim}
    mkA2 : A -> Preposition -> A2 ;
\end{verbatim}

\subsubsubsection{Adverbs}
Adverbs are not inflected. Most lexical ones have position
after the verb. Some can be preverbal (e.g. \textit{always}).

\begin{verbatim}
    mkAdv : Str -> Adv ;
    mkAdV : Str -> AdV ;
\end{verbatim}

Adverbs modifying adjectives and sentences can also be formed.

\begin{verbatim}
    mkAdA : Str -> AdA ;
\end{verbatim}

\subsubsubsection{Prepositions}
A preposition is just a string.

\begin{verbatim}
    mkPreposition : Str -> Preposition ;
\end{verbatim}

\subsubsubsection{Verbs}
The worst case needs five forms.

\begin{verbatim}
    mkV : (supa,super,sup,söp,supit,supen : Str) -> V ;
\end{verbatim}

The 'regular verb' function is inspired by Lexin. It uses the
present tense indicative form. The value is the first conjugation if the
argument ends with \textit{ar} (\textit{tala} - \textit{talar} - \textit{talade} - \textit{talat}),
the second with \textit{er} (\textit{leka} - \textit{leker} - \textit{lekte} - \textit{lekt}, with the
variations like \textit{gräva}, \textit{vända}, \textit{tyda}, \textit{hyra}), and 
the third in other cases (\textit{bo} - \textit{bor} - \textit{bodde} - \textit{bott}).

\begin{verbatim}
    regV : (talar : Str) -> V ;
\end{verbatim}

The almost regular verb function needs the infinitive and the preteritum.
It is not really more powerful than the new implementation of
\texttt{regV} based on the indicative form.

\begin{verbatim}
    mk2V : (leka,lekte : Str) -> V ;
\end{verbatim}

There is an extensive list of irregular verbs in the module \texttt{IrregularSwe}.
In practice, it is enough to give three forms, as in school books.

\begin{verbatim}
    irregV : (dricka, drack, druckit : Str) -> V ;
\end{verbatim}

\subsubsubsection{Verbs with a particle.}
The particle, such as in \textit{passa på}, is given as a string.

\begin{verbatim}
    partV  : V -> Str -> V ;
\end{verbatim}

\subsubsubsection{Deponent verbs.}
Some words are used in passive forms only, e.g. \textit{hoppas}, some as
reflexive e.g. \textit{ångra sig}.

\begin{verbatim}
    depV  : V -> V ;
    reflV : V -> V ;
\end{verbatim}

\subsubsubsection{Two-place verbs}
Two-place verbs need a preposition, except the special case with direct object.
(transitive verbs). Notice that a particle comes from the \texttt{V}.

\begin{verbatim}
    mkV2  : V -> Preposition -> V2 ;
  
    dirV2 : V -> V2 ;
\end{verbatim}

\subsubsubsection{Three-place verbs}
Three-place (ditransitive) verbs need two prepositions, of which
the first one or both can be absent.

\begin{verbatim}
    mkV3     : V -> Preposition -> Preposition -> V3 ; -- tala med om
    dirV3    : V -> Preposition -> V3 ;                -- ge _ till
    dirdirV3 : V -> V3 ;                               -- ge _ _
\end{verbatim}

\subsubsubsection{Other complement patterns}
Verbs and adjectives can take complements such as sentences,
questions, verb phrases, and adjectives.

\begin{verbatim}
    mkV0  : V -> V0 ;
    mkVS  : V -> VS ;
    mkV2S : V -> Str -> V2S ;
    mkVV  : V -> VV ;
    mkV2V : V -> Str -> Str -> V2V ;
    mkVA  : V -> VA ;
    mkV2A : V -> Str -> V2A ;
    mkVQ  : V -> VQ ;
    mkV2Q : V -> Str -> V2Q ;
  
    mkAS  : A -> AS ;
    mkA2S : A -> Str -> A2S ;
    mkAV  : A -> AV ;
    mkA2V : A -> Str -> A2V ;
\end{verbatim}

Notice: categories \texttt{V2S, V2V, V2A, V2Q} are in v 1.0 treated
just as synonyms of \texttt{V2}, and the second argument is given
as an adverb. Likewise \texttt{AS, A2S, AV, A2V} are just \texttt{A}.
\texttt{V0} is just \texttt{V}.

\begin{verbatim}
    V0, V2S, V2V, V2A, V2Q : Type ;
    AS, A2S, AV, A2V : Type ;
\end{verbatim}

\end{document}
