# Quint Authors - Language Basics (Highlights) ![rw-book-cover|256](https://readwise-assets.s3.amazonaws.com/media/uploaded_book_covers/profile_155788/og.jpg) ## Metadata **Review**:: [readwise.io](https://readwise.io/bookreview/57479565) **Source**:: #from/readwise #from/reader **Zettel**:: #zettel/fleeting **Status**:: #x **Authors**:: [[Quint Authors]] **Full Title**:: Language Basics **Category**:: #articles #readwise/articles **Category Icon**:: 📰 **URL**:: [quint-lang.org](https://quint-lang.org/docs/language-basics) **Host**:: [[quint-lang.org]] **Highlighted**:: [[2026-01-10]] **Created**:: [[2026-01-10]] ## Highlights - Although in theory (and in TLA+) you could apply the prime operator to any expression, in Quint it has to always come in the format `<var>' = <expr>` which is called assignment. This prevents us from writing things that are really hard to grasp and potentially not possible to compute with the available tools. ([View Highlight](https://read.readwise.io/read/01kek3fmdgkm07d1g7d57q039w)) ^976020103 - Quint’s tooling is equipped to report several different errors if you use `'` in forbidden ways. It won’t let you assign a value to a variable more than once in the same transition, or forget to update a variable in some branches of transitions. ([View Highlight](https://read.readwise.io/read/01kek3g8h309s3e4cygy9map6j)) ^976020118 - Actions named `init` and `step` are special as they define the **state machine**. Action `init` defines the initial states and `step` defines the transitions (you can use different names and specify the on the CLI, but `init` and `step` are the defaults). ([View Highlight](https://read.readwise.io/read/01kek3htrwxr7t0yzp01w34tqf)) ^976020154 - In Quint models, we express all of these possibilities using `any` and `oneOf`. ([View Highlight](https://read.readwise.io/read/01kek3mmx2a60pfpthrwv8wszf)) ^976020344 - Definitions prefixed with `pure` are just like functional programming functions: given the same input (parameters), they will always return the same output. ([View Highlight](https://read.readwise.io/read/01kek3nmrjxzddrsj934a0b3my)) ^976020367 - Definitions that don’t take parameters can be of mode `val` (or `pure val`), while definitions that take parameters need to be `def` (or `pure def`). ([View Highlight](https://read.readwise.io/read/01kek3pk224tpcmcvz8nqwktys)) ^976020380 - Definitions that use the prime operator (`'`) can only be of mode `action`. Actions are definitions that “modify” the state. ([View Highlight](https://read.readwise.io/read/01kek3q566ynw6fs9fnzb849s9)) ^976020389 - Non-deterministic definitions are special ones: you can use them only inside actions, before some assignment(s), in order to pick a value non-deterministically. ([View Highlight](https://read.readwise.io/read/01kek3qkrej6vf8tqf5tg4sefp)) ^976020417 - Quint doesn’t support recursive operators, mutually recursive operators, nor recursive type definitions. ([View Highlight](https://read.readwise.io/read/01kek3rjp4rfsnwytbhfccvbnw)) ^976020426 - all recursion that it could, in theory, support, is the type of recursion that can be written using folds ([View Highlight](https://read.readwise.io/read/01kek3t3ev3fxe4wb3wkjdsjae)) ^976020471