8. Miolingo
Miolingo is a language-pronunciation trainer: a learner practises a queue of
phrases by recording them, has each recording checked against the target
language's phonetic transcription, and collects words into a vocabulary.
This chapter models it as a bigraphical reactive system (Milner, The Space
and Motion of Communicating Agents, 2009; Jensen and Milner, TR-580, 2004)
with a server region and one region for each browser session, and states the
invariants proved of it, over reachability by checked reactions and user
actions, and two shape invariants that are CONDITIONAL on a hypothesis about
every rule of the family, which is not proved. A user action here is any well-formed request placed anywhere,
which over-approximates the user and is not yet related to a transition of
the library. Everything else is in Miolingo/: the first model
and its rules (Model.lean), the families of the later models (D1.lean,
Main.lean, App.lean), the generators and their completeness
(Main.lean, AppInv.lean), the scenarios (ModelChecks.lean,
MainChecks.lean), and the shape of a state by parents and the per-rule
checks (Shape.lean; definitions and tests only).