summaryrefslogtreecommitdiff
path: root/src/ast_util.mli
diff options
context:
space:
mode:
authorAlasdair Armstrong2018-01-22 21:44:17 +0000
committerAlasdair Armstrong2018-01-22 21:44:17 +0000
commit4cafba567b6610b239ab6b82b89073a1a8a49632 (patch)
treebbf1ffe9ca3da4c0efc3b440fcecb6b69176e127 /src/ast_util.mli
parent6eee8747074539f77881cea90ce848cd8f4de1a5 (diff)
Added rewriter that specializes all function calls in a specification.
This removes all type polymorphism, so we can generate optimized bitvector code and compile to languages without parametric polymorphism.
Diffstat (limited to 'src/ast_util.mli')
-rw-r--r--src/ast_util.mli11
1 files changed, 11 insertions, 0 deletions
diff --git a/src/ast_util.mli b/src/ast_util.mli
index 69d80ea7..349faac2 100644
--- a/src/ast_util.mli
+++ b/src/ast_util.mli
@@ -71,6 +71,7 @@ val mk_typschm : typquant -> typ -> typschm
val mk_typquant : quant_item list -> typquant
val mk_qi_id : base_kind_aux -> kid -> quant_item
val mk_qi_nc : n_constraint -> quant_item
+val mk_qi_kopt : kinded_id -> quant_item
val mk_fexp : id -> unit exp -> unit fexp
val mk_fexps : (unit fexp) list -> unit fexps
val mk_letbind : unit pat -> unit exp -> unit letbind
@@ -280,3 +281,13 @@ val undefined_of_typ : bool -> Ast.l -> (typ -> 'annot) -> typ -> 'annot exp
val destruct_pexp : 'a pexp -> 'a pat * ('a exp) option * 'a exp * (Ast.l * 'a)
val construct_pexp : 'a pat * ('a exp) option * 'a exp * (Ast.l * 'a) -> 'a pexp
+
+val is_valspec : id -> 'a def -> bool
+
+val is_fundef : id -> 'a def -> bool
+
+val rename_fundef : id -> 'a fundef -> 'a fundef
+
+val split_defs : ('a def -> bool) -> 'a defs -> ('a defs * 'a def * 'a defs) option
+
+val append_ast : 'a defs -> 'a defs -> 'a defs