]> matita.cs.unibo.it Git - helm.git/commitdiff
Cic2acic is now responsible of eta-fixing the objects (using the Eta_fix
authorClaudio Sacerdoti Coen <claudio.sacerdoticoen@unibo.it>
Sun, 20 Jul 2003 15:53:12 +0000 (15:53 +0000)
committerClaudio Sacerdoti Coen <claudio.sacerdoticoen@unibo.it>
Sun, 20 Jul 2003 15:53:12 +0000 (15:53 +0000)
module).

helm/ocaml/cic_omdoc/.depend
helm/ocaml/cic_omdoc/cic2acic.ml

index 5dfc55b8a36a4a7081598974f7b327e9b087c30d..9e8bfadb7b7667eea0777c603d7f01fa9ff23c70 100644 (file)
@@ -5,8 +5,8 @@ eta_fixing.cmo: eta_fixing.cmi
 eta_fixing.cmx: eta_fixing.cmi 
 doubleTypeInference.cmo: doubleTypeInference.cmi 
 doubleTypeInference.cmx: doubleTypeInference.cmi 
-cic2acic.cmo: doubleTypeInference.cmi cic2acic.cmi 
-cic2acic.cmx: doubleTypeInference.cmx cic2acic.cmi 
+cic2acic.cmo: doubleTypeInference.cmi eta_fixing.cmi cic2acic.cmi 
+cic2acic.cmx: doubleTypeInference.cmx eta_fixing.cmx cic2acic.cmi 
 content.cmo: content.cmi 
 content.cmx: content.cmi 
 contentPp.cmo: content.cmi contentPp.cmi 
index a3cdfbb78603d3237e3006fc5ecfb41543a279e5..b8679dc62e0b32df9beea1added139d870af5a7b 100644 (file)
@@ -298,6 +298,7 @@ let acic_of_cic_context metasenv context idrefs t =
 
 let acic_object_of_cic_object obj =
  let module C = Cic in
+ let module E = Eta_fixing in
   let ids_to_terms = Hashtbl.create 503 in
   let ids_to_father_ids = Hashtbl.create 503 in
   let ids_to_inner_sorts = Hashtbl.create 503 in
@@ -314,24 +315,45 @@ let acic_object_of_cic_object obj =
    let aobj =
     match obj with
       C.Constant (id,Some bo,ty,params) ->
-       let abo = acic_term_of_cic_term' bo (Some ty) in
-       let aty = acic_term_of_cic_term' ty None in
+       let bo' = E.eta_fix [] bo in
+       let ty' = E.eta_fix [] ty in
+       let abo = acic_term_of_cic_term' bo' (Some ty') in
+       let aty = acic_term_of_cic_term' ty' None in
         C.AConstant
-         ("mettereaposto",Some "mettereaposto2",id,Some abo,aty, params)
+         ("mettereaposto",Some "mettereaposto2",id,Some abo,aty,params)
     | C.Constant (id,None,ty,params) ->
-       let aty = acic_term_of_cic_term' ty None in
+       let ty' = E.eta_fix [] ty in
+       let aty = acic_term_of_cic_term' ty' None in
         C.AConstant
-         ("mettereaposto",None,id,None,aty, params)
+         ("mettereaposto",None,id,None,aty,params)
     | C.Variable (id,bo,ty,params) ->
+       let ty' = E.eta_fix [] ty in
        let abo =
         match bo with
            None -> None
-         | Some bo -> Some (acic_term_of_cic_term' bo (Some ty))
+         | Some bo ->
+            let bo' = E.eta_fix [] bo in
+             Some (acic_term_of_cic_term' bo' (Some ty'))
        in
-       let aty = acic_term_of_cic_term' ty None in
+       let aty = acic_term_of_cic_term' ty' None in
         C.AVariable
          ("mettereaposto",id,abo,aty, params)
     | C.CurrentProof (id,conjectures,bo,ty,params) ->
+       let conjectures' =
+        List.map
+         (function (i,canonical_context,term) ->
+           let canonical_context' =
+            List.map
+             (function
+                 None -> None
+               | Some (n, C.Decl t)-> Some (n, C.Decl (E.eta_fix conjectures t))
+               | Some (n, C.Def t) -> Some (n, C.Def (E.eta_fix conjectures t))
+             ) canonical_context
+           in
+           let term' = E.eta_fix conjectures term in
+            (i,canonical_context',term')
+         ) conjectures
+       in
        let aconjectures =
         List.map
          (function (i,canonical_context,term) as conjecture ->
@@ -377,10 +399,12 @@ let acic_object_of_cic_object obj =
                canonical_context idrefs' term None
              in
               (cid,i,(List.rev revacanonical_context),aterm)
-         ) conjectures in
+         ) conjectures' in
+       let bo' = E.eta_fix conjectures' bo in
+       let ty' = E.eta_fix conjectures' ty in
        let abo =
-        acic_term_of_cic_term_context' conjectures [] [] bo (Some ty) in
-       let aty = acic_term_of_cic_term_context' conjectures [] [] ty None in
+        acic_term_of_cic_term_context' conjectures' [] [] bo' (Some ty') in
+       let aty = acic_term_of_cic_term_context' conjectures' [] [] ty' None in
         C.ACurrentProof
          ("mettereaposto","mettereaposto2",id,aconjectures,abo,aty,params)
     | C.InductiveDefinition (tys,params,paramsno) ->