let module T = CicTypeChecker in
let module C = Cic in
let fresh_id' = fresh_id seed ids_to_terms ids_to_father_ids in
+prerr_endline "*************** INIZIO DOUBLE TYPE INFERENCE ************";
let terms_to_types =
D.double_type_of metasenv context t expectedty
in
+prerr_endline "*************** FINE DOUBLE TYPE INFERENCE ************";
let rec aux computeinnertypes father context idrefs tt =
let fresh_id'' = fresh_id' father tt in
(*CSC: computeinnertypes era true, il che e' proprio sbagliato, no? *)
C.AVariable
("mettereaposto",id,abo,aty, params)
| C.CurrentProof (id,conjectures,bo,ty,params) ->
+prerr_endline "************* INIZIO ETA_FIXING (congetture) ********" ;
let conjectures' =
List.map
(function (i,canonical_context,term) ->
(i,canonical_context',term')
) conjectures
in
+prerr_endline "************* INIZIO CIC ==> ACIC (congetture) ********" ;
let aconjectures =
List.map
(function (i,canonical_context,term) as conjecture ->
in
(cid,i,(List.rev revacanonical_context),aterm)
) conjectures' in
+prerr_endline "*********** INIZIO ETA FIXING PROVA **********";
let bo' = E.eta_fix conjectures' bo in
let ty' = E.eta_fix conjectures' ty in
+prerr_endline "*********** INIZIO CIC ==> ACIC PROVA **********";
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