]> matita.cs.unibo.it Git - fireball-separation.git/commitdiff
Fixed bug in computing special k
authoracondolu <andrea.condoluci@unibo.it>
Mon, 24 Jul 2017 12:55:31 +0000 (14:55 +0200)
committeracondolu <andrea.condoluci@unibo.it>
Mon, 28 May 2018 09:11:39 +0000 (11:11 +0200)
ocaml/lambda4.ml

index 721f8225411c5ff5fb3d962d5af1df84729f08a7..4726122457ad122a2a1076c980a6c3839055bdd4 100644 (file)
@@ -510,7 +510,16 @@ let compute_special_k tms =
      List.fold_left max 0 (List.map (aux 0) ((t :> nf)::args@List.map snd !bs))
  | `N _
  | `Var _ -> 0
- ) in Listx.max (Listx.map (aux 0) tms)
+ ) in
+ let rec aux' top t = match t with
+ | `Lam(_,t) -> aux' false t
+ | `I((_,ar), tms) -> max ar
+     (Listx.max (Listx.map (aux' false) (tms :> nf Listx.listx)))
+ | `Match(t, _, liftno, bs, args) ->
+     List.fold_left max 0 (List.map (aux' false) ((t :> nf)::(args :> nf list)@List.map snd !bs))
+ | `N _
+ | `Var _ -> 0 in
+ Listx.max (Listx.map (aux 0) tms) + Listx.max (Listx.map (aux' true) tms)
 ;;
 
 let auto_instantiate (n,p) =