PA03-013 counterex: Projection function defined after being applied.
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 before. * 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 described.
Showing with 27 additions and 11 deletions