]> matita.cs.unibo.it Git - helm.git/blob - helm/software/components/ng_paramodulation/subst.ml
b8cadf48cda2955969009f8fe0bfe8735db12212
[helm.git] / helm / software / components / ng_paramodulation / subst.ml
1 (*
2     ||M||  This file is part of HELM, an Hypertextual, Electronic        
3     ||A||  Library of Mathematics, developed at the Computer Science     
4     ||T||  Department, University of Bologna, Italy.                     
5     ||I||                                                                
6     ||T||  HELM is free software; you can redistribute it and/or         
7     ||A||  modify it under the terms of the GNU General Public License   
8     \   /  version 2 or (at your option) any later version.      
9      \ /   This software is distributed as is, NO WARRANTY.     
10       V_______________________________________________________________ *)
11
12 module Subst (B : Terms.Blob) = struct
13   
14   let empty_subst = [];;
15   
16   let buildsubst n t tail = (n,t) :: tail ;;
17   
18   let rec lookup_subst var subst =
19     match var with
20       | Terms.Var i ->
21           (try
22             lookup_subst (List.assoc i subst) subst
23           with
24               Not_found -> var)
25       | _ -> var
26   ;;
27   
28   let is_in_subst i subst = List.mem_assoc i subst;;
29   
30   (* filter out from metasenv the variables in substs *)
31   let filter subst varlist =
32     List.filter
33       (fun m ->
34          not (is_in_subst m subst))
35       varlist
36   ;;
37   
38 end