Module Shared_ast.Optimizations

Optimization passes for default calculus and lambda calculus programs and expressions

val optimize_expr : Shared_ast__Definitions.decl_ctx -> ( ( < monomorphic : Shared_ast__Definitions.yes ; polymorphic : Shared_ast__Definitions.yes ; overloaded : Shared_ast__Definitions.no ; resolved : Shared_ast__Definitions.yes ; syntacticNames : Shared_ast__Definitions.no ; resolvedNames : Shared_ast__Definitions.yes ; scopeVarStates : Shared_ast__Definitions.no ; scopeVarSimpl : Shared_ast__Definitions.no ; explicitScopes : Shared_ast__Definitions.no ; assertions : Shared_ast__Definitions.yes ; defaultTerms : 'a ; exceptions : 'b >, < monomorphic : Shared_ast__Definitions.yes ; polymorphic : Shared_ast__Definitions.yes ; overloaded : Shared_ast__Definitions.no ; resolved : Shared_ast__Definitions.yes ; syntacticNames : Shared_ast__Definitions.no ; resolvedNames : Shared_ast__Definitions.yes ; scopeVarStates : Shared_ast__Definitions.no ; scopeVarSimpl : Shared_ast__Definitions.no ; explicitScopes : Shared_ast__Definitions.no ; assertions : Shared_ast__Definitions.yes ; defaultTerms : 'a ; exceptions : 'b >, 'm ) Shared_ast__Definitions.base_gexpr, 'm Shared_ast__Definitions.mark ) Catala_utils.Mark.ed -> ( ( < monomorphic : Shared_ast__Definitions.yes ; polymorphic : Shared_ast__Definitions.yes ; overloaded : Shared_ast__Definitions.no ; resolved : Shared_ast__Definitions.yes ; syntacticNames : Shared_ast__Definitions.no ; resolvedNames : Shared_ast__Definitions.yes ; scopeVarStates : Shared_ast__Definitions.no ; scopeVarSimpl : Shared_ast__Definitions.no ; explicitScopes : Shared_ast__Definitions.no ; assertions : Shared_ast__Definitions.yes ; defaultTerms : 'a ; exceptions : 'b >, < monomorphic : Shared_ast__Definitions.yes ; polymorphic : Shared_ast__Definitions.yes ; overloaded : Shared_ast__Definitions.no ; resolved : Shared_ast__Definitions.yes ; syntacticNames : Shared_ast__Definitions.no ; resolvedNames : Shared_ast__Definitions.yes ; scopeVarStates : Shared_ast__Definitions.no ; scopeVarSimpl : Shared_ast__Definitions.no ; explicitScopes : Shared_ast__Definitions.no ; assertions : Shared_ast__Definitions.yes ; defaultTerms : 'a ; exceptions : 'b >, 'm ) Shared_ast__Definitions.base_gexpr Bindlib.box, 'm Shared_ast__Definitions.mark ) Catala_utils.Mark.ed
val optimize_program : ( ( < monomorphic : Shared_ast__Definitions.yes ; polymorphic : Shared_ast__Definitions.yes ; overloaded : Shared_ast__Definitions.no ; resolved : Shared_ast__Definitions.yes ; syntacticNames : Shared_ast__Definitions.no ; resolvedNames : Shared_ast__Definitions.yes ; scopeVarStates : Shared_ast__Definitions.no ; scopeVarSimpl : Shared_ast__Definitions.no ; explicitScopes : Shared_ast__Definitions.no ; assertions : Shared_ast__Definitions.yes ; defaultTerms : 'a ; exceptions : 'b >, < monomorphic : Shared_ast__Definitions.yes ; polymorphic : Shared_ast__Definitions.yes ; overloaded : Shared_ast__Definitions.no ; resolved : Shared_ast__Definitions.yes ; syntacticNames : Shared_ast__Definitions.no ; resolvedNames : Shared_ast__Definitions.yes ; scopeVarStates : Shared_ast__Definitions.no ; scopeVarSimpl : Shared_ast__Definitions.no ; explicitScopes : Shared_ast__Definitions.no ; assertions : Shared_ast__Definitions.yes ; defaultTerms : 'a ; exceptions : 'b >, 'm ) Shared_ast__Definitions.base_gexpr, 'm Shared_ast__Definitions.mark ) Catala_utils.Mark.ed Shared_ast__Definitions.program -> ( ( < monomorphic : Shared_ast__Definitions.yes ; polymorphic : Shared_ast__Definitions.yes ; overloaded : Shared_ast__Definitions.no ; resolved : Shared_ast__Definitions.yes ; syntacticNames : Shared_ast__Definitions.no ; resolvedNames : Shared_ast__Definitions.yes ; scopeVarStates : Shared_ast__Definitions.no ; scopeVarSimpl : Shared_ast__Definitions.no ; explicitScopes : Shared_ast__Definitions.no ; assertions : Shared_ast__Definitions.yes ; defaultTerms : 'a ; exceptions : 'b >, < monomorphic : Shared_ast__Definitions.yes ; polymorphic : Shared_ast__Definitions.yes ; overloaded : Shared_ast__Definitions.no ; resolved : Shared_ast__Definitions.yes ; syntacticNames : Shared_ast__Definitions.no ; resolvedNames : Shared_ast__Definitions.yes ; scopeVarStates : Shared_ast__Definitions.no ; scopeVarSimpl : Shared_ast__Definitions.no ; explicitScopes : Shared_ast__Definitions.no ; assertions : Shared_ast__Definitions.yes ; defaultTerms : 'a ; exceptions : 'b >, 'm ) Shared_ast__Definitions.base_gexpr, 'm Shared_ast__Definitions.mark ) Catala_utils.Mark.ed Shared_ast__Definitions.program

Tests

val test_iota_reduction_1 : unit -> unit
val test_iota_reduction_2 : unit -> unit