From 75a48bfc6b91f1e5095d9cdfbcc0ae2bf8cf16ec Mon Sep 17 00:00:00 2001 From: Hugo Herbelin Date: Tue, 19 Apr 2016 19:13:23 +0200 Subject: Fixing #4677 (collision of a global variable and of a local variable while eta-expanding a notation) + a more serious variant of it (alpha-conversion incorrect wrt eta-expansion). --- test-suite/output/Notations2.out | 4 ++++ test-suite/output/Notations2.v | 8 ++++++++ 2 files changed, 12 insertions(+) (limited to 'test-suite/output') diff --git a/test-suite/output/Notations2.out b/test-suite/output/Notations2.out index 58ec1de563..6ff1d38372 100644 --- a/test-suite/output/Notations2.out +++ b/test-suite/output/Notations2.out @@ -50,3 +50,7 @@ end : nat -> nat # _ : nat => 2 : nat -> nat +# x : nat => # H : x <= 0 => exist (le x) 0 H + : ∀ x : nat, x <= 0 -> {x0 : nat | x <= x0} +exist (Q x) y conj + : {x0 : A | Q x x0} diff --git a/test-suite/output/Notations2.v b/test-suite/output/Notations2.v index e53c94ef0a..c9efe1ead4 100644 --- a/test-suite/output/Notations2.v +++ b/test-suite/output/Notations2.v @@ -68,8 +68,10 @@ Check let' f x y (a:=0) z (b:bool) := x+y+z+1 in f 0 1 2. (* In practice, only the printing rule is used here *) (* Note: does not work for pattern *) +Module A. Notation "f ( x )" := (f x) (at level 10, format "f ( x )"). Check fun f x => f x + S x. +End A. Open Scope list_scope. Notation list1 := (1::nil)%list. @@ -98,3 +100,9 @@ Notation "# x : T => t" := (fun x : T => t) Check # x : nat => x. Check # _ : nat => 2. + +(* Check bug 4677 *) +Check fun x (H:le x 0) => exist (le x) 0 H. + +Parameters (A : Set) (x y : A) (Q : A -> A -> Prop) (conj : Q x y). +Check (exist (Q x) y conj). -- cgit v1.2.3