diff --git a/external/fixpoint/smtZ3.ml b/external/fixpoint/smtZ3.ml
deleted file mode 100644
--- a/external/fixpoint/smtZ3.ml
+++ /dev/null
@@ -1,93 +0,0 @@
-(*
- * Copyright © 2008 The Regents of the University of California. All rights reserved.
- *
- * Permission is hereby granted, without written agreement and without
- * license or royalty fees, to use, copy, modify, and distribute this
- * software and its documentation for any purpose, provided that the
- * above copyright notice and the following two paragraphs appear in
- * all copies of this software.
- *
- * IN NO EVENT SHALL THE UNIVERSITY OF CALIFORNIA BE LIABLE TO ANY PARTY
- * FOR DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES
- * ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN
- * IF THE UNIVERSITY OF CALIFORNIA HAS BEEN ADVISED OF THE POSSIBILITY
- * OF SUCH DAMAGE.
- *
- * THE UNIVERSITY OF CALIFORNIA SPECIFICALLY DISCLAIMS ANY WARRANTIES,
- * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
- * AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS
- * ON AN "AS IS" BASIS, AND THE UNIVERSITY OF CALIFORNIA HAS NO OBLIGATION
- * TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.
- *)
-
-(********************************************************************************)
-(** DUMMY SMT-Z3 Solver (for non Z3MEM builds) **********************************)
-(********************************************************************************)
-
-let assertf = FixMisc.Ops.assertf
-let msg     = "This build is NOT linked against Z3. Please rebuild with Z3MEM=true. Only possible on linux"
-
-module SMTZ3 : ProverArch.SMTSOLVER = struct
-
-type context     = ()
-type symbol      = ()
-type sort        = ()
-type ast         = ()
-type fun_decl    = ()
-
-let var          _   = failwith msg
-let boundVar     _   = failwith msg
-let stringSymbol _   = failwith msg
-let funcDecl     _   = failwith msg
-let isBool _         = failwith msg
-let isInt _          = failwith msg
-let mkAll _          = failwith msg
-let mkRel _          = failwith msg
-let mkApp _          = failwith msg
-let mkMul _          = failwith msg
-let mkDiv _          = failwith msg
-let mkAdd _          = failwith msg
-let mkSub _          = failwith msg
-let mkMod _          = failwith msg
-let mkIte _          = failwith msg
-let mkInt _          = failwith msg
-let mkLit _          = failwith msg
-let mkReal _         = failwith msg
-let mkTrue _         = failwith msg
-let mkFalse _        = failwith msg
-let mkNot _          = failwith msg
-let mkAnd _          = failwith msg
-let mkOr _           = failwith msg
-let mkImp _          = failwith msg
-let mkIff _          = failwith msg
-let astString _      = failwith msg
-let sortString _     = failwith msg
-let mkIntSort _      = failwith msg
-let mkRealSort _     = failwith msg
-let mkBoolSort _     = failwith msg
-let mkSetSort _      = failwith msg
-let mkEmptySet _     = failwith msg
-let mkSetAdd _       = failwith msg
-let mkSetMem _       = failwith msg
-let mkSetCup _       = failwith msg
-let mkSetCap _       = failwith msg
-let mkSetDif _       = failwith msg
-let mkSetSub _       = failwith msg
-let mkMapSort _      = failwith msg
-let mkMapSelect _    = failwith msg
-let mkMapStore _     = failwith msg
-let mkSizeSort _     = failwith msg
-let mkBitSort _      = failwith msg
-let mkBitAnd _       = failwith msg
-let mkBitOr _        = failwith msg
-let mkContext _      = failwith msg
-let unsat _          = failwith msg
-let assertAxiom _    = failwith msg
-let assertDistinct _ = failwith msg
-let bracket _        = failwith msg
-let assertPreds _    = failwith msg
-let valid _          = failwith msg
-let contra _         = failwith msg
-let print_stats _    = failwith msg
-
-end
diff --git a/external/ocamlgraph/.depend b/external/ocamlgraph/.depend
--- a/external/ocamlgraph/.depend
+++ b/external/ocamlgraph/.depend
@@ -1,128 +1,128 @@
-lib/bitv.cmo: lib/bitv.cmi
-lib/bitv.cmx: lib/bitv.cmi
-lib/heap.cmo: lib/heap.cmi
-lib/heap.cmx: lib/heap.cmi
-lib/unionfind.cmo: lib/unionfind.cmi
-lib/unionfind.cmx: lib/unionfind.cmi
-lib/bitv.cmi:
-lib/heap.cmi:
-lib/unionfind.cmi:
-src/blocks.cmo: src/util.cmi src/sig.cmi
-src/blocks.cmx: src/util.cmx src/sig.cmi
-src/builder.cmo: src/sig.cmi src/builder.cmi
-src/builder.cmx: src/sig.cmi src/builder.cmi
-src/classic.cmo: src/sig.cmi src/builder.cmi src/classic.cmi
-src/classic.cmx: src/sig.cmi src/builder.cmx src/classic.cmi
-src/cliquetree.cmo: src/util.cmi src/sig.cmi src/persistent.cmi src/oper.cmi \
-    src/gmap.cmi src/builder.cmi src/cliquetree.cmi
-src/cliquetree.cmx: src/util.cmx src/sig.cmi src/persistent.cmx src/oper.cmx \
-    src/gmap.cmx src/builder.cmx src/cliquetree.cmi
-src/components.cmo: src/util.cmi src/sig.cmi src/components.cmi
-src/components.cmx: src/util.cmx src/sig.cmi src/components.cmi
-src/delaunay.cmo: src/delaunay.cmi
-src/delaunay.cmx: src/delaunay.cmi
-src/dot.cmo: src/dot_parser.cmi src/dot_lexer.cmo src/dot_ast.cmi \
+lib/bitv.cmo : lib/bitv.cmi
+lib/bitv.cmx : lib/bitv.cmi
+lib/heap.cmo : lib/heap.cmi
+lib/heap.cmx : lib/heap.cmi
+lib/unionfind.cmo : lib/unionfind.cmi
+lib/unionfind.cmx : lib/unionfind.cmi
+lib/bitv.cmi :
+lib/heap.cmi :
+lib/unionfind.cmi :
+src/blocks.cmo : src/util.cmi src/sig.cmi
+src/blocks.cmx : src/util.cmx src/sig.cmi
+src/builder.cmo : src/sig.cmi src/builder.cmi
+src/builder.cmx : src/sig.cmi src/builder.cmi
+src/classic.cmo : src/sig.cmi src/builder.cmi src/classic.cmi
+src/classic.cmx : src/sig.cmi src/builder.cmx src/classic.cmi
+src/cliquetree.cmo : src/util.cmi src/sig.cmi src/persistent.cmi \
+    src/oper.cmi src/gmap.cmi src/builder.cmi src/cliquetree.cmi
+src/cliquetree.cmx : src/util.cmx src/sig.cmi src/persistent.cmx \
+    src/oper.cmx src/gmap.cmx src/builder.cmx src/cliquetree.cmi
+src/components.cmo : src/util.cmi src/sig.cmi src/components.cmi
+src/components.cmx : src/util.cmx src/sig.cmi src/components.cmi
+src/delaunay.cmo : src/delaunay.cmi
+src/delaunay.cmx : src/delaunay.cmi
+src/dot.cmo : src/dot_parser.cmi src/dot_lexer.cmo src/dot_ast.cmi \
     src/builder.cmi src/dot.cmi
-src/dot.cmx: src/dot_parser.cmx src/dot_lexer.cmx src/dot_ast.cmi \
+src/dot.cmx : src/dot_parser.cmx src/dot_lexer.cmx src/dot_ast.cmi \
     src/builder.cmx src/dot.cmi
-src/dot_lexer.cmo: src/dot_parser.cmi src/dot_ast.cmi
-src/dot_lexer.cmx: src/dot_parser.cmx src/dot_ast.cmi
-src/dot_parser.cmo: src/dot_ast.cmi src/dot_parser.cmi
-src/dot_parser.cmx: src/dot_ast.cmi src/dot_parser.cmi
-src/flow.cmo: src/util.cmi src/sig.cmi src/flow.cmi
-src/flow.cmx: src/util.cmx src/sig.cmi src/flow.cmi
-src/gcoloring.cmo: src/traverse.cmi src/sig.cmi src/gcoloring.cmi
-src/gcoloring.cmx: src/traverse.cmx src/sig.cmi src/gcoloring.cmi
-src/gmap.cmo: src/sig.cmi src/gmap.cmi
-src/gmap.cmx: src/sig.cmi src/gmap.cmi
-src/gml.cmo: src/builder.cmi src/gml.cmi
-src/gml.cmx: src/builder.cmx src/gml.cmi
-src/gpath.cmo: src/util.cmi src/sig.cmi lib/heap.cmi src/gpath.cmi
-src/gpath.cmx: src/util.cmx src/sig.cmi lib/heap.cmx src/gpath.cmi
-src/graphviz.cmo: src/graphviz.cmi
-src/graphviz.cmx: src/graphviz.cmi
-src/imperative.cmo: src/sig.cmi src/blocks.cmo lib/bitv.cmi \
+src/dot_lexer.cmo : src/dot_parser.cmi src/dot_ast.cmi
+src/dot_lexer.cmx : src/dot_parser.cmx src/dot_ast.cmi
+src/dot_parser.cmo : src/dot_ast.cmi src/dot_parser.cmi
+src/dot_parser.cmx : src/dot_ast.cmi src/dot_parser.cmi
+src/flow.cmo : src/util.cmi src/sig.cmi src/flow.cmi
+src/flow.cmx : src/util.cmx src/sig.cmi src/flow.cmi
+src/gcoloring.cmo : src/traverse.cmi src/sig.cmi src/gcoloring.cmi
+src/gcoloring.cmx : src/traverse.cmx src/sig.cmi src/gcoloring.cmi
+src/gmap.cmo : src/sig.cmi src/gmap.cmi
+src/gmap.cmx : src/sig.cmi src/gmap.cmi
+src/gml.cmo : src/builder.cmi src/gml.cmi
+src/gml.cmx : src/builder.cmx src/gml.cmi
+src/gpath.cmo : src/util.cmi src/sig.cmi lib/heap.cmi src/gpath.cmi
+src/gpath.cmx : src/util.cmx src/sig.cmi lib/heap.cmx src/gpath.cmi
+src/graphviz.cmo : src/graphviz.cmi
+src/graphviz.cmx : src/graphviz.cmi
+src/imperative.cmo : src/sig.cmi src/blocks.cmo lib/bitv.cmi \
     src/imperative.cmi
-src/imperative.cmx: src/sig.cmi src/blocks.cmx lib/bitv.cmx \
+src/imperative.cmx : src/sig.cmi src/blocks.cmx lib/bitv.cmx \
     src/imperative.cmi
-src/kruskal.cmo: src/util.cmi lib/unionfind.cmi src/sig.cmi src/kruskal.cmi
-src/kruskal.cmx: src/util.cmx lib/unionfind.cmx src/sig.cmi src/kruskal.cmi
-src/mcs_m.cmo: src/util.cmi src/sig.cmi src/persistent.cmi src/oper.cmi \
+src/kruskal.cmo : src/util.cmi lib/unionfind.cmi src/sig.cmi src/kruskal.cmi
+src/kruskal.cmx : src/util.cmx lib/unionfind.cmx src/sig.cmi src/kruskal.cmi
+src/mcs_m.cmo : src/util.cmi src/sig.cmi src/persistent.cmi src/oper.cmi \
     src/imperative.cmi src/gmap.cmi src/builder.cmi src/mcs_m.cmi
-src/mcs_m.cmx: src/util.cmx src/sig.cmi src/persistent.cmx src/oper.cmx \
+src/mcs_m.cmx : src/util.cmx src/sig.cmi src/persistent.cmx src/oper.cmx \
     src/imperative.cmx src/gmap.cmx src/builder.cmx src/mcs_m.cmi
-src/md.cmo: src/sig.cmi src/oper.cmi src/gmap.cmi src/cliquetree.cmi \
+src/md.cmo : src/sig.cmi src/oper.cmi src/gmap.cmi src/cliquetree.cmi \
     src/builder.cmi src/md.cmi
-src/md.cmx: src/sig.cmi src/oper.cmx src/gmap.cmx src/cliquetree.cmx \
+src/md.cmx : src/sig.cmi src/oper.cmx src/gmap.cmx src/cliquetree.cmx \
     src/builder.cmx src/md.cmi
-src/minsep.cmo: src/sig.cmi src/oper.cmi src/components.cmi src/minsep.cmi
-src/minsep.cmx: src/sig.cmi src/oper.cmx src/components.cmx src/minsep.cmi
-src/oper.cmo: src/sig.cmi src/builder.cmi src/oper.cmi
-src/oper.cmx: src/sig.cmi src/builder.cmx src/oper.cmi
-src/pack.cmo: src/traverse.cmi src/topological.cmi src/sig.cmi src/rand.cmi \
+src/minsep.cmo : src/sig.cmi src/oper.cmi src/components.cmi src/minsep.cmi
+src/minsep.cmx : src/sig.cmi src/oper.cmx src/components.cmx src/minsep.cmi
+src/oper.cmo : src/sig.cmi src/builder.cmi src/oper.cmi
+src/oper.cmx : src/sig.cmi src/builder.cmx src/oper.cmi
+src/pack.cmo : src/traverse.cmi src/topological.cmi src/sig.cmi src/rand.cmi \
     src/oper.cmi src/kruskal.cmi src/imperative.cmi src/graphviz.cmi \
     src/gpath.cmi src/gml.cmi src/flow.cmi src/dot.cmi src/components.cmi \
     src/classic.cmi src/builder.cmi src/pack.cmi
-src/pack.cmx: src/traverse.cmx src/topological.cmx src/sig.cmi src/rand.cmx \
+src/pack.cmx : src/traverse.cmx src/topological.cmx src/sig.cmi src/rand.cmx \
     src/oper.cmx src/kruskal.cmx src/imperative.cmx src/graphviz.cmx \
     src/gpath.cmx src/gml.cmx src/flow.cmx src/dot.cmx src/components.cmx \
     src/classic.cmx src/builder.cmx src/pack.cmi
-src/persistent.cmo: src/util.cmi src/sig.cmi src/blocks.cmo \
+src/persistent.cmo : src/util.cmi src/sig.cmi src/blocks.cmo \
     src/persistent.cmi
-src/persistent.cmx: src/util.cmx src/sig.cmi src/blocks.cmx \
+src/persistent.cmx : src/util.cmx src/sig.cmi src/blocks.cmx \
     src/persistent.cmi
-src/rand.cmo: src/sig.cmi src/delaunay.cmi src/builder.cmi src/rand.cmi
-src/rand.cmx: src/sig.cmi src/delaunay.cmx src/builder.cmx src/rand.cmi
-src/strat.cmo: src/sig.cmi src/strat.cmi
-src/strat.cmx: src/sig.cmi src/strat.cmi
-src/topological.cmo: src/sig.cmi src/topological.cmi
-src/topological.cmx: src/sig.cmi src/topological.cmi
-src/traverse.cmo: src/sig.cmi src/traverse.cmi
-src/traverse.cmx: src/sig.cmi src/traverse.cmi
-src/util.cmo: src/sig.cmi src/util.cmi
-src/util.cmx: src/sig.cmi src/util.cmi
-src/version.cmo:
-src/version.cmx:
-src/builder.cmi: src/sig.cmi
-src/classic.cmi: src/sig.cmi
-src/cliquetree.cmi: src/sig.cmi
-src/components.cmi: src/util.cmi src/sig.cmi
-src/delaunay.cmi:
-src/dot.cmi: src/dot_ast.cmi src/builder.cmi
-src/dot_ast.cmi:
-src/dot_parser.cmi: src/dot_ast.cmi
-src/flow.cmi: src/sig.cmi
-src/gcoloring.cmi: src/sig.cmi
-src/gmap.cmi: src/sig.cmi
-src/gml.cmi: src/builder.cmi
-src/gpath.cmi: src/sig.cmi
-src/graphviz.cmi:
-src/imperative.cmi: src/sig.cmi
-src/kruskal.cmi: src/sig.cmi
-src/mcs_m.cmi: src/sig.cmi
-src/md.cmi: src/sig.cmi
-src/minsep.cmi: src/sig.cmi
-src/oper.cmi: src/sig.cmi src/builder.cmi
-src/pack.cmi: src/sig_pack.cmi
-src/persistent.cmi: src/sig.cmi
-src/rand.cmi: src/sig.cmi src/builder.cmi
-src/sig.cmi:
-src/sig_pack.cmi:
-src/strat.cmi: src/sig.cmi
-src/topological.cmi: src/sig.cmi
-src/traverse.cmi: src/sig.cmi
-src/util.cmi: src/sig.cmi
-editor/ed_display.cmo:
-editor/ed_display.cmx:
-editor/ed_draw.cmo: src/components.cmi
-editor/ed_draw.cmx: src/components.cmx
-editor/ed_graph.cmo: src/traverse.cmi src/imperative.cmi src/graphviz.cmi \
+src/rand.cmo : src/sig.cmi src/delaunay.cmi src/builder.cmi src/rand.cmi
+src/rand.cmx : src/sig.cmi src/delaunay.cmx src/builder.cmx src/rand.cmi
+src/strat.cmo : src/sig.cmi src/strat.cmi
+src/strat.cmx : src/sig.cmi src/strat.cmi
+src/topological.cmo : src/sig.cmi src/topological.cmi
+src/topological.cmx : src/sig.cmi src/topological.cmi
+src/traverse.cmo : src/sig.cmi src/traverse.cmi
+src/traverse.cmx : src/sig.cmi src/traverse.cmi
+src/util.cmo : src/sig.cmi src/util.cmi
+src/util.cmx : src/sig.cmi src/util.cmi
+src/version.cmo :
+src/version.cmx :
+src/builder.cmi : src/sig.cmi
+src/classic.cmi : src/sig.cmi
+src/cliquetree.cmi : src/sig.cmi
+src/components.cmi : src/util.cmi src/sig.cmi
+src/delaunay.cmi :
+src/dot.cmi : src/dot_ast.cmi src/builder.cmi
+src/dot_ast.cmi :
+src/dot_parser.cmi : src/dot_ast.cmi
+src/flow.cmi : src/sig.cmi
+src/gcoloring.cmi : src/sig.cmi
+src/gmap.cmi : src/sig.cmi
+src/gml.cmi : src/builder.cmi
+src/gpath.cmi : src/sig.cmi
+src/graphviz.cmi :
+src/imperative.cmi : src/sig.cmi
+src/kruskal.cmi : src/sig.cmi
+src/mcs_m.cmi : src/sig.cmi
+src/md.cmi : src/sig.cmi
+src/minsep.cmi : src/sig.cmi
+src/oper.cmi : src/sig.cmi src/builder.cmi
+src/pack.cmi : src/sig_pack.cmi
+src/persistent.cmi : src/sig.cmi
+src/rand.cmi : src/sig.cmi src/builder.cmi
+src/sig.cmi :
+src/sig_pack.cmi :
+src/strat.cmi : src/sig.cmi
+src/topological.cmi : src/sig.cmi
+src/traverse.cmi : src/sig.cmi
+src/util.cmi : src/sig.cmi
+editor/ed_display.cmo :
+editor/ed_display.cmx :
+editor/ed_draw.cmo : src/components.cmi
+editor/ed_draw.cmx : src/components.cmx
+editor/ed_graph.cmo : src/traverse.cmi src/imperative.cmi src/graphviz.cmi \
     src/gml.cmi src/dot_ast.cmi src/dot.cmi src/components.cmi \
     src/builder.cmi
-editor/ed_graph.cmx: src/traverse.cmx src/imperative.cmx src/graphviz.cmx \
+editor/ed_graph.cmx : src/traverse.cmx src/imperative.cmx src/graphviz.cmx \
     src/gml.cmx src/dot_ast.cmi src/dot.cmx src/components.cmx \
     src/builder.cmx
-editor/ed_hyper.cmo:
-editor/ed_hyper.cmx:
-editor/ed_main.cmo:
-editor/ed_main.cmx:
+editor/ed_hyper.cmo :
+editor/ed_hyper.cmx :
+editor/ed_main.cmo :
+editor/ed_main.cmx :
diff --git a/external/ocamlgraph/src/dot_lexer.ml b/external/ocamlgraph/src/dot_lexer.ml
deleted file mode 100644
--- a/external/ocamlgraph/src/dot_lexer.ml
+++ /dev/null
@@ -1,386 +0,0 @@
-# 20 "src/dot_lexer.mll"
- 
-  open Lexing
-  open Dot_ast
-  open Dot_parser
-
-  let string_buf = Buffer.create 1024
-
-  let keyword =
-    let h = Hashtbl.create 17 in
-    List.iter 
-      (fun (s,k) -> Hashtbl.add h s k)
-      [
-	"strict", STRICT;
-	"graph", GRAPH;
-	"digraph", DIGRAPH;
-	"subgraph", SUBGRAPH;
-	"node", NODE;
-	"edge", EDGE;
-      ];
-    fun s -> let s = String.lowercase s in Hashtbl.find h s
-
-
-# 25 "src/dot_lexer.ml"
-let __ocaml_lex_tables = {
-  Lexing.lex_base = 
-   "\000\000\238\255\239\255\240\255\241\255\078\000\088\000\098\000\
-    \176\000\245\255\246\255\247\255\248\255\249\255\250\255\251\255\
-    \252\255\114\000\001\000\005\000\254\255\002\000\253\255\191\000\
-    \244\255\211\000\221\000\157\000\252\255\253\255\002\000\255\255\
-    \254\255\032\000\252\255\253\255\254\255\255\255\054\000\253\255\
-    \254\255\015\000\255\255";
-  Lexing.lex_backtrk = 
-   "\255\255\255\255\255\255\255\255\255\255\013\000\017\000\012\000\
-    \017\000\255\255\255\255\255\255\255\255\255\255\255\255\255\255\
-    \255\255\017\000\017\000\000\000\255\255\255\255\255\255\255\255\
-    \255\255\013\000\013\000\255\255\255\255\255\255\002\000\255\255\
-    \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\
-    \255\255\001\000\255\255";
-  Lexing.lex_default = 
-   "\001\000\000\000\000\000\000\000\000\000\255\255\255\255\255\255\
-    \255\255\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
-    \000\000\255\255\021\000\255\255\000\000\021\000\000\000\255\255\
-    \000\000\255\255\255\255\029\000\000\000\000\000\255\255\000\000\
-    \000\000\035\000\000\000\000\000\000\000\000\000\040\000\000\000\
-    \000\000\255\255\000\000";
-  Lexing.lex_trans = 
-   "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
-    \000\000\019\000\019\000\020\000\020\000\019\000\019\000\019\000\
-    \000\000\000\000\019\000\000\000\000\000\000\000\000\000\000\000\
-    \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
-    \019\000\000\000\004\000\018\000\032\000\019\000\000\000\000\000\
-    \000\000\000\000\000\000\000\000\015\000\008\000\006\000\017\000\
-    \005\000\005\000\005\000\005\000\005\000\005\000\005\000\005\000\
-    \005\000\005\000\016\000\014\000\003\000\013\000\042\000\000\000\
-    \000\000\007\000\007\000\007\000\007\000\007\000\007\000\007\000\
-    \007\000\007\000\007\000\007\000\007\000\007\000\007\000\007\000\
-    \007\000\007\000\007\000\007\000\007\000\007\000\007\000\007\000\
-    \007\000\007\000\007\000\010\000\036\000\009\000\037\000\007\000\
-    \041\000\007\000\007\000\007\000\007\000\007\000\007\000\007\000\
-    \007\000\007\000\007\000\007\000\007\000\007\000\007\000\007\000\
-    \007\000\007\000\007\000\007\000\007\000\007\000\007\000\007\000\
-    \007\000\007\000\007\000\012\000\026\000\011\000\005\000\005\000\
-    \005\000\005\000\005\000\005\000\005\000\005\000\005\000\005\000\
-    \025\000\025\000\025\000\025\000\025\000\025\000\025\000\025\000\
-    \025\000\025\000\007\000\007\000\007\000\007\000\007\000\007\000\
-    \007\000\007\000\007\000\007\000\022\000\000\000\000\000\000\000\
-    \000\000\021\000\000\000\007\000\007\000\007\000\007\000\007\000\
-    \007\000\007\000\007\000\007\000\007\000\007\000\007\000\007\000\
-    \007\000\007\000\007\000\007\000\007\000\007\000\007\000\007\000\
-    \007\000\007\000\007\000\007\000\007\000\000\000\000\000\031\000\
-    \000\000\007\000\000\000\007\000\007\000\007\000\007\000\007\000\
-    \007\000\007\000\007\000\007\000\007\000\007\000\007\000\007\000\
-    \007\000\007\000\007\000\007\000\007\000\007\000\007\000\007\000\
-    \007\000\007\000\007\000\007\000\007\000\024\000\023\000\000\000\
-    \005\000\005\000\005\000\005\000\005\000\005\000\005\000\005\000\
-    \005\000\005\000\000\000\000\000\000\000\000\000\024\000\025\000\
-    \025\000\025\000\025\000\025\000\025\000\025\000\025\000\025\000\
-    \025\000\030\000\000\000\000\000\000\000\000\000\000\000\000\000\
-    \002\000\255\255\255\255\025\000\025\000\025\000\025\000\025\000\
-    \025\000\025\000\025\000\025\000\025\000\026\000\026\000\026\000\
-    \026\000\026\000\026\000\026\000\026\000\026\000\026\000\000\000\
-    \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
-    \034\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
-    \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
-    \000\000\000\000\000\000\000\000\000\000\000\000\039\000\000\000\
-    \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
-    \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
-    \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
-    \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
-    \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
-    \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
-    \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
-    \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
-    \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
-    \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
-    \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
-    \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
-    \000\000\000\000\000\000\000\000\000\000\028\000\000\000\000\000\
-    \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
-    \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
-    \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
-    \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
-    \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
-    \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
-    \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
-    \000\000\000\000\000\000\000\000\000\000\000\000";
-  Lexing.lex_check = 
-   "\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\
-    \255\255\000\000\000\000\018\000\021\000\000\000\019\000\019\000\
-    \255\255\255\255\019\000\255\255\255\255\255\255\255\255\255\255\
-    \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\
-    \000\000\255\255\000\000\000\000\030\000\019\000\255\255\255\255\
-    \255\255\255\255\255\255\255\255\000\000\000\000\000\000\000\000\
-    \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
-    \000\000\000\000\000\000\000\000\000\000\000\000\041\000\255\255\
-    \255\255\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
-    \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
-    \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
-    \000\000\000\000\000\000\000\000\033\000\000\000\033\000\000\000\
-    \038\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
-    \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
-    \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
-    \000\000\000\000\000\000\000\000\005\000\000\000\005\000\005\000\
-    \005\000\005\000\005\000\005\000\005\000\005\000\005\000\005\000\
-    \006\000\006\000\006\000\006\000\006\000\006\000\006\000\006\000\
-    \006\000\006\000\007\000\007\000\007\000\007\000\007\000\007\000\
-    \007\000\007\000\007\000\007\000\017\000\255\255\255\255\255\255\
-    \255\255\017\000\255\255\007\000\007\000\007\000\007\000\007\000\
-    \007\000\007\000\007\000\007\000\007\000\007\000\007\000\007\000\
-    \007\000\007\000\007\000\007\000\007\000\007\000\007\000\007\000\
-    \007\000\007\000\007\000\007\000\007\000\255\255\255\255\027\000\
-    \255\255\007\000\255\255\007\000\007\000\007\000\007\000\007\000\
-    \007\000\007\000\007\000\007\000\007\000\007\000\007\000\007\000\
-    \007\000\007\000\007\000\007\000\007\000\007\000\007\000\007\000\
-    \007\000\007\000\007\000\007\000\007\000\008\000\008\000\255\255\
-    \008\000\008\000\008\000\008\000\008\000\008\000\008\000\008\000\
-    \008\000\008\000\255\255\255\255\255\255\255\255\008\000\023\000\
-    \023\000\023\000\023\000\023\000\023\000\023\000\023\000\023\000\
-    \023\000\027\000\255\255\255\255\255\255\255\255\255\255\255\255\
-    \000\000\018\000\021\000\025\000\025\000\025\000\025\000\025\000\
-    \025\000\025\000\025\000\025\000\025\000\026\000\026\000\026\000\
-    \026\000\026\000\026\000\026\000\026\000\026\000\026\000\255\255\
-    \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\
-    \033\000\255\255\255\255\255\255\255\255\255\255\255\255\255\255\
-    \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\
-    \255\255\255\255\255\255\255\255\255\255\255\255\038\000\255\255\
-    \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\
-    \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\
-    \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\
-    \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\
-    \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\
-    \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\
-    \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\
-    \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\
-    \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\
-    \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\
-    \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\
-    \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\
-    \255\255\255\255\255\255\255\255\255\255\027\000\255\255\255\255\
-    \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\
-    \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\
-    \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\
-    \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\
-    \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\
-    \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\
-    \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\
-    \255\255\255\255\255\255\255\255\255\255\255\255";
-  Lexing.lex_base_code = 
-   "";
-  Lexing.lex_backtrk_code = 
-   "";
-  Lexing.lex_default_code = 
-   "";
-  Lexing.lex_trans_code = 
-   "";
-  Lexing.lex_check_code = 
-   "";
-  Lexing.lex_code = 
-   "";
-}
-
-let rec token lexbuf =
-    __ocaml_lex_token_rec lexbuf 0
-and __ocaml_lex_token_rec lexbuf __ocaml_lex_state =
-  match Lexing.engine __ocaml_lex_tables __ocaml_lex_state lexbuf with
-      | 0 ->
-# 52 "src/dot_lexer.mll"
-      ( token lexbuf )
-# 191 "src/dot_lexer.ml"
-
-  | 1 ->
-# 54 "src/dot_lexer.mll"
-      ( token lexbuf )
-# 196 "src/dot_lexer.ml"
-
-  | 2 ->
-# 56 "src/dot_lexer.mll"
-      ( comment lexbuf; token lexbuf )
-# 201 "src/dot_lexer.ml"
-
-  | 3 ->
-# 58 "src/dot_lexer.mll"
-      ( COLON )
-# 206 "src/dot_lexer.ml"
-
-  | 4 ->
-# 60 "src/dot_lexer.mll"
-      ( COMMA )
-# 211 "src/dot_lexer.ml"
-
-  | 5 ->
-# 62 "src/dot_lexer.mll"
-      ( SEMICOLON )
-# 216 "src/dot_lexer.ml"
-
-  | 6 ->
-# 64 "src/dot_lexer.mll"
-      ( EQUAL )
-# 221 "src/dot_lexer.ml"
-
-  | 7 ->
-# 66 "src/dot_lexer.mll"
-      ( LBRA )
-# 226 "src/dot_lexer.ml"
-
-  | 8 ->
-# 68 "src/dot_lexer.mll"
-      ( RBRA )
-# 231 "src/dot_lexer.ml"
-
-  | 9 ->
-# 70 "src/dot_lexer.mll"
-      ( LSQ )
-# 236 "src/dot_lexer.ml"
-
-  | 10 ->
-# 72 "src/dot_lexer.mll"
-      ( RSQ )
-# 241 "src/dot_lexer.ml"
-
-  | 11 ->
-# 74 "src/dot_lexer.mll"
-      ( EDGEOP )
-# 246 "src/dot_lexer.ml"
-
-  | 12 ->
-let
-# 75 "src/dot_lexer.mll"
-             s
-# 252 "src/dot_lexer.ml"
-= Lexing.sub_lexeme lexbuf lexbuf.Lexing.lex_start_pos lexbuf.Lexing.lex_curr_pos in
-# 76 "src/dot_lexer.mll"
-      ( try keyword s with Not_found -> ID (Ident s) )
-# 256 "src/dot_lexer.ml"
-
-  | 13 ->
-let
-# 77 "src/dot_lexer.mll"
-              s
-# 262 "src/dot_lexer.ml"
-= Lexing.sub_lexeme lexbuf lexbuf.Lexing.lex_start_pos lexbuf.Lexing.lex_curr_pos in
-# 78 "src/dot_lexer.mll"
-      ( ID (Number s) )
-# 266 "src/dot_lexer.ml"
-
-  | 14 ->
-# 80 "src/dot_lexer.mll"
-      ( Buffer.clear string_buf; 
-	let s = string lexbuf in
-	ID (String s) )
-# 273 "src/dot_lexer.ml"
-
-  | 15 ->
-# 84 "src/dot_lexer.mll"
-      ( Buffer.clear string_buf; 
-	html lexbuf; 
-	ID (Html (Buffer.contents string_buf)) )
-# 280 "src/dot_lexer.ml"
-
-  | 16 ->
-# 88 "src/dot_lexer.mll"
-      ( EOF )
-# 285 "src/dot_lexer.ml"
-
-  | 17 ->
-let
-# 89 "src/dot_lexer.mll"
-         c
-# 291 "src/dot_lexer.ml"
-= Lexing.sub_lexeme_char lexbuf lexbuf.Lexing.lex_start_pos in
-# 90 "src/dot_lexer.mll"
-      ( failwith ("Dot_lexer: invalid character " ^ String.make 1 c) )
-# 295 "src/dot_lexer.ml"
-
-  | __ocaml_lex_state -> lexbuf.Lexing.refill_buff lexbuf; __ocaml_lex_token_rec lexbuf __ocaml_lex_state
-
-and string lexbuf =
-    __ocaml_lex_string_rec lexbuf 27
-and __ocaml_lex_string_rec lexbuf __ocaml_lex_state =
-  match Lexing.engine __ocaml_lex_tables __ocaml_lex_state lexbuf with
-      | 0 ->
-# 94 "src/dot_lexer.mll"
-      ( Buffer.contents string_buf )
-# 306 "src/dot_lexer.ml"
-
-  | 1 ->
-# 96 "src/dot_lexer.mll"
-      ( Buffer.add_char string_buf '"';
-	string lexbuf )
-# 312 "src/dot_lexer.ml"
-
-  | 2 ->
-let
-# 98 "src/dot_lexer.mll"
-         c
-# 318 "src/dot_lexer.ml"
-= Lexing.sub_lexeme_char lexbuf lexbuf.Lexing.lex_start_pos in
-# 99 "src/dot_lexer.mll"
-      ( Buffer.add_char string_buf c;
-	string lexbuf )
-# 323 "src/dot_lexer.ml"
-
-  | 3 ->
-# 102 "src/dot_lexer.mll"
-      ( failwith ("Dot_lexer: unterminated string literal") )
-# 328 "src/dot_lexer.ml"
-
-  | __ocaml_lex_state -> lexbuf.Lexing.refill_buff lexbuf; __ocaml_lex_string_rec lexbuf __ocaml_lex_state
-
-and html lexbuf =
-    __ocaml_lex_html_rec lexbuf 33
-and __ocaml_lex_html_rec lexbuf __ocaml_lex_state =
-  match Lexing.engine __ocaml_lex_tables __ocaml_lex_state lexbuf with
-      | 0 ->
-# 106 "src/dot_lexer.mll"
-      ( () )
-# 339 "src/dot_lexer.ml"
-
-  | 1 ->
-# 108 "src/dot_lexer.mll"
-      ( Buffer.add_char string_buf '<'; html lexbuf;
-	Buffer.add_char string_buf '>'; html lexbuf )
-# 345 "src/dot_lexer.ml"
-
-  | 2 ->
-let
-# 110 "src/dot_lexer.mll"
-         c
-# 351 "src/dot_lexer.ml"
-= Lexing.sub_lexeme_char lexbuf lexbuf.Lexing.lex_start_pos in
-# 111 "src/dot_lexer.mll"
-      ( Buffer.add_char string_buf c;
-	html lexbuf )
-# 356 "src/dot_lexer.ml"
-
-  | 3 ->
-# 114 "src/dot_lexer.mll"
-      ( failwith ("Dot_lexer: unterminated html literal") )
-# 361 "src/dot_lexer.ml"
-
-  | __ocaml_lex_state -> lexbuf.Lexing.refill_buff lexbuf; __ocaml_lex_html_rec lexbuf __ocaml_lex_state
-
-and comment lexbuf =
-    __ocaml_lex_comment_rec lexbuf 38
-and __ocaml_lex_comment_rec lexbuf __ocaml_lex_state =
-  match Lexing.engine __ocaml_lex_tables __ocaml_lex_state lexbuf with
-      | 0 ->
-# 118 "src/dot_lexer.mll"
-      ( () )
-# 372 "src/dot_lexer.ml"
-
-  | 1 ->
-# 120 "src/dot_lexer.mll"
-      ( comment lexbuf )
-# 377 "src/dot_lexer.ml"
-
-  | 2 ->
-# 122 "src/dot_lexer.mll"
-      ( failwith "Dot_lexer: unterminated comment" )
-# 382 "src/dot_lexer.ml"
-
-  | __ocaml_lex_state -> lexbuf.Lexing.refill_buff lexbuf; __ocaml_lex_comment_rec lexbuf __ocaml_lex_state
-
-;;
-
diff --git a/external/ocamlgraph/src/dot_parser.ml b/external/ocamlgraph/src/dot_parser.ml
deleted file mode 100644
--- a/external/ocamlgraph/src/dot_parser.ml
+++ /dev/null
@@ -1,551 +0,0 @@
-type token =
-  | ID of (Dot_ast.id)
-  | COLON
-  | COMMA
-  | EQUAL
-  | SEMICOLON
-  | EDGEOP
-  | STRICT
-  | GRAPH
-  | DIGRAPH
-  | LBRA
-  | RBRA
-  | LSQ
-  | RSQ
-  | NODE
-  | EDGE
-  | SUBGRAPH
-  | EOF
-
-open Parsing;;
-# 23 "src/dot_parser.mly"
-  open Dot_ast
-  open Parsing
-
-  let compass_pt = function
-    | Ident "n" -> N
-    | Ident "ne" -> Ne
-    | Ident "e" -> E
-    | Ident "se" -> Se
-    | Ident "s" -> S
-    | Ident "sw" -> Sw
-    | Ident "w" -> W
-    | Ident "nw" -> Nw
-    | _ -> invalid_arg "compass_pt"
-
-# 37 "src/dot_parser.ml"
-let yytransl_const = [|
-  258 (* COLON *);
-  259 (* COMMA *);
-  260 (* EQUAL *);
-  261 (* SEMICOLON *);
-  262 (* EDGEOP *);
-  263 (* STRICT *);
-  264 (* GRAPH *);
-  265 (* DIGRAPH *);
-  266 (* LBRA *);
-  267 (* RBRA *);
-  268 (* LSQ *);
-  269 (* RSQ *);
-  270 (* NODE *);
-  271 (* EDGE *);
-  272 (* SUBGRAPH *);
-    0 (* EOF *);
-    0|]
-
-let yytransl_block = [|
-  257 (* ID *);
-    0|]
-
-let yylhs = "\255\255\
-\001\000\002\000\002\000\003\000\003\000\005\000\005\000\006\000\
-\006\000\008\000\008\000\007\000\007\000\007\000\007\000\007\000\
-\009\000\010\000\011\000\011\000\011\000\016\000\018\000\018\000\
-\015\000\015\000\013\000\019\000\019\000\020\000\020\000\014\000\
-\014\000\017\000\017\000\004\000\004\000\021\000\021\000\022\000\
-\022\000\023\000\023\000\012\000\012\000\012\000\012\000\000\000"
-
-let yylen = "\002\000\
-\007\000\000\000\001\000\001\000\001\000\000\000\001\000\002\000\
-\003\000\000\000\001\000\001\000\001\000\001\000\003\000\001\000\
-\002\000\003\000\002\000\002\000\002\000\003\000\000\000\003\000\
-\001\000\001\000\002\000\000\000\001\000\002\000\004\000\000\000\
-\001\000\003\000\004\000\000\000\001\000\002\000\003\000\001\000\
-\003\000\000\000\001\000\002\000\005\000\004\000\003\000\002\000"
-
-let yydefred = "\000\000\
-\000\000\000\000\003\000\048\000\000\000\004\000\005\000\000\000\
-\037\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
-\000\000\000\000\007\000\000\000\012\000\013\000\014\000\000\000\
-\000\000\000\000\000\000\000\000\027\000\029\000\000\000\019\000\
-\000\000\020\000\021\000\000\000\000\000\000\000\011\000\000\000\
-\017\000\033\000\000\000\000\000\000\000\015\000\000\000\000\000\
-\000\000\047\000\000\000\000\000\001\000\009\000\000\000\026\000\
-\025\000\000\000\018\000\000\000\000\000\000\000\043\000\000\000\
-\000\000\046\000\000\000\022\000\031\000\041\000\035\000\039\000\
-\045\000\000\000\024\000"
-
-let yydgoto = "\002\000\
-\004\000\005\000\008\000\010\000\018\000\019\000\020\000\040\000\
-\021\000\022\000\023\000\024\000\025\000\041\000\026\000\044\000\
-\042\000\068\000\029\000\030\000\048\000\049\000\064\000"
-
-let yysindex = "\009\000\
-\024\255\000\000\000\000\000\000\000\255\000\000\000\000\031\255\
-\000\000\029\255\131\255\011\255\033\255\131\255\033\255\033\255\
-\051\255\040\255\000\000\048\255\000\000\000\000\000\000\000\000\
-\033\255\050\255\057\255\067\255\000\000\000\000\069\255\000\000\
-\062\255\000\000\000\000\070\255\131\255\091\000\000\000\131\255\
-\000\000\000\000\018\255\033\255\090\255\000\000\099\255\081\255\
-\101\255\000\000\131\255\095\255\000\000\000\000\107\255\000\000\
-\000\000\110\255\000\000\114\255\117\255\033\255\000\000\069\255\
-\111\255\000\000\018\255\000\000\000\000\000\000\000\000\000\000\
-\000\000\110\255\000\000"
-
-let yyrindex = "\000\000\
-\074\255\000\000\000\000\000\000\000\000\000\000\000\000\116\255\
-\000\000\000\000\118\255\006\255\000\000\118\255\000\000\000\000\
-\000\000\000\000\000\000\120\255\000\000\000\000\000\000\049\255\
-\061\255\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
-\000\000\000\000\000\000\073\255\118\255\000\000\000\000\122\255\
-\000\000\000\000\000\000\097\255\032\255\000\000\023\255\000\000\
-\022\255\000\000\118\255\000\000\000\000\000\000\006\255\000\000\
-\000\000\085\255\000\000\000\000\000\000\109\255\000\000\124\255\
-\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
-\000\000\085\255\000\000"
-
-let yygindex = "\000\000\
-\000\000\000\000\000\000\000\000\246\255\087\000\000\000\000\000\
-\000\000\000\000\000\000\214\255\218\255\094\000\219\255\000\000\
-\243\255\066\000\000\000\000\000\078\000\000\000\000\000"
-
-let yytablesize = 147
-let yytable = "\032\000\
-\056\000\034\000\035\000\033\000\057\000\058\000\028\000\006\000\
-\007\000\001\000\028\000\028\000\027\000\028\000\028\000\028\000\
-\028\000\028\000\055\000\028\000\028\000\028\000\042\000\040\000\
-\056\000\040\000\052\000\014\000\057\000\074\000\003\000\009\000\
-\030\000\017\000\042\000\040\000\030\000\030\000\011\000\030\000\
-\065\000\030\000\030\000\030\000\031\000\030\000\030\000\030\000\
-\071\000\016\000\038\000\036\000\039\000\016\000\026\000\043\000\
-\016\000\045\000\016\000\016\000\037\000\032\000\016\000\016\000\
-\016\000\032\000\025\000\046\000\032\000\047\000\032\000\032\000\
-\050\000\044\000\032\000\032\000\032\000\044\000\044\000\051\000\
-\044\000\002\000\002\000\044\000\044\000\023\000\044\000\044\000\
-\044\000\023\000\053\000\060\000\023\000\062\000\023\000\023\000\
-\023\000\032\000\023\000\023\000\023\000\032\000\061\000\063\000\
-\032\000\066\000\032\000\032\000\027\000\034\000\032\000\032\000\
-\032\000\034\000\069\000\067\000\034\000\070\000\034\000\034\000\
-\010\000\073\000\034\000\034\000\034\000\036\000\054\000\010\000\
-\006\000\010\000\010\000\012\000\008\000\010\000\010\000\010\000\
-\038\000\059\000\013\000\075\000\014\000\072\000\000\000\000\000\
-\015\000\016\000\017\000"
-
-let yycheck = "\013\000\
-\043\000\015\000\016\000\014\000\043\000\043\000\001\001\008\001\
-\009\001\001\000\005\001\006\001\002\001\008\001\004\001\010\001\
-\011\001\012\001\001\001\014\001\015\001\016\001\001\001\001\001\
-\067\000\003\001\037\000\010\001\067\000\067\000\007\001\001\001\
-\001\001\016\001\013\001\013\001\005\001\006\001\010\001\008\001\
-\051\000\010\001\011\001\012\001\012\001\014\001\015\001\016\001\
-\062\000\001\001\011\001\001\001\005\001\005\001\006\001\006\001\
-\008\001\001\001\010\001\011\001\010\001\001\001\014\001\015\001\
-\016\001\005\001\006\001\001\001\008\001\001\001\010\001\011\001\
-\011\001\001\001\014\001\015\001\016\001\005\001\006\001\010\001\
-\008\001\008\001\009\001\011\001\012\001\001\001\014\001\015\001\
-\016\001\005\001\000\000\002\001\008\001\013\001\010\001\011\001\
-\012\001\001\001\014\001\015\001\016\001\005\001\004\001\003\001\
-\008\001\011\001\010\001\011\001\002\001\001\001\014\001\015\001\
-\016\001\005\001\001\001\006\001\008\001\001\001\010\001\011\001\
-\001\001\011\001\014\001\015\001\016\001\010\001\040\000\008\001\
-\011\001\010\001\011\001\001\001\011\001\014\001\015\001\016\001\
-\013\001\044\000\008\001\074\000\010\001\064\000\255\255\255\255\
-\014\001\015\001\016\001"
-
-let yynames_const = "\
-  COLON\000\
-  COMMA\000\
-  EQUAL\000\
-  SEMICOLON\000\
-  EDGEOP\000\
-  STRICT\000\
-  GRAPH\000\
-  DIGRAPH\000\
-  LBRA\000\
-  RBRA\000\
-  LSQ\000\
-  RSQ\000\
-  NODE\000\
-  EDGE\000\
-  SUBGRAPH\000\
-  EOF\000\
-  "
-
-let yynames_block = "\
-  ID\000\
-  "
-
-let yyact = [|
-  (fun _ -> failwith "parser")
-; (fun __caml_parser_env ->
-    let _1 = (Parsing.peek_val __caml_parser_env 6 : 'strict_opt) in
-    let _2 = (Parsing.peek_val __caml_parser_env 5 : 'graph_or_digraph) in
-    let _3 = (Parsing.peek_val __caml_parser_env 4 : 'id_opt) in
-    let _5 = (Parsing.peek_val __caml_parser_env 2 : 'stmt_list) in
-    Obj.repr(
-# 49 "src/dot_parser.mly"
-    ( { strict = _1; digraph = _2; id = _3; stmts = _5 } )
-# 199 "src/dot_parser.ml"
-               : Dot_ast.file))
-; (fun __caml_parser_env ->
-    Obj.repr(
-# 53 "src/dot_parser.mly"
-                ( false )
-# 205 "src/dot_parser.ml"
-               : 'strict_opt))
-; (fun __caml_parser_env ->
-    Obj.repr(
-# 54 "src/dot_parser.mly"
-                ( true )
-# 211 "src/dot_parser.ml"
-               : 'strict_opt))
-; (fun __caml_parser_env ->
-    Obj.repr(
-# 58 "src/dot_parser.mly"
-          ( false )
-# 217 "src/dot_parser.ml"
-               : 'graph_or_digraph))
-; (fun __caml_parser_env ->
-    Obj.repr(
-# 59 "src/dot_parser.mly"
-          ( true )
-# 223 "src/dot_parser.ml"
-               : 'graph_or_digraph))
-; (fun __caml_parser_env ->
-    Obj.repr(
-# 63 "src/dot_parser.mly"
-                ( [] )
-# 229 "src/dot_parser.ml"
-               : 'stmt_list))
-; (fun __caml_parser_env ->
-    let _1 = (Parsing.peek_val __caml_parser_env 0 : 'list1_stmt) in
-    Obj.repr(
-# 64 "src/dot_parser.mly"
-                ( _1 )
-# 236 "src/dot_parser.ml"
-               : 'stmt_list))
-; (fun __caml_parser_env ->
-    let _1 = (Parsing.peek_val __caml_parser_env 1 : 'stmt) in
-    let _2 = (Parsing.peek_val __caml_parser_env 0 : 'semicolon_opt) in
-    Obj.repr(
-# 68 "src/dot_parser.mly"
-                     ( [_1] )
-# 244 "src/dot_parser.ml"
-               : 'list1_stmt))
-; (fun __caml_parser_env ->
-    let _1 = (Parsing.peek_val __caml_parser_env 2 : 'stmt) in
-    let _2 = (Parsing.peek_val __caml_parser_env 1 : 'semicolon_opt) in
-    let _3 = (Parsing.peek_val __caml_parser_env 0 : 'list1_stmt) in
-    Obj.repr(
-# 69 "src/dot_parser.mly"
-                                ( _1 :: _3 )
-# 253 "src/dot_parser.ml"
-               : 'list1_stmt))
-; (fun __caml_parser_env ->
-    Obj.repr(
-# 73 "src/dot_parser.mly"
-                ( () )
-# 259 "src/dot_parser.ml"
-               : 'semicolon_opt))
-; (fun __caml_parser_env ->
-    Obj.repr(
-# 74 "src/dot_parser.mly"
-                ( () )
-# 265 "src/dot_parser.ml"
-               : 'semicolon_opt))
-; (fun __caml_parser_env ->
-    let _1 = (Parsing.peek_val __caml_parser_env 0 : 'node_stmt) in
-    Obj.repr(
-# 78 "src/dot_parser.mly"
-            ( _1 )
-# 272 "src/dot_parser.ml"
-               : 'stmt))
-; (fun __caml_parser_env ->
-    let _1 = (Parsing.peek_val __caml_parser_env 0 : 'edge_stmt) in
-    Obj.repr(
-# 79 "src/dot_parser.mly"
-            ( _1 )
-# 279 "src/dot_parser.ml"
-               : 'stmt))
-; (fun __caml_parser_env ->
-    let _1 = (Parsing.peek_val __caml_parser_env 0 : 'attr_stmt) in
-    Obj.repr(
-# 80 "src/dot_parser.mly"
-            ( _1 )
-# 286 "src/dot_parser.ml"
-               : 'stmt))
-; (fun __caml_parser_env ->
-    let _1 = (Parsing.peek_val __caml_parser_env 2 : Dot_ast.id) in
-    let _3 = (Parsing.peek_val __caml_parser_env 0 : Dot_ast.id) in
-    Obj.repr(
-# 81 "src/dot_parser.mly"
-              ( Equal (_1, _3) )
-# 294 "src/dot_parser.ml"
-               : 'stmt))
-; (fun __caml_parser_env ->
-    let _1 = (Parsing.peek_val __caml_parser_env 0 : 'subgraph) in
-    Obj.repr(
-# 82 "src/dot_parser.mly"
-            ( Subgraph _1 )
-# 301 "src/dot_parser.ml"
-               : 'stmt))
-; (fun __caml_parser_env ->
-    let _1 = (Parsing.peek_val __caml_parser_env 1 : 'node_id) in
-    let _2 = (Parsing.peek_val __caml_parser_env 0 : 'attr_list_opt) in
-    Obj.repr(
-# 86 "src/dot_parser.mly"
-                        ( Node_stmt (_1, _2) )
-# 309 "src/dot_parser.ml"
-               : 'node_stmt))
-; (fun __caml_parser_env ->
-    let _1 = (Parsing.peek_val __caml_parser_env 2 : 'node) in
-    let _2 = (Parsing.peek_val __caml_parser_env 1 : 'edge_rhs) in
-    let _3 = (Parsing.peek_val __caml_parser_env 0 : 'attr_list_opt) in
-    Obj.repr(
-# 90 "src/dot_parser.mly"
-                              ( Edge_stmt (_1, _2, _3) )
-# 318 "src/dot_parser.ml"
-               : 'edge_stmt))
-; (fun __caml_parser_env ->
-    let _2 = (Parsing.peek_val __caml_parser_env 0 : 'attr_list) in
-    Obj.repr(
-# 94 "src/dot_parser.mly"
-                  ( Attr_graph _2 )
-# 325 "src/dot_parser.ml"
-               : 'attr_stmt))
-; (fun __caml_parser_env ->
-    let _2 = (Parsing.peek_val __caml_parser_env 0 : 'attr_list) in
-    Obj.repr(
-# 95 "src/dot_parser.mly"
-                  ( Attr_node _2 )
-# 332 "src/dot_parser.ml"
-               : 'attr_stmt))
-; (fun __caml_parser_env ->
-    let _2 = (Parsing.peek_val __caml_parser_env 0 : 'attr_list) in
-    Obj.repr(
-# 96 "src/dot_parser.mly"
-                  ( Attr_edge _2 )
-# 339 "src/dot_parser.ml"
-               : 'attr_stmt))
-; (fun __caml_parser_env ->
-    let _2 = (Parsing.peek_val __caml_parser_env 1 : 'node) in
-    let _3 = (Parsing.peek_val __caml_parser_env 0 : 'edge_rhs_opt) in
-    Obj.repr(
-# 100 "src/dot_parser.mly"
-                           ( _2 :: _3 )
-# 347 "src/dot_parser.ml"
-               : 'edge_rhs))
-; (fun __caml_parser_env ->
-    Obj.repr(
-# 104 "src/dot_parser.mly"
-                ( [] )
-# 353 "src/dot_parser.ml"
-               : 'edge_rhs_opt))
-; (fun __caml_parser_env ->
-    let _2 = (Parsing.peek_val __caml_parser_env 1 : 'node) in
-    let _3 = (Parsing.peek_val __caml_parser_env 0 : 'edge_rhs_opt) in
-    Obj.repr(
-# 105 "src/dot_parser.mly"
-                           ( _2 :: _3 )
-# 361 "src/dot_parser.ml"
-               : 'edge_rhs_opt))
-; (fun __caml_parser_env ->
-    let _1 = (Parsing.peek_val __caml_parser_env 0 : 'node_id) in
-    Obj.repr(
-# 109 "src/dot_parser.mly"
-           ( NodeId _1 )
-# 368 "src/dot_parser.ml"
-               : 'node))
-; (fun __caml_parser_env ->
-    let _1 = (Parsing.peek_val __caml_parser_env 0 : 'subgraph) in
-    Obj.repr(
-# 110 "src/dot_parser.mly"
-           ( NodeSub _1 )
-# 375 "src/dot_parser.ml"
-               : 'node))
-; (fun __caml_parser_env ->
-    let _1 = (Parsing.peek_val __caml_parser_env 1 : Dot_ast.id) in
-    let _2 = (Parsing.peek_val __caml_parser_env 0 : 'port_opt) in
-    Obj.repr(
-# 114 "src/dot_parser.mly"
-              ( _1, _2 )
-# 383 "src/dot_parser.ml"
-               : 'node_id))
-; (fun __caml_parser_env ->
-    Obj.repr(
-# 118 "src/dot_parser.mly"
-                ( None )
-# 389 "src/dot_parser.ml"
-               : 'port_opt))
-; (fun __caml_parser_env ->
-    let _1 = (Parsing.peek_val __caml_parser_env 0 : 'port) in
-    Obj.repr(
-# 119 "src/dot_parser.mly"
-                ( Some _1 )
-# 396 "src/dot_parser.ml"
-               : 'port_opt))
-; (fun __caml_parser_env ->
-    let _2 = (Parsing.peek_val __caml_parser_env 0 : Dot_ast.id) in
-    Obj.repr(
-# 123 "src/dot_parser.mly"
-           ( try PortC (compass_pt _2)
-             with Invalid_argument _ -> PortId (_2, None) )
-# 404 "src/dot_parser.ml"
-               : 'port))
-; (fun __caml_parser_env ->
-    let _2 = (Parsing.peek_val __caml_parser_env 2 : Dot_ast.id) in
-    let _4 = (Parsing.peek_val __caml_parser_env 0 : Dot_ast.id) in
-    Obj.repr(
-# 126 "src/dot_parser.mly"
-      ( let cp = 
-  	  try compass_pt _4 with Invalid_argument _ -> raise Parse_error 
-	in
-	PortId (_2, Some cp) )
-# 415 "src/dot_parser.ml"
-               : 'port))
-; (fun __caml_parser_env ->
-    Obj.repr(
-# 133 "src/dot_parser.mly"
-                ( [] )
-# 421 "src/dot_parser.ml"
-               : 'attr_list_opt))
-; (fun __caml_parser_env ->
-    let _1 = (Parsing.peek_val __caml_parser_env 0 : 'attr_list) in
-    Obj.repr(
-# 134 "src/dot_parser.mly"
-               ( _1 )
-# 428 "src/dot_parser.ml"
-               : 'attr_list_opt))
-; (fun __caml_parser_env ->
-    let _2 = (Parsing.peek_val __caml_parser_env 1 : 'a_list) in
-    Obj.repr(
-# 138 "src/dot_parser.mly"
-                 ( [_2] )
-# 435 "src/dot_parser.ml"
-               : 'attr_list))
-; (fun __caml_parser_env ->
-    let _2 = (Parsing.peek_val __caml_parser_env 2 : 'a_list) in
-    let _4 = (Parsing.peek_val __caml_parser_env 0 : 'attr_list) in
-    Obj.repr(
-# 139 "src/dot_parser.mly"
-                           ( _2 :: _4 )
-# 443 "src/dot_parser.ml"
-               : 'attr_list))
-; (fun __caml_parser_env ->
-    Obj.repr(
-# 143 "src/dot_parser.mly"
-                ( None )
-# 449 "src/dot_parser.ml"
-               : 'id_opt))
-; (fun __caml_parser_env ->
-    let _1 = (Parsing.peek_val __caml_parser_env 0 : Dot_ast.id) in
-    Obj.repr(
-# 144 "src/dot_parser.mly"
-                ( Some _1 )
-# 456 "src/dot_parser.ml"
-               : 'id_opt))
-; (fun __caml_parser_env ->
-    let _1 = (Parsing.peek_val __caml_parser_env 1 : 'equality) in
-    let _2 = (Parsing.peek_val __caml_parser_env 0 : 'comma_opt) in
-    Obj.repr(
-# 148 "src/dot_parser.mly"
-                     ( [_1] )
-# 464 "src/dot_parser.ml"
-               : 'a_list))
-; (fun __caml_parser_env ->
-    let _1 = (Parsing.peek_val __caml_parser_env 2 : 'equality) in
-    let _2 = (Parsing.peek_val __caml_parser_env 1 : 'comma_opt) in
-    let _3 = (Parsing.peek_val __caml_parser_env 0 : 'a_list) in
-    Obj.repr(
-# 149 "src/dot_parser.mly"
-                            ( _1 :: _3 )
-# 473 "src/dot_parser.ml"
-               : 'a_list))
-; (fun __caml_parser_env ->
-    let _1 = (Parsing.peek_val __caml_parser_env 0 : Dot_ast.id) in
-    Obj.repr(
-# 153 "src/dot_parser.mly"
-     ( _1, None )
-# 480 "src/dot_parser.ml"
-               : 'equality))
-; (fun __caml_parser_env ->
-    let _1 = (Parsing.peek_val __caml_parser_env 2 : Dot_ast.id) in
-    let _3 = (Parsing.peek_val __caml_parser_env 0 : Dot_ast.id) in
-    Obj.repr(
-# 154 "src/dot_parser.mly"
-              ( _1, Some _3 )
-# 488 "src/dot_parser.ml"
-               : 'equality))
-; (fun __caml_parser_env ->
-    Obj.repr(
-# 158 "src/dot_parser.mly"
-                ( () )
-# 494 "src/dot_parser.ml"
-               : 'comma_opt))
-; (fun __caml_parser_env ->
-    Obj.repr(
-# 159 "src/dot_parser.mly"
-                ( () )
-# 500 "src/dot_parser.ml"
-               : 'comma_opt))
-; (fun __caml_parser_env ->
-    let _2 = (Parsing.peek_val __caml_parser_env 0 : Dot_ast.id) in
-    Obj.repr(
-# 164 "src/dot_parser.mly"
-              ( SubgraphId _2 )
-# 507 "src/dot_parser.ml"
-               : 'subgraph))
-; (fun __caml_parser_env ->
-    let _2 = (Parsing.peek_val __caml_parser_env 3 : Dot_ast.id) in
-    let _4 = (Parsing.peek_val __caml_parser_env 1 : 'stmt_list) in
-    Obj.repr(
-# 165 "src/dot_parser.mly"
-                                  ( SubgraphDef (Some _2, _4) )
-# 515 "src/dot_parser.ml"
-               : 'subgraph))
-; (fun __caml_parser_env ->
-    let _3 = (Parsing.peek_val __caml_parser_env 1 : 'stmt_list) in
-    Obj.repr(
-# 166 "src/dot_parser.mly"
-                               ( SubgraphDef (None, _3) )
-# 522 "src/dot_parser.ml"
-               : 'subgraph))
-; (fun __caml_parser_env ->
-    let _2 = (Parsing.peek_val __caml_parser_env 1 : 'stmt_list) in
-    Obj.repr(
-# 167 "src/dot_parser.mly"
-                      ( SubgraphDef (None, _2) )
-# 529 "src/dot_parser.ml"
-               : 'subgraph))
-(* Entry file *)
-; (fun __caml_parser_env -> raise (Parsing.YYexit (Parsing.peek_val __caml_parser_env 0)))
-|]
-let yytables =
-  { Parsing.actions=yyact;
-    Parsing.transl_const=yytransl_const;
-    Parsing.transl_block=yytransl_block;
-    Parsing.lhs=yylhs;
-    Parsing.len=yylen;
-    Parsing.defred=yydefred;
-    Parsing.dgoto=yydgoto;
-    Parsing.sindex=yysindex;
-    Parsing.rindex=yyrindex;
-    Parsing.gindex=yygindex;
-    Parsing.tablesize=yytablesize;
-    Parsing.table=yytable;
-    Parsing.check=yycheck;
-    Parsing.error_function=parse_error;
-    Parsing.names_const=yynames_const;
-    Parsing.names_block=yynames_block }
-let file (lexfun : Lexing.lexbuf -> token) (lexbuf : Lexing.lexbuf) =
-   (Parsing.yyparse yytables 1 lexfun lexbuf : Dot_ast.file)
diff --git a/external/ocamlgraph/src/dot_parser.mli b/external/ocamlgraph/src/dot_parser.mli
deleted file mode 100644
--- a/external/ocamlgraph/src/dot_parser.mli
+++ /dev/null
@@ -1,21 +0,0 @@
-type token =
-  | ID of (Dot_ast.id)
-  | COLON
-  | COMMA
-  | EQUAL
-  | SEMICOLON
-  | EDGEOP
-  | STRICT
-  | GRAPH
-  | DIGRAPH
-  | LBRA
-  | RBRA
-  | LSQ
-  | RSQ
-  | NODE
-  | EDGE
-  | SUBGRAPH
-  | EOF
-
-val file :
-  (Lexing.lexbuf  -> token) -> Lexing.lexbuf -> Dot_ast.file
diff --git a/external/ocamlgraph/src/gml.ml b/external/ocamlgraph/src/gml.ml
deleted file mode 100644
--- a/external/ocamlgraph/src/gml.ml
+++ /dev/null
@@ -1,670 +0,0 @@
-# 20 "src/gml.mll"
-  
-
-  open Lexing
-
-  type value = 
-    | Int of int 
-    | Float of float
-    | String of string
-    | List of value_list
-
-  and value_list = (string * value) list
-
-
-# 16 "src/gml.ml"
-let __ocaml_lex_tables = {
-  Lexing.lex_base = 
-   "\000\000\252\255\253\255\114\000\002\000\007\000\228\000\086\001\
-    \252\255\253\255\200\001\009\000\014\000\058\002\002\000\251\255\
-    \252\255\001\000\080\000\102\000\194\000\216\000\052\001\071\001\
-    \253\255\006\000";
-  Lexing.lex_backtrk = 
-   "\255\255\255\255\255\255\003\000\000\000\001\000\255\255\255\255\
-    \255\255\255\255\003\000\000\000\001\000\255\255\255\255\255\255\
-    \255\255\004\000\001\000\000\000\004\000\255\255\001\000\255\255\
-    \255\255\255\255";
-  Lexing.lex_default = 
-   "\001\000\000\000\000\000\255\255\255\255\255\255\255\255\008\000\
-    \000\000\000\000\255\255\255\255\255\255\255\255\015\000\000\000\
-    \000\000\025\000\255\255\255\255\255\255\255\255\255\255\255\255\
-    \000\000\025\000";
-  Lexing.lex_trans = 
-   "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
-    \000\000\004\000\004\000\004\000\004\000\004\000\000\000\004\000\
-    \005\000\005\000\011\000\011\000\005\000\000\000\011\000\012\000\
-    \012\000\000\000\000\000\012\000\000\000\000\000\000\000\000\000\
-    \004\000\000\000\004\000\024\000\017\000\000\000\000\000\005\000\
-    \024\000\011\000\000\000\000\000\000\000\020\000\012\000\020\000\
-    \018\000\000\000\019\000\019\000\019\000\019\000\019\000\019\000\
-    \019\000\019\000\019\000\019\000\000\000\000\000\000\000\000\000\
-    \000\000\003\000\003\000\003\000\003\000\003\000\003\000\003\000\
-    \003\000\003\000\003\000\003\000\003\000\003\000\003\000\003\000\
-    \003\000\003\000\003\000\003\000\003\000\003\000\003\000\003\000\
-    \003\000\003\000\003\000\000\000\000\000\016\000\000\000\000\000\
-    \000\000\003\000\003\000\003\000\003\000\003\000\003\000\003\000\
-    \003\000\003\000\003\000\003\000\003\000\003\000\003\000\003\000\
-    \003\000\003\000\003\000\003\000\003\000\003\000\003\000\003\000\
-    \003\000\003\000\003\000\005\000\005\000\000\000\000\000\005\000\
-    \018\000\018\000\018\000\018\000\018\000\018\000\018\000\018\000\
-    \018\000\018\000\000\000\000\000\000\000\000\000\000\000\000\000\
-    \000\000\000\000\005\000\000\000\018\000\021\000\019\000\019\000\
-    \019\000\019\000\019\000\019\000\019\000\019\000\019\000\019\000\
-    \000\000\000\000\006\000\006\000\006\000\006\000\006\000\006\000\
-    \006\000\006\000\006\000\006\000\000\000\000\000\000\000\000\000\
-    \000\000\000\000\000\000\006\000\006\000\006\000\006\000\006\000\
-    \006\000\006\000\006\000\006\000\006\000\006\000\006\000\006\000\
-    \006\000\006\000\006\000\006\000\006\000\006\000\006\000\006\000\
-    \006\000\006\000\006\000\006\000\006\000\000\000\000\000\000\000\
-    \000\000\000\000\000\000\006\000\006\000\006\000\006\000\006\000\
-    \006\000\006\000\006\000\006\000\006\000\006\000\006\000\006\000\
-    \006\000\006\000\006\000\006\000\006\000\006\000\006\000\006\000\
-    \006\000\006\000\006\000\006\000\006\000\005\000\005\000\000\000\
-    \018\000\005\000\019\000\019\000\019\000\019\000\019\000\019\000\
-    \019\000\019\000\019\000\019\000\000\000\000\000\000\000\000\000\
-    \002\000\255\255\255\255\023\000\005\000\023\000\255\255\000\000\
-    \022\000\022\000\022\000\022\000\022\000\022\000\022\000\022\000\
-    \022\000\022\000\000\000\000\000\006\000\006\000\006\000\006\000\
-    \006\000\006\000\006\000\006\000\006\000\006\000\000\000\000\000\
-    \000\000\000\000\000\000\000\000\000\000\006\000\006\000\006\000\
-    \006\000\006\000\006\000\006\000\006\000\006\000\006\000\006\000\
-    \006\000\006\000\006\000\006\000\006\000\006\000\006\000\006\000\
-    \006\000\006\000\006\000\006\000\006\000\006\000\006\000\000\000\
-    \000\000\000\000\000\000\000\000\000\000\006\000\006\000\006\000\
-    \006\000\006\000\006\000\006\000\006\000\006\000\006\000\006\000\
-    \006\000\006\000\006\000\006\000\006\000\006\000\006\000\006\000\
-    \006\000\006\000\006\000\006\000\006\000\006\000\006\000\011\000\
-    \011\000\000\000\000\000\011\000\022\000\022\000\022\000\022\000\
-    \022\000\022\000\022\000\022\000\022\000\022\000\000\000\000\000\
-    \000\000\000\000\000\000\000\000\000\000\000\000\011\000\022\000\
-    \022\000\022\000\022\000\022\000\022\000\022\000\022\000\022\000\
-    \022\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
-    \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
-    \000\000\000\000\000\000\000\000\000\000\000\000\000\000\010\000\
-    \010\000\010\000\010\000\010\000\010\000\010\000\010\000\010\000\
-    \010\000\010\000\010\000\010\000\010\000\010\000\010\000\010\000\
-    \010\000\010\000\010\000\010\000\010\000\010\000\010\000\010\000\
-    \010\000\000\000\000\000\009\000\000\000\000\000\000\000\010\000\
-    \010\000\010\000\010\000\010\000\010\000\010\000\010\000\010\000\
-    \010\000\010\000\010\000\010\000\010\000\010\000\010\000\010\000\
-    \010\000\010\000\010\000\010\000\010\000\010\000\010\000\010\000\
-    \010\000\012\000\012\000\000\000\000\000\012\000\000\000\000\000\
-    \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
-    \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
-    \012\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
-    \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
-    \013\000\013\000\013\000\013\000\013\000\013\000\013\000\013\000\
-    \013\000\013\000\000\000\000\000\000\000\000\000\000\000\000\000\
-    \000\000\013\000\013\000\013\000\013\000\013\000\013\000\013\000\
-    \013\000\013\000\013\000\013\000\013\000\013\000\013\000\013\000\
-    \013\000\013\000\013\000\013\000\013\000\013\000\013\000\013\000\
-    \013\000\013\000\013\000\000\000\000\000\000\000\000\000\000\000\
-    \000\000\013\000\013\000\013\000\013\000\013\000\013\000\013\000\
-    \013\000\013\000\013\000\013\000\013\000\013\000\013\000\013\000\
-    \013\000\013\000\013\000\013\000\013\000\013\000\013\000\013\000\
-    \013\000\013\000\013\000\012\000\012\000\000\000\000\000\012\000\
-    \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
-    \000\000\000\000\000\000\000\000\000\000\000\000\255\255\000\000\
-    \000\000\000\000\012\000\000\000\000\000\000\000\000\000\000\000\
-    \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
-    \000\000\000\000\013\000\013\000\013\000\013\000\013\000\013\000\
-    \013\000\013\000\013\000\013\000\000\000\000\000\000\000\000\000\
-    \000\000\000\000\000\000\013\000\013\000\013\000\013\000\013\000\
-    \013\000\013\000\013\000\013\000\013\000\013\000\013\000\013\000\
-    \013\000\013\000\013\000\013\000\013\000\013\000\013\000\013\000\
-    \013\000\013\000\013\000\013\000\013\000\000\000\000\000\000\000\
-    \000\000\000\000\000\000\013\000\013\000\013\000\013\000\013\000\
-    \013\000\013\000\013\000\013\000\013\000\013\000\013\000\013\000\
-    \013\000\013\000\013\000\013\000\013\000\013\000\013\000\013\000\
-    \013\000\013\000\013\000\013\000\013\000\000\000\000\000\000\000\
-    \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
-    \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
-    \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
-    \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
-    \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
-    \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
-    \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
-    \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
-    \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
-    \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
-    \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
-    \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
-    \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
-    \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
-    \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
-    \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
-    \000\000\000\000\000\000";
-  Lexing.lex_check = 
-   "\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\
-    \255\255\000\000\000\000\004\000\004\000\000\000\255\255\004\000\
-    \005\000\005\000\011\000\011\000\005\000\255\255\011\000\012\000\
-    \012\000\255\255\255\255\012\000\255\255\255\255\255\255\255\255\
-    \000\000\255\255\004\000\017\000\014\000\255\255\255\255\005\000\
-    \025\000\011\000\255\255\255\255\255\255\014\000\012\000\014\000\
-    \014\000\255\255\014\000\014\000\014\000\014\000\014\000\014\000\
-    \014\000\014\000\014\000\014\000\255\255\255\255\255\255\255\255\
-    \255\255\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
-    \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
-    \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
-    \000\000\000\000\000\000\255\255\255\255\014\000\255\255\255\255\
-    \255\255\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
-    \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
-    \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
-    \000\000\000\000\000\000\003\000\003\000\255\255\255\255\003\000\
-    \018\000\018\000\018\000\018\000\018\000\018\000\018\000\018\000\
-    \018\000\018\000\255\255\255\255\255\255\255\255\255\255\255\255\
-    \255\255\255\255\003\000\255\255\019\000\018\000\019\000\019\000\
-    \019\000\019\000\019\000\019\000\019\000\019\000\019\000\019\000\
-    \255\255\255\255\003\000\003\000\003\000\003\000\003\000\003\000\
-    \003\000\003\000\003\000\003\000\255\255\255\255\255\255\255\255\
-    \255\255\255\255\255\255\003\000\003\000\003\000\003\000\003\000\
-    \003\000\003\000\003\000\003\000\003\000\003\000\003\000\003\000\
-    \003\000\003\000\003\000\003\000\003\000\003\000\003\000\003\000\
-    \003\000\003\000\003\000\003\000\003\000\255\255\255\255\255\255\
-    \255\255\255\255\255\255\003\000\003\000\003\000\003\000\003\000\
-    \003\000\003\000\003\000\003\000\003\000\003\000\003\000\003\000\
-    \003\000\003\000\003\000\003\000\003\000\003\000\003\000\003\000\
-    \003\000\003\000\003\000\003\000\003\000\006\000\006\000\255\255\
-    \020\000\006\000\020\000\020\000\020\000\020\000\020\000\020\000\
-    \020\000\020\000\020\000\020\000\255\255\255\255\255\255\255\255\
-    \000\000\017\000\014\000\021\000\006\000\021\000\025\000\255\255\
-    \021\000\021\000\021\000\021\000\021\000\021\000\021\000\021\000\
-    \021\000\021\000\255\255\255\255\006\000\006\000\006\000\006\000\
-    \006\000\006\000\006\000\006\000\006\000\006\000\255\255\255\255\
-    \255\255\255\255\255\255\255\255\255\255\006\000\006\000\006\000\
-    \006\000\006\000\006\000\006\000\006\000\006\000\006\000\006\000\
-    \006\000\006\000\006\000\006\000\006\000\006\000\006\000\006\000\
-    \006\000\006\000\006\000\006\000\006\000\006\000\006\000\255\255\
-    \255\255\255\255\255\255\255\255\255\255\006\000\006\000\006\000\
-    \006\000\006\000\006\000\006\000\006\000\006\000\006\000\006\000\
-    \006\000\006\000\006\000\006\000\006\000\006\000\006\000\006\000\
-    \006\000\006\000\006\000\006\000\006\000\006\000\006\000\007\000\
-    \007\000\255\255\255\255\007\000\022\000\022\000\022\000\022\000\
-    \022\000\022\000\022\000\022\000\022\000\022\000\255\255\255\255\
-    \255\255\255\255\255\255\255\255\255\255\255\255\007\000\023\000\
-    \023\000\023\000\023\000\023\000\023\000\023\000\023\000\023\000\
-    \023\000\255\255\255\255\255\255\255\255\255\255\255\255\255\255\
-    \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\
-    \255\255\255\255\255\255\255\255\255\255\255\255\255\255\007\000\
-    \007\000\007\000\007\000\007\000\007\000\007\000\007\000\007\000\
-    \007\000\007\000\007\000\007\000\007\000\007\000\007\000\007\000\
-    \007\000\007\000\007\000\007\000\007\000\007\000\007\000\007\000\
-    \007\000\255\255\255\255\007\000\255\255\255\255\255\255\007\000\
-    \007\000\007\000\007\000\007\000\007\000\007\000\007\000\007\000\
-    \007\000\007\000\007\000\007\000\007\000\007\000\007\000\007\000\
-    \007\000\007\000\007\000\007\000\007\000\007\000\007\000\007\000\
-    \007\000\010\000\010\000\255\255\255\255\010\000\255\255\255\255\
-    \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\
-    \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\
-    \010\000\255\255\255\255\255\255\255\255\255\255\255\255\255\255\
-    \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\
-    \010\000\010\000\010\000\010\000\010\000\010\000\010\000\010\000\
-    \010\000\010\000\255\255\255\255\255\255\255\255\255\255\255\255\
-    \255\255\010\000\010\000\010\000\010\000\010\000\010\000\010\000\
-    \010\000\010\000\010\000\010\000\010\000\010\000\010\000\010\000\
-    \010\000\010\000\010\000\010\000\010\000\010\000\010\000\010\000\
-    \010\000\010\000\010\000\255\255\255\255\255\255\255\255\255\255\
-    \255\255\010\000\010\000\010\000\010\000\010\000\010\000\010\000\
-    \010\000\010\000\010\000\010\000\010\000\010\000\010\000\010\000\
-    \010\000\010\000\010\000\010\000\010\000\010\000\010\000\010\000\
-    \010\000\010\000\010\000\013\000\013\000\255\255\255\255\013\000\
-    \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\
-    \255\255\255\255\255\255\255\255\255\255\255\255\007\000\255\255\
-    \255\255\255\255\013\000\255\255\255\255\255\255\255\255\255\255\
-    \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\
-    \255\255\255\255\013\000\013\000\013\000\013\000\013\000\013\000\
-    \013\000\013\000\013\000\013\000\255\255\255\255\255\255\255\255\
-    \255\255\255\255\255\255\013\000\013\000\013\000\013\000\013\000\
-    \013\000\013\000\013\000\013\000\013\000\013\000\013\000\013\000\
-    \013\000\013\000\013\000\013\000\013\000\013\000\013\000\013\000\
-    \013\000\013\000\013\000\013\000\013\000\255\255\255\255\255\255\
-    \255\255\255\255\255\255\013\000\013\000\013\000\013\000\013\000\
-    \013\000\013\000\013\000\013\000\013\000\013\000\013\000\013\000\
-    \013\000\013\000\013\000\013\000\013\000\013\000\013\000\013\000\
-    \013\000\013\000\013\000\013\000\013\000\255\255\255\255\255\255\
-    \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\
-    \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\
-    \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\
-    \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\
-    \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\
-    \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\
-    \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\
-    \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\
-    \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\
-    \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\
-    \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\
-    \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\
-    \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\
-    \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\
-    \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\
-    \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\
-    \255\255\255\255\255\255";
-  Lexing.lex_base_code = 
-   "\000\000\000\000\000\000\075\000\000\000\000\000\150\000\208\000\
-    \000\000\000\000\027\001\000\000\000\000\102\001\000\000\000\000\
-    \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
-    \000\000\000\000";
-  Lexing.lex_backtrk_code = 
-   "\000\000\000\000\000\000\000\000\000\000\004\000\000\000\000\000\
-    \000\000\000\000\000\000\000\000\004\000\000\000\000\000\000\000\
-    \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
-    \000\000\000\000";
-  Lexing.lex_default_code = 
-   "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
-    \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
-    \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
-    \000\000\000\000";
-  Lexing.lex_trans_code = 
-   "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
-    \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
-    \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
-    \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
-    \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
-    \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
-    \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
-    \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
-    \000\000\001\000\001\000\001\000\001\000\001\000\001\000\001\000\
-    \001\000\001\000\001\000\001\000\001\000\001\000\001\000\001\000\
-    \001\000\001\000\001\000\001\000\001\000\001\000\001\000\001\000\
-    \001\000\001\000\001\000\000\000\000\000\000\000\000\000\000\000\
-    \000\000\001\000\001\000\001\000\001\000\001\000\001\000\001\000\
-    \001\000\001\000\001\000\001\000\001\000\001\000\001\000\001\000\
-    \001\000\001\000\001\000\001\000\001\000\001\000\001\000\001\000\
-    \001\000\001\000\001\000\001\000\001\000\001\000\001\000\001\000\
-    \001\000\001\000\001\000\001\000\001\000\000\000\000\000\000\000\
-    \000\000\000\000\000\000\000\000\001\000\001\000\001\000\001\000\
-    \001\000\001\000\001\000\001\000\001\000\001\000\001\000\001\000\
-    \001\000\001\000\001\000\001\000\001\000\001\000\001\000\001\000\
-    \001\000\001\000\001\000\001\000\001\000\001\000\000\000\000\000\
-    \000\000\000\000\000\000\000\000\001\000\001\000\001\000\001\000\
-    \001\000\001\000\001\000\001\000\001\000\001\000\001\000\001\000\
-    \001\000\001\000\001\000\001\000\001\000\001\000\001\000\001\000\
-    \001\000\001\000\001\000\001\000\001\000\001\000\001\000\001\000\
-    \001\000\001\000\001\000\001\000\001\000\001\000\001\000\001\000\
-    \000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\
-    \001\000\001\000\001\000\001\000\001\000\001\000\001\000\001\000\
-    \001\000\001\000\001\000\001\000\001\000\001\000\001\000\001\000\
-    \001\000\001\000\001\000\001\000\001\000\001\000\001\000\001\000\
-    \001\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\
-    \001\000\001\000\001\000\001\000\001\000\001\000\001\000\001\000\
-    \001\000\001\000\001\000\001\000\001\000\001\000\001\000\001\000\
-    \001\000\001\000\001\000\001\000\001\000\001\000\001\000\001\000\
-    \001\000\001\000\001\000\001\000\001\000\001\000\001\000\001\000\
-    \001\000\001\000\001\000\001\000\001\000\001\000\001\000\001\000\
-    \001\000\001\000\001\000\001\000\001\000\001\000\001\000\001\000\
-    \001\000\001\000\001\000\000\000\000\000\000\000\000\000\000\000\
-    \000\000\001\000\001\000\001\000\001\000\001\000\001\000\001\000\
-    \001\000\001\000\001\000\001\000\001\000\001\000\001\000\001\000\
-    \001\000\001\000\001\000\001\000\001\000\001\000\001\000\001\000\
-    \001\000\001\000\001\000\001\000\001\000\001\000\001\000\001\000\
-    \001\000\001\000\001\000\001\000\001\000\000\000\000\000\000\000\
-    \000\000\000\000\000\000\000\000\001\000\001\000\001\000\001\000\
-    \001\000\001\000\001\000\001\000\001\000\001\000\001\000\001\000\
-    \001\000\001\000\001\000\001\000\001\000\001\000\001\000\001\000\
-    \001\000\001\000\001\000\001\000\001\000\001\000\000\000\000\000\
-    \000\000\000\000\000\000\000\000\001\000\001\000\001\000\001\000\
-    \001\000\001\000\001\000\001\000\001\000\001\000\001\000\001\000\
-    \001\000\001\000\001\000\001\000\001\000\001\000\001\000\001\000\
-    \001\000\001\000\001\000\001\000\001\000\001\000\001\000\001\000\
-    \001\000\001\000\001\000\001\000\001\000\001\000\001\000\001\000\
-    \000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\
-    \001\000\001\000\001\000\001\000\001\000\001\000\001\000\001\000\
-    \001\000\001\000\001\000\001\000\001\000\001\000\001\000\001\000\
-    \001\000\001\000\001\000\001\000\001\000\001\000\001\000\001\000\
-    \001\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\
-    \001\000\001\000\001\000\001\000\001\000\001\000\001\000\001\000\
-    \001\000\001\000\001\000\001\000\001\000\001\000\001\000\001\000\
-    \001\000\001\000\001\000\001\000\001\000\001\000\001\000\001\000\
-    \001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
-    \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
-    \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
-    \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
-    \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
-    \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
-    \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
-    \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
-    \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
-    \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
-    \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
-    \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
-    \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
-    \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
-    \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
-    \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
-    \000\000\000\000\000\000\000\000\000\000\000\000\000\000";
-  Lexing.lex_check_code = 
-   "\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\
-    \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\
-    \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\
-    \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\
-    \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\
-    \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\
-    \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\
-    \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\
-    \255\255\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
-    \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
-    \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
-    \000\000\000\000\000\000\255\255\255\255\255\255\255\255\255\255\
-    \255\255\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
-    \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
-    \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
-    \000\000\000\000\000\000\003\000\003\000\003\000\003\000\003\000\
-    \003\000\003\000\003\000\003\000\003\000\255\255\255\255\255\255\
-    \255\255\255\255\255\255\255\255\003\000\003\000\003\000\003\000\
-    \003\000\003\000\003\000\003\000\003\000\003\000\003\000\003\000\
-    \003\000\003\000\003\000\003\000\003\000\003\000\003\000\003\000\
-    \003\000\003\000\003\000\003\000\003\000\003\000\255\255\255\255\
-    \255\255\255\255\255\255\255\255\003\000\003\000\003\000\003\000\
-    \003\000\003\000\003\000\003\000\003\000\003\000\003\000\003\000\
-    \003\000\003\000\003\000\003\000\003\000\003\000\003\000\003\000\
-    \003\000\003\000\003\000\003\000\003\000\003\000\006\000\006\000\
-    \006\000\006\000\006\000\006\000\006\000\006\000\006\000\006\000\
-    \255\255\255\255\255\255\255\255\255\255\255\255\255\255\006\000\
-    \006\000\006\000\006\000\006\000\006\000\006\000\006\000\006\000\
-    \006\000\006\000\006\000\006\000\006\000\006\000\006\000\006\000\
-    \006\000\006\000\006\000\006\000\006\000\006\000\006\000\006\000\
-    \006\000\255\255\255\255\255\255\255\255\255\255\255\255\006\000\
-    \006\000\006\000\006\000\006\000\006\000\006\000\006\000\006\000\
-    \006\000\006\000\006\000\006\000\006\000\006\000\006\000\006\000\
-    \006\000\006\000\006\000\006\000\006\000\006\000\006\000\006\000\
-    \006\000\007\000\007\000\007\000\007\000\007\000\007\000\007\000\
-    \007\000\007\000\007\000\007\000\007\000\007\000\007\000\007\000\
-    \007\000\007\000\007\000\007\000\007\000\007\000\007\000\007\000\
-    \007\000\007\000\007\000\255\255\255\255\255\255\255\255\255\255\
-    \255\255\007\000\007\000\007\000\007\000\007\000\007\000\007\000\
-    \007\000\007\000\007\000\007\000\007\000\007\000\007\000\007\000\
-    \007\000\007\000\007\000\007\000\007\000\007\000\007\000\007\000\
-    \007\000\007\000\007\000\010\000\010\000\010\000\010\000\010\000\
-    \010\000\010\000\010\000\010\000\010\000\255\255\255\255\255\255\
-    \255\255\255\255\255\255\255\255\010\000\010\000\010\000\010\000\
-    \010\000\010\000\010\000\010\000\010\000\010\000\010\000\010\000\
-    \010\000\010\000\010\000\010\000\010\000\010\000\010\000\010\000\
-    \010\000\010\000\010\000\010\000\010\000\010\000\255\255\255\255\
-    \255\255\255\255\255\255\255\255\010\000\010\000\010\000\010\000\
-    \010\000\010\000\010\000\010\000\010\000\010\000\010\000\010\000\
-    \010\000\010\000\010\000\010\000\010\000\010\000\010\000\010\000\
-    \010\000\010\000\010\000\010\000\010\000\010\000\013\000\013\000\
-    \013\000\013\000\013\000\013\000\013\000\013\000\013\000\013\000\
-    \255\255\255\255\255\255\255\255\255\255\255\255\255\255\013\000\
-    \013\000\013\000\013\000\013\000\013\000\013\000\013\000\013\000\
-    \013\000\013\000\013\000\013\000\013\000\013\000\013\000\013\000\
-    \013\000\013\000\013\000\013\000\013\000\013\000\013\000\013\000\
-    \013\000\255\255\255\255\255\255\255\255\255\255\255\255\013\000\
-    \013\000\013\000\013\000\013\000\013\000\013\000\013\000\013\000\
-    \013\000\013\000\013\000\013\000\013\000\013\000\013\000\013\000\
-    \013\000\013\000\013\000\013\000\013\000\013\000\013\000\013\000\
-    \013\000\255\255\255\255\255\255\255\255\255\255\255\255\255\255\
-    \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\
-    \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\
-    \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\
-    \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\
-    \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\
-    \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\
-    \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\
-    \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\
-    \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\
-    \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\
-    \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\
-    \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\
-    \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\
-    \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\
-    \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\
-    \255\255\255\255\255\255\255\255\255\255\255\255\255\255";
-  Lexing.lex_code = 
-   "\255\001\255\255\000\001\255";
-}
-
-let rec file lexbuf =
-  lexbuf.Lexing.lex_mem <- Array.create 2 (-1) ;   __ocaml_lex_file_rec lexbuf 0
-and __ocaml_lex_file_rec lexbuf __ocaml_lex_state =
-  match Lexing.new_engine __ocaml_lex_tables __ocaml_lex_state lexbuf with
-      | 0 ->
-# 45 "src/gml.mll"
-      ( file lexbuf )
-# 425 "src/gml.ml"
-
-  | 1 ->
-let
-# 46 "src/gml.mll"
-              key
-# 431 "src/gml.ml"
-= Lexing.sub_lexeme lexbuf lexbuf.Lexing.lex_start_pos lexbuf.Lexing.lex_mem.(0) in
-# 47 "src/gml.mll"
-      ( let v = value lexbuf in
-	(key, v) :: file lexbuf )
-# 436 "src/gml.ml"
-
-  | 2 ->
-# 50 "src/gml.mll"
-      ( [] )
-# 441 "src/gml.ml"
-
-  | 3 ->
-let
-# 51 "src/gml.mll"
-         c
-# 447 "src/gml.ml"
-= Lexing.sub_lexeme_char lexbuf lexbuf.Lexing.lex_start_pos in
-# 52 "src/gml.mll"
-      ( failwith ("Gml: invalid character " ^ String.make 1 c) )
-# 451 "src/gml.ml"
-
-  | __ocaml_lex_state -> lexbuf.Lexing.refill_buff lexbuf; __ocaml_lex_file_rec lexbuf __ocaml_lex_state
-
-and value_list lexbuf =
-  lexbuf.Lexing.lex_mem <- Array.create 2 (-1) ;   __ocaml_lex_value_list_rec lexbuf 7
-and __ocaml_lex_value_list_rec lexbuf __ocaml_lex_state =
-  match Lexing.new_engine __ocaml_lex_tables __ocaml_lex_state lexbuf with
-      | 0 ->
-# 56 "src/gml.mll"
-      ( value_list lexbuf )
-# 462 "src/gml.ml"
-
-  | 1 ->
-let
-# 57 "src/gml.mll"
-              key
-# 468 "src/gml.ml"
-= Lexing.sub_lexeme lexbuf lexbuf.Lexing.lex_start_pos lexbuf.Lexing.lex_mem.(0) in
-# 58 "src/gml.mll"
-      ( let v = value lexbuf in
-	(key, v) :: value_list lexbuf )
-# 473 "src/gml.ml"
-
-  | 2 ->
-# 61 "src/gml.mll"
-      ( [] )
-# 478 "src/gml.ml"
-
-  | 3 ->
-let
-# 62 "src/gml.mll"
-         c
-# 484 "src/gml.ml"
-= Lexing.sub_lexeme_char lexbuf lexbuf.Lexing.lex_start_pos in
-# 63 "src/gml.mll"
-      ( failwith ("Gml: invalid character " ^ String.make 1 c) )
-# 488 "src/gml.ml"
-
-  | __ocaml_lex_state -> lexbuf.Lexing.refill_buff lexbuf; __ocaml_lex_value_list_rec lexbuf __ocaml_lex_state
-
-and value lexbuf =
-    __ocaml_lex_value_rec lexbuf 14
-and __ocaml_lex_value_rec lexbuf __ocaml_lex_state =
-  match Lexing.engine __ocaml_lex_tables __ocaml_lex_state lexbuf with
-      | 0 ->
-let
-# 66 "src/gml.mll"
-               i
-# 500 "src/gml.ml"
-= Lexing.sub_lexeme lexbuf lexbuf.Lexing.lex_start_pos lexbuf.Lexing.lex_curr_pos in
-# 67 "src/gml.mll"
-      ( Int (int_of_string i) )
-# 504 "src/gml.ml"
-
-  | 1 ->
-let
-# 68 "src/gml.mll"
-            r
-# 510 "src/gml.ml"
-= Lexing.sub_lexeme lexbuf lexbuf.Lexing.lex_start_pos lexbuf.Lexing.lex_curr_pos in
-# 69 "src/gml.mll"
-      ( Float (float_of_string r) )
-# 514 "src/gml.ml"
-
-  | 2 ->
-let
-# 70 "src/gml.mll"
-                      s
-# 520 "src/gml.ml"
-= Lexing.sub_lexeme lexbuf (lexbuf.Lexing.lex_start_pos + 1) (lexbuf.Lexing.lex_curr_pos + -1) in
-# 71 "src/gml.mll"
-      ( String s )
-# 524 "src/gml.ml"
-
-  | 3 ->
-# 73 "src/gml.mll"
-      ( let l = value_list lexbuf in List l )
-# 529 "src/gml.ml"
-
-  | 4 ->
-let
-# 74 "src/gml.mll"
-         c
-# 535 "src/gml.ml"
-= Lexing.sub_lexeme_char lexbuf lexbuf.Lexing.lex_start_pos in
-# 75 "src/gml.mll"
-      ( failwith ("Gml: invalid character " ^ String.make 1 c) )
-# 539 "src/gml.ml"
-
-  | __ocaml_lex_state -> lexbuf.Lexing.refill_buff lexbuf; __ocaml_lex_value_rec lexbuf __ocaml_lex_state
-
-;;
-
-# 77 "src/gml.mll"
- 
-
-  let parse f =
-    let c = open_in f in
-    let lb = from_channel c in
-    let v = file lb in
-    close_in c;
-    v
-
-  module Parse
-    (B : Builder.S)
-    (L : sig val node : value_list -> B.G.V.label
-	     val edge : value_list -> B.G.E.label end) = 
-  struct
-
-    let create_graph l =
-      let nodes = Hashtbl.create 97 in
-      let g = B.empty () in
-      (* 1st pass: create the nodes *)
-      let g =
-	List.fold_left 
-	  (fun g v -> match v with
-	     | "node", List l ->
-		 let n = B.G.V.create (L.node l) in
-		 begin 
-		   try 
-		     let id = List.assoc "id" l in Hashtbl.add nodes id n
-		   with Not_found -> 
-		     ()
-		 end;
-		 B.add_vertex g n
-	     | _ -> 
-		 g)
-	  g l
-      in
-      (* 2nd pass: add the edges *)
-      List.fold_left
-	(fun g v -> match v with
-	   | "edge", List l ->
-	       begin try
-		 let source = List.assoc "source" l in
-		 let target = List.assoc "target" l in
-		 let nsource = Hashtbl.find nodes source in
-		 let ntarget = Hashtbl.find nodes target in
-		 let e = B.G.E.create nsource (L.edge l) ntarget in
-		 B.add_edge_e g e
-	       with Not_found ->
-		 g
-	       end
-	   | _ ->
-	       g)
-	g l
-	
-    let parse f =
-      match parse f with
-	| ["graph", List l] -> create_graph l
-	| _ -> invalid_arg "Gml.Parse.parse: not a graph file"
-      
-  end
-
-  module Print
-    (G : sig
-       module V : sig
-	 type t
-	 val hash : t -> int
-	 val equal : t -> t -> bool
-	 type label
-	 val label : t -> label
-       end
-       module E : sig
-	 type t
-	 type label
-	 val src : t -> V.t
-	 val dst : t -> V.t
-	 val label : t -> label
-       end
-       type t
-       val iter_vertex : (V.t -> unit) -> t -> unit
-       val iter_edges_e : (E.t -> unit) -> t -> unit
-     end)
-    (L : sig
-       val node : G.V.label -> value_list
-       val edge : G.E.label -> value_list
-     end) =
-  struct
-
-    open Format
-
-    module H = Hashtbl.Make(G.V)
-
-    let print fmt g =
-      let nodes = H.create 97 in
-      let cpt = ref 0 in
-      let id n = 
-	try H.find nodes n
-	with Not_found -> incr cpt; let id = !cpt in H.add nodes n id; id
-      in
-      fprintf fmt "@[graph [@\n";
-      let rec value fmt = function
-	| Int n -> fprintf fmt "%d" n
-	| Float f -> fprintf fmt "%f" f
-	| String s -> fprintf fmt "\"%s\"" s
-	| List l -> fprintf fmt "[@\n  @[%a@]@\n]" value_list l
-      and value_list fmt = function
-	| [] -> ()
-	| [s,v] -> fprintf fmt "%s %a" s value v
-	| (s,v) :: l -> fprintf fmt "%s %a@\n" s value v; value_list fmt l
-      in
-      G.iter_vertex
-	(fun v -> 
-	   fprintf fmt "  @[node [@\n  id %d@\n  @[%a@]@\n]@]@\n" 
-	     (id v) value_list (L.node (G.V.label v)))
-	g;
-      G.iter_edges_e
-	(fun e ->
-	   fprintf fmt 
-	     "  @[edge [@\n  source %d@\n  target %d@\n  @[%a@]@\n]@]@\n"
-	     (id (G.E.src e)) (id (G.E.dst e)) 
-	     value_list (L.edge (G.E.label e)))
-	g;
-      fprintf fmt "]@\n"
-
-  end
-
-
-# 671 "src/gml.ml"
diff --git a/external/ocamlgraph/src/version.ml b/external/ocamlgraph/src/version.ml
deleted file mode 100644
--- a/external/ocamlgraph/src/version.ml
+++ /dev/null
@@ -1,2 +0,0 @@
-let version = "0.99b"
-let date = "Tue May 19 21:41:16 UTC 2015"
diff --git a/liquid-fixpoint.cabal b/liquid-fixpoint.cabal
--- a/liquid-fixpoint.cabal
+++ b/liquid-fixpoint.cabal
@@ -1,5 +1,5 @@
 name:                liquid-fixpoint
-version:             0.3.0.0
+version:             0.3.0.1
 Copyright:           2010-15 Ranjit Jhala, University of California, San Diego.
 synopsis:            Predicate Abstraction-based Horn-Clause/Implication Constraint Solver
 homepage:            https://github.com/ucsd-progsys/liquid-fixpoint
@@ -72,6 +72,8 @@
                   , external/fixpoint/fixpoint.native-i686-w64-mingw32
                   , external/fixpoint/fixpoint.native-x86_64-darwin
                   , external/fixpoint/fixpoint.native-x86_64-linux
+                  , tests/neg/*.fq
+                  , tests/pos/*.fq
 
 Flag z3mem
   Description: Link to Z3
diff --git a/tests/neg/test00.fq b/tests/neg/test00.fq
new file mode 100644
--- /dev/null
+++ b/tests/neg/test00.fq
@@ -0,0 +1,31 @@
+
+qualif Zog(v:a) : (10 <= v)
+qualif Bog(v:a, x:a) : (x <= v)
+
+bind 0 a : {v: int | $k0}
+
+constraint:
+  env [ ]
+  grd true
+  lhs {v : int | (v = 9)}
+  rhs {v : int | $k0}
+  id 1 
+
+constraint:
+  env [ ]
+  grd true 
+  lhs {v : int | v = 20}
+  rhs {v : int | $k0}
+  id 2 
+
+constraint:
+  env [ 0
+      ]
+  grd true 
+  lhs {v : int | v = a}
+  rhs {v : int | 10 <= v}
+  id 3 
+
+wf:
+  env [ ]
+  reft {v: int | $k0}
diff --git a/tests/neg/test00a.fq b/tests/neg/test00a.fq
new file mode 100644
--- /dev/null
+++ b/tests/neg/test00a.fq
@@ -0,0 +1,32 @@
+// This qualifier saves the day; solve constraints WITHOUT IT
+
+qualif Zog(v:a) : (10 <= v)
+
+bind 0 x : {v : int | true}
+bind 1 y : {v : int | true}
+bind 2 z : {v : int | true}
+
+constraint:
+  env [0]
+  grd true
+  lhs {v : int | (x = 9)}
+  rhs {v : int | $k0[v:=x]}
+  id 1 
+
+constraint:
+  env [1]
+  grd true 
+  lhs {v : int | y = 20}
+  rhs {v : int | $k0[v:=y]}
+  id 2 
+
+constraint:
+  env [2]
+  grd true 
+  lhs {v : int | $k0[v:=z]}
+  rhs {v : int | 10 <= z}
+  id 3 
+
+wf:
+  env [ ]
+  reft {v: int | $k0}
diff --git a/tests/neg/test1.fq b/tests/neg/test1.fq
new file mode 100644
--- /dev/null
+++ b/tests/neg/test1.fq
@@ -0,0 +1,32 @@
+
+// This qualifier saves the day; solve constraints WITHOUT IT
+qualif Zog(v:a) : (10 <= v)
+
+bind 0 x : {v : int | v = 9}
+bind 1 y : {v : int | v = 20}
+bind 2 a : {v : int | $k0    }
+      
+constraint:
+  env [0]
+  grd true
+  lhs {v : int | v = x}
+  rhs {v : int | $k0   }
+  id 1 
+
+constraint:
+  env [1]
+  grd true 
+  lhs {v : int | v = y}
+  rhs {v : int | $k0   }
+  id 2 
+
+constraint:
+  env [2]
+  grd true 
+  lhs {v : int | v = a  }
+  rhs {v : int | 10 <= v}
+  id 3 
+
+wf:
+  env [ ]
+  reft {v : int | $k0}
diff --git a/tests/neg/test2.fq b/tests/neg/test2.fq
new file mode 100644
--- /dev/null
+++ b/tests/neg/test2.fq
@@ -0,0 +1,56 @@
+
+// This qualifier saves the day; solve constraints WITHOUT IT
+qualif Zog(v:a): (10 <= v)
+
+// But you may use this one
+qualif Pog(v:a): (0 <= v)
+
+bind 0 x: {v: int | v = 9 }
+bind 1 a: {v: int | $k1    }
+bind 2 y: {v: int | v = 20}
+bind 3 b: {v: int | $k1    }
+bind 4 c: {v: int | $k0    }
+
+constraint:
+  env [ ]
+  grd true
+  lhs {v : int | v = 0}
+  rhs {v : int | $k1 }
+  id 0 
+
+
+constraint:
+  env [ 0; 1]
+  grd true
+  lhs {v : int | v = x + a}
+  rhs {v : int | $k0}
+  id 1 
+
+constraint:
+  env [2; 3]
+  grd true 
+  lhs {v : int | v = y + b}
+  rhs {v : int | $k0}
+  id 2 
+
+constraint:
+  env [ ]
+  grd true 
+  lhs {v : int | $k0}
+  rhs {v : int | $k1}
+  id 3
+
+constraint:
+  env [4]
+  grd true 
+  lhs {v : int | v = c  }
+  rhs {v : int | 10 <= v}
+  id 4 
+
+wf:
+  env [ ]
+  reft {v: int | $k0}
+
+wf:
+  env [ ]
+  reft {v: int | $k1}
diff --git a/tests/neg/test3.fq b/tests/neg/test3.fq
new file mode 100644
--- /dev/null
+++ b/tests/neg/test3.fq
@@ -0,0 +1,24 @@
+
+qualif Zog(v:a, z:b) : (v = z)
+
+bind 0 x : {v : int | true}
+bind 1 q : {v : int | true}
+bind 2 y : {v : int | v = 42}
+
+constraint:
+  env [1]
+  grd true
+  lhs {v : int | v = q}
+  rhs {v : int | $k0[x:=q] }
+  id 1 
+
+constraint:
+  env [2]
+  grd true
+  lhs {v : int | $k0[x:=y]}
+  rhs {v : int | v = 10}
+  id 2
+
+wf:
+  env [0]
+  reft {v : int | $k0}
diff --git a/tests/pos/test00.fq b/tests/pos/test00.fq
new file mode 100644
--- /dev/null
+++ b/tests/pos/test00.fq
@@ -0,0 +1,31 @@
+
+qualif Zog(v:a) : (10 <= v)
+qualif Bog(v:a, x:a) : (x <= v)
+
+bind 0 a : {v: int | [$k0]}
+
+constraint:
+  env [ ]
+  grd true
+  lhs {v : int | [v = 10]}
+  rhs {v : int | [$k0]}
+  id 1 
+
+constraint:
+  env [ ]
+  grd true 
+  lhs {v : int | [v = 20]}
+  rhs {v : int | [$k0]}
+  id 2 
+
+constraint:
+  env [ 0
+      ]
+  grd true 
+  lhs {v : int | [v = a]}
+  rhs {v : int | [10 <= v]}
+  id 3 
+
+wf:
+  env [ ]
+  reft {v: int | [$k0]}
diff --git a/tests/pos/test00a.fq b/tests/pos/test00a.fq
new file mode 100644
--- /dev/null
+++ b/tests/pos/test00a.fq
@@ -0,0 +1,33 @@
+// This qualifier saves the day; solve constraints WITHOUT IT
+
+qualif Zog(v:a) : (10 <= v)
+
+bind 0 x : {v : int | true}
+bind 1 y : {v : int | true}
+bind 2 z : {v : int | true}
+
+constraint:
+  env [0]
+  grd true
+  lhs {v : int | (x = 10)}
+  rhs {v : int | $k0[v:=x]}
+  id 1 
+
+constraint:
+  env [1]
+  grd true 
+  lhs {v : int | y = 20}
+  rhs {v : int | $k0[v:=y]}
+  id 2 
+
+constraint:
+  env [2]
+  grd true 
+  lhs {v : int | $k0[v:=z]}
+  rhs {v : int | 10 <= z}
+  id 3 
+
+wf:
+  env [ ]
+  reft {v: int | $k0}
+
diff --git a/tests/pos/test1.fq b/tests/pos/test1.fq
new file mode 100644
--- /dev/null
+++ b/tests/pos/test1.fq
@@ -0,0 +1,32 @@
+
+// This qualifier saves the day; solve constraints WITHOUT IT
+qualif Zog(v:a) : (10 <= v)
+
+bind 0 x : {v : int | v = 10}
+bind 1 y : {v : int | v = 20}
+bind 2 a : {v : int | $k0    }
+      
+constraint:
+  env [0]
+  grd true
+  lhs {v : int | v = x}
+  rhs {v : int | $k0   }
+  id 1 
+
+constraint:
+  env [1]
+  grd true 
+  lhs {v : int | v = y}
+  rhs {v : int | $k0   }
+  id 2 
+
+constraint:
+  env [2]
+  grd true 
+  lhs {v : int | v = a  }
+  rhs {v : int | 10 <= v}
+  id 3 
+
+wf:
+  env [ ]
+  reft {v : int | $k0}
diff --git a/tests/pos/test2.fq b/tests/pos/test2.fq
new file mode 100644
--- /dev/null
+++ b/tests/pos/test2.fq
@@ -0,0 +1,56 @@
+
+// This qualifier saves the day; solve constraints WITHOUT IT
+qualif Zog(v:a): (10 <= v)
+
+// But you may use this one
+qualif Pog(v:a): (0 <= v)
+
+bind 0 x: {v: int | v = 10}
+bind 1 a: {v: int | $k1    }
+bind 2 y: {v: int | v = 20}
+bind 3 b: {v: int | $k1    }
+bind 4 c: {v: int | $k0    }
+
+constraint:
+  env [ ]
+  grd true
+  lhs {v : int | v = 0}
+  rhs {v : int | $k1 }
+  id 0 
+
+
+constraint:
+  env [ 0; 1]
+  grd true
+  lhs {v : int | v = x + a}
+  rhs {v : int | $k0}
+  id 1 
+
+constraint:
+  env [2; 3]
+  grd true 
+  lhs {v : int | v = y + b}
+  rhs {v : int | $k0}
+  id 2 
+
+constraint:
+  env [ ]
+  grd true 
+  lhs {v : int | $k0}
+  rhs {v : int | $k1}
+  id 3
+
+constraint:
+  env [4]
+  grd true 
+  lhs {v : int | v = c  }
+  rhs {v : int | 10 <= v}
+  id 4 
+
+wf:
+  env [ ]
+  reft {v: int | $k0}
+
+wf:
+  env [ ]
+  reft {v: int | $k1}
diff --git a/tests/pos/test3.fq b/tests/pos/test3.fq
new file mode 100644
--- /dev/null
+++ b/tests/pos/test3.fq
@@ -0,0 +1,24 @@
+
+qualif Zog(v:a, z:b) : (v = z)
+
+bind 0 x : {v : int | true}
+bind 1 q : {v : int | true}
+bind 2 y : {v : int | v = 10}
+
+constraint:
+  env [1]
+  grd true
+  lhs {v : int | v = q}
+  rhs {v : int | $k0[x:=q] }
+  id 1 
+
+constraint:
+  env [2]
+  grd true
+  lhs {v : int | $k0[x:=y]}
+  rhs {v : int | v = 10}
+  id 2
+
+wf:
+  env [0]
+  reft {v : int | $k0}
diff --git a/tests/test.hs b/tests/test.hs
--- a/tests/test.hs
+++ b/tests/test.hs
@@ -18,6 +18,7 @@
 import System.Exit
 import System.FilePath
 import System.IO
+import System.IO.Error
 -- import qualified System.Posix as Posix
 import System.Process
 
@@ -242,7 +243,7 @@
 walkDirectory :: FilePath -> IO [FilePath]
 ----------------------------------------------------------------------------------------
 walkDirectory root
-  = do (ds,fs) <- partitionM doesDirectoryExist . candidates =<< getDirectoryContents root
+  = do (ds,fs) <- partitionM doesDirectoryExist . candidates =<< (getDirectoryContents root `catchIOError` const (return []))
        (fs++) <$> concatMapM walkDirectory ds
   where
     candidates fs = [root </> f | f <- fs, not (isExtSeparator (head f))]
