Scopelang.AstSourceAbstract syntax tree of the scope language
type 'm rule = | ScopeVarDefinition of {var : Shared_ast.ScopeVar.t Catala_utils.Mark.pos;typ : Shared_ast.typ;io : Desugared.Ast.io;e : 'm expr;}| SubScopeVarDefinition of {var : Shared_ast.ScopeVar.t Catala_utils.Mark.pos;Variable within the current scope
*)var_within_origin_scope : Shared_ast.ScopeVar.t;typ : Shared_ast.typ;e : 'm expr;}| Assertion of 'm exprtype scope_var_ty = {svar_in_ty : Shared_ast.typ;svar_out_ty : Shared_ast.typ;svar_io : Desugared.Ast.io;}type 'm scope_decl = {scope_decl_name : Shared_ast.ScopeName.t;scope_sig : scope_var_ty Shared_ast.ScopeVar.Map.t;scope_decl_rules : 'm rule list;scope_options : Desugared.Ast.catala_option Catala_utils.Mark.pos list;}type 'm program = {program_module_name : Shared_ast.ModuleName.t option;program_ctx : Shared_ast.decl_ctx;program_modules : Shared_ast.nil scope_decl Catala_utils.Mark.pos
Shared_ast.ScopeName.Map.t
Shared_ast.ModuleName.Map.t;program_scopes : 'm scope_decl Catala_utils.Mark.pos Shared_ast.ScopeName.Map.t;program_topdefs : ('m expr * Shared_ast.typ) Shared_ast.TopdefName.Map.t;program_lang : Catala_utils.Global.backend_lang;}