(* A few tests of the syntax of clauses and of the interpretation of change *)
Goallet a := 0+0 in a=a. intro. change 0 in (value of a). change ((fun A:Type => A) nat) in (type of a). Abort.
Goalforall x, 2 + S x = 1 + S x. intro. change (?u + S x) with (S (u + x)). Abort.
(* Check the combination of at, with and in (see bug #2146) *)
Goal 3=3 -> 3=3. intro H. change 3 with (1+2) at 2. change 3 with (1+2) in H at 2 |-. change 3 with (1+2) in H at 1 |- * at 1. (* Now check that there are no more 3's *) change 3 with (1+2) in * || reflexivity. Qed.
(* Note: the following is invalid and must fail change 3 at 1 with (1+2) at 3. change 3 at 1 with (1+2) in *. change 3 at 1 with (1+2) in H at 2 |-. change 3 at 1 with (1+2) at 3. change 3 at 1 with (1+2) in H |- *. change 3 at 1 with (1+2) in H, H|-. change 3 at 1.
*)
(* Test that pretyping checks allowed elimination sorts *)
Goal True.
Fail change True with (let (x,a) := ex_intro _ True (eq_refl True) in x).
Fail change True with match ex_intro _ True (eq_refl True) with ex_intro x _ => x end. Abort.
(* Check absence of loop in identity substitution (was failing up to
Sep 2014, see #3641) *)
Goal True. change ?x with x. Abort.
(* Check typability after change of type subterms *) Goal nat = nat :> Set.
Fail change nat with (@id Type nat). (* would otherwise be ill-typed *) Abort.
(* Check typing env for rhs is the correct one *)
Goalforall n, let x := n in id (fun n => n + x) 0 = 0. intros. unfold x. (* check that n in 0+n is not interpreted as the n from "fun n" *) change n with (0+n). Abort.
(* Check non-collision of non-normalized defined evars with pattern variables *)
Goal True -> False. intro H.
change_no_check nat. apply S.
change_no_check nat with bool.
change_no_check nat in H.
change_no_check nat with (bool->bool) in H. exact (H true).
Fail Qed. Abort.
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.