diff --git a/lib/resource-0.6/english/MorphoEng.gf b/lib/resource-0.6/english/MorphoEng.gf
index 54dbdeb2a..3061b4e7e 100644
--- a/lib/resource-0.6/english/MorphoEng.gf
+++ b/lib/resource-0.6/english/MorphoEng.gf
@@ -33,6 +33,12 @@ oper
nounY : Str -> CommonNoun = \fl ->
mkNoun (fl + "y") (fl + "ies") (fl + "y's") (fl + "ies'") ;
+ nounGen : Str -> CommonNoun = \dog -> case last dog of {
+ "y" => nounY "dog" ;
+ "s" => nounS (init "dog") ;
+ _ => nounReg "dog"
+ } ;
+
--3 Proper names
--
-- Regular proper names are inflected with "'s" in the genitive.
@@ -174,6 +180,13 @@ oper
verbP3y : Str -> VerbP3 = \cr ->
mkVerbP3 (cr + "y") (cr + "ies") (cr + "ied") (cr + "ied") ;
+ verbGen : Str -> VerbP3 = \kill -> case last kill of {
+ "y" => verbP3y (init "kill") ;
+ "e" => verbP3y (init "kill") ;
+ "s" => verbP3s (init "kill") ;
+ _ => regVerbP3 "kill"
+ } ;
+
verbP3Have = mkVerbP3 "have" "has" "had" "had" ;
verbP3Do = mkVerbP3 "do" "does" "did" "done" ;
diff --git a/lib/resource-0.6/english/ParadigmsEng.gf b/lib/resource-0.6/english/ParadigmsEng.gf
index 6178b6023..7c0315a92 100644
--- a/lib/resource-0.6/english/ParadigmsEng.gf
+++ b/lib/resource-0.6/english/ParadigmsEng.gf
@@ -9,7 +9,7 @@
-- expressions of basic categories: nouns, adjectives, verbs.
--
-- Closed categories (determiners, pronouns, conjunctions) are
--- accessed through the resource syntax API, $resource.Abs.gf$.
+-- accessed through the resource syntax API, $Structural.gf$.
--
-- The main difference with $MorphoEng.gf$ is that the types
-- referred to are compiled resource grammar types. We have moreover
@@ -148,6 +148,12 @@ oper
tvPartReg : Str -> Str -> Str -> TV ; -- get, along, with
+-- Ditransitive verbs.
+
+ mkV3 : V -> Str -> Str -> V3 ; -- prata, med, om
+ v3Dir : V -> Str -> V3 ; -- ge,_,till
+ v3DirDir : V -> V3 ; -- ge,_,_
+
-- The definitions should not bother the user of the API. So they are
-- hidden from the document.
--.
@@ -239,4 +245,7 @@ oper
tvDir = \v -> mkTV v [] ;
tvGenDir = \s -> tvDir (vGen s) ;
+ mkV3 x y z = mkDitransVerb x y z ** {lock_V3 = <>} ;
+ v3Dir x y = mkV3 x [] y ;
+ v3DirDir x = v3Dir x [] ;
} ;
diff --git a/lib/resource-0.6/gf-resource.html b/lib/resource-0.6/gf-resource.html
new file mode 100644
index 000000000..cdf196771
--- /dev/null
+++ b/lib/resource-0.6/gf-resource.html
@@ -0,0 +1,594 @@
+
+
+
+
+
+
+
+The GF Resource Grammar Library
+
+
+Aarne Ranta
+2002-2004
+
+
+
+Version 0.6: source package.
+
+
+
+Current languages: English, Finnish, French, German, Italian, Russian, Swedish.
+
+
+
+
+News.
+
+13/4/2004 Version 0.6 written using the module system of GF 2. Also an
+extended coverage. The files are placed in separate subdirectories (one
+per language) and have different names than before, so that file names
+(without the extension .gf) are also legal module names.
+
+
+
+15/8/2003 Version 0.4 with Finnish added. Some updates of the Russian modules.
+
+
+
+25/6/2003 Release of GF 1.2 making it much more efficient to work with
+resource grammars. See
+highlights.
+Also source package version 0.3
+with some bug fixes.
+
+
+
+5/6/2003. Russian resource modules by
+Janna Khegai.
+Cyrillic strings in the files *.RusU.gf use UTF-8 encoding,
+which is automatically detected by the Java GUI to GF. However, in web
+browsers the encoding must be set manually.
+
+
+
+3/6/2003. New version of this document, with separate sections
+on application and resource grammarians' views and
+added documentation
+on the type system of each language X
+in resource.X.gf.
+
+
+
+23/5/2003. High-level lexicon access also in
+French,
+Italian,
+and
+Swedish.
+
+
+
+23/5/2003.
+Italian grammar based on generic Romance modules, shared with French.
+
+
+
+14/4/2003. High-level access to define a lexicon in
+English and German.
+
+
+
+
+Notice. You need GF Version 2.0beta or later
+to work with these resource grammars.
+It is available from the
+GF home page.
+
+
+
+
+
+
+
Introduction
+
+As programs in general can be divided into
+application programs and library programs,
+GF grammars can be divided into
+application grammars and
+resource grammars.
+An application grammar is typically built around
+a semantic model, which is formalized as the abstract
+syntax of the language. Concrete syntax defines
+a mapping from the abstract syntax into English or
+Swedish or some other language.
+A resource grammar is not based on semantics, but its
+purpose is to define the linguistic "surface" structures
+of some language. The availability of these structures makes it easier to
+write application grammars.
+
+
+
+Abstraction level
+
+Resource grammars
+raise the level of abstraction in concrete syntax.
+The author of an application grammar is freed from thinking
+about inflection, word order, etc, but can use structured
+tree-like objects in linearization rules. For instance, to
+express the linearization of the arithmetical predicate even
+in French, she no longer has to write
+
+ lin Even x = {s =
+ table {
+ m => x.s ++
+ table {Ind => "est" ; Subj => "soit"} ! m ++
+ table {Masc => "pair" ; Fem => "paire"} ! x.g
+ }
+ } ;
+
+but simply
+
+ lin Even = predA1 (adjReg "pair") ;
+
+The author of the French resource grammar will have defined the
+functions predAdj and adjReg in such a way that
+they can be used in all applications.
+
+
+
+Unity of language
+
+In addition to high abstraction level, reusability, and the division
+of labour, resource grammars have the virtue of making sense of the
+unity of a language such as English: while application grammars
+depend on applications, resource grammars depend on language.
+What is more, resource grammars for related languages can
+share much of their code: to what degree this can be done gives
+a measure of how related the languages are.
+Thus we find resource grammars to be an interesting linguistic
+project in its own right.
+
+
+Semantics
+
+We leave it open if we can also explain the semantics
+of resource grammar on the general level. The philosophy of GF,
+inherited from logical frameworks,
+is that semantics is only given to
+application grammars. (You can also compare them to Wittgenstein's
+"language games").
+This view gives us a lot of freedom in formulating resource grammars.
+When describing them, we sometimes say that such-and-such construction
+is likely to be ruled out by semantic reasons; what we mean is that
+this will actually happen in application grammars; we do not
+mean that GF has no semantic rules.
+An example of this is the free formation of question adverbials, e.g.
+From which city is every number even or odd?.
+The resource grammar makes it possible to form this question,
+but it can hardly be grammatical in any sensible application grammar.
+
+
+
+Programmer's view on resource grammars
+
+The resource grammar library a hierarchical structure. Its main layers are
+
+- The language-dependent core resources, to be described below.
+
- The language-independent core resource API,
+ Combinations.gf.
+ Structural.gf.
+
- The derived resource libraries, some of which are
+ language-dependent, some of which aren't. The most important
+ ones are the language-dependent lexical paradigm modules
+ ParadigmsX.gf.
+
+The core resources should not be needed by application grammarians: it should
+be enough to use the core resource API and the derived libraries. If
+this is not the case, the best solution is to extend the derived resource
+libraries or create new ones.
+
+
+
+Grammaticality guarantee via data abstraction
+
+An important principle is that
+
+- the core resource API and the derived resource libraries guarantee
+ that all type-correct uses of them preserve grammaticality.
+
+This principle is simultaneously a guidance for resource grammarians
+and an argument for the application grammarian to use these libraries.
+What we mean by "only using the libraries" is that
+
+- all lin and
+ lincat rules are built solely from library functions and
+ argument variables.
+
+Thus for instance no records, tables, selections or projections should appear
+in the rules. What we have achieved then is total data abstraction,
+and the grammaticality guarantee can be given.
+
+
+
+Since the resource grammars are work in progress, their coverage is not
+yet sufficient for complete data abstraction. In addition, there may of course
+be bugs in the resource grammars that destroy grammaticality. The GF group is
+grateful for bug reports, requests, and contributions!
+
+
+
+The most important exception to total data abstraction in practice is the
+incompleteness of resource lexica. Since it is impossible to have
+full coverage of all the words in a language, users often have to introduce
+their own lexical entries, and thereby use literal strings in their GF code.
+The safest and most convenient way of using this is via functions
+defined in ParadigmsX.gf files. Using these functions guarantees
+that the lexical entries created are type-correct. But nothing guards
+against misspelling a word, picking a wrong inflectional pattern, or
+a wrong inherent feature (such as gender).
+
+
+
+
The resource grammar documentation in gfdoc
+
+All documented GF grammars linked from this page
+have been written in GF and then translated to HTML
+using a light-weight documentation tool,
+gfdoc. The tool is available as a part of the GF
+source code package, in the Haskell file
+util/GFDoc.hs that can be run in the Hugs interpreter
+by the script util/gfdoc. The program also has the
+flag +latex, which produces output in Latex instead of
+HTML.
+
+
+
+The core resource API
+
+The API is divided into two modules, Combiantions and
+its extension Structural.
+
+
+
+The file Combinations.gf
+gives the core resource type signatures of phrasal categories and
+syntactic combination rules, together with some explanations
+and examples. The examples are so far only in English, but their
+equivalents are available in all of the languages for which the
+API has been implemented.
+
+
+
+The file Structurals.gf
+gives a list of structural words such as determiners, pronouns,
+prepositions, and conjunctions.
+
+
+
+The file Structural.gf cannot be imported directly, but
+via the generated files ResourceX.gf for each language X.
+In these files, the fun/lin and cat/lincat judgements have been
+translated into oper judgements.
+
+
+
+
The lexical paradigm modules
+
+The lexical paradigm modules define, for
+each lexical category, a worst-case macro for adding words
+of that category by giving a sufficient number of characteristic
+forms. In addition, the most common regular paradigms are
+included, where it is enough just to give one form to generate
+all the others.
+
+
+
+For example, the English paradigm module has the worst-case macro for nouns,
+
+ mkN : (man,men,man's,men's : Str) -> Gender -> N ;
+
+taking four forms and a gender (human or nonhuman,
+as is also explained in the module). Its application
+
+ mkN "mouse" "mice" "mouse's" "mice's" nonhuman
+
+defines all information that is needed for the noun mouse.
+There are also some regular patterns, for instance,
+
+ nReg : Str -> Gender -> N ; -- dog, dogs
+ nKiss : Str -> Gender -> N ; -- kiss, kisses
+
+examples of which are
+
+ nReg "car" nonhuman
+ nKiss "waitress" human
+
+
+
+
+Here are the documented versions of the paradigm modules:
+
+
+
+The derived resource libraries
+
+The core resource grammar is minimal in the sense that it defines the
+smallest syntactic combinations and has no redundancy. For applications, it
+is usually more convenient to use combinations of the minimal rules.
+Some such combinations are given in the predication library,
+which defines the simultaneous applications of one- and two-place
+verbs and adjectives to all their argument noun phrases. It also
+defines some other constructions useful for logical and mathematical
+applications.
+
+
+
+The API of the predication library is in the file
+Predication.gf.
+What is imported is one of the language-dependent files,
+X/PredicationX.gf for each language X.
+
+
+
+
The language-dependent type systems
+
+Sometimes it is useful for the application grammarian to know what the
+language-dependent linearizations types are for each category in the
+core resource. These types are defined in the files CombinationsX.gf:
+
+For the sake of uniformity, we have tried to use the same names
+of parameter types when applicable. For instance, the gender parameter
+is called Gender in every grammar, even though its values
+differ. The definitions of the parameter
+types are given in the files TypesX.gf.
+The application grammarian following the complete abstraction principle
+should not use the parameter constructors directly, but rather the
+names defined in ParadigmsX.gf.
+
+
+
+Linguist's view on resource grammars
+
+GF and other grammar formalisms
+
+Linguists in particular might be interested in resource
+grammars for their own sake, not as basis of applications.
+Since few linguists are so far familiar with GF, we refer to the
+GF Homepage
+and especially to the
+GF Tutorial.
+What comes here is a brief summary of the relation of GF to
+other record-based formalisms.
+
+
+
+The records of GF are much like feature structures in PATR or HPSG.
+The main differences are that
+
+- GF has a type system inherited from
+functional programming languages;
+
- GF records are primarily obtained as linearizations of trees, not
+as parses of strings.
+
+The latter difference explains why a GF record typically carries more
+information than a feature structure. For instance, the record describing
+the French noun cheval is
+
+ {s = table {Sg => "cheval" ; Pl => "chevaux"} ; g = Masc} ;
+
+showing the full inflection table of the (abstract) noun cheval.
+A PATR record
+for the French word cheval would be
+
+ {s = "cheval" ; n = Sg ; g = Masc} ;
+
+showing just the information that can be gathered from the (concrete)
+string cheval.
+There is a rather straightforward sense in which the PATR record is an
+instance of the GF record.
+
+
+
+When generating language from syntax trees (or from logical formulas via
+syntax trees), the record containing full inflection tables is an efficient
+(linear-time) method of producing the correct forms.
+This is important when text is generated in real time in
+an interactive system.
+
+
+
+
The structure of core resource grammars
+
+As explained above, the application grammarian's view on resource grammars
+is through API modules. They are collections of type signatures of functions.
+It is the task of linguists to define these functions.
+The definitions are in the end given
+in the core resource grammars.
+
+
+
+We have divided the core resource grammar for each language X
+into the following parts:
+
+- Type system: types.X.gf
+
- Morphology: morpho.X.gf
+
- Syntax: syntax.X.gf
+
+To get the most powerful resource grammar for each language, one can use
+these files directly.
+
+
+
+However, the languages we have studied have so much in common
+that we have gathered a considerable set of categories and rules
+in a multilingual resource grammar. Its parts are
+
+- Abstract syntax: Resource.gf
+
- Language-dependent concrete syntax: ResourceX.gf for
+ each language.
+
+The advantage of using this API in application grammars is that
+their concrete syntax looks the same for all languages
+up to non-structural words. Thus it is possible to produce concrete syntaxes
+for new languages without knowing almost anything about them.
+The abstract syntax serves as a common API to the core resource grammar.
+
+
+The code for the core resource grammars
+
+The following links go to the gfdoc-generated
+HTML files while showing the names of the GF files.
+
+- English:
+ types.Eng.gf,
+ morpho.Eng.gf,
+ syntax.Eng.gf.
+
- Finnish:
+ types.Fin.gf,
+ morpho.Fin.gf,
+ syntax.Fin.gf.
+
- Shared Romance:
+ types.Romance.gf,
+ syntax.Romance.gf,
+
- French:
+ types.Fra.gf,
+ morpho.Fra.gf,
+ syntax.Fra.gf.
+
- Italian:
+ types.Ita.gf,
+ morpho.Ita.gf,
+ syntax.Ita.gf.
+
- Russian:
+ types.RusU.gf,
+ morpho.RusU.gf,
+ syntax.RusU.gf.
+
- German:
+ types.Deu.gf,
+ morpho.Deu.gf,
+ syntax.Deu.gf.
+
- Swedish:
+ types.Swe.gf,
+ morpho.Swe.gf,
+ syntax.Swe.gf.
+
+
+
+Compiling and using the resource
+
+If you want to use the resource grammars,
+you should download and unpack the
+source package.
+At Chalmers, however, we keep the resource grammars in the
+GF CVS archive, in the directory Grammars/resource/,
+and you'd better take them that way. The package accessible through www
+is usually not quite up to date.
+
+
+
+To compile the resource into reusable operations, for all languages, type
+
+ make
+
+in the resource/ directory.
+This requires that you have a recent version of GF (>= 1.1).
+What you get is a set of files with names res.X.gf.
+The file res.Types.gf gives the type signatures
+of the operations. You need never consult any of these files,
+but mostly look into resource.Abs.gf for the type
+signatures of syntactic structures.
+
+
+
+Examples of using the resource grammars
+
+A test suite
+
+The grammars test.X.gf define a few expressions of each
+lexical category and make it possible to test linearization, parsing,
+random generation, and editing.
+
+
+A database query language
+
+The grammars database/(database | restaurant).X.gf
+make use of the resource. The restaurant.X.gf
+grammars are just one possible application building on the generic
+database.X.gf grammars.
+Look at the
+abstract database syntax
+and, as an example, the
+French concrete syntax.
+
+
+
+A dialogue system for the video recorder
+
+The grammars video/video.X.gf are meant to be a prototype
+for dialogu systems. Look at the
+abstract video grammar
+and, as an example, the
+English concrete syntax.
+
+
+
+Functional morphology
+
+Even though GF is a useful language for describing syntax and semantics, it
+is not the optimal choice for morphology.
+One reason is the absence of low-level
+programming, such as string matching. Another reason is efficiency.
+In connection with the resource grammar project, we have started another
+project, functional morphology, which uses Haskell to implement
+morphology. Haskell morphologies can then be used for generating
+GF morphologies, as exemplified by large parts of
+morpho.Swe.gf.
+
+
+
+Work is in progress to document functional morphology, but here is
+a beginning:
+
+- General library for defining morphologies:
+ General.hs.
+
- Swedish inflection engine: RulesSw.hs.
+
+(Notice that we have here used gfdoc on Haskell files.)
+
+
+
+To see that it is nevertheless possible to implement morphology in GF, look
+at the French morphology in
+morpho.Fra.gf.
+Its verb part is complete in the sense that it
+implements all the 88 inflection tables of the Bescherelle.
+
+
+
+
Further reading
+
+If you want to read an informal introduction to
+resource grammars, see these
+slides, written for a German computer science
+audience. Or these
+other slides, written for a Swedish
+linguistic audience.
+
+
+
+
+
diff --git a/lib/resource-0.6/shallow/Shallow.gf b/lib/resource-0.6/shallow/Shallow.gf
index 1055f0d61..630966fd4 100644
--- a/lib/resource-0.6/shallow/Shallow.gf
+++ b/lib/resource-0.6/shallow/Shallow.gf
@@ -18,9 +18,11 @@ abstract Shallow = {
Verb ;
TV ;
Adj ;
+ N ;
Noun ;
CN ;
NP ;
+ PN ;
Adv ;
Prep ;
@@ -48,7 +50,9 @@ abstract Shallow = {
PrepNP : Prep -> NP -> Adv ;
PrepNoun : CN -> Prep -> NP -> CN ;
CNNoun : Noun -> CN ;
+ NounN : N -> Noun ;
DefNP, IndefNP, EveryNP, AllNP : CN -> NP ;
+ UsePN : PN -> NP ;
PossessPrep : Prep ;
}
diff --git a/lib/resource-0.6/shallow/ShallowI.gf b/lib/resource-0.6/shallow/ShallowI.gf
index 494884f73..88ab312d6 100644
--- a/lib/resource-0.6/shallow/ShallowI.gf
+++ b/lib/resource-0.6/shallow/ShallowI.gf
@@ -9,9 +9,11 @@ incomplete concrete ShallowI of Shallow = open (Resource = Resource) in {
Verb = Resource.V ;
TV = Resource.TV ;
Adj = Resource.Adj1 ;
+ N = Resource.N ;
Noun = Resource.CN ;
CN = Resource.CN ;
NP = Resource.NP ;
+ PN = Resource.PN ;
Adv = Resource.AdV ;
Det = Resource.Det ;
Prep = Resource.Prep ;
@@ -62,12 +64,14 @@ incomplete concrete ShallowI of Shallow = open (Resource = Resource) in {
ModNoun a n = Resource.ModAdj (Resource.AdjP1 a) n ;
PrepNP = Resource.PrepNP ;
PrepNoun f p x = Resource.AdvCN f (Resource.PrepNP p x) ;
+ NounN = Resource.UseN ;
CNNoun n = n ;
AllNP = Resource.DetNP (Resource.AllNumDet Resource.NoNum) ;
EveryNP = Resource.DetNP Resource.EveryDet ;
DefNP = Resource.DefOneNP ;
IndefNP = Resource.IndefOneNP ;
+ UsePN = Resource.UsePN ;
PossessPrep = Resource.PossessPrep ;
}
diff --git a/lib/resource-0.6/shallow/english/LexAbs.gf b/lib/resource-0.6/shallow/english/LexAbs.gf
new file mode 100644
index 000000000..470d13e07
--- /dev/null
+++ b/lib/resource-0.6/shallow/english/LexAbs.gf
@@ -0,0 +1,244 @@
+abstract LexAbs = Shallow ** {
+fun journey1 : Verb ;
+fun judge1 : Verb ;
+fun Dinah1 : PN ;
+fun On1 : Adj ;
+fun Rachel1 : PN ;
+fun Rebekah1 : PN ;
+fun Laban1 : PN ;
+fun Leah1 : PN ;
+fun Lot1 : PN ;
+fun Lotan1 : PN ;
+fun Pharaoh1 : PN ;
+fun Hamor1 : PN ;
+fun right1 : Adj ;
+fun roll1 : Verb ;
+fun rule1 : Verb ;
+fun rain1 : Verb ;
+fun reign1 : Verb ;
+fun receive1 : Verb ;
+fun reward1 : Verb ;
+fun reach1 : Verb ;
+fun remember1 : Verb ;
+fun remove1 : Verb ;
+fun refrain1 : Verb ;
+fun rest1 : Verb ;
+fun restore1 : Verb ;
+fun return1 : Verb ;
+fun require1 : Verb ;
+fun Bless1 : Verb ;
+fun Benjamin1 : PN ;
+fun number1 : Verb ;
+fun name1 : Verb ;
+fun nourish1 : Verb ;
+fun guard1 : PN ;
+fun gather1 : Verb ;
+fun gracious1 : Adj ;
+fun great1 : Adj ;
+fun go1 : Adj ;
+fun good1 : Adj ;
+fun Manasseh1 : PN ;
+fun kill1 : Verb ;
+fun kiss1 : Verb ;
+fun king1 : N ;
+fun kind1 : Adj ;
+fun know1 : Adj ;
+fun lodge1 : Verb ;
+fun love1 : Verb ;
+fun lord1 : N ;
+fun look1 : Verb ;
+fun leap1 : Verb ;
+fun light1 : Verb ;
+fun light2 : Adj ;
+fun lift1 : Verb ;
+fun lion1 : PN ;
+fun live1 : Verb ;
+fun laugh1 : Verb ;
+fun lad1 : N ;
+fun lad2 : Verb ;
+fun lade1 : Verb ;
+fun Abimelech1 : PN ;
+fun Abram1 : PN ;
+fun Abraham1 : PN ;
+fun Ishmael1 : PN ;
+fun Isaac1 : PN ;
+fun Israel1 : PN ;
+fun God1 : PN ;
+fun vow1 : Verb ;
+fun very1 : Adj ;
+fun visit1 : Verb ;
+fun smell1 : Verb ;
+fun scatter1 : Verb ;
+fun stand1 : Adj ;
+fun stay1 : Verb ;
+fun sister1 : PN ;
+fun see1 : Verb ;
+fun seem1 : Verb ;
+fun seek1 : Adj ;
+fun secret1 : Adj ;
+fun separate1 : Verb ;
+fun serve1 : Verb ;
+fun servant1 : N ;
+fun spoil1 : Verb ;
+fun sojourn1 : Verb ;
+fun sow1 : Verb ;
+fun sore1 : Adj ;
+fun son1 : N ;
+fun sad1 : Adj ;
+fun sack1 : N ;
+fun save1 : Verb ;
+fun saw1 : Adj ;
+fun sure1 : Adj ;
+fun should1 : Adj ;
+fun she1 : Verb ;
+fun shew1 : Verb ;
+fun master1 : PN ;
+fun marry1 : Verb ;
+fun may1 : Adj ;
+fun man1 : PN ;
+fun mock1 : Verb ;
+fun mother1 : PN ;
+fun mourn1 : Verb ;
+fun men1 : PN ;
+fun mean1 : Adj ;
+fun multiply1 : Verb ;
+fun fill1 : Verb ;
+fun finish1 : Verb ;
+fun find1 : Adj ;
+fun follow1 : Verb ;
+fun form1 : Verb ;
+fun forty1 : PN ;
+fun fetch1 : Verb ;
+fun fear1 : Verb ;
+fun fear2 : Adj ;
+fun favour1 : Verb ;
+fun faint1 : Verb ;
+fun fail1 : Verb ;
+fun father1 : N ;
+fun She1 : Verb ;
+fun Shechem1 : PN ;
+fun Sarai1 : PN ;
+fun Sarah1 : PN ;
+fun Judah1 : PN ;
+fun Jacob1 : PN ;
+fun Joseph1 : PN ;
+fun dry1 : Verb ;
+fun dress1 : Verb ;
+fun dream1 : Verb ;
+fun deliver1 : Verb ;
+fun desire1 : Verb ;
+fun destroy1 : Verb ;
+fun depart1 : Verb ;
+fun devour1 : Verb ;
+fun do1 : Adj ;
+fun double1 : Verb ;
+fun day1 : N ;
+fun dwell1 : Verb ;
+fun discern1 : Verb ;
+fun distress1 : Verb ;
+fun displease1 : Verb ;
+fun divide1 : Verb ;
+fun die1 : Verb ;
+fun bad1 : Adj ;
+fun bless1 : Verb ;
+fun build1 : Verb ;
+fun bury1 : Verb ;
+fun brother1 : PN ;
+fun breath1 : Verb ;
+fun bow1 : Verb ;
+fun be1 : Verb ;
+fun bed1 : PN ;
+fun yield1 : Verb ;
+fun young1 : Adj ;
+fun your1 : PN ;
+fun obey1 : Verb ;
+fun open1 : Verb ;
+fun open2 : Adj ;
+fun on1 : Adj ;
+fun our1 : N ;
+fun offer1 : Verb ;
+fun turn1 : Verb ;
+fun tarry1 : Verb ;
+fun till1 : Adj ;
+fun twenty1 : PN ;
+fun travail1 : Verb ;
+fun touch1 : Verb ;
+fun ten1 : PN ;
+fun their1 : PN ;
+fun escape1 : Verb ;
+fun establish1 : Verb ;
+fun exceeding1 : Adj ;
+fun enter1 : Verb ;
+fun end1 : Verb ;
+fun eat1 : Adj ;
+fun empty1 : Verb ;
+fun embalm1 : Verb ;
+fun hard1 : Adj ;
+fun hast1 : Verb ;
+fun haste1 : Verb ;
+fun hang1 : Verb ;
+fun hate1 : Verb ;
+fun hire1 : Verb ;
+fun he1 : Verb ;
+fun hearken1 : Verb ;
+fun would1 : Adj ;
+fun worship1 : Verb ;
+fun woman1 : PN ;
+fun weary1 : Verb ;
+fun well1 : N ;
+fun went1 : Adj ;
+fun widow1 : PN ;
+fun wicked1 : Adj ;
+fun wife1 : PN ;
+fun wander1 : Verb ;
+fun water1 : Verb ;
+fun walk1 : Verb ;
+fun wash1 : Verb ;
+fun pitch1 : Verb ;
+fun prosper1 : Verb ;
+fun preserve1 : Verb ;
+fun present1 : Verb ;
+fun prevail1 : Verb ;
+fun pray1 : Verb ;
+fun plant1 : Verb ;
+fun place1 : Verb ;
+fun part1 : Verb ;
+fun pass1 : Verb ;
+fun pursue1 : Verb ;
+fun purchase1 : Verb ;
+fun appoint1 : Verb ;
+fun appear1 : Verb ;
+fun accept1 : Verb ;
+fun ask1 : Verb ;
+fun ass1 : N ;
+fun ass2 : PN ;
+fun another1 : PN ;
+fun answer1 : Verb ;
+fun curse1 : Verb ;
+fun circumcise1 : Verb ;
+fun cry1 : Verb ;
+fun cease1 : Verb ;
+fun certain1 : Adj ;
+fun change1 : Verb ;
+fun charge1 : Verb ;
+fun children1 : PN ;
+fun cause1 : Verb ;
+fun camel1 : N ;
+fun call1 : Verb ;
+fun carry1 : Verb ;
+fun consume1 : Verb ;
+fun conceive1 : Verb ;
+fun corrupt1 : Verb ;
+fun couch1 : Verb ;
+fun commune1 : Verb ;
+fun command1 : Verb ;
+fun comfort1 : Verb ;
+fun increase1 : Verb ;
+fun intreat1 : Verb ;
+fun interpret1 : Verb ;
+fun Nahor1 : PN ;
+fun Noah1 : PN ;
+fun Esau1 : PN ;
+fun Ephraim1 : PN ;
+fun Egyptian1 : N ;
+}
diff --git a/lib/resource-0.6/shallow/english/LexEng.gf b/lib/resource-0.6/shallow/english/LexEng.gf
new file mode 100644
index 000000000..ce841dc04
--- /dev/null
+++ b/lib/resource-0.6/shallow/english/LexEng.gf
@@ -0,0 +1,245 @@
+--# -path=.:..:../../../prelude:../../abstract:../../english
+concrete LexEng of LexAbs = ShallowEng ** open ParadigmsEng in {
+lin journey1 = vGen "journey" ;
+lin judge1 = vGen "judge" ;
+lin Dinah1 = pnReg "Dinah" ;
+lin On1 = mkAdj1 "On" ;
+lin Rachel1 = pnReg "Rachel" ;
+lin Rebekah1 = pnReg "Rebekah" ;
+lin Laban1 = pnReg "Laban" ;
+lin Leah1 = pnReg "Leah" ;
+lin Lot1 = pnReg "Lot" ;
+lin Lotan1 = pnReg "Lotan" ;
+lin Pharaoh1 = pnReg "Pharaoh" ;
+lin Hamor1 = pnReg "Hamor" ;
+lin right1 = mkAdj1 "right" ;
+lin roll1 = vGen "roll" ;
+lin rule1 = vGen "rule" ;
+lin rain1 = vGen "rain" ;
+lin reign1 = vGen "reign" ;
+lin receive1 = vGen "receive" ;
+lin reward1 = vGen "reward" ;
+lin reach1 = vGen "reach" ;
+lin remember1 = vGen "remember" ;
+lin remove1 = vGen "remove" ;
+lin refrain1 = vGen "refrain" ;
+lin rest1 = vGen "rest" ;
+lin restore1 = vGen "restore" ;
+lin return1 = vGen "return" ;
+lin require1 = vGen "require" ;
+lin Bless1 = vGen "Bless" ;
+lin Benjamin1 = pnReg "Benjamin" ;
+lin number1 = vGen "number" ;
+lin name1 = vGen "name" ;
+lin nourish1 = vGen "nourish" ;
+lin guard1 = pnReg "guard" ;
+lin gather1 = vGen "gather" ;
+lin gracious1 = mkAdj1 "gracious" ;
+lin great1 = mkAdj1 "great" ;
+lin go1 = mkAdj1 "go" ;
+lin good1 = mkAdj1 "good" ;
+lin Manasseh1 = pnReg "Manasseh" ;
+lin kill1 = vGen "kill" ;
+lin kiss1 = vGen "kiss" ;
+lin king1 = nNonhuman "king" ;
+lin kind1 = mkAdj1 "kind" ;
+lin know1 = mkAdj1 "know" ;
+lin lodge1 = vGen "lodge" ;
+lin love1 = vGen "love" ;
+lin lord1 = nNonhuman "lord" ;
+lin look1 = vGen "look" ;
+lin leap1 = vGen "leap" ;
+lin light1 = vGen "light" ;
+lin light2 = mkAdj1 "light" ;
+lin lift1 = vGen "lift" ;
+lin lion1 = pnReg "lion" ;
+lin live1 = vGen "live" ;
+lin laugh1 = vGen "laugh" ;
+lin lad1 = nNonhuman "lad" ;
+lin lad2 = vGen "lad" ;
+lin lade1 = vGen "lade" ;
+lin Abimelech1 = pnReg "Abimelech" ;
+lin Abram1 = pnReg "Abram" ;
+lin Abraham1 = pnReg "Abraham" ;
+lin Ishmael1 = pnReg "Ishmael" ;
+lin Isaac1 = pnReg "Isaac" ;
+lin Israel1 = pnReg "Israel" ;
+lin God1 = pnReg "God" ;
+lin vow1 = vGen "vow" ;
+lin very1 = mkAdj1 "very" ;
+lin visit1 = vGen "visit" ;
+lin smell1 = vGen "smell" ;
+lin scatter1 = vGen "scatter" ;
+lin stand1 = mkAdj1 "stand" ;
+lin stay1 = vGen "stay" ;
+lin sister1 = pnReg "sister" ;
+lin see1 = vGen "see" ;
+lin seem1 = vGen "seem" ;
+lin seek1 = mkAdj1 "seek" ;
+lin secret1 = mkAdj1 "secret" ;
+lin separate1 = vGen "separate" ;
+lin serve1 = vGen "serve" ;
+lin servant1 = nNonhuman "servant" ;
+lin spoil1 = vGen "spoil" ;
+lin sojourn1 = vGen "sojourn" ;
+lin sow1 = vGen "sow" ;
+lin sore1 = mkAdj1 "sore" ;
+lin son1 = nNonhuman "son" ;
+lin sad1 = mkAdj1 "sad" ;
+lin sack1 = nNonhuman "sack" ;
+lin save1 = vGen "save" ;
+lin saw1 = mkAdj1 "saw" ;
+lin sure1 = mkAdj1 "sure" ;
+lin should1 = mkAdj1 "should" ;
+lin she1 = vGen "she" ;
+lin shew1 = vGen "shew" ;
+lin master1 = pnReg "master" ;
+lin marry1 = vGen "marry" ;
+lin may1 = mkAdj1 "may" ;
+lin man1 = pnReg "man" ;
+lin mock1 = vGen "mock" ;
+lin mother1 = pnReg "mother" ;
+lin mourn1 = vGen "mourn" ;
+lin men1 = pnReg "men" ;
+lin mean1 = mkAdj1 "mean" ;
+lin multiply1 = vGen "multiply" ;
+lin fill1 = vGen "fill" ;
+lin finish1 = vGen "finish" ;
+lin find1 = mkAdj1 "find" ;
+lin follow1 = vGen "follow" ;
+lin form1 = vGen "form" ;
+lin forty1 = pnReg "forty" ;
+lin fetch1 = vGen "fetch" ;
+lin fear1 = vGen "fear" ;
+lin fear2 = mkAdj1 "fear" ;
+lin favour1 = vGen "favour" ;
+lin faint1 = vGen "faint" ;
+lin fail1 = vGen "fail" ;
+lin father1 = nNonhuman "father" ;
+lin She1 = vGen "She" ;
+lin Shechem1 = pnReg "Shechem" ;
+lin Sarai1 = pnReg "Sarai" ;
+lin Sarah1 = pnReg "Sarah" ;
+lin Judah1 = pnReg "Judah" ;
+lin Jacob1 = pnReg "Jacob" ;
+lin Joseph1 = pnReg "Joseph" ;
+lin dry1 = vGen "dry" ;
+lin dress1 = vGen "dress" ;
+lin dream1 = vGen "dream" ;
+lin deliver1 = vGen "deliver" ;
+lin desire1 = vGen "desire" ;
+lin destroy1 = vGen "destroy" ;
+lin depart1 = vGen "depart" ;
+lin devour1 = vGen "devour" ;
+lin do1 = mkAdj1 "do" ;
+lin double1 = vGen "double" ;
+lin day1 = nNonhuman "day" ;
+lin dwell1 = vGen "dwell" ;
+lin discern1 = vGen "discern" ;
+lin distress1 = vGen "distress" ;
+lin displease1 = vGen "displease" ;
+lin divide1 = vGen "divide" ;
+lin die1 = vGen "die" ;
+lin bad1 = mkAdj1 "bad" ;
+lin bless1 = vGen "bless" ;
+lin build1 = vGen "build" ;
+lin bury1 = vGen "bury" ;
+lin brother1 = pnReg "brother" ;
+lin breath1 = vGen "breath" ;
+lin bow1 = vGen "bow" ;
+lin be1 = vGen "be" ;
+lin bed1 = pnReg "bed" ;
+lin yield1 = vGen "yield" ;
+lin young1 = mkAdj1 "young" ;
+lin your1 = pnReg "your" ;
+lin obey1 = vGen "obey" ;
+lin open1 = vGen "open" ;
+lin open2 = mkAdj1 "open" ;
+lin on1 = mkAdj1 "on" ;
+lin our1 = nNonhuman "our" ;
+lin offer1 = vGen "offer" ;
+lin turn1 = vGen "turn" ;
+lin tarry1 = vGen "tarry" ;
+lin till1 = mkAdj1 "till" ;
+lin twenty1 = pnReg "twenty" ;
+lin travail1 = vGen "travail" ;
+lin touch1 = vGen "touch" ;
+lin ten1 = pnReg "ten" ;
+lin their1 = pnReg "their" ;
+lin escape1 = vGen "escape" ;
+lin establish1 = vGen "establish" ;
+lin exceeding1 = mkAdj1 "exceeding" ;
+lin enter1 = vGen "enter" ;
+lin end1 = vGen "end" ;
+lin eat1 = mkAdj1 "eat" ;
+lin empty1 = vGen "empty" ;
+lin embalm1 = vGen "embalm" ;
+lin hard1 = mkAdj1 "hard" ;
+lin hast1 = vGen "hast" ;
+lin haste1 = vGen "haste" ;
+lin hang1 = vGen "hang" ;
+lin hate1 = vGen "hate" ;
+lin hire1 = vGen "hire" ;
+lin he1 = vGen "he" ;
+lin hearken1 = vGen "hearken" ;
+lin would1 = mkAdj1 "would" ;
+lin worship1 = vGen "worship" ;
+lin woman1 = pnReg "woman" ;
+lin weary1 = vGen "weary" ;
+lin well1 = nNonhuman "well" ;
+lin went1 = mkAdj1 "went" ;
+lin widow1 = pnReg "widow" ;
+lin wicked1 = mkAdj1 "wicked" ;
+lin wife1 = pnReg "wife" ;
+lin wander1 = vGen "wander" ;
+lin water1 = vGen "water" ;
+lin walk1 = vGen "walk" ;
+lin wash1 = vGen "wash" ;
+lin pitch1 = vGen "pitch" ;
+lin prosper1 = vGen "prosper" ;
+lin preserve1 = vGen "preserve" ;
+lin present1 = vGen "present" ;
+lin prevail1 = vGen "prevail" ;
+lin pray1 = vGen "pray" ;
+lin plant1 = vGen "plant" ;
+lin place1 = vGen "place" ;
+lin part1 = vGen "part" ;
+lin pass1 = vGen "pass" ;
+lin pursue1 = vGen "pursue" ;
+lin purchase1 = vGen "purchase" ;
+lin appoint1 = vGen "appoint" ;
+lin appear1 = vGen "appear" ;
+lin accept1 = vGen "accept" ;
+lin ask1 = vGen "ask" ;
+lin ass1 = nNonhuman "ass" ;
+lin ass2 = pnReg "ass" ;
+lin another1 = pnReg "another" ;
+lin answer1 = vGen "answer" ;
+lin curse1 = vGen "curse" ;
+lin circumcise1 = vGen "circumcise" ;
+lin cry1 = vGen "cry" ;
+lin cease1 = vGen "cease" ;
+lin certain1 = mkAdj1 "certain" ;
+lin change1 = vGen "change" ;
+lin charge1 = vGen "charge" ;
+lin children1 = pnReg "children" ;
+lin cause1 = vGen "cause" ;
+lin camel1 = nNonhuman "camel" ;
+lin call1 = vGen "call" ;
+lin carry1 = vGen "carry" ;
+lin consume1 = vGen "consume" ;
+lin conceive1 = vGen "conceive" ;
+lin corrupt1 = vGen "corrupt" ;
+lin couch1 = vGen "couch" ;
+lin commune1 = vGen "commune" ;
+lin command1 = vGen "command" ;
+lin comfort1 = vGen "comfort" ;
+lin increase1 = vGen "increase" ;
+lin intreat1 = vGen "intreat" ;
+lin interpret1 = vGen "interpret" ;
+lin Nahor1 = pnReg "Nahor" ;
+lin Noah1 = pnReg "Noah" ;
+lin Esau1 = pnReg "Esau" ;
+lin Ephraim1 = pnReg "Ephraim" ;
+lin Egyptian1 = nNonhuman "Egyptian" ;
+}
diff --git a/lib/resource-0.6/shallow/english/english.para b/lib/resource-0.6/shallow/english/english.para
new file mode 100644
index 000000000..90c9cd514
--- /dev/null
+++ b/lib/resource-0.6/shallow/english/english.para
@@ -0,0 +1,21 @@
+N!nNonhuman: car cars |car's|cars'|
+N!nNonhuman: bab/y babies |baby's|babies'|
+N!nNonhuman: bos/s bosses |boss's|bosses'|
+PN!pnReg: john john's *johns
+Verb!vGen: walk walked
+Verb!vGen: ja/m jammed
+Verb!vGen: ra/p rapped
+Verb!vGen: shar/e shared
+Verb!vGen: sp/y spied
+Verb!vGen: kis/s kissed
+Adj!mkAdj1: slow |slowest|slowly|
+Adj!mkAdj1: bi/g |biggest|bigly|
+Adj!mkAdj1: happ/y |happiest|happily|
+--
+-- To do then:
+-- grep fun koe >LexAbs.gf
+-- grep lin koe >LexEng.gf
+-- And prefix these files with
+-- abstract LexAbs = Shallow ** {
+-- --# -path=.:..:../../../prelude:../../abstract:../../english
+-- concrete LexEng of LexAbs = ShallowEng ** open ParadigmsEng in {
diff --git a/lib/resource-0.6/shallow/swedish/Lex.gf b/lib/resource-0.6/shallow/swedish/Lex.gf
new file mode 100644
index 000000000..d0b86f152
--- /dev/null
+++ b/lib/resource-0.6/shallow/swedish/Lex.gf
@@ -0,0 +1,148 @@
+abstract Lex = Shallow ** {
+fun regn1 : N ;
+fun revben1 : N ;
+fun räkna1 : Verb ;
+fun rädda1 : Verb ;
+fun räcka1 : Verb ;
+fun rätt1 : N ;
+fun rop1 : N ;
+fun port1 : N ;
+fun para1 : Verb ;
+fun pläga1 : Verb ;
+fun prisa1 : Verb ;
+fun pröva1 : Verb ;
+fun präst1 : N ;
+fun D1 : N ;
+fun utplåna1 : Verb ;
+fun upprätta1 : Verb ;
+fun Gera1 : Verb ;
+fun släkt1 : N ;
+fun slakta1 : Verb ;
+fun slut1 : N ;
+fun sluta1 : Verb ;
+fun svara1 : Verb ;
+fun spräcklig1 : Adj ;
+fun sten1 : N ;
+fun stycke1 : N ;
+fun strimmig1 : Adj ;
+fun stanna1 : Verb ;
+fun stadga1 : Verb ;
+fun stoft1 : N ;
+fun söka1 : Verb ;
+fun synda1 : Verb ;
+fun säck1 : N ;
+fun så1 : Verb ;
+fun sina1 : Verb ;
+fun skynda1 : Verb ;
+fun skämta1 : Verb ;
+fun skänk1 : N ;
+fun ske1 : Verb ;
+fun skaffa1 : Verb ;
+fun skara1 : N ;
+fun samla1 : Verb ;
+fun flytta1 : Verb ;
+fun femtedel1 : N ;
+fun får1 : N ;
+fun fängsla1 : Verb ;
+fun fäst1 : N ;
+fun folk1 : N ;
+fun frukt1 : N ;
+fun frukta1 : Verb ;
+fun fråga1 : Verb ;
+fun föröka1 : Verb ;
+fun förkunna1 : Verb ;
+fun förbanna1 : Verb ;
+fun förbund1 : N ;
+fun fördärva1 : Verb ;
+fun förvärva1 : Verb ;
+fun dräpa1 : Verb ;
+fun dag1 : N ;
+fun döda1 : Verb ;
+fun nådig1 : Adj ;
+fun namn1 : N ;
+fun vin1 : N ;
+fun vinträd1 : N ;
+fun vila1 : Verb ;
+fun vädur1 : N ;
+fun växa1 : Verb ;
+fun välsigna1 : Verb ;
+fun vakta1 : Verb ;
+fun vandra1 : Verb ;
+fun vattna1 : Verb ;
+fun vagn1 : N ;
+fun vara1 : Verb ;
+fun tvista1 : Verb ;
+fun tjänstekvinna1 : N ;
+fun tjäna1 : Verb ;
+fun tjänarinna1 : N ;
+fun tjänare1 : N ;
+fun tält1 : N ;
+fun tänka1 : Verb ;
+fun tak1 : N ;
+fun tal1 : N ;
+fun tala1 : Verb ;
+fun träd1 : N ;
+fun trösta1 : Verb ;
+fun torn1 : N ;
+fun åsna1 : N ;
+fun åkalla1 : Verb ;
+fun år1 : N ;
+fun gåva1 : N ;
+fun gods1 : N ;
+fun buga1 : Verb ;
+fun budbärare1 : N ;
+fun bo1 : Verb ;
+fun blod1 : N ;
+fun brokig1 : Adj ;
+fun bruka1 : Verb ;
+fun brunn1 : N ;
+fun bröd1 : N ;
+fun bevisa1 : Verb ;
+fun bevara1 : Verb ;
+fun berg1 : N ;
+fun berätta1 : Verb ;
+fun befallning1 : N ;
+fun behandla1 : Verb ;
+fun baka1 : Verb ;
+fun barn1 : N ;
+fun balsamera1 : Verb ;
+fun otillbörlig1 : Adj ;
+fun offra1 : Verb ;
+fun omstörta1 : Verb ;
+fun hjord1 : N ;
+fun hövding1 : N ;
+fun höga1 : Verb ;
+fun högtidlig1 : Adj ;
+fun hebré1 : N ;
+fun heta1 : Verb ;
+fun heta2 : Verb ;
+fun hämta1 : Verb ;
+fun härstamma1 : Verb ;
+fun hus1 : N ;
+fun husfolk1 : N ;
+fun hav1 : N ;
+fun harpa1 : N ;
+fun lyssna1 : Verb ;
+fun ljus1 : N ;
+fun lägra1 : Verb ;
+fun lämna1 : Verb ;
+fun låga1 : N ;
+fun liv1 : N ;
+fun ledsaga1 : Verb ;
+fun lova1 : Verb ;
+fun land1 : N ;
+fun kunna1 : Verb ;
+fun källa1 : N ;
+fun kasta1 : Verb ;
+fun kalla1 : Verb ;
+fun konung1 : N ;
+fun kvinna1 : N ;
+fun killing1 : N ;
+fun idka1 : Verb ;
+fun inbyggare1 : N ;
+fun möta1 : Verb ;
+fun mäktig1 : Adj ;
+fun märka1 : Verb ;
+fun människa1 : N ;
+fun misshaga1 : Verb ;
+}
diff --git a/lib/resource-0.6/shallow/swedish/LexSwe.gf b/lib/resource-0.6/shallow/swedish/LexSwe.gf
new file mode 100644
index 000000000..c903398d4
--- /dev/null
+++ b/lib/resource-0.6/shallow/swedish/LexSwe.gf
@@ -0,0 +1,150 @@
+--# -path=.:..:../../../prelude:../../abstract:../../swedish
+
+concrete LexSwe of Lex = ShallowSwe ** open ParadigmsSwe in {
+lin regn1 = nRep "regn" ;
+lin revben1 = nRep "revben" ;
+lin räkna1 = vKoka "räkna" ;
+lin rädda1 = vKoka "rädda" ;
+lin räcka1 = vSteka "räcka" ;
+lin rätt1 = nRisk "rätt" ;
+lin rop1 = nRep "rop" ;
+lin port1 = nBil "port" ;
+lin para1 = vKoka "para" ;
+lin pläga1 = vKoka "pläga" ;
+lin prisa1 = vKoka "prisa" ;
+lin pröva1 = vKoka "pröva" ;
+lin präst1 = nRisk "präst" ;
+lin D1 = nRep "D" ;
+lin utplåna1 = vKoka "utplåna" ;
+lin upprätta1 = vKoka "upprätta" ;
+lin Gera1 = vKoka "Gera" ;
+lin släkt1 = nRep "släkt" ;
+lin slakta1 = vKoka "slakta" ;
+lin slut1 = nRep "slut" ;
+lin sluta1 = vKoka "sluta" ;
+lin svara1 = vKoka "svara" ;
+lin spräcklig1 = adjReg "spräcklig" ;
+lin sten1 = nBil "sten" ;
+lin stycke1 = nDike "stycke" ;
+lin strimmig1 = adjReg "strimmig" ;
+lin stanna1 = vKoka "stanna" ;
+lin stadga1 = vKoka "stadga" ;
+lin stoft1 = nRep "stoft" ;
+lin söka1 = vSteka "söka" ;
+lin synda1 = vKoka "synda" ;
+lin säck1 = nBil "säck" ;
+lin så1 = vBo "så" ;
+lin sina1 = vKoka "sina" ;
+lin skynda1 = vKoka "skynda" ;
+lin skämta1 = vKoka "skämta" ;
+lin skänk1 = nRisk "skänk" ;
+lin ske1 = vBo "ske" ;
+lin skaffa1 = vKoka "skaffa" ;
+lin skara1 = nApa "skara" ;
+lin samla1 = vKoka "samla" ;
+lin flytta1 = vKoka "flytta" ;
+lin femtedel1 = nBil "femtedel" ;
+lin får1 = nRep "får" ;
+lin fängsla1 = vKoka "fängsla" ;
+lin fäst1 = nRep "fäst" ;
+lin folk1 = nRep "folk" ;
+lin frukt1 = nBil "frukt" ;
+lin frukta1 = vKoka "frukta" ;
+lin fråga1 = vKoka "fråga" ;
+lin föröka1 = vKoka "föröka" ;
+lin förkunna1 = vKoka "förkunna" ;
+lin förbanna1 = vKoka "förbanna" ;
+lin förbund1 = nRep "förbund" ;
+lin fördärva1 = vKoka "fördärva" ;
+lin förvärva1 = vKoka "förvärva" ;
+lin dräpa1 = vSteka "dräpa" ;
+lin dag1 = nBil "dag" ;
+lin döda1 = vKoka "döda" ;
+lin nådig1 = adjReg "nådig" ;
+lin namn1 = nRep "namn" ;
+lin vin1 = nRep "vin" ;
+lin vinträd1 = nRep "vinträd" ;
+lin vila1 = vKoka "vila" ;
+lin vädur1 = nBil "vädur" ;
+lin växa1 = vSteka "växa" ;
+lin välsigna1 = vKoka "välsigna" ;
+lin vakta1 = vKoka "vakta" ;
+lin vandra1 = vKoka "vandra" ;
+lin vattna1 = vKoka "vattna" ;
+lin vagn1 = nBil "vagn" ;
+lin vara1 = vKoka "vara" ;
+lin tvista1 = vKoka "tvista" ;
+lin tjänstekvinna1 = nApa "tjänstekvinna" ;
+lin tjäna1 = vKoka "tjäna" ;
+lin tjänarinna1 = nApa "tjänarinna" ;
+lin tjänare1 = nMurare "tjänare" ;
+lin tält1 = nRep "tält" ;
+lin tänka1 = vSteka "tänka" ;
+lin tak1 = nRep "tak" ;
+lin tal1 = nRep "tal" ;
+lin tala1 = vKoka "tala" ;
+lin träd1 = nRep "träd" ;
+lin trösta1 = vKoka "trösta" ;
+lin torn1 = nRep "torn" ;
+lin åsna1 = nApa "åsna" ;
+lin åkalla1 = vKoka "åkalla" ;
+lin år1 = nRep "år" ;
+lin gåva1 = nApa "gåva" ;
+lin gods1 = nRep "gods" ;
+lin buga1 = vKoka "buga" ;
+lin budbärare1 = nMurare "budbärare" ;
+lin bo1 = vBo "bo" ;
+lin blod1 = nRep "blod" ;
+lin brokig1 = adjReg "brokig" ;
+lin bruka1 = vKoka "bruka" ;
+lin brunn1 = nBil "brunn" ;
+lin bröd1 = nRep "bröd" ;
+lin bevisa1 = vKoka "bevisa" ;
+lin bevara1 = vKoka "bevara" ;
+lin berg1 = nRep "berg" ;
+lin berätta1 = vKoka "berätta" ;
+lin befallning1 = nBil "befallning" ;
+lin behandla1 = vKoka "behandla" ;
+lin baka1 = vKoka "baka" ;
+lin barn1 = nRep "barn" ;
+lin balsamera1 = vKoka "balsamera" ;
+lin otillbörlig1 = adjReg "otillbörlig" ;
+lin offra1 = vKoka "offra" ;
+lin omstörta1 = vKoka "omstörta" ;
+lin hjord1 = nBil "hjord" ;
+lin hövding1 = nBil "hövding" ;
+lin höga1 = vSteka "höga" ;
+lin högtidlig1 = adjReg "högtidlig" ;
+lin hebré1 = nRisk "hebré" ;
+lin heta1 = vKoka "heta" ;
+lin heta2 = vSteka "heta" ;
+lin hämta1 = vKoka "hämta" ;
+lin härstamma1 = vKoka "härstamma" ;
+lin hus1 = nRep "hus" ;
+lin husfolk1 = nRep "husfolk" ;
+lin hav1 = nRep "hav" ;
+lin harpa1 = nApa "harpa" ;
+lin lyssna1 = vKoka "lyssna" ;
+lin ljus1 = nRep "ljus" ;
+lin lägra1 = vKoka "lägra" ;
+lin lämna1 = vKoka "lämna" ;
+lin låga1 = nApa "låga" ;
+lin liv1 = nRep "liv" ;
+lin ledsaga1 = vKoka "ledsaga" ;
+lin lova1 = vKoka "lova" ;
+lin land1 = nRep "land" ;
+lin kunna1 = vKoka "kunna" ;
+lin källa1 = nApa "källa" ;
+lin kasta1 = vKoka "kasta" ;
+lin kalla1 = vKoka "kalla" ;
+lin konung1 = nBil "konung" ;
+lin kvinna1 = nApa "kvinna" ;
+lin killing1 = nBil "killing" ;
+lin idka1 = vKoka "idka" ;
+lin inbyggare1 = nMurare "inbyggare" ;
+lin möta1 = vSteka "möta" ;
+lin mäktig1 = adjReg "mäktig" ;
+lin märka1 = vSteka "märka" ;
+lin människa1 = nApa "människa" ;
+lin misshaga1 = vKoka "misshaga" ;
+}
diff --git a/lib/resource-0.6/shallow/swedish/swe.para b/lib/resource-0.6/shallow/swedish/swe.para
new file mode 100644
index 000000000..14d50bf87
--- /dev/null
+++ b/lib/resource-0.6/shallow/swedish/swe.para
@@ -0,0 +1,12 @@
+N!nApa: ap/a apor
+N!nBil: bil bilen bilar
+N!nNyckel: cyk/el cykeln cyklar
+N!nRisk: vals valserna
+N!nDike: rik/e riket rikena
+N!nRep: val valet
+N!nMurare: kik/are kikarna
+Adj1!adjReg: bill/ig billigt
+Adj1!adjReg: dyr dyrt dyra |dyraste|dyrare|dyrast|
+V!vKoka: tal/a |talar|talade|talat|
+V!vSteka: lek/a leker |lekte|lekt|
+V!vBo: sy syr sydde
diff --git a/lib/resource-0.6/swedish/ParadigmsSwe.gf b/lib/resource-0.6/swedish/ParadigmsSwe.gf
index 94c3cb1a9..d255eed79 100644
--- a/lib/resource-0.6/swedish/ParadigmsSwe.gf
+++ b/lib/resource-0.6/swedish/ParadigmsSwe.gf
@@ -69,9 +69,9 @@ oper
nKikare : Str -> N ; -- kikare (kikaren, kikare, kikarna) ; utrum
-- Nouns used as functions need a preposition. The most common ones are "av",
--- "på", and "till".
+-- "på", and "till". A preposition is a string.
- mkFun : N -> Preposition -> Fun ;
+ mkFun : N -> Str -> Fun ;
funAv : N -> Fun ;
funPaa : N -> Fun ;
funTill : N -> Fun ;
@@ -157,8 +157,14 @@ oper
-- Two-place verbs, and the special case with direct object.
- mkTV : V -> Preposition -> TV ; -- tycka, om
- tvDir : V -> TV ; -- gilla
+ mkTV : V -> Str -> TV ; -- tycka, om
+ tvDir : V -> TV ; -- gilla
+
+-- Ditransitive verbs.
+
+ mkV3 : V -> Str -> Str -> V3 ; -- prata, med, om
+ v3Dir : V -> Str -> V3 ; -- ge,_,till
+ v3DirDir : V -> V3 ; -- ge,_,_
-- The definitions should not bother the user of the API. So they are
-- hidden from the document.
@@ -288,5 +294,8 @@ oper
mkPartV v p = {s = v.s ; s1 = p ; lock_V = <>} ;
mkTV x y = mkTransVerb x y ** {lock_TV = <>} ;
tvDir = \v -> mkTV v [] ;
+ mkV3 x y z = mkDitransVerb x y z ** {lock_V3 = <>} ;
+ v3Dir x y = mkV3 x [] y ;
+ v3DirDir x = v3Dir x [] ;
} ;