]> matita.cs.unibo.it Git - fireball-separation.git/commitdiff
More comments and better variable names
authoracondolu <andrea.condoluci@unibo.it>
Fri, 1 Jun 2018 08:18:20 +0000 (10:18 +0200)
committeracondolu <andrea.condoluci@unibo.it>
Fri, 1 Jun 2018 08:18:20 +0000 (10:18 +0200)
ocaml/simple.ml

index 8e4f61946e453827b4024dccca02d6ce8ac2f19b..35874b69e5ec3e90f95e84586a8071f3b5eb9ec8 100644 (file)
@@ -111,10 +111,12 @@ let rec get_inert = function
  | _ -> assert false\r
 ;;\r
 \r
-let rec no_leading_lambdas hd_var j = function\r
- | L t -> 1 + no_leading_lambdas (hd_var+1) j t\r
- | A _ as t -> let hd_var', n = get_inert t in if hd_var = hd_var' then max 0 (j - n) else 0\r
- | V n -> if n = hd_var then j else 0\r
+(* precomputes the number of leading lambdas in a term,\r
+   after replacing _v_ w/ a term starting with n lambdas *)\r
+let rec no_leading_lambdas v n = function\r
+ | L t -> 1 + no_leading_lambdas (v+1) n t\r
+ | A _ as t -> let v', m = get_inert t in if v = v' then max 0 (n - m) else 0\r
+ | V v' -> if v = v' then n else 0\r
  | B | C _ -> 0\r
 ;;\r
 \r
@@ -145,12 +147,12 @@ and lift n =
 ;;\r
 let subst = subst 0 false;;\r
 \r
-let subst_in_problem sub p =\r
-print_endline ("-- SUBST " ^ string_of_t (V (fst sub)) ^ " |-> " ^ string_of_t (snd sub));\r
+let subst_in_problem ((v, t) as sub) p =\r
+print_endline ("-- SUBST " ^ string_of_t (V v) ^ " |-> " ^ string_of_t t);\r
  {p with\r
   div=subst sub p.div;\r
   conv=subst sub p.conv;\r
-  stepped=(fst sub)::p.stepped;\r
+  stepped=v::p.stepped;\r
   sigma=sub::p.sigma}\r
 ;;\r
 \r
@@ -162,6 +164,7 @@ let get_subterm_with_head_and_args hd_var n_args =
  | A(t1,t2) as t ->\r
    let hd_var', n_args' = get_inert t1 in\r
    if hd_var' = hd_var + lev && n_args <= 1 + n_args'\r
+    (* the `+1` above is because of t2 *)\r
     then Some (lift ~-lev t)\r
     else match aux lev t2 with\r
     | None -> aux lev t1\r
@@ -182,7 +185,7 @@ let check p sigma =
  let div = purify p.div in\r
  let conv = purify p.conv in\r
  let sigma = List.map (fun (v,t) -> v, purify t) sigma in\r
- let freshno = List.fold_right (fun (x,_) -> max x) sigma 0 in\r
+ let freshno = List.fold_right (max ++ fst) sigma 0 in\r
  let env = Pure.env_of_sigma freshno sigma in\r
  assert (Pure.diverged (Pure.mwhd (env,div,[])));\r
  print_endline " D diverged.";\r
@@ -201,6 +204,8 @@ let sanity p =
 ;;\r
 \r
 (* drops the arguments of t after the n-th *)\r
+(* FIXME! E' usato in modo improprio contando sul fatto\r
+   errato che ritorna un inerte lungo esattamente n *)\r
 let inert_cut_at n t =\r
  let rec aux t =\r
   match t with\r
@@ -213,6 +218,7 @@ let inert_cut_at n t =
  in snd (aux t)\r
 ;;\r
 \r
+(* FIXME! eta_difference dovrebbe restituire un int partendo da 0 *)\r
 let find_eta_difference p t n_args =\r
  let t = inert_cut_at n_args t in\r
  let rec aux t u k = match t, u with\r