phonology

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

phonotactics

the standard syllable is C(C)V(C), but initial CC may only be one of the following consonant pairs:

grades

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/

orthography

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

grammar

types

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”!

quasiquotes

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”

serialization

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,,

afterword

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

types (cont.)

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"

combinators

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

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

topic

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”

lambdas

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”

compounds

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”