blob: 86e55922dfae31af67a8f7e68237db240e1a3c5d (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
|
(* Check that dependent rewrite applies on arbitrary terms *)
Inductive listn : nat -> Set :=
| niln : listn 0
| consn : forall n : nat, nat -> listn n -> listn (S n).
Axiom
ax :
forall (n n' : nat) (l : listn (n + n')) (l' : listn (n' + n)),
existS _ (n + n') l = existS _ (n' + n) l'.
Lemma lem :
forall (n n' : nat) (l : listn (n + n')) (l' : listn (n' + n)),
n + n' = n' + n /\ existT _ (n + n') l = existT _ (n' + n) l'.
Proof.
intros n n' l l'.
dependent rewrite (ax n n' l l').
split; reflexivity.
Qed.
(* Used to raise an anomaly instead of an error in 8.1 *)
(* Submitted by Y. Makarov *)
Parameter N : Set.
Parameter E : N -> N -> Prop.
Axiom e : forall (A : Set) (EA : A -> A -> Prop) (a : A), EA a a.
Theorem th : forall x : N, E x x.
intro x. try rewrite e.
Abort.
(* Behavior of rewrite wrt conversion *)
Require Import Arith.
Goal forall n, 0 + n = n -> True.
intros n H.
rewrite plus_0_l in H.
Abort.
|