{0 Default calculus} This representation is the fourth in the compilation chain (see {{: index.html#architecture} Architecture}). Its main difference with the previous {{: desugared.html} desugared representation} is that scopes have been lowered into regular functions, and enums and structs have been lowered to sum and product types. The default calculus can be later compiled to a {{: lcalc.html} lambda calculus}. The module describing the abstract syntax tree is {!module: Dcalc.Ast}. Printing helpers can be found in {!module: Dcalc.Print}. This intermediate representation corresponds to the default calculus presented in the {{: https://arxiv.org/abs/2103.03198} Catala formalization}. Related modules: {!modules: Dcalc.Ast} {1 Typing } This representation is where the typing is performed. Indeed, {!module: Dcalc.Typing} implements the classical {{: https://en.wikipedia.org/wiki/Hindley%E2%80%93Milner_type_system} W algorithm} corresponding to a Hindley-Milner type system, without type constraints. Related modules: {!modules: Dcalc.Typing} {1 Interpreter} Since this representation is currently the last of the compilation chain, an {!module: Dcalc.Interpreter} module is provided to match the execution semantics of the default calculus. Later, translations to a regular lambda calculus and/or a simple imperative language are bound to be added. Related modules: {!modules: Dcalc.Interpreter} {1 Optimizations} Classical optimizations passes can be performed on the Dcalc AST: partial evaluation, beta and iota-reduction, etc. Related modules: {!modules: Dcalc.Optimizations}