]> matita.cs.unibo.it Git - fireball-separation.git/commitdiff
Moved env_of_sigma to Pure strong
authoracondolu <andrea.condoluci@unibo.it>
Wed, 30 May 2018 13:27:24 +0000 (15:27 +0200)
committeracondolu <andrea.condoluci@unibo.it>
Wed, 30 May 2018 13:27:24 +0000 (15:27 +0200)
ocaml/lambda4.ml
ocaml/pure.ml
ocaml/pure.mli

index 311537a151c3409ace586ee7ef0982a2a2ed8ceb..9395daa7e0998eca7c8f9bd2a3ccca8be25f164e 100644 (file)
@@ -632,18 +632,6 @@ let optimize_numerals p =
   replace_in_sigma (List.rev perm) p.sigma
 ;;
 
-let env_of_sigma freshno sigma should_explode =
- let rec aux n =
-  if n > freshno then
-   []
-  else
-   let e = aux (n+1) in
-   (try
-    e,Pure.lift (-n-1) (snd (List.find (fun (i,_) -> i = n) sigma)),[]
-   with
-    Not_found -> ([], Pure.V n, []) ) :: e
- in aux 0
-;;
 (* ************************************************************************** *)
 
 type result = [
@@ -694,8 +682,7 @@ let solve p =
  let ps = List.map scott_of_nf p.ps in
 
  let sigma' = List.map (fun (x,inst) -> x, scott_of_nf inst) sigma in
- let e' = env_of_sigma freshno sigma' false in
- let e'' = env_of_sigma freshno sigma' true in
+ let e' = Pure.env_of_sigma freshno sigma' in
 
  prerr_endline "--------<REDUCE>---------";
  (function
@@ -707,7 +694,7 @@ let solve p =
    | None -> ()) div;
  List.iter (fun n ->
   verbose ("_::: " ^ (Pure.print n));
-  let t = Pure.mwhd (e'',n,[]) in
+  let t = Pure.mwhd (e',n,[]) in
   verbose ("_:: " ^ (Pure.print t));
   assert (not (Pure.diverged t))
  ) conv ;
index 7963f8732132a75bab5620326e1c193278af16ff..11cb9af81638ca6f546cd2a7e67ed182a3f9f50c 100644 (file)
@@ -132,6 +132,19 @@ let omega should_explode =
 
 let diverged = (=) B;;
 
+(* Note: maps only variables <= freshno *)
+let env_of_sigma freshno sigma =
+ let rec aux n =
+  if n > freshno then
+   []
+  else
+   let e = aux (n+1) in
+   (try
+    e, lift (-n-1) (snd (List.find (fun (i,_) -> i = n) sigma)),[]
+   with
+    Not_found -> ([], V n, []) ) :: e
+ in aux 0
+
 end
 
 module Scott =
index 1b60c09d269ca93716450608bcc7c6d4e4a2ff37..9b683b33530ccadf28c87ad43dcb7af137e85541 100644 (file)
@@ -6,6 +6,7 @@ module Pure :
     val mwhd : (('a * t * ('b list as 'c) as 'b) list as 'a) * t * 'c -> t
     val omega : bool -> t
     val diverged : t -> bool
+    val env_of_sigma : int -> (int * t) list -> (('a * t * ('b list as 'c) as 'b) list as 'a)
   end
 
 module Scott :