I'd like to have standard notation like "x ∈ { x }" in Coq. But there are problems:
1) Curly braces has special meaning in Coq, so the following happens:
Notation " x ∈ y " :=(tin x y) (at level 50).
Notation " { x } ":=(Sing x).
Check fun x => (x ∈ { x }).
(*error: Unknown interpretation for notation "_ ∈ { _ }". *)
How to define this notation correctly?
2) If the first problem cannot be solved, there is another. (Here I decided to use the additional symbol '`' in the notation.)
Notation " { x }` ":=(Sing x).
Check fun x => (x ∈ { x }`).
(* fun x : Ens => x ∈ {x }` *)
Now I should
a) either add a whitespace after the first curly brace or
b) delete the unintentional white space after the last x letter.
How can I do these actions?