summaryrefslogtreecommitdiff
path: root/doc/final-resource.tex
diff options
context:
space:
mode:
authoraarne <aarne@cs.chalmers.se>2006-06-13 10:07:16 +0000
committeraarne <aarne@cs.chalmers.se>2006-06-13 10:07:16 +0000
commit876c3389d25fec21e8b30022073731ad78889048 (patch)
tree8b7c59b98981419568f282e0046a3164b1e237bb /doc/final-resource.tex
parent1395c5e3590df5a0b03a579f5bc965591005df6d (diff)
complete resource document
Diffstat (limited to 'doc/final-resource.tex')
-rw-r--r--doc/final-resource.tex5233
1 files changed, 5233 insertions, 0 deletions
diff --git a/doc/final-resource.tex b/doc/final-resource.tex
new file mode 100644
index 000000000..d2dc2c44d
--- /dev/null
+++ b/doc/final-resource.tex
@@ -0,0 +1,5233 @@
+\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]{\textit{#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. 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 level of a typical application grammarian
+is skilled programmer, without knowledge linguistics, but with
+a good knowledge of the target languages. Such a combination of
+skilles is typical of a programmer who wants to localize a piece
+of software to a new language.
+
+To give an example, an application dealing with
+music players may have a semantical category \texttt{Kind}, examples
+of Kinds being Song and Artist. In German, for instance, 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
+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 the 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 is roughly,
+
+\begin{itemize}
+\item lexicon is language-specific
+\item syntax is language-independent
+\end{itemize}
+
+Thus, to render the above example in French instead of German, we need to
+pick a different linearization of Song,
+
+\begin{verbatim}
+ lin Song = regGenN "chanson" feminine
+\end{verbatim}
+But to linearize PropKind, we can use the very same rule as in German.
+The resource function 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 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 MusicLex has an abstract syntax, that extends
+the resource category system 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 Music grammars are obtained by instantiating the two interfaces
+of 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}
+To localize the system to a new language, all that is needed is two modules,
+one implementing MusicLex and the other instantiating 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 = CatFre ** 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 = CatFre ** 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 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
+MusicEng0. MusicEng inherits everything from MusicEng0 except 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.
+
+For the same reasons, resource grammars are not adequate for parsing.
+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 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 MusicI.
+
+\section{To find rules in the resource grammar library}
+\subsection{Inflection paradigms}
+Inflection paradigms are defined separately for each language L
+in the module ParadigmsL. To test them, the command cc (= 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 regN "Lied" for Song, because the result would be a
+Masculine noun with the plural form "Liede". The individual 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 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
+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 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 .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 Cat in 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 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 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 mathematical/Predication.
+Instead of the 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 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, Predication can be opened together with 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 Predication without Verb for parsing is a better idea,
+since parsing is also made more efficient without the VP category.
+
+The use of special-purpose APIs is to some extent to be seen as an alternative
+to grammar writing by parsing, and its importance may decrease as parsing
+with the resource grammars gets more efficient.
+
+\section{Overview of syntactic structures}
+\subsection{Texts. phrases, and utterances}
+The outermost linguistic structure is Text. Texts are composed
+from Phrases followed by punctuation marks - either of ".", "?" or
+"!" (with their proper variants in Spanish and Arabic). Here is an
+example of a Text.
+
+\begin{verbatim}
+ John walks. Why? He doesn't want to sleep!
+\end{verbatim}
+Phrases are mostly built from Utterances, 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 S, Sentence. A Sentence
+is formed from a Clause, 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
+NP (Noun Phrase) and VP (Verb Phrase). A Clause typically consists of just an
+NP and a VP. The internal structure of both NP and VP can be very complex,
+and these categories are mutually recursive: not only can a VP contain an NP,
+
+\begin{verbatim}
+ [VP loves [NP Mary]]
+\end{verbatim}
+but an NP can also contain a 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:
+
+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 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}
+
+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}
+
+Adjective: How to constuct APs. The main ways are
+
+\begin{itemize}
+\item positive forms of adjectives: old
+\item comparative forms with object of comparison: older than John
+\end{itemize}
+
+Adverb: How to construct Advs. 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: Text, Phrase
+\item Same level as sentence: Sentence, Question, Relative
+\item Parts of sentence: Adjective, Adverb, Noun, Verb
+\item Cross-cut: 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 Cat, which defines the type system common to the other modules.
+For instance, the types NP and VP are defined in Cat, and the module Verb only
+needs to know what is given in Cat, not what is given in 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 NP (as well as those of V2 and VP, all
+given in Cat). It is not necessary to know what
+ways there are to build NPs (given in Noun), since all these ways must
+conform to the linearization type defined in 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 Grammar collects all the category-specific modules into
+a complete grammar:
+
+\begin{verbatim}
+ abstract Grammar =
+ Adjective, Noun, Verb, ..., Structural, Idiom
+\end{verbatim}
+The module Structural is a lexicon of structural words (function words),
+such as determiners.
+The module 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 Lang combines Grammar with a Lexicon of ca. 350 content words:
+
+\begin{verbatim}
+ abstract Lang = Grammar, Lexicon
+\end{verbatim}
+Using Lang instead of Grammar as a library may give the advantage of prociding
+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
+Lexicon has.
+
+\subsection{Language-specific syntactic structures}
+The API collected in 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 ExtraEngAbs is a collection of syntactic structures specific to English,
+and DictEngAbs is an English dictionary (at the moment, it consists of 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 ExtraEngAbs
+are built from a language-independent module ExtraAbs by restricted inheritance:
+
+\begin{verbatim}
+ abstract ExtraEngAbs = Extra [f,g,...]
+\end{verbatim}
+Thus any category and function in Extra may be shared by a subset of all
+languages. One can see this set-up as a matrix, which tells what Extra structures
+are implemented in what languages. For the common API in 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}