blob: 8b7d239dcd8232b707843919881706ca9edf8ed2 (
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 exportation of Argument Scopes even without import of modules *)
Require Import ZArith.
Module A.
Definition opp := Z.opp.
End A.
Check (A.opp 3).
(* Test extra scopes to be used in the presence of coercions *)
Record B := { f :> Z -> Z }.
Variable a:B.
Arguments a _%Z_scope : extra scopes.
Check a 0.
(* Check that casts activate scopes if ever possible *)
Inductive U := A.
Bind Scope u with U.
Notation "'ε'" := A : u.
Definition c := ε : U.
(* Check activation of type scope for tactics such as assert *)
Goal True.
assert (nat * nat).
Abort.
(* Check propagation of scopes in indirect applications to references *)
Module PropagateIndirect.
Notation "0" := true : bool_scope.
Axiom f : bool -> bool -> nat.
Check (@f 0) 0.
Record R := { p : bool -> nat }.
Check fun r => r.(@p) 0.
End PropagateIndirect.
|