From bae2c9cd668590b731025e43e79f1dca3efc7d33 Mon Sep 17 00:00:00 2001 From: hra687261 <hichem.ait-el-hara@ocamlpro.com> Date: Tue, 22 Nov 2022 17:05:35 +0100 Subject: [PATCH] [Array] Fixed res-ext soundness error --- colibri2/theories/array/array.ml | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/colibri2/theories/array/array.ml b/colibri2/theories/array/array.ml index 70c34a6c4..fe6ecdde6 100644 --- a/colibri2/theories/array/array.ml +++ b/colibri2/theories/array/array.ml @@ -200,10 +200,9 @@ let apply_const v = apply_cst Builtin.array_const [] [ v ] let apply_def_index a = apply_cst Builtin.array_default_index [] [ a ] let apply_def_value a = apply_cst Builtin.array_default_value [] [ a ] -let eq_array_diff a b = - Expr.Term.eq - (Expr.Term.Array.select a (apply_cst Builtin.array_diff [] [ a; b ])) - (Expr.Term.Array.select b (apply_cst Builtin.array_diff [] [ a; b ])) +let distinct_arrays a b = + let diff = apply_diff a b in + Expr.Term.distinct [ mk_select_term a diff; mk_select_term b diff ] let apply_ext env a b = let va = Expr.Term.Var.mk "a" array_ty in @@ -378,7 +377,7 @@ module Theory = struct | (nvar, nterm, nnode) :: t -> let nterms = List.fold_left - (fun acc (_, oterm, _) -> eq_array_diff nterm oterm :: acc) + (fun acc (_, oterm, _) -> distinct_arrays nterm oterm :: acc) [] t in aux (nterms @ terms_acc) ((nvar, nnode) :: tsubsts_acc) t @@ -404,7 +403,7 @@ module Theory = struct Expr.Term.Var.mk (Format.sprintf "a%d" cnt) tyvt in let anvt = Expr.Term.of_var anv in - ( eq_array_diff a0vt anvt :: nterms, + ( distinct_arrays a0vt anvt :: nterms, (anv, anvt, node) :: nsubsts, cnt + 1 )) ([], [], 1) t -- GitLab