* (Ger) prepositions of contracting type, to base S,VV,QS-correlates and split adverbs on
* api/TryGer: omit mkAdv,mkIAdv,mkConj from ParadigmsGer, mkStructuralGer
* (Ger) sync with 'master' (undo changes unrelated to Preposition) up to few corrections
* (Ger) correct GPl to CPl in ExtraGer
* Returning to f4aae6a61a by ignoring prep-contraction
* (Ger) Prep contracting with DefArtSg, IP, RP
* (Ger) Corrected GPl to CPl in ExtraGer, ExtendGer
* (Ger) Simplified many lincats (Prep,V2,N2,A2,.. VPSlash,ClSlash) by reducing
Preposition from 4*3 = 12 parameters to 3*2 = 6 via
Prepositon : Type = {s : PrepForm => Str; s2:Str ; c : ObjCase ; t : PrepType} ;
param PrepType = isCase | isPrep ; -- isPrepDefArt
ObjCase = Acc | Dat | Gen ; Case = Nom | Obj ObjCase ;
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.
AdvVP built its result with setPrefix, so the adverbial landed before the
verb. Polish is neutrally SVO, and this matters beyond adverbs proper: an
object reached through PrepNP arrives at AdvVP as an Adv, so a two-place
verb came out as *"π zbiór pusty przecina" rather than "π przecina zbiór
pusty". Both orders are grammatical, but the preverbal one topicalizes.
"śpi tutaj" is as good as "tutaj śpi", so the RGL's own example is
unaffected.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Adding Polish to informath (grammars/next) exposed a set of gaps. Unlike
Czech, StructuralPol was already complete; what was missing was a handful
of lins, a way to govern the nominative, and some outright mistakes.
Missing lins, all reached as qualified Grammar.X by the application's
functors and so not shimmable from the application side:
AdjectivePol AdvAP
SentencePol SSubjS
IdiomPol ImpP3
StructuralPol that_Subj
MarkupPol new module (Markup is not part of the RGL build script,
so it is compiled on demand, as MarkupCze is)
ParadigmsPol mkAdv (every other ParadigmsX has it; the application
interfaces reach it as Paradigms.mkAdv)
ImpP3 has no third-person imperative to use, so it takes the standard
"niech" periphrasis. The copula takes the future ("niech x będzie grupą")
and every other verb the present ("niech x należy do A"): być is the only
Polish verb with a synthetic future, and imienne marks exactly the copular
VPs.
NomPrep: ComplCase had no nominative at all, so "jako", "niż" and
"zdefiniowany jako" -- all of which govern the nominative -- came out
locative ("mniejszy niż liczbie"). mkCompl now maps Nom to a new NomPrep,
and the dep tables of the pronouns, nounPN, mkPN and the structural NPs
cover it. LexiconNounPol is marked DO NOT EDIT, but paris_PN and john_PN
inline their own dep tables and so had to be extended too.
Two corrections:
VerbPol.CompCN used the nominative for a predicative noun, giving
"x jest grupa"; Polish uses the instrumental, as CompNP right below it
already does.
ExtendPol.ExistsNP inherited ExistNP from ExtendFunctor, giving
"jest macierz". Polish distinguishes the two: "there exists" is istnieć,
which is what mathematical prose uses.
ParadigmsPol.guess_paradigm_basic never matched -ość, the productive
feminine abstract suffix, so sprzeczność took a masculine declension
(*sprzeczności/a, *sprzecznościowi) despite being tagged feminine. It now
routes to the kość paradigm.
Also documents, without changing, why the 2-string mkN throws its genitive
away: guess_paradigm's 2-string table is unsound (its first branch matches
every noun in -a, and its branches disagree about whether mkNTable* takes
the nominative or the bare stem), so passing sggen to it turns
"liczba"/"liczby" into *liczbaa. The 1-string guesser is the sound path
until that table is repaired.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Add a proper V3 category to the Czech RGL, previously absent (V3 fell
through to the {s:Str} default and Slash2V3/Slash3V3 were notYet stubs).
- CatCze: lincat V3 = VerbForms ** {c, c2 : ComplementCase}; extend
VPSlash with a trailing `ind` field for the incorporated indirect
object (mirrors the English VPSlash c2 field).
- VerbCze: implement Slash2V3 and Slash3V3; ComplSlash now renders the
`ind` string after the object slot, and SlashV2a sets ind = []. This
keeps the object before the indirect object under the shared
ComplV3 v o d = ComplSlash (Slash3V3 v d) o.
- ParadigmsCze: add the mkV3 paradigm (default acc/dat, plus an
explicit two-complement-case form).
- MissingCze: drop the now-implemented Slash2V3/Slash3V3 stubs.
V2 predication is unchanged (ind is empty for V2-derived VPSlash).
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>