than head lambda abstractions was always performed (even if no "interesting"
reduction took place).
| C.LetIn (_,s,t) -> aux l (S.subst s t)
| t ->
let simplified = reduceaux context l t in
- if t = simplified then
- raise AlreadySimplified
- else
- simplified
+ let t' = if l = [] then t else C.Appl (t::l) in
+ if t' = simplified then
+ raise AlreadySimplified
+ else
+ simplified
in
(try aux l body
with
∀G.∀x,y.∀H:subgroup G. (x \sup -1 ·y) ∈ H → x*H = y*H.
intros;
unfold left_coset_eq;
-simplify in ⊢ (? → ? ? ? (? ? % ?));
-simplify in ⊢ (? → ? ? ? (? ? ? (? ? ? (? ? %) ?)));
-simplify in ⊢ (? ? % → ?);
-intros;
-unfold member_of_left_coset;
-simplify in ⊢ (? ? (λy:?.? ? ? (? ? ? (? ? ? (? ? %) ?))));
-simplify in ⊢ (? ? (λy:? ? %.?));
-simplify in ⊢ (? ? (λy:?.? ? ? (? ? % ?)));
+simplify;
+intro;
unfold member_of_subgroup in H1;
elim H1;
clear H1;