module E = CicEnvironment
module UM = UriManager
module D = Deannotate
+module PER = ProofEngineReduction
+module Ut = CicUtil
(* fresh name generator *****************************************************)
let ext = match get_tail context (get_type context ty) with
| C.Sort C.Prop -> "_ind"
| C.Sort C.Set -> "_rec"
- | C.Sort C.CProp -> "_rec"
+ | C.Sort (C.CProp _) -> "_rect"
| C.Sort (C.Type _) -> "_rect"
| t ->
Printf.eprintf "CicPPP get_default_eliminator: %s\n" (Pp.ppterm t);
let cic = D.deannotate_term
+let occurs c ~what ~where =
+ let result = ref false in
+ let equality c t1 t2 =
+ let r = Ut.alpha_equivalence t1 t2 in
+ result := !result || r; r
+ in
+ let context, what, with_what = c, [what], [C.Rel 0] in
+ let _ = PER.replace_lifting ~equality ~context ~what ~with_what ~where in
+ !result
+
(* Ensuring Barendregt convenction ******************************************)
let rec add_entries map c = function