X-Git-Url: http://matita.cs.unibo.it/gitweb/?a=blobdiff_plain;f=helm%2Fsoftware%2Fcomponents%2Fng_paramodulation%2FfoSubst.ml;h=5cb84e1c938d1ff20b359bc738f7f0b713cfe87f;hb=a232a59672817abd3d6ec07db0b20d8b3fe5ad3b;hp=92d6aba25a7ef99e6b24e0d39e187c84737761e0;hpb=6b0a195b180e3526af7b55771b2df7b10acd7c30;p=helm.git diff --git a/helm/software/components/ng_paramodulation/foSubst.ml b/helm/software/components/ng_paramodulation/foSubst.ml index 92d6aba25..5cb84e1c9 100644 --- a/helm/software/components/ng_paramodulation/foSubst.ml +++ b/helm/software/components/ng_paramodulation/foSubst.ml @@ -9,22 +9,22 @@ \ / This software is distributed as is, NO WARRANTY. V_______________________________________________________________ *) -module Subst (B : Terms.Blob) = struct +(* module Subst (B : Terms.Blob) = struct *) let id_subst = [];; let build_subst n t tail = (n,t) :: tail ;; - let rec lookup_subst var subst = + let rec lookup var subst = match var with | Terms.Var i -> (try - lookup_subst (List.assoc i subst) subst + lookup (List.assoc i subst) subst with Not_found -> var) | _ -> var ;; - let lookup_subst i subst = lookup_subst (Terms.Var i) subst;; + let lookup i subst = lookup (Terms.Var i) subst;; let is_in_subst i subst = List.mem_assoc i subst;; @@ -36,7 +36,16 @@ module Subst (B : Terms.Blob) = struct varlist ;; - let apply_subst = assert false;; - let concat = assert false + let rec apply_subst subst = function + | (Terms.Leaf _) as t -> t + | Terms.Var i -> + (match lookup i subst with + | Terms.Node _ as t -> apply_subst subst t + | t -> t) + | (Terms.Node l) -> + Terms.Node (List.map (fun t -> apply_subst subst t) l) +;; + + let concat x y = x @ y;; -end +(* end *)