exception AlreadySimplified
exception WhatAndWithWhatDoNotHaveTheSameLength;;
-val alpha_equivalence: Cic.term -> Cic.term -> bool
-
(* Replaces "textually" in "where" every term in "what" with the corresponding
term in "with_what". The terms in "what" ARE NOT lifted when binders are
crossed. The terms in "with_what" ARE NOT lifted when binders are crossed.
inverse of subst up to the fact that free variables in "where" are NOT
lifted. *)
val replace_lifting :
- equality:(Cic.term -> Cic.term -> bool) ->
+ equality:(Cic.context -> Cic.term -> Cic.term -> bool) ->
+ context:Cic.context ->
what:Cic.term list -> with_what:Cic.term list -> where:Cic.term -> Cic.term
(* Replaces in "where" every term in "what" with the corresponding
int -> equality:(Cic.term -> Cic.term -> bool) ->
what:Cic.term list -> with_what:Cic.term list -> where:Cic.term -> Cic.term
-val subst_inv :
+(* This is like "replace_lifting_csc 1 ~with_what:[Rel 1; ... ; Rel 1]"
+ up to the fact that the index to start from can be specified *)
+val replace_with_rel_1_from :
equality:(Cic.term -> Cic.term -> bool) ->
what:Cic.term list -> int -> Cic.term -> Cic.term
val reduce : Cic.context -> Cic.term -> Cic.term