let init =
(* Dynamic modules do not work (see BTS #152) *)
let module Weak = Analysis.Make(Weak) in
let module Medium = Analysis.Make(Medium) in
let module Strong = Analysis.Make(Strong) in
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 ()