1 Inductive bool : Set := true : bool | false : bool.
2 Inductive nat : Set := O : nat | S : nat -> nat.
4 Fixpoint plus [n:nat] : nat -> nat :=
8 | (S n) => (S (plus n m))
11 Fixpoint mult [n:nat] : nat -> nat :=
15 | (S n) => (plus m (mult n m))
18 Fixpoint fact [n:nat] : nat :=
21 | (S n) => (mult (S n) (fact n))
31 Fixpoint is_even [n:nat] : bool :=
34 | (S n) => (bnot (bnot (is_odd n)))
36 with is_odd [n:nat] : bool :=
39 | (S n) => (bnot (bnot (is_even n)))
43 Fixpoint idn [n:nat] : nat :=
46 | (S n) => (S (idn n))
49 Definition test1 := (is_even (S (S O))).
50 Definition test2 := (is_even (S (S (S O)))).
51 Definition test3 := (idn (idn (S O))).
52 Definition test4 := (is_odd (fact (S (S (O))))).
53 Definition test5 := (is_odd (fact (S (S (S (S (S (S O)))))))).