@@ -66,7 +66,8 @@ module Make (M_with_make : M_with_make) : S_with_fresh = struct
6666 | Ty_fp 32 -> f32
6767 | Ty_fp 64 -> f64
6868 | Ty_roundingMode -> M.Types. roundingMode
69- | (Ty_fp _ | Ty_list | Ty_app | Ty_unit | Ty_none | Ty_regexp ) as ty ->
69+ | Ty_regexp -> M.Types. regexp
70+ | (Ty_fp _ | Ty_list | Ty_app | Ty_unit | Ty_none ) as ty ->
7071 Fmt. failwith " Unsupported theory: %a@." Ty. pp ty
7172
7273 let make_symbol (ctx : symbol_ctx ) (s : Symbol.t ) : symbol_ctx * M.term =
@@ -272,6 +273,7 @@ module Make (M_with_make : M_with_make) : S_with_fresh = struct
272273 let binop op e1 e2 =
273274 match op with
274275 | Binop. Regexp_range -> M.Re. range e1 e2
276+ | Regexp_inter -> M.Re. inter e1 e2
275277 | op ->
276278 Fmt. failwith {| Regexp : Unsupported binop operator " %a" | } Binop. pp op
277279
@@ -687,6 +689,9 @@ module Make (M_with_make : M_with_make) : S_with_fresh = struct
687689 let base' = v (Bitv (Bitvector. of_int32 base)) in
688690 let ctx, offset' = encode_expr ctx offset in
689691 (ctx, I32. binop Add base' offset')
692+ | Symbol { name = Simple "re.all" ; _ } -> (ctx, M.Re. all () )
693+ | Symbol { name = Simple "re.none" ; _ } -> (ctx, M.Re. none () )
694+ | Symbol { name = Simple "re.allchar" ; _ } -> (ctx, M.Re. allchar () )
690695 | Symbol sym -> make_symbol ctx sym
691696 (* FIXME: add a way to support building these expressions without apps *)
692697 | App ({ name = Simple "fp.add" ; _ } , [ rm ; a ; b ]) ->
0 commit comments