Unfortunately, the new reduction is a bit slower on one test (paramodulation).
To be investigated.
unfold left_cancellable;
intros;
rewrite < (e_is_left_unit ? ? (monoid_properties G));
-fold simplify (e G);
rewrite < (e_is_left_unit ? ? (monoid_properties G) z);
-fold simplify (e G);
rewrite < (opp_is_left_inverse ? ? (group_properties G) x);
-fold simplify (opp G);
rewrite > (semigroup_properties G);
-fold simplify (op G);
rewrite > (semigroup_properties G);
-fold simplify (op G);
apply eq_f;
assumption.
qed.
unfold injective.intros.
apply (nat_compare_elim x y).
intro.apply False_ind.apply (not_le_Sn_n (f x)).
-rewrite > H1 in \vdash (? ? %).apply H.apply H2.
+rewrite > H1 in \vdash (? ? %).
+change with (f x < f y).
+apply H.apply H2.
intros.assumption.
intro.apply False_ind.apply (not_le_Sn_n (f y)).
-rewrite < H1 in \vdash (? ? %).apply H.apply H2.
+rewrite < H1 in \vdash (? ? %).
+change with (f y < f x).
+apply H.apply H2.
qed.
theorem increasing_to_injective: \forall f:nat\to nat.
ClosuresOnStackByValueFromEnvOrEnsByNameOnConstantsStrategy;; OK 58.094s
module R = Reduction(ClosuresOnStackByValueFromEnvOrEnsStrategy);; OK 58.127s
*)
-(*module R = Reduction(CallByValueByNameForUnwind);; *)
-module R = Reduction(ClosuresOnStackByValueFromEnvOrEnsStrategy);;
+module R = Reduction(CallByValueByNameForUnwind);;
+(*module R = Reduction(ClosuresOnStackByValueFromEnvOrEnsStrategy);;*)
module U = UriManager;;
let whd = R.whd