X-Git-Url: http://matita.cs.unibo.it/gitweb/?p=helm.git;a=blobdiff_plain;f=helm%2Focaml%2Fcic%2FcicUtil.ml;fp=helm%2Focaml%2Fcic%2FcicUtil.ml;h=0000000000000000000000000000000000000000;hp=55a70822ed6a95a9c04a95daebcfa3a4a105487c;hb=1696761e4b8576e8ed81caa905fd108717019226;hpb=5325734bc2e4927ed7ec146e35a6f0f2b49f50c1 diff --git a/helm/ocaml/cic/cicUtil.ml b/helm/ocaml/cic/cicUtil.ml deleted file mode 100644 index 55a70822e..000000000 --- a/helm/ocaml/cic/cicUtil.ml +++ /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 -;;