It was so becauses it was previously impossible to declare a notation that
changed the level of its subterms.
];
binder: [
[ SYMBOL <:unicode<Pi>> (* Π *) -> `Pi
-(* | SYMBOL <:unicode<exists>> |+ ∃ +| -> `Exists *)
| SYMBOL <:unicode<forall>> (* ∀ *) -> `Forall
| SYMBOL <:unicode<lambda>> (* λ *) -> `Lambda
]
[
[ b = binder; (vars, typ) = maybe_protected_binder_vars; SYMBOL "."; body = term LEVEL "19" ->
return_term loc (fold_cluster b vars typ body)
- | SYMBOL <:unicode<exists>> (* ∃ *);
- (vars, typ) = maybe_protected_binder_vars; SYMBOL "."; body = term LEVEL "19"->
- return_term loc (fold_exists vars typ body)
]
];
term: LEVEL "70"
@{\lambda ${ident i} : $ty. $p}
@{\lambda ${ident i} . $p}}}.
+notation > "\exists ident x:A.break term 19 Px" with precedence 20 for @{ 'exists (λ${ident x}:$A.$Px) }.
+
+notation > "\exists ident x.break term 19 Px" with precedence 20 for @{ 'exists (λ${ident x}.$Px) }.
+
notation "hvbox(\langle term 19 a, break term 19 b\rangle)"
with precedence 90 for @{ 'pair $a $b}.