1
0
forked from GitHub/gf-core

tests for verbs in uusisuomi

This commit is contained in:
aarne
2008-01-06 12:16:07 +00:00
parent 238dba6264
commit 330350325f
9 changed files with 641 additions and 36 deletions

View File

@@ -0,0 +1,284 @@
--# -path=.:alltenses
resource Conjugations = ResFin ** open MorphoFin,Declensions,CatFin,Prelude in {
flags optimize=all ;
oper
cHukkua : (_,_ : Str) -> VForms = \hukkua,hukun ->
let
a = last hukkua ;
hukku = init hukkua ;
huku = init hukun ;
u = last huku ;
i = case u of {
"e" | "i" => [] ;
_ => u
} ;
y = uyHarmony a ;
hukkui = init hukku + i + "i" ;
hukui = init huku + i + "i" ;
in vForms12
hukkua
hukun
(hukku + u)
(hukku + "v" + a + "t")
(hukku + "k" + a + a)
(huku + "t" + a + a + "n")
(hukui + "n")
hukkui
(hukkui + "si")
(hukku + "n" + y + "t")
(huku + "tt" + y)
(hukku + "nee") ;
cOttaa : (_,_,_,_ : Str) -> VForms = \ottaa,otan,otin,otti ->
let
a = last ottaa ;
aa = a + a ;
u = uyHarmony a ;
ota = init otan ;
otta = init ottaa ;
ote = init ota + "e" ;
in vForms12
ottaa
otan
ottaa
(otta + "v" + a + "t")
(otta + "k" + aa)
(ote + "t" + aa + "n")
otin
otti
(otta + "isi")
(otta + "n" + u + "t")
(ote + "tt" + u)
(otta + "nee") ;
cJuosta : (_,_ : Str) -> VForms = \juosta,juoksen ->
let
a = last juosta ;
juos = Predef.tk 2 juosta ;
juoss = juos + last juos ;
juokse = init juoksen ;
juoks = init juokse ;
u = uyHarmony a ;
juoksi = juoks + "i" ;
in vForms12
juosta
(juoksen)
(juokse + "e")
(juokse + "v" + a + "t")
(juos + "k" + a + a)
(juosta + a + "n")
(juoks + "in")
(juoks + "i")
(juoks + "isi")
(juoss + u + "t")
(juos + "t" + u)
(juoss + "ee") ;
cJuoda : (_ : Str) -> VForms = \juoda ->
let
a = last juoda ;
juo = Predef.tk 2 juoda ;
joi = case last juo of {
"i" => juo ; -- naida
o => Predef.tk 2 juo + o + "i"
} ;
u = uyHarmony a ;
in vForms12
juoda
(juo + "n")
(juo)
(juo + "v" + a + "t")
(juo + "k" + a + a)
(juoda + a + "n")
(joi + "n")
(joi)
(joi + "si")
(juo + "n" + u + "t")
(juo + "t" + u)
(juo + "nee") ;
cPudota : (_,_ : Str) -> VForms = \pudota,putosi ->
let
a = last pudota ;
pudot = init pudota ;
pudo = init pudot ;
ai = case last pudo of {
"a" | "ä" => <[], "i"> ;
_ => <a, a + "i">
} ;
puto = Predef.tk 2 putosi ;
u = uyHarmony a ;
in vForms12
pudota
(puto + a + "n")
(puto + ai.p1 + a)
(puto + a + "v" + a + "t")
(pudot + "k" + a + a)
(pudot + a + a + "n")
(puto + "sin")
(puto + "si")
(puto + ai.p2 + "si")
(pudo + "nn" + u + "t")
(pudot + "t" + u)
(pudo + "nnee") ;
cHarkita : (_ : Str) -> VForms = \harkita ->
let
a = last harkita ;
harkit = init harkita ;
harki = init harkit ;
u = uyHarmony a ;
in vForms12
harkita
(harkit + "sen")
(harkit + "se")
(harkit + "sev" + a + "t")
(harkit + "k" + a + a)
(harkit + a + a + "n")
(harkit + "sin")
(harkit + "si")
(harkit + "sisi")
(harki + "nn" + u + "t")
(harkit + "t" + u)
(harki + "nnee") ;
cValjeta : (_,_ : Str) -> VForms = \valjeta,valkeni ->
let
a = last valjeta ;
valjet = init valjeta ;
valken = init valkeni ;
valje = init valjet ;
u = uyHarmony a ;
in vForms12
valjeta
(valken + "en")
(valken + "ee")
(valken + "ev" + a + "t")
(valjet + "k" + a + a)
(valjet + a + a + "n")
(valken + "in")
(valken + "i")
(valken + "isi")
(valje + "nn" + u + "t")
(valjet + "t" + u)
(valje + "nnee") ;
cKuunnella : (_,_ : Str) -> VForms = \kuunnella,kuuntelin ->
let
a = last kuunnella ;
kuunnel = Predef.tk 2 kuunnella ;
kuuntel = Predef.tk 2 kuuntelin ;
u = uyHarmony a ;
in vForms12
kuunnella
(kuuntel + "en")
(kuuntel + "ee")
(kuuntel + "ev" + a + "t")
(kuunnel + "k" + a + a)
(kuunnella + a + "n")
(kuuntel + "in")
(kuuntel + "i")
(kuuntel + "isi")
(kuunnel + "l" + u + "t")
(kuunnel + "t" + u)
(kuunnel + "lee") ;
-- auxiliaries
uyHarmony : Str -> Str = \a -> case a of {
"a" => "u" ;
_ => "y"
} ;
VForms : Type = Predef.Ints 11 => Str ;
vForms12 : (x1,_,_,_,_,_,_,_,_,_,_,x12 : Str) -> VForms =
\olla,olen,on,ovat,olkaa,ollaan,olin,oli,olisi,ollut,oltu,lienee ->
table {
0 => olla ;
1 => olen ;
2 => on ;
3 => ovat ;
4 => olkaa ;
5 => ollaan ;
6 => olin ;
7 => oli ;
8 => olisi ;
9 => ollut ;
10 => oltu ;
11 => lienee
} ;
vforms2V : VForms -> V = \vh ->
let
tulla = vh ! 0 ;
tulen = vh ! 1 ;
tulee = vh ! 2 ;
tulevat = vh ! 3 ;
tulkaa = vh ! 4 ;
tullaan = vh ! 5 ;
tulin = vh ! 6 ;
tuli = vh ! 7 ;
tulisi = vh ! 8 ;
tullut = vh ! 9 ;
tultu = vh ! 10 ;
tullun = vh ! 11 ;
tule_ = init tulen ;
tuli_ = init tulin ;
a = last tulkaa ;
tulko = Predef.tk 2 tulkaa + (ifTok Str a "a" "o" "ö") ;
tulkoo = tulko + last tulko ;
tullee = Predef.tk 2 tullut + "ee" ;
tulleen = (nForms2N (dRae tullut (tullee + "n"))).s ;
tullu : Str = weakGrade tultu ;
tullun = (nForms2N (dUkko tultu (tullu + "n"))).s ;
tulema = Predef.tk 3 tulevat + "m" + a ;
vat = "v" + a + "t"
in
{s = table {
Inf Inf1 => tulla ;
Presn Sg P1 => tule_ + "n" ;
Presn Sg P2 => tule_ + "t" ;
Presn Sg P3 => tulee ;
Presn Pl P1 => tule_ + "mme" ;
Presn Pl P2 => tule_ + "tte" ;
Presn Pl P3 => tulevat ;
Impf Sg P1 => tuli_ + "n" ; --# notpresent
Impf Sg P2 => tuli_ + "t" ; --# notpresent
Impf Sg P3 => tuli ; --# notpresent
Impf Pl P1 => tuli_ + "mme" ; --# notpresent
Impf Pl P2 => tuli_ + "tte" ; --# notpresent
Impf Pl P3 => tuli + vat ; --# notpresent
Condit Sg P1 => tulisi + "n" ; --# notpresent
Condit Sg P2 => tulisi + "t" ; --# notpresent
Condit Sg P3 => tulisi ; --# notpresent
Condit Pl P1 => tulisi + "mme" ; --# notpresent
Condit Pl P2 => tulisi + "tte" ; --# notpresent
Condit Pl P3 => tulisi + vat ; --# notpresent
Imper Sg => tule_ ;
Imper Pl => tulkaa ;
ImperP3 Sg => tulkoo + "n" ;
ImperP3 Pl => tulkoo + "t" ;
ImperP1Pl => tulkaa + "mme" ;
ImpNegPl => tulko ;
Pass True => tullaan ;
Pass False => Predef.tk 2 tullaan ;
PastPartAct (AN n) => tulleen ! n ;
PastPartAct AAdv => tullee + "sti" ;
PastPartPass (AN n) => tullun ! n ;
PastPartPass AAdv => tullu + "sti" ;
Inf Inf3Iness => tulema + "ss" + a ;
Inf Inf3Elat => tulema + "st" + a ;
Inf Inf3Illat => tulema + a + "n" ;
Inf Inf3Adess => tulema + "ll" + a ;
Inf Inf3Abess => tulema + "tt" + a
} ;
sc = NPCase Nom ;
lock_V = <>
} ;
}

View File

@@ -305,6 +305,18 @@ resource Declensions = ResFin ** open MorphoFin,CatFin,Prelude in {
(suurimp + "ien") (suurimp + "i" + a)
(suurimp + "in" + a) (suurimm + "iss" + a) (suurimp + "iin") ;
-- for verb participle forms
dOttanut : Str -> NForms = \ottanut ->
let
a = vowHarmony ottanut ;
ottane = init ottanut + "e" ;
ottanee = ottane + "e" ;
in nForms10
ottanut (ottanee + "n") (ottanut + "t" + a)
(ottanee + "n" + a) (ottanee + "seen")
(ottane + "iden") (ottane + "it" + a)
(ottane + "in" + a) (ottane + "iss" + a) (ottane + "isiin") ;
-------------------
-- auxiliaries ----
@@ -455,9 +467,9 @@ resource Declensions = ResFin ** open MorphoFin,CatFin,Prelude in {
"rr" + e => "rt" + e ;
"ll" + a => "lt" + a ;
h@("h" | "l") + "j" + e => h + "k" + e ; -- pohje/lahje impossible
("hk" | "sk" | "sp" | "st") + _ => nke ; -- viuhke,kuiske
a + k@("k" | "p" | "t") + e@("e"|"a"|"ä"|"u"|"i") => a + k + k + e ;
a + "d" + e@("e"|"a"|"ä"|"u"|"i") => a + "t" + e ;
("tk" | "hk" | "sk" | "sp" | "st") + _ => nke ; -- viuhke,kuiske
a + k@("k"|"p"|"t") + e@("e"|"a"|"ä"|"u"|"i"|"o"|"ö") => a + k + k + e ;
a + "d" + e@("e"|"a"|"ä"|"u"|"i"|"o"|"ö") => a + "t" + e ;
s + a@("a" | "ä") + "e" => s + a + "ke" ; -- säe, tae
a + "v" + e@("e"|"a"|"ä"|"u"|"i") => a + "p" + e ; -- taive/toive imposs
ase => ase

View File

@@ -1,6 +1,15 @@
LEX=Omat
CAT=N
all:
all: nouns
verbs:
export CAT=V ; export LEX=VNSSK ; make -e tests
export CAT=V ; export LEX=VOmat ; make -e tests
cat all-diff-V* >all-differences-V
cat all-differences-V
nouns:
export LEX=NSSK ; make -e tests
export LEX=Omat ; make -e tests
export LEX=Swadesh ; make -e tests
@@ -11,11 +20,11 @@ all:
cat all-differences
gf-files:
runghc MkLex.hs 0 $(LEX) > $(LEX)Abs.gf
runghc MkLex.hs 1 $(LEX) > $(LEX)1.gf
runghc MkLex.hs 2 $(LEX) > $(LEX)2.gf
runghc MkLex.hs 3 $(LEX) > $(LEX)3.gf
runghc MkLex.hs 4 $(LEX) > $(LEX)4.gf
runghc MkLex.hs 0 $(CAT) $(LEX) > $(LEX)Abs.gf
runghc MkLex.hs 1 $(CAT) $(LEX) > $(LEX)1.gf
runghc MkLex.hs 2 $(CAT) $(LEX) > $(LEX)2.gf
runghc MkLex.hs 3 $(CAT) $(LEX) > $(LEX)3.gf
runghc MkLex.hs 4 $(CAT) $(LEX) > $(LEX)4.gf
experiments: gf-files
echo "gt -cat=Utt | l | wf exper1-$(LEX).txt" | gf -s $(LEX)1.gf

View File

@@ -5,17 +5,17 @@ import Char
-- generate Finnish lexicon implementations with 1 or more
-- characteristic arguments
-- usage: runghc MkLex.hs 3 name
-- usage: runghc MkLex.hs 3 cat name
main = do
i:tgt:_ <- getArgs
i:cat:tgt:_ <- getArgs
let src = "correct-" ++ tgt ++ ".txt"
ss <- readFile src >>= return . filter (not . (all isSpace)) . lines
initiate tgt i
mapM_ (mkLex (read i) . uncurry (++)) (zip nums ss)
initiate tgt cat i
mapM_ (mkLex cat (read i) . uncurry (++)) (zip nums ss)
putStrLn "}"
initiate tgt i = mapM_ putStrLn [
initiate tgt cat i = mapM_ putStrLn [
"--# -path=.:alltenses",
"",
header i,
@@ -23,55 +23,58 @@ initiate tgt i = mapM_ putStrLn [
]
where
header i = case i of
"0" -> "abstract " ++ tgt ++ "Abs = Cat ** {\n\nfun testN : N -> Utt ;\n"
"0" -> unlines [
"abstract " ++ tgt ++ "Abs = Cat ** {",
"fun testN : N -> Utt ;",
"fun testV : V -> Utt ;"
]
_ -> unlines [
"concrete " ++ tgt ++ i ++
" of " ++ tgt ++ "Abs = CatFin ** open Nominal, ResFin, Prelude in {",
" of " ++ tgt ++
"Abs = CatFin ** open Nominal, Verbal, ResFin, Prelude in {",
"",
"lin testN talo = let t = talo.s in ss (",
" t ! NCase Sg Nom ++",
" t ! NCase Sg Gen ++",
" t ! NCase Sg Part ++",
" t ! NCase Sg Ess ++",
" t ! NCase Sg Illat ++",
" t ! NCase Pl Gen ++",
" t ! NCase Pl Part ++",
" t ! NCase Pl Ess ++",
" t ! NCase Pl Iness ++",
" t ! NCase Pl Illat",
" ) ;"
"lin testN = showN ;",
"lin testV = showV ;"
]
nums = map prt [1 ..] where
prt i = (if i < 10 then "0" else "") ++ show i ++ ". "
mkLex 0 line = case words line of
mkLex cat 0 line = case words line of
num:sana:_ -> do
let nimi = "n" ++ init num ++ "_" ++ sana
putStrLn $ "fun " ++ nimi ++ "_N : N ;"
putStrLn $ "fun " ++ nimi ++ "_" ++ cat ++ " : " ++ cat ++ " ;"
_ -> return ()
mkLex 1 line = case words line of
mkLex cat 1 line = case words line of
num:sana:_ -> do
let nimi = "n" ++ init num ++ "_" ++ sana
putStrLn $ "lin " ++ nimi ++ "_N = mkN \"" ++ sana ++ "\" ;"
putStrLn $ "lin " ++ nimi ++
"_" ++ cat ++ " = mk" ++ cat ++ " \"" ++ sana ++ "\" ;"
_ -> return ()
mkLex 2 line = case words line of
mkLex "V" _ line = case words line of
num:sana:_:_:_:_:_:_:sanan:_ -> do
let nimi = "n" ++ init num ++ "_" ++ sana
putStrLn $ "lin " ++ nimi ++
"_V = mk2V <\"" ++ sana ++ "\", \"" ++ sanan ++ "\"> ;"
_ -> return ()
mkLex "N" 2 line = case words line of
num:sana:sanan:_ -> do
let nimi = "n" ++ init num ++ "_" ++ sana
putStrLn $ "lin " ++ nimi ++
"_N = mkN \"" ++ sana ++ "\" \"" ++ sanan ++ "\" ;"
_ -> return ()
mkLex 3 line = case words line of
mkLex "N" 3 line = case words line of
num:sana:sanan:_:_:_:_:sanoja:_ -> do
let nimi = "n" ++ init num ++ "_" ++ sana
putStrLn $ "lin " ++ nimi ++
"_N = mkN \"" ++ sana ++ "\" \"" ++ sanan ++ "\" \"" ++ sanoja ++ "\" ;"
_ -> return ()
mkLex 4 line = case words line of
mkLex "N" 4 line = case words line of
num:sana:sanan:sanaa:_:_:_:sanoja:_ -> do
let nimi = "n" ++ init num ++ "_" ++ sana
putStrLn $ "lin " ++ nimi ++
@@ -82,7 +85,7 @@ mkLex 4 line = case words line of
-- to initiate from a noun list that has compounds
mkLex 11 line = case words line of
mkLex "N" 11 line = case words line of
_:"--":_ -> return ()
num:sana0:_ -> do
let sana = uncompound sana0

View File

@@ -21,6 +21,19 @@ resource Nominal = ResFin ** open MorphoFin,Declensions,CatFin,Prelude in {
mkA : (hyva,parempi,paras : N) -> (hyvin,paremmin,parhaiten : Str) -> A ;
} ;
showN : N -> Utt = \talo ->
let t = talo.s in ss (
t ! NCase Sg Nom ++
t ! NCase Sg Gen ++
t ! NCase Sg Part ++
t ! NCase Sg Ess ++
t ! NCase Sg Illat ++
t ! NCase Pl Gen ++
t ! NCase Pl Part ++
t ! NCase Pl Ess ++
t ! NCase Pl Iness ++
t ! NCase Pl Illat
) ** {lock_Utt = <>} ;
mkN = overload {
mkN : (talo : Str) -> N = mk1N ;

View File

@@ -0,0 +1,85 @@
--# -path=.:alltenses
resource Verbal = ResFin **
open MorphoFin,Declensions,Conjugations,CatFin,Prelude in {
flags optimize=noexpand ;
oper
mkV = overload {
mkV : (huutaa : Str) -> V = mk1V ;
mkV : (huutaa,huusi : Str) -> V = \s,t -> mk2V <s,t> ;
} ;
showV : V -> Utt = \v -> ss (
v.s ! Inf Inf1 ++
v.s ! Presn Sg P1 ++
v.s ! Presn Sg P3 ++
v.s ! Presn Pl P3 ++
v.s ! Imper Pl ++
v.s ! Pass True ++
v.s ! Impf Sg P1 ++
v.s ! Impf Sg P3 ++
v.s ! Condit Sg P3 ++
v.s ! PastPartAct (AN (NCase Sg Nom)) ++
v.s ! PastPartPass (AN (NCase Sg Nom))
) ** {lock_Utt = <>} ;
mk1V : Str -> V = \s -> vforms2V (vForms1 s) ;
mk2V : (_ : Str * Str) -> V = \st ->
vforms2V (vForms2 st.p1 st.p2) ;
vForms1 : Str -> VForms = \ottaa ->
let
a = last ottaa ;
otta = init ottaa ;
ott = init otta ;
ots = init ott + "s" ;
ota = weakGrade otta ;
otin = init (Declensions.strongGrade (init ott)) + "elin" ;
ot = init ota ;
in
case ottaa of {
_ + ("e" | "i" | "o" | "u" | "y" | "ö") + ("a" | "ä") =>
cHukkua ottaa (ota + "n") ;
_ + ("l" | "n" | "r") + ("taa" | "tää") =>
cOttaa ottaa (ota + "n") (ots + "in") (ots + "i") ;
("" | C_) + ("a" | "e" | "i") + _ + "aa" =>
cOttaa ottaa (ota + "n") (ot + "oin") (ott + "oi") ;
_ + ("aa" | "ää") =>
cOttaa ottaa (ota + "n") (ot + "in") (ott + "i") ;
_ + ("ella" | "ellä") =>
cKuunnella ottaa otin ;
_ + ("osta" | "östä") =>
cJuosta ottaa (init ott + "ksen") ;
_ + ("st" | "nn" | "ll" | "rr") + ("a" | "ä") =>
cJuosta ottaa (ott + "en") ;
_ + ("ita" | "itä") =>
cHarkita ottaa ;
_ + ("eta" | "etä" | "ota" | "ata" | "uta" | "ytä" | "ätä" | "ötä") =>
cPudota ottaa (Declensions.strongGrade ott + "si") ;
_ + ("da" | "dä") =>
cJuoda ottaa ;
_ => Predef.error (["expected infinitive, found"] ++ ottaa)
} ;
vForms2 : (_,_ : Str) -> VForms = \huutaa,huusi ->
let
huuda = weakGrade (init huutaa) ;
huusin = weakGrade huusi + "n" ;
autoin = weakGrade (init huusi) + "in" ;
in
case <huutaa,huusi> of {
<_ + ("taa" | "tää"), _ + ("oi" | "öi")> =>
cOttaa huutaa (huuda + "n") autoin huusi ;
<_ + ("taa" | "tää"), _ + "i"> =>
cOttaa huutaa (huuda + "n") huusin huusi ;
<_ + ("eta" | "etä"), _ + "eni"> =>
cValjeta huutaa huusi ;
<_ + ("ita" | "itä"), _ + "isi"> =>
cPudota huutaa huusi ;
_ => vForms1 huutaa
} ;
}

View File

@@ -0,0 +1,90 @@
punoa punon punoo punovat punokaa punotaan punoin punoi punoisi punonut punottu
muistaa muistan muistaa muistavat muistakaa muistetaan muistin muisti muistaisi muistanut muistettu
huutaa huudan huutaa huutavat huutakaa huudetaan huusin huusi huutaisi huutanut huudettu
soutaa soudan soutaa soutavat soutakaa soudetaan soudin souti soutaisi soutanut soudettu
puoltaa puollan puoltaa puoltavat puoltakaa puolletaan puolsin puolsi puoltaisi puoltanut puollettu
murtaa murran murtaa murtavat murtakaa murretaan mursin mursi murtaisi murtanut murrettu
sortaa sorran sortaa sortavat sortakaa sorretaan sorsin sorsi sortaisi sortanut sorrettu
pahentaa pahennan pahentaa pahentavat pahentakaa pahennetaan pahensin pahensi pahentaisi pahentanut pahennettu
kaivaa kaivan kaivaa kaivavat kaivakaa kaivetaan kaivoin kaivoi kaivaisi kaivanut kaivettu
haastaa haastan haastaa haastavat haastakaa haastetaan haastoin haastoi haastaisi haastanut haastettu
paistaa paistan paistaa paistavat paistakaa paistetaan paistoin paistoi paistaisi paistanut paistettu
saartaa saarran saartaa saartavat saartakaa saarretaan saarsin saarsi saartaisi saartanut saarrettu
laskea lasken laskee laskevat laskekaa lasketaan laskin laski laskisi laskenut laskettu
tuntea tunnen tuntee tuntevat tuntekaa tunnetaan tunsin tunsi tuntisi tuntenut tunnettu
potea poden potee potevat potekaa podetaan podin poti potisi potenut podettu
lähteä lähden lähtee lähtevät lähtekää lähdetään lähdin lähti lähtisi lähtenyt lähdetty
sallia sallin sallii sallivat sallikaa sallitaan sallin salli sallisi sallinut sallittu
naida nain nai naivat naikaa naidaan nain nai naisi nainut naitu
saada saan saa saavat saakaa saadaan sain sai saisi saanut saatu
myydä myyn myy myyvät myykää myydään myin myi myisi myynyt myyty
juoda juon juo juovat juokaa juodaan join joi joisi juonut juotu
viedä vien vie vievät viekää viedään vein vei veisi vienyt viety
käydä käyn käy käyvät käykää käykö kävin kävi kävisi käynyt käyty
nuolaista nuolaisen nuolaisee nuolaisevat nuolaiskaa nuolaistaan nuolaisin nuolaisi nuolaisisi nuolaissut nuolaistu
tulla tulen tulee tulevat tulkaa tullaan tulin tuli tulisi tullut tultu
purra puren puree purevat purkaa purraan purin puri purisi purrut purtu
mennä menen menee menevät menkää mennään menin meni menisi mennyt menty
katsella katselen katselee katselevat katselkaa katsellaan katselin katseli katselisi katsellut katseltu
arvailla arvailen arvailee arvailevat arvailkaa arvaillaan arvailin arvaili arvailisi arvaillut arvailtu
haravoida haravoin haravoi haravoivat haravoikaa haravoidaan haravoin haravoi haravoisi haravoinut haravoitu
valita valitsen valitse valitsevat valitkaa valitaan valitsin valitsi valitsisi valinnut valittu
juosta juoksen juoksee juoksevat juoskaa juostaan juoksin juoksi juoksisi juossut juostu
nähdä näen näkee näkevät nähkää nähkö näin näki näkisi nähnyt nähty
aleta alenen alenee alenevat aletkaa aletaan alenin aleni alenisi alennut alettu
salata salaan salaa salaavat salatkaa salataan salasin salasi salaisi salannut salattu
katketa katkean katkeaa katkeavat katketkaa katketaan katkesin katkesi katkeaisi katkennut katkettu
selvitä selviän selviää selviävät selvitkää selvitään selvisin selvisi selviäisi selvinnyt selvitty
kohota kohoan kohoaa kohoavat kohotkaa kohotaan kohosin kohosi kohoaisi kohonnut kohottu
haluta haluan haluaa haluavat halutkaa halutaan halusin halusi haluaisi halunnut haluttu
palata palaan palaa palaavat palatkaa palataan palasin palasi palaisi palannut palattu
kihistä kihisen kihisee kihisevät kihiskää kihistään kihisin kihisi kihisisi kihissyt kihisty
rakentaa rakennan rakentaa rakentavat rakentakaa rakennetaan rakensin rakensi rakentaisi rakentanut rakennettu
taitaa taidan taitaa taitavat taitakaa taidetaan taisin taisi taitaisi tainnut/taitanut taidettu
antautua antaudun antautuu antautuvat antautukaa antaudutaan antauduin antautui antautuisi antautunut antauduttu
kaata kaadan kaataa kaatavat kaatkaa kaatko kaasin kaasi kaataisi kaannut kaattu

View File

@@ -0,0 +1,108 @@
hakea haen hakee hakevat hakekaa haetaan hain haki hakisi hakenut haettu
päteä päden pätee pätevät pätekää pädetään pädin päti pätisi pätenyt pädetty
sopia sovin sopii sopivat sopikaa sovitaan sovin sopi sopisi sopinut sovittu
räkiä räin räkii räkivät räkikää räitään räin räki räkisi räkinyt räitty
sitoa sidon sitoo sitovat sitokaa sidotaan sidoin sitoi sitoisi sitonut sidottu
hukkua hukun hukkuu hukkuvat hukkukaa hukutaan hukuin hukkui hukkuisi hukkunut hukuttu
häipyä häivyn häipyy häipyvät häipykää häivytään häivyin häipyi häipyisi häipynyt häivytty
mysöä mysön mysöö mysövät mysökää mysötään mysöin mysöi mysöisi mysönyt mysötty
kiiltää kiillän kiiltää kiiltävät kiiltäkää kiilletään kiilsin kiilsi kiiltäisi kiiltänyt kiilletty
sammaltaa sammallan sammaltaa sammaltavat sammaltakaa sammalletaan sammalsin sammalsi sammaltaisi sammaltanut sammallettu
oksentaa oksennan oksentaa oksentavat oksentakaa oksennetaan oksensin oksensi oksentaisi oksentanut oksennettu
kumartaa kumarran kumartaa kumartavat kumartakaa kumarretaan kumarsin kumarsi kumartaisi kumartanut kumarrettu
kattaa katan kattaa kattavat kattakaa katetaan katoin kattoi kattaisi kattanut katettu
otattaa otatan otattaa otattavat otattakaa otatetaan otatin otatti otattaisi otattanut otatettu
opastaa opastan opastaa opastavat opastakaa opastetaan opastin opasti opastaisi opastanut opastettu
sataa sadan sataa satavat satakaa sadetaan sadoin satoi sataisi satanut sadettu
auttaa autan auttaa auttavat auttakaa autetaan autoin auttoi auttaisi auttanut autettu
pitää pidän pitää pitävät pitäkää pidetään pidin piti pitäisi pitänyt pidetty
vetää vedän vetää vetävät vetäkää vedetään vedin veti vetäisi vetänyt vedetty
ravistaa ravistan ravistaa ravistavat ravistakaa ravistetaan ravistin ravisti ravistaisi ravistanut ravistettu
kuunnella kuuntelen kuuntelee kuuntelevat kuunnelkaa kuunnellaan kuuntelin kuunteli kuuntelisi kuunnellut kuunneltu
hypellä hyppelen hyppelee hyppelevät hypelkää hypellään hyppelin hyppeli hyppelisi hypellyt hypelty
kävellä kävelen kävelee kävelevät kävelkää kävellään kävelin käveli kävelisi kävellyt kävelty
juosta juoksen juoksee juoksevat juoskaa juostaan juoksin juoksi juoksisi juossut juostu
syöstä syöksen syöksee syöksevät syöskää syöstään syöksin syöksi syöksisi syössyt syösty
panna panen panee panevat pankaa pannaan panin pani panisi pannut pantu
haista haisen haisee haisevat haiskaa haistaan haisin haisi haisisi haissut haistu
purra puren puree purevat purkaa purraan purin puri purisi purrut purtu
mennä menen menee menevät menkää mennään menin meni menisi mennyt menty
palella palelen palelee palelevat palelkaa palellaan palelin paleli palelisi palellut paleltu
harkita harkitsen harkitse harkitsevat harkitkaa harkitaan harkitsin harkitsi harkitsisi harkinnut harkittu
merkitä merkitsen merkitse merkitsevät merkitkää merkitään merkitsin merkitsi merkitsisi merkinnyt merkitty
haljeta halkean halkeaa halkeavat haljetkaa haljetaan halkesin halkesi halkeaisi haljennut haljettu
valjeta valkenen valkenee valkenevat valjetkaa valjetaan valkenin valkeni valkenisi valjennut valjettu
kerjetä kerkeän kerkeää kerkeävät kerjetkää kerjetään kerkesin kerkesi kerkeäisi kerjennyt kerjetty
pelätä pelkään pelkää pelkäävät pelätkää pelätään pelkäsin pelkäsi pelkäisi pelännyt pelätty
paeta pakenen pakenee pakenevat paetkaa paetaan pakenin pakeni pakenisi paennut paettu
pudota putoan putoaa putoavat pudotkaa pudotaan putosin putosi putoaisi pudonnut pudottu
vastata vastaan vastaa vastaavat vastatkaa vastataan vastasin vastasi vastaisi vastannut vastattu
karhuta karhuan karhuaa karhuavat karhutkaa karhutaan karhusin karhusi karhuaisi karhunnut karhuttu
älytä älyän älyää älyävät älytkää älytään älysin älysi älyäisi älynnyt älytty
hypätä hyppään hyppää hyppäävät hypätkää hypätään hyppäsin hyppäsi hyppäisi hypännyt hypätty
yrjötä yrjöän yrjöää yrjöävät yrjötkää yrjötään yrjösin yrjösi yrjöäisi yrjönnyt yrjötty
ällötä ällöän ällöää ällöävät ällötkää ällötään ällösin ällösi ällöäisi ällönnyt ällötty
naida nain nai naivat naikaa naidaan nain nai naisi nainut naitu
uida uin ui uivat uikaa uidaan uin ui uisi uinut uitu
haravoida haravoin haravoi haravoivat haravoikaa haravoidaan haravoin haravoi haravoisi haravoinut haravoitu
saada saan saa saavat saakaa saadaan sain sai saisi saanut saatu
jäädä jään jää jäävät jääkää jäädään jäin jäi jäisi jäänyt jääty
huutaa huudan huutaa huutavat huutakaa huudetaan huudin huuti huutaisi huutanut huudettu
olla olen olee olevat olkaa ollaan olin oli olisi ollut oltu
tehdä teen tekee tekevät tehkää tehdään tein teki tekisi tehnyt tehty
nähdä näen näkee näkevät nähkää nähdään näin näki näkisi nähnyt nähty
käydä käyn käy käyvät käykää käydään kävin kävi kävisi käynyt käyty

View File

@@ -85,6 +85,7 @@ computeTermOpt rec gr = comp where
(_, FV as) -> mapM (\c -> comp g (App f' c)) as >>= return . variants
(FV fs, _) -> mapM (\c -> comp g (App c a')) fs >>= return . variants
(Abs x b,_) -> comp (ext x a' g) b
(QC _ _,_) -> returnC $ App f' a'
(Alias _ _ d, _) -> comp g (App d a')