Suppose I have a definition f : x -> y -> z
where x
it can be easily deduced. So I want to make x
an implicit argument using Arguments
.
Consider the following example:
Definition id : forall (S : Set), S -> S :=
fun S s => s.
Arguments id {_} s.
Check (id 1).
It is clear that S = nat
Coq can be deduced, and Coq answers:
id 1
: nat
However, at a later time, I want to make an explicit argument explicit, say, for readability.
In other words, I would like something like:
Definition foo :=
id {nat} 1. (* We want to make it clear that the 2nd argument is nat*)
Is this even possible? If so, what is the appropriate syntax?
source
share