From 83cfc496a407e3c8fbbcb3622700accf433c0d3a Mon Sep 17 00:00:00 2001 From: adelon <22380201+adelon@users.noreply.github.com> Date: Tue, 21 Jul 2026 11:10:31 +0200 Subject: [PATCH 1/6] Fin: fix elative of `ne` --- src/finnish/MorphoFin.gf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/finnish/MorphoFin.gf b/src/finnish/MorphoFin.gf index c2c1b6c9..e54293a8 100644 --- a/src/finnish/MorphoFin.gf +++ b/src/finnish/MorphoFin.gf @@ -1064,7 +1064,7 @@ oper Transl => "niiksi" ; Ess => "niinä" ; Iness => "niissä" ; - Elat => "niitä" ; + Elat => "niistä" ; Illat => "niihin" ; Adess => "niillä" ; Ablat => "niiltä" ; From 00790d98faf5197a1485b88db282726c263eeadb Mon Sep 17 00:00:00 2001 From: adelon <22380201+adelon@users.noreply.github.com> Date: Tue, 21 Jul 2026 11:45:15 +0200 Subject: [PATCH 2/6] Eng: fix simple past of stride and bestride --- src/english/IrregEng.gf | 2 +- src/morphodict/MorphoDictEng.gf | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/english/IrregEng.gf b/src/english/IrregEng.gf index 7b9c48dd..71f3b5cf 100644 --- a/src/english/IrregEng.gf +++ b/src/english/IrregEng.gf @@ -149,7 +149,7 @@ flags optimize=values ; stick_V = irregV "stick" "stuck" "stuck" ; sting_V = irregV "sting" "stung" "stung" ; stink_V = irregV "stink" "stank" "stunk" ; - stride_V = irregV "stride" "strod" "stridden" ; + stride_V = irregV "stride" "strode" "stridden" ; strike_V = irregV "strike" "struck" "struck" ; string_V = irregV "string" "strung" "strung" ; strive_V = irregV "strive" "strove" "striven" ; diff --git a/src/morphodict/MorphoDictEng.gf b/src/morphodict/MorphoDictEng.gf index 7ad0670e..000fa227 100644 --- a/src/morphodict/MorphoDictEng.gf +++ b/src/morphodict/MorphoDictEng.gf @@ -5345,7 +5345,7 @@ lin bestir_V = mkV "bestir" "bestirred" "bestirred" ; lin bestow_V = mkV "bestow" "bestowed" "bestowed" ; lin bestowal_N = mkN "bestowal" "bestowals" ; lin bestrew_V = mkV "bestrew" "bestrewed" "bestrewed" ; -lin bestride_V = mkV "bestride" "bestrod" "bestridden" ; +lin bestride_V = mkV "bestride" "bestrode" "bestridden" ; lin bestubbled_A = mkAMost "bestubbled" "bestubbledly" ; lin bet_N = mkN "bet" "bets" ; lin bet_V = mkV "bet" "betted" "betted" ; @@ -48049,7 +48049,7 @@ lin strict_A = mkA "strict" "stricter" "strictest" "strictly" ; lin strictness_N = mkN "strictness" "strictnesses" ; lin stricture_N = mkN "stricture" "strictures" ; lin stride_N = mkN "stride" "strides" ; -lin stride_V = mkV "stride" "strod" "stridden" ; +lin stride_V = mkV "stride" "strode" "stridden" ; lin strident_A = mkAMost "strident" "stridently" ; lin strider_N = mkN "strider" "striders" ; lin stridor_N = mkN "stridor" "stridors" ; From d947e7e2e2aef8def75b91ee78917f92b939f488 Mon Sep 17 00:00:00 2001 From: adelon <22380201+adelon@users.noreply.github.com> Date: Tue, 21 Jul 2026 12:47:47 +0200 Subject: [PATCH 3/6] Fin: fix comparative and superlative adverbs --- src/finnish/StemFin.gf | 2 +- src/finnish/stemmed/StemFin.gf | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/finnish/StemFin.gf b/src/finnish/StemFin.gf index 5e02a9ad..52efc354 100644 --- a/src/finnish/StemFin.gf +++ b/src/finnish/StemFin.gf @@ -76,7 +76,7 @@ oper let tuoree = init (tuore.s ! NCase Sg Gen) ; tuoreesti = tuoree + "sti" ; - tuoreemmin = init tuoree ; + tuoreemmin = init tuoree + "in" ; in {s = table { AN f => tuore.s ! f ; AAdv => if_then_Str isPos tuoreesti tuoreemmin diff --git a/src/finnish/stemmed/StemFin.gf b/src/finnish/stemmed/StemFin.gf index 466bb797..3759e7f2 100644 --- a/src/finnish/stemmed/StemFin.gf +++ b/src/finnish/stemmed/StemFin.gf @@ -148,7 +148,7 @@ oper let tuoree = tuore.s ! 1 ; tuoreesti = tuoree + "sti" ; - tuoreemmin = init tuoree ; + tuoreemmin = init tuoree + "in" ; in {s = table { SAN f => tuore.s ! f ; SAAdv => if_then_Str isPos tuoreesti tuoreemmin From 498acd0b865480f7f3433bb3dc91095104f1674f Mon Sep 17 00:00:00 2001 From: adelon <22380201+adelon@users.noreply.github.com> Date: Tue, 21 Jul 2026 12:47:47 +0200 Subject: [PATCH 4/6] Fin: fix `probable_AS` inflection MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Model `todennäköinen` as a compound so its final component controls vowel harmony. Keep `compoundA.p` empty unless the wrapped adjective has prefix-only modifying use. --- src/finnish/LexiconFin.gf | 3 +-- src/finnish/ParadigmsFin.gf | 10 +++++++++- 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/src/finnish/LexiconFin.gf b/src/finnish/LexiconFin.gf index c132c799..bf20cf4f 100644 --- a/src/finnish/LexiconFin.gf +++ b/src/finnish/LexiconFin.gf @@ -148,8 +148,7 @@ lin play_V2 = mkV2 (mkV "pelata") cpartitive ; --- leikkiä, soittaa policeman_N = mkN "poliisi" ; priest_N = mkN "pappi" ; - probable_AS = mkAS --- for vowel harmony - (mkA (mkN "todennäköinen") "tonennäköisempi" "todennäköisin") ; ---- sta + probable_AS = mkAS (compoundA "toden" (mkA "näköinen")) ; queen_N = mkN "kuningatar" ; radio_N = mk2N "radio" "radioita" ; rain_V0 = mkV0 (mk2V "sataa" "satoi") ; diff --git a/src/finnish/ParadigmsFin.gf b/src/finnish/ParadigmsFin.gf index d44d9de2..1e8e63a4 100644 --- a/src/finnish/ParadigmsFin.gf +++ b/src/finnish/ParadigmsFin.gf @@ -221,7 +221,15 @@ oper = \s -> lin A {s = \\_,_ => s ; h = Back ; p = [] ; hasPrefix = False} ; ----- stemming adds bogus endings compoundA : Str -> A -> A -- prefix glued to adjective, e.g. "hevos"+"vetoinen" - = \s,a -> lin A {s = \\d,c => s + a.s ! d ! c ; h = a.h ; p = s + a.p ; hasPrefix = a.hasPrefix} ; + = \s,a -> lin A { + s = \\d,c => s + a.s ! d ! c ; + h = a.h ; + p = case a.hasPrefix of { + True => s + a.p ; + False => [] + } ; + hasPrefix = a.hasPrefix + } ; prefixA : Str -> A -> A -- in modifying use, an uninflected glued prefix, e.g. "sähkö" for "sähköinen" = \pr,a -> a ** { From 110266306d5cbaff3d9de8775ac5d898cddb44ed Mon Sep 17 00:00:00 2001 From: adelon <22380201+adelon@users.noreply.github.com> Date: Tue, 21 Jul 2026 12:49:34 +0200 Subject: [PATCH 5/6] Fin: fix singular essive of `tuhatN` --- src/finnish/NumeralFin.gf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/finnish/NumeralFin.gf b/src/finnish/NumeralFin.gf index 17d1ee49..18a4ce83 100644 --- a/src/finnish/NumeralFin.gf +++ b/src/finnish/NumeralFin.gf @@ -142,7 +142,7 @@ oper (ordN "a" "sadas") ; tuhatN = co - (snoun2nounBind (mkN "tuhat" "tuhannen" "tuhatta" "ruhantena" "tuhanteen" + (snoun2nounBind (mkN "tuhat" "tuhannen" "tuhatta" "tuhantena" "tuhanteen" "tuhansien" "tuhansia" "tuhansina" "tuhansissa" "tuhansiin")) (ordN "a" "tuhannes") ; From 827a0296c99d441ed643f9e7eafd4d7d4024d709 Mon Sep 17 00:00:00 2001 From: adelon <22380201+adelon@users.noreply.github.com> Date: Tue, 21 Jul 2026 12:52:55 +0200 Subject: [PATCH 6/6] Fin: fix vowel harmony of millionth and billionth --- src/finnish/NumeralFin.gf | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/finnish/NumeralFin.gf b/src/finnish/NumeralFin.gf index 18a4ce83..2c7c2a8a 100644 --- a/src/finnish/NumeralFin.gf +++ b/src/finnish/NumeralFin.gf @@ -173,7 +173,7 @@ oper miljoonaN = co (snoun2nounBind (mkN "miljoona")) - (ordN "s" "miljoonas") ; + (ordN "a" "miljoonas") ; miljoonaaN = {s = table { Sg => miljoonaN.s ; @@ -186,7 +186,7 @@ oper miljardiN = co (snoun2nounBind (mkN "miljardi")) - (ordN "s" "miljardis") ; + (ordN "a" "miljardis") ; miljardiaN = {s = table { Sg => miljardiN.s ;