• Sylvain Dailler's avatar
    PA03-013 counterex: Projection function defined after being applied. · b00248b5
    Sylvain Dailler authored
    This patch solves a problem on the order of the generation of new
    declarations by intro_projections_counterexmp. The problem came from
    the combination of Trans.on_tagged_ls and Trans.decl. The former was used
    to know each projection function in advance and the latter would
    introduce new declarations directly at the definition of the decl being
    analysed sometimes using projections functions before they are defined.
    This patch makes intro_projections_counterexmp.ml adds declarations only
    at the end of the task. So we are sure that any meta is really defined
    * src/transform/intro_projections_counterexmp.ml
     (introduce_constant): Minor clarification.
     (projections_for_term): Replacing append with proper symbol. Also adding
      already computed list of declaration to the output.
     (introduce_projs): Removing already defined declarations from the set of
      declaration we will add.
     (build_projections_map): The order of elements is irrelevant so
      it is faster to use cons instead of append.
     (meta_transform2): Add declarations created by f at the end of the task.
     (encapsulate): Compose meta_transform2 and introduce_projs.
     (commented meta_transform2): Request for a fold able to do what is
intro_projections_counterexmp.ml 13.2 KB