AUGER_Notations

Pierre Letouzey edited this page Oct 26, 2017 · 7 revisions

This file takes all the notations of "Utf8.v" and "Utf8-core.v" and adds a lot of others. See this page to find how to use XCompose for an easy access to special characters.

(* Logic *)
Notation "∀  x .. y , P" := (forall x, .. (forall y, P) ..)
  (at level 200, x binder, y binder, right associativity) : type_scope.
Notation "∃  x .. y , P" := (exists x, .. (exists y, P) ..)
  (at level 200, x binder, y binder, right associativity) : 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 90, right 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 "x ≠ y" := (x <> y) (at level 70) : type_scope.
Notation "⊤" := (True).
Notation "⊥" := (False).
(* Functions *)
Notation "'λ'  x .. y · t" := (fun x => .. (fun y => t) ..)
  (at level 200, x binder, y binder, right associativity).
Notation "f ∘ g" := (λ x · f (g x)) (at level 20, right associativity).
(* Arithmetic *)
Notation "x ≤ y" := (le x y) (at level 70, no associativity).
Notation "x ≥ y" := (ge x y) (at level 70, no associativity).
Notation "x ≮ y" := (¬ (x < y)) (at level 70, no associativity).
Notation "x ≯ y" := (¬ (x > y)) (at level 70, no associativity).
Notation "x ≰ y" := (¬ (x ≤ y)) (at level 70, no associativity).
Notation "x ≱ y" := (¬ (x ≥ y)) (at level 70, no associativity).
(* Types *)
Delimit Scope init_scope with init.
Notation "'ℕ'" := nat: init_scope.
Notation "'U0001d7d8'" := Empty_set: init_scope.
Notation "'U0001d7d9'" := unit: init_scope.
Notation "'U0001d7da'" := bool: init_scope.
Notation "'U0001d560'" := tt: init_scope.
Notation "'U0001d565'" := true: init_scope.
Notation "'U0001d557'" := false: init_scope.
Notation "x ₁" := (let (y, _) := x in y) (at level 5).
Notation "x ₂" := (let (_, y) := x in y) (at level 5).
Close Scope init_scope.
(* Sets *)
Delimit Scope set_scope with set.
Open Scope set_scope.
Notation "{ x : s 'st' P }" :=
 (fun (x: s) => (P: Prop))
 (at level 0,
  x at level 99,
  format
  "'[hv' { '[hv' '[hv' x '/' : '[' s ']' ']' '/' 'st' '[' P ']' ']' '/' } ']'"
 ): set_scope.
Notation "{ x 'st' P }" := ({x:_ st P}) (at level 10, x at level 99): set_scope.
Notation "x ∈ X" := ((X: _ → Prop) x) (at level 40): set_scope.
Notation "x ∉ X" := (¬(x ∈ X)) (at level 40): set_scope.
Notation "X ⊆ Y" := (∀ x, x ∈ X → x ∈ Y) (at level 40): set_scope.
Notation "X ≡ Y" := (X⊆Y ∧ Y⊆X) (at level 40): set_scope.
Notation "X ∪ Y" := ({x st x ∈ X ∨ x ∈ Y}) (at level 55): set_scope.
Notation "X ∩ Y" := ({x st x ∈ X ∧ x ∈ Y}) (at level 50): set_scope.
Notation "⋃ X" := ({x st ∃ y, x ∈ y ∧ y ∈ X}) (at level 35): set_scope.
Notation "⋂ X" := ({x st ∀ y, y ∈ X → x ∈ y}) (at level 30): set_scope.
Notation "f ⁻¹ Σ" := ({x st (f x) ∈ Σ}) (at level 5): set_scope.
Notation "∁ A" := ({x st x ∉ A}) (at level 5): set_scope.
Notation "₀ s" := ({x: s st ⊥}) (at level 5): set_scope.
Notation "₁ s" := ({x: s st ⊤}) (at level 5): set_scope.
Notation "'℘' s" :=
 ({x st ∀ a, (x a: Prop) → (s a: Prop)}) (at level 5): set_scope.
Close Scope set_scope.

(Note by T. Braibant: this can be simplified using the tokens facilities of proof-general 4.0, which allows to fold in the buffer, e.g. /into ∧, and to unfold automatically when communicating with Coq).

Clone this wiki locally
You can’t perform that action at this time.
You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session.
Press h to open a hovercard with more details.