]> matita.cs.unibo.it Git - helm.git/blobdiff - helm/ocaml/cic/cicUtil.ml
This commit was manufactured by cvs2svn to create branch 'moogle'.
[helm.git] / helm / ocaml / cic / cicUtil.ml
diff --git a/helm/ocaml/cic/cicUtil.ml b/helm/ocaml/cic/cicUtil.ml
deleted file mode 100644 (file)
index 55a7082..0000000
+++ /dev/null
@@ -1,76 +0,0 @@
-(* Copyright (C) 2004, HELM Team.
- * 
- * This file is part of HELM, an Hypertextual, Electronic
- * Library of Mathematics, developed at the Computer Science
- * Department, University of Bologna, Italy.
- * 
- * HELM is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
- * 
- * HELM is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with HELM; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston,
- * MA  02111-1307, USA.
- * 
- * For details, see the HELM World-Wide-Web page,
- * http://helm.cs.unibo.it/
- *)
-
-exception Meta_not_found of int
-
-let lookup_meta index metasenv =
-  try
-    List.find (fun (index', _, _) -> index = index') metasenv
-  with Not_found -> raise (Meta_not_found index)
-
-let exists_meta index = List.exists (fun (index', _, _) -> (index = index'))
-
-let is_closed =
- let module C = Cic in
- let rec is_closed k =
-  function
-      C.Rel m when m > k -> false
-    | C.Rel m -> true
-    | C.Meta (_,l) ->
-       List.fold_left
-        (fun i t -> i && (match t with None -> true | Some t -> is_closed k t)
-        ) true l
-    | C.Sort _ -> true
-    | C.Implicit _ -> assert false
-    | C.Cast (te,ty) -> is_closed k te && is_closed k ty
-    | C.Prod (name,so,dest) -> is_closed k so && is_closed (k+1) dest
-    | C.Lambda (_,so,dest) -> is_closed k so && is_closed (k+1) dest
-    | C.LetIn (_,so,dest) -> is_closed k so && is_closed (k+1) dest
-    | C.Appl l ->
-       List.fold_right (fun x i -> i && is_closed k x) l true
-    | C.Var (_,exp_named_subst)
-    | C.Const (_,exp_named_subst)
-    | C.MutInd (_,_,exp_named_subst)
-    | C.MutConstruct (_,_,_,exp_named_subst) ->
-       List.fold_right (fun (_,x) i -> i && is_closed k x)
-        exp_named_subst true
-    | C.MutCase (_,_,out,te,pl) ->
-       is_closed k out && is_closed k te &&
-        List.fold_right (fun x i -> i && is_closed k x) pl true
-    | C.Fix (_,fl) ->
-       let len = List.length fl in
-        let k_plus_len = k + len in
-         List.fold_right
-          (fun (_,_,ty,bo) i -> i && is_closed k ty && is_closed k_plus_len bo
-          ) fl true
-    | C.CoFix (_,fl) ->
-       let len = List.length fl in
-        let k_plus_len = k + len in
-         List.fold_right
-          (fun (_,ty,bo) i -> i && is_closed k ty && is_closed k_plus_len bo
-          ) fl true
-in 
- is_closed 0
-;;