diff --git a/dolmen b/dolmen index 57c66b6b6de28af0a7b9d0fe429bfacdca05f8d9..660c77c855d8b7441f6aec56c84c54e46229bc15 160000 --- a/dolmen +++ b/dolmen @@ -1 +1 @@ -Subproject commit 57c66b6b6de28af0a7b9d0fe429bfacdca05f8d9 +Subproject commit 660c77c855d8b7441f6aec56c84c54e46229bc15 diff --git a/src_colibri2/core/ground.ml b/src_colibri2/core/ground.ml index 3031ec4dd9db7c5af4b85b034ab92b9d4a5cc61e..61c249fd4e4dc77a5ea9f8ac1bce44658a59c675 100644 --- a/src_colibri2/core/ground.ml +++ b/src_colibri2/core/ground.ml @@ -89,7 +89,9 @@ module Ty = struct (fun i -> assert (i > 0); Expr.( - Id.mk ~builtin:Arrow "arrow" { arity = i + 1; alias = No_alias })) + Id.mk ~builtin:Arrow + (Dolmen_std.Path.global "arrow") + { arity = i + 1; alias = No_alias })) cache i in match ret.app.builtin with diff --git a/src_colibri2/solver/input.ml b/src_colibri2/solver/input.ml index d3ed0f98a08990a1001f6f656f47935a00e75888..f5a2c0905bfc8d88529e726ef9878fb25c4e3415 100644 --- a/src_colibri2/solver/input.ml +++ b/src_colibri2/solver/input.ml @@ -314,7 +314,12 @@ let handle_stmt ?(show_check_sat_result = true) ?(show_steps = false) Term.term = App ( { - term = Symbol { Id.ns = Id.Attr; Id.name = ":status-colibri2" }; + term = + Symbol + { + Id.ns = Namespace.Attr; + Id.name = Simple ":status-colibri2"; + }; _; }, args ); @@ -322,13 +327,13 @@ let handle_stmt ?(show_check_sat_result = true) ?(show_steps = false) _; } -> ( match args with - | [ { term = Symbol { name = "sat"; _ }; _ } ] -> + | [ { term = Symbol { name = Simple "sat"; _ }; _ } ] -> Context.Ref.set st.solve_state.status_colibri `Sat - | [ { term = Symbol { name = "unsat"; _ }; _ } ] -> + | [ { term = Symbol { name = Simple "unsat"; _ }; _ } ] -> Context.Ref.set st.solve_state.status_colibri `Unsat - | [ { term = Symbol { name = "unknown"; _ }; _ } ] -> + | [ { term = Symbol { name = Simple "unknown"; _ }; _ } ] -> Context.Ref.set st.solve_state.status_colibri `Unknown - | [ { term = Symbol { name = "steplimitreached"; _ }; _ } ] -> + | [ { term = Symbol { name = Simple "steplimitreached"; _ }; _ } ] -> Context.Ref.set st.solve_state.status_colibri `StepLimitReached | _ -> error st loc "Expected sat|unsat|unknown") | `Set_info _ -> () diff --git a/src_colibri2/tests/tests_lib.ml b/src_colibri2/tests/tests_lib.ml index 7ba0f3c77d9d833e2c2a2f44267040636d5009f2..59675e82ecee0bde4a5cd39599da3b00a8ca93ca 100644 --- a/src_colibri2/tests/tests_lib.ml +++ b/src_colibri2/tests/tests_lib.ml @@ -24,8 +24,8 @@ open Colibri2_core let debug = Debug.register_flag ~desc:" Run the test in verbose mode." "ounit" -let fresht ty s = Expr.Term.apply_cst (Expr.Term.Const.mk s ty) [] [] -let fresh ty s = Ground.convert (Expr.Term.apply_cst (Expr.Term.Const.mk s ty) [] []) +let fresht ty s = Expr.Term.apply_cst (Expr.Term.Const.mk (Dolmen_std.Path.global s) ty) [] [] +let fresh ty s = Ground.convert (Expr.Term.apply_cst (Expr.Term.Const.mk (Dolmen_std.Path.global s) ty) [] []) let (&:) s l = s >::: (List.map (fun f -> OUnit2.test_case f) l) diff --git a/src_colibri2/tests/tests_uf.ml b/src_colibri2/tests/tests_uf.ml index ef8848c21e5e599da856cd9f5d17d5fd577fc532..3cc921045f89ac8021062f4b6c1a9dc1929ea897 100644 --- a/src_colibri2/tests/tests_uf.ml +++ b/src_colibri2/tests/tests_uf.ml @@ -80,7 +80,7 @@ let noteq _ = let basic = "Uf.Basic" >::: ["empty" >:: empty; "tauto" >:: tauto; "trans" >:: trans; "noteq" >:: noteq] -let f = Expr.Term.Const.mk "f" (Expr.Ty.arrow [Ty.bool] Ty.bool) +let f = Expr.Term.Const.mk (Dolmen_std.Path.global "f") (Expr.Ty.arrow [Ty.bool] Ty.bool) let f x = Expr.Term.apply_cst f [] [x] let fa = Ground.convert @@ f ta let fb = Ground.convert @@ f tb @@ -157,7 +157,7 @@ let congru1 = "Uf.Congru 1 arg" >::: ["refl" >:: refl;"congru" >:: congru; "2level" >:: _2level; "2level'" >:: _2level'; "bigger" >:: bigger] let (!!) = Ground.convert -let g = Expr.Term.Const.mk "g" (Expr.Ty.arrow [Ty.bool;Ty.bool] Ty.bool) +let g = Expr.Term.Const.mk (Dolmen_std.Path.global "g") (Expr.Ty.arrow [Ty.bool;Ty.bool] Ty.bool) let g a b = Expr.Term.apply_cst g [] [a;b] let gab = g ta tb let gaa = g ta ta @@ -217,9 +217,9 @@ let x = fresht Ty.bool "x" let y = fresht Ty.bool "y" let altergo0 _ = - let h = Expr.Term.Const.mk "h" (Expr.Ty.arrow [Ty.bool] Ty.bool) in + let h = Expr.Term.Const.mk (Dolmen_std.Path.global "h") (Expr.Ty.arrow [Ty.bool] Ty.bool) in let h x = Expr.Term.apply_cst h [] [x] in - let g = Expr.Term.Const.mk "g" (Expr.Ty.arrow [Ty.bool;Ty.bool] Ty.bool) in + let g = Expr.Term.Const.mk (Dolmen_std.Path.global "g") (Expr.Ty.arrow [Ty.bool;Ty.bool] Ty.bool) in let g x y = Expr.Term.apply_cst g [] [x;y] in let gax = g ta x in let hx = h x in @@ -235,7 +235,7 @@ let altergo0 _ = (is_equal env !!ggahxx a) let altergo1 _ = - let h = Expr.Term.Const.mk "h" (Expr.Ty.arrow [Ty.bool;Ty.bool] Ty.bool) in + let h = Expr.Term.Const.mk (Dolmen_std.Path.global "h") (Expr.Ty.arrow [Ty.bool;Ty.bool] Ty.bool) in let h x y = Expr.Term.apply_cst h [] [x;y] in let rec bf n = if n < 1 then ta else f (bf (n-1)) in let fffa = bf 3 in @@ -259,7 +259,7 @@ let altergo1 _ = (is_equal env !!hggxyya !!hxfa) let altergo2 _ = - let h = Expr.Term.Const.mk "h" (Expr.Ty.arrow [Ty.bool;Ty.bool] Ty.bool) in + let h = Expr.Term.Const.mk (Dolmen_std.Path.global "h") (Expr.Ty.arrow [Ty.bool;Ty.bool] Ty.bool) in let h x y = Expr.Term.apply_cst h [] [x;y] in let gxy = g x y in let fa = f ta in diff --git a/src_colibri2/theories/LRA/realValue.ml b/src_colibri2/theories/LRA/realValue.ml index 62dd5b8c003c4ffd77c2a113d8d9a22bee59ff46..d4002abf082b0aacbcf710f8c00c3cfcfc3de019 100644 --- a/src_colibri2/theories/LRA/realValue.ml +++ b/src_colibri2/theories/LRA/realValue.ml @@ -26,17 +26,19 @@ module Builtin = struct type _ Expr.t += Abs_real let abs_real = - Expr.Id.mk ~name:"colibri_abs_real" ~builtin:Abs_real "Abs" + Expr.Id.mk ~name:"colibri_abs_real" ~builtin:Abs_real + (Dolmen_std.Path.global "Abs") (Expr.Ty.arrow [ Expr.Ty.real ] Expr.Ty.real) let () = Expr.add_builtins (fun env s -> match s with - | Dolmen_loop.Typer.T.Id { ns = Term; name = "colibri_abs_real" } -> + | Dolmen_loop.Typer.T.Id { ns = Term; name = Simple "colibri_abs_real" } + -> `Term (Dolmen_type.Base.term_app1 (module Dolmen_loop.Typer.T) - env "colibri_abs_real" + env s (fun a -> Expr.Term.apply_cst abs_real [] [ a ])) | _ -> `Not_found) end @@ -157,7 +159,7 @@ module Check = struct | { app = { builtin = Expr.Geq }; tyargs = []; args; ty = _ } -> let a, b = IArray.extract2_exn args in !<<(Q.geq !>a !>b) - | { app = { builtin = Expr.Floor }; tyargs = []; args; _ } -> + | { app = { builtin = Expr.Floor_to_int }; tyargs = []; args; _ } -> let a = IArray.extract1_exn args in !<(Q.floor !>a) | { app = { builtin = Expr.Abs | Builtin.Abs_real }; tyargs = []; args; _ } @@ -331,7 +333,7 @@ let converter d (f : Ground.t) = let a, b = IArray.extract2_exn args in cmp Q.ge a b; Check.attach d f - | { app = { builtin = Expr.Floor }; tyargs = []; args; _ } -> + | { app = { builtin = Expr.Floor_to_int }; tyargs = []; args; _ } -> let a = IArray.extract1_exn args in reg a; Check.attach d f diff --git a/src_colibri2/theories/quantifier/quantifier.ml b/src_colibri2/theories/quantifier/quantifier.ml index c1dff258d955d2a8da91b6a67bd3e14e8d2ad809..31b233b9d18eefad60f2a3daf3838a44ea93bd98 100644 --- a/src_colibri2/theories/quantifier/quantifier.ml +++ b/src_colibri2/theories/quantifier/quantifier.ml @@ -198,7 +198,7 @@ let skolemize d (e : Ground.ClosedQuantifier.s) = let subst_term = List.fold_left (fun acc v -> - let id = Expr.Term.Const.mk v.Expr.name v.id_ty in + let id = Expr.Term.Const.mk v.Expr.path v.id_ty in let t = Expr.Term.apply_cst id [] [] in Expr.Term.Var.M.add v (Ground.convert ~subst:e.subst t) acc) e.subst.term e.term_vars