| labial | alveolar | palatal | velar | glottal | lateral | ||
|---|---|---|---|---|---|---|---|
| nasal | m | n | ň /ŋ/ | ||||
| plosive | voiceless | p | t | k | - /ʔ/ | ||
| voiced | b | d | g | ||||
| affricate | voiceless | c /ts/ | č /tʃ/ | ||||
| voiced | ʒ /dz/ | ǯ /dʒ/ | |||||
| fricative | voiceless | f | s | š /ʃ/ | x | h | |
| voiced | v | z | ž /ʒ/ | j /ɣ/ | |||
| sonorant | r | l |
| front | back | |
|---|---|---|
| close | i | u |
| mid | e | o |
| open | a |
the standard syllable is C(C)V(C), but initial CC may only be one of the following consonant pairs:
the nucleus of a syllable can take on different forms called grades that change its grammatical category
| I | II | III | IV | V |
|---|---|---|---|---|
| a | ia | ua | ea | oa |
| e | ie | ue | ae | oe |
| i | ai | ui | ei | oi |
| o | io | uo | eo | ao |
| u | iu | au | eu | ou |
/iV/ and /uV/ may be pronounced /jV/ and /wV/
the native script can be found here; highlighted in red are the components needed to write grog. a word is comprised of a base character and grade, with optional prenuclear and final consonants. compounds may be done in-glyph instead of with grade V, if room allows it
consider kıen “dog”. a dog is clearly a thing, so it gets type E (for Entity). now consider vis “to sleep”. “to sleep” isn’t a thing, it’s an action you do. to find the type of stuff you can do, let’s look at how it’s used in a sentence. “the dog sleeps” is a truth, or at least it could be true. statements that have the ability to be true get type T (for Truth). we pretend vis is a ‘function’ that takes kıen as an argument and ‘returns’ a truth. we call functions that return truths, predicates.
Q: what is the type of vis? A: <E, T>
in coding you might type “sleep(dog);”, but in Grog we actually put the function last so we say kıen vis
actually, all words by default are predicates; only by II-grading the nucleus does ken “to be a dog” become the noun kıen “dog”. the exact behavior turning a predicate into an entity (instantiate) will be touched on later, but for simple one-argument (1-ary) predicates, it just means assuming an object that satisfies its first argument (i.e., makes it true)–so something that is a dog… well… is a dog. the same process can be applied to any predicate like vis “to sleep” into vais “one who sleeps”!
in the sentence “i love that you’re happy”, what is the type of the second argument to “love” namely “that you’re happy”? it’s similar to “you’re happy” which is just a truth T, but with that “that” it’s being treated as a noun fed into “love”! what’s going on??
these sort of truth-like values get a special type [T], and you can turn predicates into quasi-predicates that instead return [T] via III-grade (quasiquotation). in an argument that accepts E, [T] is also acceptable (but not the other way!)—for nerds: [T] can cast to E. this is useful since predicates can only have entities and quasi-predicates as arguments.
ňia kai muar sam 1sg [2sg happy] love “i love that you’re happy”
you can terminate quasiquotes early by lengthening the nucleus (specifically first mora) of the first argument–or in the case of no arguments, the predicate itself.
viis [sleep] : <E, [T]> “to sleep”
a serial predicate consists of two predicates next to each other, which allows you to combine them in a regular way. along with syntax, the exact behavior of a serialization can be derived from the components’ types. the following is a(n incomplete) list of serial derivations with examples:
<E, [T], T> <E, <E, [T]>, T> ==> <E, [T], T>; “➊ intuits that ➋ is the case” “➊ tries, attempts to have property ➋” ==> “➊ tries to intuit that ➋ is the case”
since serial predicates are still predicates, they can be used as other tails!
<E, T> <E, [T], T> <E, [T], T> ==> <E, E, T> <E, [T], T> ==> <E, E, T>; “➊ is rich, wealthy” “➊ causes ➋ to be the case” “➊ hopes that ➋ will be the case” ==> “➊ causes ➋ to be rich, wealthy” “➊ hopes that ➋ will be the case” ==> “➊ hopes that ➋ causes ➌ to be rich, wealthy”
<E, T> <E, T> <E, <E, [T]>, T> ==> <E, T> <E, <E, [T]>, T> ==> <E, T>; “➊ is a dog (Canis familiaris)” “➊ sleeps, is asleep” “➊ tries, attempts to have property ➋” ==> “➊ is a sleeping dog” “➊ tries, attempts to have property ➋” ==> “➊ tries to be a sleeping dog”
ken vis lak dog sleep try : <E, T> “to try to be a sleeping dog”
note that this isn’t exactly what should be said, since it seems like the object in question is also trying to become a dog. serialization is left-associative by default, but predicates can be made to serialize rightward by lengthening the vowel of that predicate, causing it and the predicates after it to act as a whole unit
<E, T> (<E, T> <E, <E, [T]>, T>) ==> <E, T> <E, <E, [T]>> ==> <E, T>; “➊ is a dog (Canis familiaris)” (“➊ sleeps, is asleep” “➊ tries, attempts to have property ➋”) ==> “➊ is a dog (Canis familiaris)” “➊ tries to sleep” ==> “➊ is a dog that tries to sleep”
ken viis lak dog $ sleep try : <E, T> “to be a dog that tries to sleep”
and of course, instantiation occurs by seeing what satisfies the predicate. something that tries to sleep but already is a dog must be…
ken viis liak dog $ sleep try : E “the dog that tries to sleep”
phew, that was a mouthful,,
well, that’s the gist of it! all other grammatical features like tense-aspect-mood, number, case, etc. are taken care of by predicates. serialization and III-grade also do most of the heavy lifting in terms of clauses and sentence structure, while serialization and II-grade take care of most nouns
now, you may notice that we didn’t cover grades IV and V! heed my warning, it gets technical and it’s not really necessary to be fluent in the language. if you feel the grammar up to this point is lacking, you might need to look at the ADVANCED grammar below
don’t say i didn’t warn you
T is actually the kind of types, interpreted as propositions a la curry-howard isomorphisms with inhabitants as witnesses. assuming a higher-order polymorphic calculus (Fω on the lambda cube) we can define instantiation as follows with Idris-like syntax:
postulate II : <a, instantiate a> where
instantiate : <T, T>
instantiate <a, T> = a
instantiate <a, b, c> = <a, instantiate <b, c>>
instantiate _ = throw "Semantics error: instantation expected predicate"
words that have a glottal stop initial are combinators, which are predicates that don’t have any semantic content and are essentialy functions of the pure mathematical kind, merely operating on other predicates while contributing nothing on their own. there are three general classes: inverse (rearrange arguments), reflexive (merge arguments), and antipassive/N (delete arguments)
| word | abbv. | operation |
|---|---|---|
| an | N1 | swap the first two arguments of a predicate |
| al | L1 | merge the first two arguments of a predicate |
| at | T1 | on a predicate, remove all arguments but the first |
| TODO |
functors, also known as function words or particles, are words that serve various grammatical or syntactic functions but don’t fit into the predicate paradigm at all. they are indicated by grade IV and are unrelated to their grade I-III meanings
all instantiations are generally unique
kien kien jaf dog dog see “a dog sees another dog”
vao allows you to assign a topic to the sentence in the form [topic] vao [sentence], which has the effect of binding every instantiation of the topic predicate to that specific instance
kien vao kien kien jaf dog -> dog dog see “[about a dog,] that dog sees itself”
this can get unwieldy, so we use the pronoun cu to refer to the topic
kien vao ciu ciu jaf dog -> TOP TOP see “[about a dog,] it sees itself”
and if you really hate repeating things, you can use a combinator from earlier
kien vao ciu jaf-al dog -> TOP see L1 “[about a dog,] it sees itself”
there are four so-called lambda variables ǯi, ŝa, xe, and fa which may be used to construct arbitrary predicates by standing in for entities (their I-grade forms are “➊ is X” where X is the entity)
ňia ǯai hit (1sg 1 eat) : <E, T> “to be something i eat”
more arity can be introduced if needed, though the following example can be eta-reduced. note that these two instantiations are not the same argument–for such, use a reflexive combinator or topic functor.
ǯai ǯai hit (1 1 eat) : <E, E, T> “to eat (…)”
their behavior is more clearly akin to de Bruijn indices when nested, indicating the distance to the predicate it is bound to. lambda predicates can also be instantiated like usual
ňia ŝia kai ni siam (1sg (2 2sg of) love) : E “something i’d love for you to have”
TODO: note that variables don’t necessarily have to be entities, but must be annotated as such
ken ǯi krai hi dog ((1 : <E, T>) all 1) “to be a dog is a property such that the set of things that are it is one in number; there is only one dog”
a compound is simply a sequence of roots with every word after the first in V-grade, taken to mean whatever the speaker and listener agree on. usually it relates to the meanings of its constituent parts, but the derivation process is completely arbitrary and subjective compared to serialization, so it’s pretty much just for expanding root space or particularly complex and irreducible concepts
kiokkoen house-dog : E “a doghouse”