let concat_env check_dup env1 env2 =
  if not check_dup then
    env1 @ env2
  else
    fold_env
      (fun n d env ->
         try
           add_def env n d
         with
           | Already_defined -> raise (Parse_error ("variable " ^ d.def_name ^ " was defined twice", d.def_pos))
      ) env2 (List.rev env1)