Consider the following toy development:
Declare Scope entails_scope.
Bind Scope entails_scope with nat.
Reserved Notation "A |- B" (at level 60, no associativity).
Inductive entails: nat -> nat -> Prop :=
| id {A}: A |- A
where "A |- B" := (entails A B) : entails_scope.
(* Fails with message: 'Unknown interpretation for notation "_ |- _".' *)
Fail Goal exists (A B: nat), A |- B.
Based on Adam Chlipala's Certified Programming with Dependent Types, I would have expected some variant of this to parse A |- B
as entails A B
whenever A
and B
are known to be nat
. But this doesn't happen. Any idea why?