unit is a singleton datatype with sole inhabitant tt
|
Inductive
unit : Set := tt : unit.
bool is the datatype of the booleans values true and false
|
Inductive
bool : Set := true : bool
| false : bool.
Add
Printing If bool.
nat is the datatype of natural numbers built from O and successor S ; note that zero is the letter O, not the numeral 0
|
Inductive
nat : Set := O : nat
| S : nat->nat.
Empty_set has no inhabitants
|
identity A a is a singleton datatype containing only a of type A ; the sole inhabitant is denoted refl_identity A a
|
Inductive
identity [A:Set; a:A] : A->Set :=
refl_identity: (identity A a a).
Hints
Resolve refl_identity : core v62.
option A is the extension of A with a dummy element None
|
Inductive
option [A:Set] : Set := Some : A -> (option A) | None : (option A).
sum A B , equivalently A + B , is the disjoint sum of A and B
|
Inductive
sum [A,B:Set] : Set
:= inl : A -> (sum A B)
| inr : B -> (sum A B).
prod A B , written A * B , is the product of A and B ; the pair pair A B a b of a and b is abbreviated (a,b)
|
Inductive
prod [A,B:Set] : Set := pair : A -> B -> (prod A B).
Add
Printing Let prod.
Section
projections.
Variables
A,B:Set.
Definition
fst := [p:(prod A B)]Cases p of (pair x y) => x end.
Definition
snd := [p:(prod A B)]Cases p of (pair x y) => y end.
End
projections.
Syntactic
Definition
Fst := (fst ? ?).
Syntactic
Definition
Snd := (snd ? ?).
Hints
Resolve pair inl inr : core v62.