(* -*- coq-prog-args: ("-emacs-U" "-nois") -*- *) (************************************************************************) (* v * The Coq Proof Assistant / The Coq Development Team *) (* y) (at level 100, x,T at level 10, y at next level, no associativity) : program_scope. (** Notations for the unit type and value. *) Notation " () " := Datatypes.unit : type_scope. Notation " () " := tt. (** Set maximally inserted implicit arguments for standard definitions. *) Implicit Arguments eq [[A]]. Implicit Arguments Some [[A]]. Implicit Arguments None [[A]]. Implicit Arguments inl [[A] [B]]. Implicit Arguments inr [[A] [B]]. Implicit Arguments left [[A] [B]]. Implicit Arguments right [[A] [B]]. Require Import Coq.Lists.List. Implicit Arguments nil [[A]]. Implicit Arguments cons [[A]]. (** Standard notations for lists. *) Notation " [] " := nil. Notation " [ x ] " := (cons x nil). Notation " [ x ; .. ; y ] " := (cons x .. (cons y nil) ..) (at level 1). (** n-ary exists ! *) Notation " 'exists' x y , p" := (ex (fun x => (ex (fun y => p)))) (at level 200, x ident, y ident, right associativity) : type_scope. Notation " 'exists' x y z , p" := (ex (fun x => (ex (fun y => (ex (fun z => p)))))) (at level 200, x ident, y ident, z ident, right associativity) : type_scope. Notation " 'exists' x y z w , p" := (ex (fun x => (ex (fun y => (ex (fun z => (ex (fun w => p)))))))) (at level 200, x ident, y ident, z ident, w ident, right associativity) : type_scope. Tactic Notation "exist" constr(x) := exists x. Tactic Notation "exist" constr(x) constr(y) := exists x ; exists y. Tactic Notation "exist" constr(x) constr(y) constr(z) := exists x ; exists y ; exists z. Tactic Notation "exist" constr(x) constr(y) constr(z) constr(w) := exists x ; exists y ; exists z ; exists w. (* Notation " 'Σ' x : T , p" := (sigT (fun x : T => p)) *) (* (at level 200, x ident, y ident, right associativity) : program_scope. *) (* Notation " 'Π' x : T , p " := (forall x : T, p) *) (* (at level 200, x ident, right associativity) : program_scope. *)