|
|
@ -68,12 +68,11 @@ end = struct
|
|
|
|
let subst s e = Term.map_trms ~f:(subst_ s) e
|
|
|
|
let subst s e = Term.map_trms ~f:(subst_ s) e
|
|
|
|
|
|
|
|
|
|
|
|
(** apply a substitution to maximal non-interpreted subterms *)
|
|
|
|
(** apply a substitution to maximal non-interpreted subterms *)
|
|
|
|
let rec norm s a =
|
|
|
|
let norm s a =
|
|
|
|
[%trace]
|
|
|
|
[%trace]
|
|
|
|
~call:(fun {pf} -> pf "@ %a" Trm.pp a)
|
|
|
|
~call:(fun {pf} -> pf "@ %a" Trm.pp a)
|
|
|
|
~retn:(fun {pf} -> pf "%a" Trm.pp)
|
|
|
|
~retn:(fun {pf} -> pf "%a" Trm.pp)
|
|
|
|
@@ fun () ->
|
|
|
|
@@ fun () -> Theory.map_solvables ~f:(apply s) a
|
|
|
|
if Theory.is_interpreted a then Trm.map ~f:(norm s) a else apply s a
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
(** compose two substitutions *)
|
|
|
|
(** compose two substitutions *)
|
|
|
|
let compose r s =
|
|
|
|
let compose r s =
|
|
|
|