summaryrefslogtreecommitdiff
path: root/examples
diff options
context:
space:
mode:
authoraarne <aarne@cs.chalmers.se>2008-10-28 14:05:55 +0000
committeraarne <aarne@cs.chalmers.se>2008-10-28 14:05:55 +0000
commit833752872b675a911954f218d225d21cd5b90088 (patch)
tree9ceaccd6b0737dcae283bb0b1e23d68657613a12 /examples
parent128809b7b8382acdd7ad46be95c0ac8a6d3231a7 (diff)
part of Attempto controlled language in English and Swedish
Diffstat (limited to 'examples')
-rw-r--r--examples/attempto/Attempto.gf236
-rw-r--r--examples/attempto/Attempto1.gf29
-rw-r--r--examples/attempto/AttemptoEng.gf7
-rw-r--r--examples/attempto/AttemptoI.gf245
-rw-r--r--examples/attempto/AttemptoSwe.gf7
-rw-r--r--examples/attempto/LexAttempto.gf18
-rw-r--r--examples/attempto/LexAttemptoEng.gf15
-rw-r--r--examples/attempto/LexAttemptoSwe.gf15
-rw-r--r--examples/attempto/TestAttempto.gf82
-rw-r--r--examples/attempto/TestAttemptoEng.gf86
-rw-r--r--examples/attempto/TestAttemptoSwe.gf85
11 files changed, 825 insertions, 0 deletions
diff --git a/examples/attempto/Attempto.gf b/examples/attempto/Attempto.gf
new file mode 100644
index 000000000..64fd60944
--- /dev/null
+++ b/examples/attempto/Attempto.gf
@@ -0,0 +1,236 @@
+abstract Attempto = {
+
+flags startcat = ACEText ;
+
+cat CN ;
+cat NP ;
+cat Card ;
+cat PN ;
+cat A ;
+cat A2 ;
+cat AP ;
+cat RS ;
+cat Pron ;
+cat Prep ;
+cat S ;
+cat VP ;
+cat V ;
+cat V2 ;
+cat V3 ;
+cat Adv ;
+cat Conj ;
+cat IP ;
+cat IAdv ;
+cat QS ;
+cat Text ;
+
+fun aNP : CN -> NP ;
+fun theNP : CN -> NP ;
+fun cardNP : Card -> CN -> NP ;
+fun noNP : CN -> NP ;
+fun everyNP : CN -> NP ;
+fun eachNP : CN -> NP ;
+fun notEveryNP : CN -> NP ;
+fun notEachNP : CN -> NP ;
+
+
+fun theCollNP : CN -> NP ;
+fun someCollNP : CN -> NP ;
+fun allCollNP : CN -> NP ;
+fun noCollNP : CN -> NP ;
+
+
+fun eachTheNP : CN -> NP ;
+fun eachSomeNP : CN -> NP ;
+fun eachNumNP : Card -> CN -> NP ;
+
+cat MCN ;
+
+fun someMassNP : MCN -> NP ;
+fun noMassNP : MCN -> NP ;
+fun allMassNP : MCN -> NP ;
+fun notAllMassNP : MCN -> NP ;
+
+
+fun pnNP : PN -> NP ;
+fun intNP : Int -> NP ;
+fun intNegNP : Int -> NP ;
+fun floatNP : Float -> NP ;
+
+
+-- arithmetic expressions with + - * /
+
+-- strings "foo" and "foo" & "bar
+
+-- sets {a,b,c}
+
+-- lists [a,b,c]
+
+fun it_NP : NP ;
+fun he_NP : NP ;
+fun she_NP : NP ;
+fun he_she_NP : NP ;
+fun they_NP : NP ;
+
+
+-- reflexive pronouns: itself, himself, herself, himself/herself, themselves
+
+fun someone_NP : NP ;
+fun somebody_NP : NP ;
+fun something_NP : NP ;
+fun noone_NP : NP ;
+fun nothing_NP : NP ;
+fun not_everyoneNP : NP ;
+fun not_everybodyNP : NP ;
+fun not_everythingNP : NP ;
+
+fun at_leastNP : Card -> CN -> NP ;
+fun not_at_leastNP : Card -> CN -> NP ;
+fun at_mostNP : Card -> CN -> NP ;
+fun not_at_mostNP : Card -> CN -> NP ;
+fun more_thanNP : Card -> CN -> NP ;
+fun not_more_thanNP : Card -> CN -> NP ;
+
+fun nothing_butNP : CN -> NP ; -- nothing but apples
+fun nothing_butMassNP : MCN -> NP ; -- nothing but water
+fun nobody_butNP : PN -> NP ; -- nobody but John
+fun no_butNP : CN -> PN -> NP ; -- no man but John
+
+cat Unit ; -- SI measurement units
+cat Var ;
+
+fun unitNP : Card -> Unit -> NP ;
+fun unit_ofNP : Card -> Unit -> CN -> NP ; -- 3 kg of apples
+fun unit_ofMassNP : Card -> Unit -> MCN -> NP ; -- 3 l of water
+
+fun apposVarCN : CN -> Var -> CN ; -- a man X
+fun varNP : Var -> NP ;
+
+fun conjNP : NP -> NP -> NP ;
+
+-- 2.2.1
+
+fun adjCN : AP -> CN -> CN ;
+fun positAP : A -> AP ;
+fun comparAP : A -> AP ;
+fun superlAP : A -> AP ;
+
+
+-- 2.2.2
+
+fun relCN : CN -> RS -> CN ;
+fun relNP : NP -> RS -> NP ;
+fun andRS : RS -> RS -> RS ;
+fun orRS : RS -> RS -> RS ;
+fun eachRS : RS -> RS ; -- each of who
+
+-- 2.2.4
+
+fun genNP : NP -> CN -> NP ; -- everybody's customer
+fun ofCN : CN -> NP -> CN ; -- dog of John and Mary
+fun genOwnNP : NP -> CN -> NP ; -- his own customer
+
+-- 2.3.1
+
+fun vpS : NP -> VP -> S ;
+fun neg_vpS : NP -> VP -> S ;
+fun not_provably_vpS : NP -> VP -> S ;
+
+fun vVP : V -> VP ;
+fun v2VP : V2 -> NP -> VP ;
+fun v3VP : V3 -> NP -> NP -> VP ;
+
+-- 2.3.2
+
+fun apVP : AP -> VP ;
+fun compVP : A -> NP -> VP ; -- John is richer than Mary
+fun as_asVP : A -> NP -> VP ; -- John is as rich as Mary
+
+-- John is as fond-of Mary as Bill
+-- John is more fond-of Mary than Bill
+-- John is as fond-of Mary as of Sue
+-- John is more fond-of Mary than of Sue
+
+cat PP ;
+cat [PP] {1} ;
+fun ppVP : [PP] -> VP ; -- John is in the garden in the morning
+
+fun prepPP : Prep -> NP -> PP ;
+
+-- 2.3.5
+
+fun canVP : VP -> VP ;
+fun mustVP : VP -> VP ;
+fun have_toVP : VP -> VP ;
+
+-- 2.4
+
+fun modVP : VP -> Adv -> VP ;
+
+-- 3.2
+
+fun thereNP : NP -> S ; -- there is/are
+
+-- 3.3
+-- Boolean formulas = \= < > <= >=
+
+-- 3.4.1
+
+fun coordS : Conj -> S -> S -> S ;
+
+fun and_Conj : Conj ;
+fun or_Conj : Conj ;
+fun comma_and_Conj : Conj ; -- lower precedence
+fun comma_or_Conj : Conj ;
+
+-- 3.4.3
+
+fun for_everyS : CN -> S -> S ;
+fun for_eachS : CN -> S -> S ;
+fun for_each_ofS : Card -> CN -> S -> S ; -- for each of 3 men
+fun for_allMassS : MCN -> S -> S ; -- for all water
+
+-- 3.4.4
+
+fun if_thenS : S -> S -> S ;
+fun falseS : S -> S ; -- it is false that
+fun not_provableS : S -> S ; -- it is not provable that
+fun possibleS : S -> S ; -- it is possible that
+fun not_possibleS : S -> S ;
+fun necessaryS : S -> S ;
+fun not_necessaryS : S -> S ;
+
+fun thatS : S -> S -> S ;
+
+-- 3.5
+
+fun npQS : NP -> VP -> QS ;
+fun ipQS : IP -> VP -> QS ;
+fun iadvQS : IAdv -> NP -> VP -> QS ;
+
+fun where_IAdv : IAdv ;
+fun when_IAdv : IAdv ;
+fun whoSg_IP : IP ;
+fun whoPl_IP : IP ;
+
+fun there_ipQS : IP -> QS ; -- there is who
+
+fun whoseIP : CN -> IP ; -- whose dog
+
+-- 3.6
+
+fun impVP : NP -> VP -> Text ; -- John, go to the bank!
+
+-- 4
+
+cat ACEText ;
+fun consText : Text -> ACEText -> ACEText ;
+
+fun baseText : Text -> ACEText ;
+
+fun sText : S -> Text ;
+fun qsText : QS -> Text ;
+
+}
+
+
diff --git a/examples/attempto/Attempto1.gf b/examples/attempto/Attempto1.gf
new file mode 100644
index 000000000..50526a889
--- /dev/null
+++ b/examples/attempto/Attempto1.gf
@@ -0,0 +1,29 @@
+-- 15.58
+
+abstract Attempto = {
+
+flags startcat = ACEText ;
+
+cat
+ ACEText ;
+ Query ;
+ Command ;
+fun
+ ASpecification : Specification -> ACEText ;
+ AQuery : Query -> ACEText ;
+ ACommand : Command -> ACEText ;
+cat
+ PropositionOrSentenceCoord ;
+ TopicalisedQuestion ;
+fun
+ QQuery : PropositionOrSentenceCoord -> Query -> Query ;
+ QTopicalizer : TopicalisedQuestion -> Query ;
+cat
+ ExistentialQuestionTopic ;
+ SentenceCoord ;
+fun
+ TExistential : ExistentialQuestionTopic -> SentenceCoord -> TopicalisedQuestion ;
+ TUniversal : UniversalTopic -> TopicalisedQuestion -> TopicalisedQuestion ;
+ TQuestion : Question -> TopicalisedQuestion ;
+
+}
diff --git a/examples/attempto/AttemptoEng.gf b/examples/attempto/AttemptoEng.gf
new file mode 100644
index 000000000..d251c8888
--- /dev/null
+++ b/examples/attempto/AttemptoEng.gf
@@ -0,0 +1,7 @@
+--# -path=.:present
+
+concrete AttemptoEng of Attempto = AttemptoI with
+ (Syntax = SyntaxEng),
+ (Symbolic = SymbolicEng),
+ (LexAttempto = LexAttemptoEng) ;
+
diff --git a/examples/attempto/AttemptoI.gf b/examples/attempto/AttemptoI.gf
new file mode 100644
index 000000000..66cf5abd8
--- /dev/null
+++ b/examples/attempto/AttemptoI.gf
@@ -0,0 +1,245 @@
+incomplete concrete AttemptoI of Attempto = open
+ Syntax,
+ Symbolic,
+ LexAttempto
+in {
+
+lincat CN = Syntax.CN ;
+lincat NP = Syntax.NP ;
+lincat Card = Syntax.Card ;
+lincat PN = Syntax.PN ;
+lincat A = Syntax.A ;
+lincat A2 = Syntax.A2 ;
+lincat AP = Syntax.AP ;
+lincat RS = Syntax.RS ;
+lincat Pron = Syntax.Pron ;
+lincat Prep = Syntax.Prep ;
+lincat S = Syntax.S ;
+lincat VP = Syntax.VP ;
+lincat V = Syntax.V ;
+lincat V2 = Syntax.V2 ;
+lincat V3 = Syntax.V3 ;
+lincat Adv = Syntax.Adv ;
+lincat Conj = Syntax.Conj ;
+lincat IP = Syntax.IP ;
+lincat IAdv = Syntax.IAdv ;
+lincat QS = Syntax.QS ;
+lincat Text = Syntax.Text ;
+lincat ACEText = Syntax.Text ;
+
+lincat MCN = Syntax.CN ;
+--lincat Var = Symb ;
+lincat PP = Adv ;
+
+lin aNP = mkNP a_Art ;
+lin theNP = mkNP the_Art ;
+lin cardNP d = mkNP d ;
+--lin noNP : CN -> NP ;
+lin everyNP = mkNP every_Det ;
+--lin eachNP : CN -> NP ;
+--lin notEveryNP : CN -> NP ;
+--lin notEachNP : CN -> NP ;
+lin theCollNP = mkNP the_Art plNum ;
+lin someCollNP = mkNP somePl_Det ;
+lin allCollNP cn = mkNP all_Predet (mkNP a_Art plNum cn) ;
+
+--lin noCollNP : CN -> NP ;
+--lin eachTheNP : CN -> NP ;
+--lin eachSomeNP : CN -> NP ;
+--lin eachNumNP : Card -> CN -> NP ;
+
+lin someMassNP = mkNP someSg_Det ;
+lin allMassNP cn = mkNP all_Predet (mkNP cn) ;
+
+--lin noMassNP : MCN -> NP ;
+--lin notAllMassNP : MCN -> NP ;
+
+lin pnNP = mkNP ;
+lin intNP = symb ;
+lin floatNP = symb ;
+--lin intNegNP : Int -> NP ;
+
+lin it_NP = mkNP it_Pron ;
+lin he_NP = mkNP he_Pron ;
+lin she_NP = mkNP she_Pron ;
+lin they_NP = mkNP they_Pron ;
+
+lin conjNP = mkNP and_Conj ;
+lin adjCN = mkCN ;
+
+{-
+lin someone_NP : NP ;
+lin somebody_NP : NP ;
+lin something_NP : NP ;
+lin noone_NP : NP ;
+lin nothing_NP : NP ;
+lin not_everyoneNP : NP ;
+lin not_everybodyNP : NP ;
+lin not_everythingNP : NP ;
+
+lin at_leastNP : Card -> CN -> NP ;
+lin not_at_leastNP : Card -> CN -> NP ;
+lin at_mostNP : Card -> CN -> NP ;
+lin not_at_mostNP : Card -> CN -> NP ;
+lin more_thanNP : Card -> CN -> NP ;
+lin not_more_thanNP : Card -> CN -> NP ;
+
+lin nothing_butNP : CN -> NP ; -- nothing but apples
+lin nothing_butMassNP : MCN -> NP ; -- nothing but water
+lin nobody_butNP : PN -> NP ; -- nobody but John
+lin no_butNP : CN -> PN -> NP ; -- no man but John
+
+cat Unit ; -- SI measurement units
+cat Var ;
+
+lin unitNP : Card -> Unit -> NP ;
+lin unit_ofNP : Card -> Unit -> CN -> NP ; -- 3 kg of apples
+lin unit_ofMassNP : Card -> Unit -> MCN -> NP ; -- 3 l of water
+-}
+lin apposVarCN cn v = mkCN cn (symb v) ;
+
+lin varNP = symb ;
+
+-- 2.2.1
+
+
+lin adjCN = mkCN ;
+lin positAP = mkAP ;
+lin comparAP = comparAP ;
+lin superlAP a = mkAP (mkOrd a) ;
+
+
+-- 2.2.2
+
+lin relCN = mkCN ;
+--lin relNP = mkNP ;
+
+{-
+lin andRS : RS -> RS -> RS ;
+lin orRS : RS -> RS -> RS ;
+lin eachRS : RS -> RS ; -- each of who
+-}
+
+-- 2.2.4
+
+lin genNP = genitiveNP ;
+lin ofCN cn np = mkCN cn (mkAdv possess_Prep np) ;
+lin genOwnNP np cn = genitiveNP np (mkCN own_A cn) ;
+
+-- 2.3.1
+
+lin vpS np vp = mkS (mkCl np vp) ;
+lin neg_vpS np vp = mkS negativePol (mkCl np vp) ;
+
+
+--lin not_provably_vpS : NP -> VP -> S ;
+
+lin vVP = mkVP ;
+lin v2VP = mkVP ;
+lin v3VP = mkVP ;
+
+-- 2.3.2
+
+lin apVP = mkVP ;
+lin compVP a np = mkVP (mkAP a np) ;
+--lin as_asVP : A -> NP -> S ; -- John is as rich as Mary
+
+-- John is as fond-of Mary as Bill
+-- John is more fond-of Mary than Bill
+-- John is as fond-of Mary as of Sue
+-- John is more fond-of Mary than of Sue
+
+
+lincat PP = Adv ;
+lincat [PP] = Adv ;
+
+lin BasePP p = p ;
+
+lin ppVP = mkVP ;
+
+lin prepPP = mkAdv ;
+
+-- 2.3.5
+
+lin canVP = mkVP can_VV ;
+lin mustVP = mkVP must_VV ;
+
+lin have_toVP = mkVP have_VV ;
+
+-- 2.4
+
+lin modVP = mkVP ;
+
+-- 3.2
+
+lin thereNP np = mkS (mkCl np) ;
+
+{-
+-- 3.3
+-- Boolean formulas = \= < > <= >=
+-}
+
+-- 3.4.1
+
+lin coordS = mkS ;
+
+lin and_Conj = Syntax.and_Conj ;
+lin or_Conj = Syntax.or_Conj ;
+--lin comma_and_Conj : Conj ; -- lower precedence
+--lin comma_or_Conj : Conj ;
+
+-- 3.4.3
+{-
+lin for_everyS : CN -> S -> S ;
+lin for_eachS : CN -> S -> S ;
+lin for_each_ofS : Card -> CN -> S -> S ; -- for each of 3 men
+lin for_allMassS : MCN -> S -> S ; -- for all water
+
+-- 3.4.4
+
+lin if_thenS : S -> S -> S ;
+-}
+
+oper adj_thatCl : A -> S -> Cl = \a,s -> mkCl (mkVP (mkAP (mkAP a) s)) ;
+
+lin falseS s = mkS (adj_thatCl false_A s) ;
+lin not_provableS s = mkS negativePol (adj_thatCl provable_A s) ;
+lin possibleS s = mkS (adj_thatCl possible_A s) ;
+lin not_possibleS s = mkS negativePol (adj_thatCl possible_A s) ;
+lin necessaryS s = mkS (adj_thatCl necessary_A s) ;
+lin not_necessaryS s = mkS negativePol (adj_thatCl necessary_A s) ;
+
+
+--lin thatS s t = mkS ;
+
+-- 3.5
+
+lin npQS np vp = mkQS (mkCl np vp) ;
+lin ipQS ip vp = mkQS (mkQCl ip vp) ;
+lin iadvQS iadv np vp = mkQS (mkQCl iadv (mkCl np vp)) ;
+
+lin where_IAdv = Syntax.where_IAdv ;
+lin when_IAdv = Syntax.when_IAdv ;
+lin whoSg_IP = Syntax.whoSg_IP ;
+lin whoPl_IP = Syntax.whoPl_IP ;
+
+{-
+lin there_ipQS : IP -> QS ; -- there is who
+
+lin whoseIP : CN -> IP ; -- whose dog
+-}
+-- 3.6
+
+lin impVP np vp = mkText (mkPhr (mkUtt (mkImp vp)) (mkVoc np)) exclMarkPunct ;
+ ---- John, go to the bank!
+
+
+lin consText = mkText ;
+lin baseText t = t ;
+lin sText = mkText ;
+lin qsText = mkText ;
+
+}
+
+
+
diff --git a/examples/attempto/AttemptoSwe.gf b/examples/attempto/AttemptoSwe.gf
new file mode 100644
index 000000000..8997766ab
--- /dev/null
+++ b/examples/attempto/AttemptoSwe.gf
@@ -0,0 +1,7 @@
+--# -path=.:present
+
+concrete AttemptoSwe of Attempto = AttemptoI with
+ (Syntax = SyntaxSwe),
+ (Symbolic = SymbolicSwe),
+ (LexAttempto = LexAttemptoSwe) ;
+
diff --git a/examples/attempto/LexAttempto.gf b/examples/attempto/LexAttempto.gf
new file mode 100644
index 000000000..69561e42a
--- /dev/null
+++ b/examples/attempto/LexAttempto.gf
@@ -0,0 +1,18 @@
+interface LexAttempto = open Syntax in {
+
+oper
+ possible_A : A ;
+ necessary_A : A ;
+ own_A : A ;
+ have_VV : VV ;
+ provably_Adv : Adv ;
+ provable_A : A ;
+ false_A : A ;
+
+ genitiveNP : NP -> CN -> NP ;
+
+-- m_Unit : Unit ;
+-- l_Unit : Unit ;
+-- kg_Unit : Unit ;
+
+}
diff --git a/examples/attempto/LexAttemptoEng.gf b/examples/attempto/LexAttemptoEng.gf
new file mode 100644
index 000000000..f9d975d18
--- /dev/null
+++ b/examples/attempto/LexAttemptoEng.gf
@@ -0,0 +1,15 @@
+instance LexAttemptoEng of LexAttempto =
+ open ExtraEng, SyntaxEng, ParadigmsEng, ConstructX, IrregEng in {
+
+oper
+ possible_A = mkA "possible" ;
+ necessary_A = mkA "necessary" ;
+ own_A = mkA "own" ;
+ have_VV = mkVV have_V ;
+ provably_Adv = mkAdv "provably" ;
+ provable_A = mkA "provable" ;
+ false_A = mkA "false" ;
+
+ genitiveNP np = mkNP (GenNP np) ;
+
+}
diff --git a/examples/attempto/LexAttemptoSwe.gf b/examples/attempto/LexAttemptoSwe.gf
new file mode 100644
index 000000000..cdb5a56f3
--- /dev/null
+++ b/examples/attempto/LexAttemptoSwe.gf
@@ -0,0 +1,15 @@
+instance LexAttemptoSwe of LexAttempto =
+ open ExtraSwe, SyntaxSwe, ParadigmsSwe, ConstructX, IrregSwe in {
+
+oper
+ possible_A = mkA "möjlig" ;
+ necessary_A = mkA "nödvändig" ;
+ own_A = mkA "egen" ;
+ have_VV = must_VV ;
+ provably_Adv = mkAdv "bevisbart" ;
+ provable_A = mkA "bevisbar" ;
+ false_A = mkA "falsk" ;
+
+ genitiveNP np = mkNP (GenNP np) ;
+
+}
diff --git a/examples/attempto/TestAttempto.gf b/examples/attempto/TestAttempto.gf
new file mode 100644
index 000000000..33eee9c86
--- /dev/null
+++ b/examples/attempto/TestAttempto.gf
@@ -0,0 +1,82 @@
+abstract TestAttempto = Attempto ** {
+
+fun
+ card_N : CN ;
+ water_MCN : MCN ;
+ john_PN : PN ;
+ apple_PN : PN ;
+ sleep_V : V ;
+ young_A : A ;
+ dog_N : CN ;
+ animal_N : CN ;
+ wait_V : V ;
+ man_N : CN ;
+ woman_N : CN ;
+ give_V3 : V3 ;
+ tired_A : A ;
+ rich_A : A ;
+ customer_N : CN ;
+ enter_V2 : V2 ;
+ bank_N : CN ;
+ satisfied_A : A ;
+ lucky_A : A ;
+ well_known_A : A ;
+ important_A : A ;
+ expensive_A : A ;
+ fill_in_V2 : V2 ;
+ form_N : CN ;
+ age_N : CN ;
+ teacher_N : CN ;
+ successful_A : A ;
+ fond_A2 : A2 ;
+ garden_N : CN ;
+ morning_N : CN ;
+ code_N : CN ;
+ drinkable_A : A ;
+ work_V : V ;
+ admitted_A : A ;
+ eat_V2 : V2 ;
+ burger_N : CN ;
+ earn_V2 : V2 ;
+ income_N : CN ;
+ england_PN : PN ;
+ beginning_N : CN ;
+ office_N : CN ;
+ interested_A2 : A2 ;
+ morning_N : CN ;
+ classroom_N : CN ;
+ manually_Adv : Adv ;
+ slot_N : CN ;
+ patiently_Adv : Adv ;
+ course_N : CN ;
+ carefully_Adv : Adv ;
+ time_N : CN ;
+ believe_V : V ;
+ seriously_Adv : Adv ;
+ clerk_N : CN ;
+ screen_N : CN ;
+ blink_V : V ;
+ bed_N : CN ;
+ container_N : CN ;
+ automated_teller_N : CN ;
+ reject_V2 : V2 ;
+ accept_V2 : V2 ;
+ type_V2 : V2 ;
+ know_V : V ;
+ manager_N : CN ;
+ oversleep_V : V ;
+ valid_A : A ;
+ see_V2 : V2 ;
+ bark_V : V ;
+ go_V2 : V2 ;
+ brother_N : CN ;
+ mary_PN : PN ;
+ machine_N : CN ;
+ correct_A : A ;
+
+ in_Prep : Prep ;
+ at_Prep : Prep ;
+ into_Prep : Prep ;
+
+
+}
diff --git a/examples/attempto/TestAttemptoEng.gf b/examples/attempto/TestAttemptoEng.gf
new file mode 100644
index 000000000..9a475cc18
--- /dev/null
+++ b/examples/attempto/TestAttemptoEng.gf
@@ -0,0 +1,86 @@
+--# -path=.:/Users/aarne/GF/next-lib/present
+
+concrete TestAttemptoEng of TestAttempto = AttemptoEng **
+ open SyntaxEng, ParadigmsEng, IrregEng, (C = ConstructX) in {
+
+lin card_N = mkkN "card" ;
+lin water_MCN = mkCN (mkkN "water") ;
+lin john_PN = mkPN "john" ;
+lin apple_PN = mkPN "apple" ;
+lin sleep_V = IrregEng.sleep_V ;
+lin young_A = mkA "young" ;
+lin dog_N = mkkN "dog" ;
+lin animal_N = mkkN "animal" ;
+lin wait_V = mkV "wait" ;
+lin man_N = mkkN "man" ;
+lin woman_N = mkkN "woman" ;
+lin give_V3 = mkV3 give_V (mkPrep []) (mkPrep "to") ;
+lin tired_A = mkA "tired" ;
+lin rich_A = mkA "rich" ;
+lin customer_N = mkkN "customer" ;
+lin enter_V2 = mkV2 "enter" ;
+lin bank_N = mkkN "bank" ;
+lin satisfied_A = mkA "satisfied" ;
+lin lucky_A = mkA "lucky" ;
+lin well_known_A = mkA "well" ;
+lin important_A = mkA "important" ;
+lin expensive_A = mkA "expensive" ;
+lin fill_in_V2 = mkV2 "fill" ;
+lin form_N = mkkN "form" ;
+lin age_N = mkkN "age" ;
+lin teacher_N = mkkN "teacher" ;
+lin successful_A = mkA "successful" ;
+lin fond_A2 = mkA2 (mkA "fond") (mkPrep "of") ;
+lin garden_N = mkkN "garden" ;
+lin morning_N = mkkN "morning" ;
+lin code_N = mkkN "code" ;
+lin drinkable_A = mkA "drinkable" ;
+lin work_V = mkV "work" ;
+lin admitted_A = mkA "admitted" ;
+lin eat_V2 = mkV2 eat_V ;
+lin burger_N = mkkN "burger" ;
+lin earn_V2 = mkV2 "earn" ;
+lin income_N = mkkN "income" ;
+lin england_PN = mkPN "england" ;
+lin beginning_N = mkkN "beginning" ;
+lin office_N = mkkN "office" ;
+lin interested_A2 = mkA2 (mkA "interested") (mkPrep "in") ;
+lin morning_N = mkkN "morning" ;
+lin classroom_N = mkkN "classroom" ;
+lin manually_Adv = mkAdv "manually" ;
+lin slot_N = mkkN "slot" ;
+lin patiently_Adv = mkAdv "patiently" ;
+lin course_N = mkkN "course" ;
+lin carefully_Adv = mkAdv "carefully" ;
+lin time_N = mkkN "time" ;
+lin believe_V = mkV "believe" ;
+lin seriously_Adv = mkAdv "seriously" ;
+lin clerk_N = mkkN "clerk" ;
+lin screen_N = mkkN "screen" ;
+lin blink_V = mkV "blink" ;
+lin bed_N = mkkN "bed" ;
+lin container_N = mkkN "container" ;
+lin automated_teller_N = mkkN "automated" ;
+lin reject_V2 = mkV2 "reject" ;
+lin accept_V2 = mkV2 "accept" ;
+lin type_V2 = mkV2 "type" ;
+lin know_V = IrregEng.know_V ;
+lin manager_N = mkkN "manager" ;
+lin oversleep_V = mkV "oversleep" "overslept" "overslept" ;
+lin valid_A = mkA "valid" ;
+lin see_V2 = mkV2 see_V ;
+lin bark_V = mkV "bark" ;
+lin go_V2 = mkV2 go_V to_Prep ;
+lin brother_N = mkkN "brother" ;
+lin mary_PN = mkPN "mary" ;
+lin machine_N = mkkN "machine" ;
+lin correct_A = mkA "correct" ;
+
+oper mkkN : Str -> CN = \n -> mkCN (ParadigmsEng.mkN n) ;
+
+lin
+ in_Prep = SyntaxEng.in_Prep ;
+ at_Prep = mkPrep "at" ;
+ into_Prep = mkPrep "into" ;
+
+}
diff --git a/examples/attempto/TestAttemptoSwe.gf b/examples/attempto/TestAttemptoSwe.gf
new file mode 100644
index 000000000..831e8232f
--- /dev/null
+++ b/examples/attempto/TestAttemptoSwe.gf
@@ -0,0 +1,85 @@
+--# -path=.:/Users/aarne/GF/next-lib/present
+
+concrete TestAttemptoSwe of TestAttempto = AttemptoSwe **
+ open SyntaxSwe, ParadigmsSwe, IrregSwe, (C = ConstructX) in {
+
+lin card_N = mkkN "kort" neutrum ;
+lin water_MCN = mkkN "vatten" neutrum ;
+lin john_PN = mkPN "john" ;
+lin apple_PN = mkPN "apple" ;
+lin sleep_V = IrregSwe.sova_V ;
+lin young_A = mkA "ung" ;
+lin dog_N = mkkN "hund" utrum ;
+lin animal_N = mkkN "djur" neutrum ;
+lin wait_V = mkV "vänta" ;
+lin man_N = mkCN (mkN "man" "män") ;
+lin woman_N = mkkN "kvinna" utrum ;
+lin give_V3 = mkV3 giva_V (mkPrep []) (mkPrep "till") ;
+lin tired_A = mkA "trött" ;
+lin rich_A = mkA "rik" ;
+lin customer_N = mkCN (mkN "kund" "kunder") ;
+lin enter_V2 = mkV2 "beträda" ;
+lin bank_N = mkCN (mkN "bank" "banker") ;
+lin satisfied_A = mkA "nöjd" ;
+lin lucky_A = mkA "lycklig" ;
+lin well_known_A = mkA "välkänd" ;
+lin important_A = mkA "viktig" ;
+lin expensive_A = mkA "dyr" ;
+lin fill_in_V2 = mkV2 "fyller" ;
+lin form_N = mkkN "formulär" neutrum ;
+lin age_N = mkkN "ålder" utrum ;
+lin teacher_N = mkkN "lärare" utrum ;
+lin successful_A = mkA "framgångsrik" ;
+lin fond_A2 = mkA2 (mkA "kär") (mkPrep "i") ;
+lin garden_N = mkkN "trädgård" utrum ;
+lin morning_N = mkCN (mkN "morgon" "morgnar") ;
+lin code_N = mkCN (mkN "kod" "koder") ;
+lin drinkable_A = mkA "drickbar" ;
+lin work_V = mkV "arbeta" ;
+lin admitted_A = mkA "godkänd" ;
+lin eat_V2 = mkV2 äta_V ;
+lin burger_N = mkkN "burgare" utrum ;
+lin earn_V2 = mkV2 "tjäna" ;
+lin income_N = mkCN (mkN "inkomst" "inkomster") ;
+lin england_PN = mkPN "England" ;
+lin beginning_N = mkCN (mkN "början" "början") ;
+lin office_N = mkkN "kontor" neutrum ;
+lin interested_A2 = mkA2 (mkA "intresserad") (mkPrep "i") ;
+lin classroom_N = mkkN "klassrum" neutrum ;
+lin manually_Adv = mkAdv "manuellt" ;
+lin slot_N = mkkN "hål" neutrum ;
+lin patiently_Adv = mkAdv "tålamodigt" ;
+lin course_N = mkCN (mkN "kurs" "kurser") ;
+lin carefully_Adv = mkAdv "försiktigt" ;
+lin time_N = mkCN (mkN "tid" "tider") ;
+lin believe_V = mkV "tro" ;
+lin seriously_Adv = mkAdv "seriöst" ;
+lin clerk_N = mkkN "bokhållare" utrum ;
+lin screen_N = mkkN "skärm" neutrum ;
+lin blink_V = mkV "blinka" ;
+lin bed_N = mkkN "säng" utrum ;
+lin container_N = mkkN "behållare" utrum ;
+lin automated_teller_N = mkCN (mkN "automat" "automater") ;
+lin reject_V2 = mkV2 "förkasta" ;
+lin accept_V2 = mkV2 "acceptera" ;
+lin type_V2 = mkV2 "inmata" ; ----
+lin know_V = veta_V ;
+lin manager_N = mkCN (mkN "chef" "chefer") ;
+lin oversleep_V = mkV "försova" "försov" "försovit" ;
+lin valid_A = mkA "giltig" ;
+lin see_V2 = mkV2 se_V ;
+lin bark_V = mkV "skäller" ;
+lin go_V2 = mkV2 gå_V to_Prep ;
+lin brother_N = mkCN (mkN "bror" "bröder") ;
+lin mary_PN = mkPN "Mary" ;
+lin machine_N = mkCN (mkN "maskin" "maskiner") ;
+lin correct_A = mkA "korrekt" ;
+
+oper mkkN : Str -> Gender -> CN = \n,g -> mkCN (ParadigmsSwe.mkN n g) ;
+
+lin
+ in_Prep = SyntaxSwe.in_Prep ;
+ at_Prep = mkPrep "på" ;
+ into_Prep = mkPrep "in i" ;
+
+}