Library Waterproof.Notations.Common
Notation " f ( x , .. , y )" := (.. (f x) .. y)
(at level 10,
format "f '(' x , .. , y ')'") : type_scope.
Module Import Quantifiers.
(at level 10,
format "f '(' x , .. , y ')'") : type_scope.
Module Import Quantifiers.
Notation "'for' 'all' x .. y , P" := (forall x, .. (forall y, P) ..)
(at level 200, x binder, y binder, right associativity,
format "'[ ' '[ ' for all x .. y ']' , '//' P ']'") : type_scope.
Notation "∀ x .. y , P" := (forall x, .. (forall y, P) ..)
(at level 200, x binder, y binder, right associativity,
only parsing) : type_scope.
Notation "'there' 'exists' x .. y , P " := (exists x, .. (exists y, P) ..)
(at level 200, x binder, y binder, right associativity,
format "'[ ' '[ ' there exists x .. y ']' , '//' P ']'") : type_scope.
Notation "∃ x .. y , P " := (exists x, .. (exists y, P) ..)
(at level 200, x binder, y binder, right associativity,
only parsing) : type_scope.
End Quantifiers.
Notation "'fun' x .. y '↦' t" := (fun x => .. (fun y => t) ..)
(at level 200, x binder, y binder, right associativity,
format "'[ ' '[ ' 'fun' x .. y ']' '↦' '/' t ']'") : type_scope.
(at level 200, x binder, y binder, right associativity,
format "'[ ' '[ ' for all x .. y ']' , '//' P ']'") : type_scope.
Notation "∀ x .. y , P" := (forall x, .. (forall y, P) ..)
(at level 200, x binder, y binder, right associativity,
only parsing) : type_scope.
Notation "'there' 'exists' x .. y , P " := (exists x, .. (exists y, P) ..)
(at level 200, x binder, y binder, right associativity,
format "'[ ' '[ ' there exists x .. y ']' , '//' P ']'") : type_scope.
Notation "∃ x .. y , P " := (exists x, .. (exists y, P) ..)
(at level 200, x binder, y binder, right associativity,
only parsing) : type_scope.
End Quantifiers.
Notation "'fun' x .. y '↦' t" := (fun x => .. (fun y => t) ..)
(at level 200, x binder, y binder, right associativity,
format "'[ ' '[ ' 'fun' x .. y ']' '↦' '/' t ']'") : type_scope.
Notation "x ∨ y" := (x \/ y) (at level 85, right associativity) : type_scope.
Notation "x ∧ y" := (x /\ y) (at level 80, right associativity) : type_scope.
Notation "x → y" := (x -> y) (at level 99, y at level 200, right associativity, only parsing): type_scope.
Notation "x ⇒ y" := (x -> y) (at level 99, y at level 200, right associativity, only parsing): type_scope.
Notation "x ⇨ y" := (x -> y) (at level 99, y at level 200, right associativity): type_scope.
Notation "x ↔ y" := (x <-> y) (at level 95, no associativity): type_scope.
Notation "x ⇔ y" := (x <-> y) (at level 95, no associativity): type_scope.
Notation "¬ x" := (~x) (at level 75, right associativity) : type_scope.
Notation "'Derive' 'a' 'contradiction.'" := (False)
(only printing).
Definition identity_seal {T : Type} (x : T) : T.
exact x. Qed.
Notation "x ?" := (identity_seal x) (at level 1,
format "x ?").
Notation "x ∧ y" := (x /\ y) (at level 80, right associativity) : type_scope.
Notation "x → y" := (x -> y) (at level 99, y at level 200, right associativity, only parsing): type_scope.
Notation "x ⇒ y" := (x -> y) (at level 99, y at level 200, right associativity, only parsing): type_scope.
Notation "x ⇨ y" := (x -> y) (at level 99, y at level 200, right associativity): type_scope.
Notation "x ↔ y" := (x <-> y) (at level 95, no associativity): type_scope.
Notation "x ⇔ y" := (x <-> y) (at level 95, no associativity): type_scope.
Notation "¬ x" := (~x) (at level 75, right associativity) : type_scope.
Notation "'Derive' 'a' 'contradiction.'" := (False)
(only printing).
Definition identity_seal {T : Type} (x : T) : T.
exact x. Qed.
Notation "x ?" := (identity_seal x) (at level 1,
format "x ?").