# Czech RGL regression tests From the RGL checkout, run: sh tests/czech/check.sh The script uses `gf` from `PATH` when `GF` is unset or empty. To select another executable, including a path containing spaces, use: GF='/path/to/gf' sh tests/czech/check.sh `GF` names one executable, not a command with flags. Generated files go into a temporary directory removed on exit. No application grammar is required. `regressions.gfs` checks morphology and grammatical composition through the source API, grouped by feature. Its expected output is in `regressions.out`. `markup.gfs` separately checks clitic movement through fronting, embedding and coordination, including discontinuous marked constituents. It also checks that NP predetermination preserves markup scope when inserting before a modifier. Source computation exposes `Predef.BIND` and `Predef.SOFT_BIND` markers; PGF linearization handles them as token joining and punctuation. The runner also builds `AllCze`, `TryCze` and `SymbolicCze` into a fresh directory, then compiles `CzeTests.gf` using only that distribution. Typed declarations check every public V2/V3 paradigm overload. The runner requires the consumer's `.gfo`, since GF can report errors and still exit successfully. `CzeRoundTrip` and `roundtrip.tsv` check PGF generation and parsing, including joined negation, polarity recovery and polite/plural ambiguity. `CzeExtensionRoundTrip` and `extension-roundtrip.tsv` cover secondary and dative predicates, bound objects, subject omission, complement forms and predeterminer placement with a modified pronoun. Compound cardinals are checked with possessives, oblique case and predicate agreement, including agreement with the leading scale in sums such as 2,200. The abstract fragments are acyclic: parsing must return the complete expected set of trees, without truncation or reliance on enumeration order. Repeated strings record distinct intended analyses. These small fragments do not establish parsing coverage for the full Czech RGL. Preserve the empty `Pol.s` constituent: selecting a verb form with `pol.p` alone does not recover polarity. For example, parsing `nečti ji` should give: UttImpSg PNeg (ImpVP (ComplSlash (SlashV2a read_V2) (UsePron she_Pron))) Removing the constituent leaves `?1` in place of `PNeg`, even though the negative spelling is recognized. Prefer treebank coverage where practical. Keep source checks for paradigms and distinctions outside those fragments; do not repeat treebank examples unless the source API adds a separate contract. These tests cover present clauses, infinitives and imperatives, not the unimplemented RGL tenses or anteriority. Coordinated-subject person/number agreement and subordinate-clause punctuation also retain inherited gaps. The finite fragments do not establish coverage of those constructions.