let init =
  (* Dynamic modules do not work (see BTS #152) *)
  let module Weak = Analysis.Make(Weakin
  let module Medium = Analysis.Make(Mediumin
  let module Strong = Analysis.Make(Strongin
  fun () ->
    if Options.is_on () || Options.LogicAnnotation.is_set ()
    then Logic_env.Builtins.extend extend_logic_language;
    match Options.Lattice.get () with
    | "weak" -> Weak.init ()
    | "medium" -> Medium.init ()
    | "strong" -> Strong.init ()
    | _ -> raise_invalid_lattice ()