]> matita.cs.unibo.it Git - helm.git/commitdiff
fixed_args fixed to accept passing a partially applied fix to a fix that
authorClaudio Sacerdoti Coen <claudio.sacerdoticoen@unibo.it>
Wed, 30 Apr 2008 20:50:58 +0000 (20:50 +0000)
committerClaudio Sacerdoti Coen <claudio.sacerdoticoen@unibo.it>
Wed, 30 Apr 2008 20:50:58 +0000 (20:50 +0000)
passes itself partially applied to anothere fix

helm/software/components/ng_kernel/nCicTypeChecker.ml

index 99829c4a7c67e62a6a5dc84e9d5d3e354879d0d9..9b0de30f2e37de7f2d922d440de63030763d3400 100644 (file)
@@ -71,12 +71,16 @@ let string_of_recfuns ~subst ~metasenv ~context l =
 let fixed_args bos j n nn =
  let rec aux k acc = function
   | NCic.Appl (NCic.Rel i::args) when i+k > n && i+k <= nn ->
-      (try 
-        let lefts, _ = HExtlib.split_nth j args in
-        List.map (fun ((b,x),i) -> b && x = NCic.Rel (k-i)) 
-          (HExtlib.list_mapi (fun x i -> x,i) (List.combine acc lefts))
-      with Failure "HExtlib.split_nth" -> assert false)
-        (* se sono meno di j, fino a j deduco, dopo false *)
+     let rec combine l1 l2 =
+      match l1,l2 with
+         [],[] -> []
+       | he1::tl1, he2::tl2 -> (he1,he2)::combine tl1 tl2
+       | he::tl, [] -> (false,NCic.Rel ~-1)::combine tl [] (* dummy term *)
+       | [],_::_ -> assert false
+     in
+     let lefts, _ = HExtlib.split_nth (min j (List.length args)) args in
+      List.map (fun ((b,x),i) -> b && x = NCic.Rel (k-i)) 
+       (HExtlib.list_mapi (fun x i -> x,i) (combine acc lefts))
   | t -> NCicUtils.fold (fun _ k -> k+1) k aux acc t    
  in
   List.fold_left (aux 0) 
@@ -606,7 +610,7 @@ exception NotGuarded of string Lazy.t;;
 
 let rec typeof ~subst ~metasenv context term =
   let rec typeof_aux context = 
-    fun t -> (*prerr_endline (NCicPp.ppterm ~context t); *)
+    fun t -> (*prerr_endline (NCicPp.ppterm ~metasenv ~subst ~context t);*)
     match t with
     | C.Rel n ->
        (try