2 3 : PAIR 2[+]3 : nat forall (A : Set) (le : A -> A -> Prop) (x y : A), le x y \/ le y x : Prop match (0, 0, 0) with | (x, y, z) => x + y + z end : nat let '(a, _, _) := (2, 3, 4) in a : nat ∃ n p : nat, n + p = 0 : Prop ∀ n p : nat, n + p = 0 : Prop λ n p : nat, n + p = 0 : nat -> nat -> Prop λ (A : Type) (n p : A), n = p : ∀ A : Type, A -> A -> Prop λ A : Type, ∃ n p : A, n = p : Type -> Prop λ A : Type, ∀ n p : A, n = p : Type -> Prop Defining 'let'' as keyword let' f (x y z : nat) (_ : bool) := x + y + z + 1 in f 0 1 2 : bool -> nat