Scopelang.DependencyGraph representation of the dependencies between scopes in the Catala program. Vertices are functions, x -> y if x is used in the definition of y.
type vertex = | Scope of Shared_ast.ScopeName.t * Shared_ast.ModuleName.t option| Topdef of Shared_ast.TopdefName.tOn the edges, the label is the expression responsible for the use of the function
val build_program_dep_graph : 'm Ast.program -> SDependencies.tval get_defs_ordering : SDependencies.t -> vertex listmodule TDependencies : 
  Graph.Sig.P
    with type V.t = Shared_ast.TypeIdent.t
     and type E.label = Catala_utils.Pos.tOn the edges, the label is the expression responsible for the use of the function
val get_structs_or_enums_in_type : Shared_ast.typ -> Shared_ast.TypeIdent.Set.tval build_type_graph : 
  Shared_ast.struct_ctx ->
  Shared_ast.enum_ctx ->
  TDependencies.tval check_type_cycles : 
  Shared_ast.struct_ctx ->
  Shared_ast.enum_ctx ->
  Shared_ast.TypeIdent.t list