]> matita.cs.unibo.it Git - helm.git/blob - helm/software/components/ng_paramodulation/subst.ml
- replaced part1a/defn with the version based on induction/inversion and deleted
[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 id_subst = [];;
15   
16   let build_subst 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   let lookup_subst i subst = lookup_subst (Terms.Var i) subst;;
28   
29   let is_in_subst i subst = List.mem_assoc i subst;;
30   
31   (* filter out from metasenv the variables in substs *)
32   let filter subst varlist =
33     List.filter
34       (fun m ->
35          not (is_in_subst m subst))
36       varlist
37   ;;
38   
39 end