+++ /dev/null
-Inductive bool : Set := true : bool | false : bool.
-Inductive nat : Set := O : nat | S : nat -> nat.
-
-Fixpoint plus [n:nat] : nat -> nat :=
- [m:nat]
- Cases n of
- O => m
- | (S n) => (S (plus n m))
- end.
-
-Fixpoint mult [n:nat] : nat -> nat :=
- [m:nat]
- Cases n of
- O => O
- | (S n) => (plus m (mult n m))
- end.
-
-Fixpoint fact [n:nat] : nat :=
- Cases n of
- O => (S O)
- | (S n) => (mult (S n) (fact n))
- end.
-
-Definition bnot :=
- [b:bool]
- Cases b of
- true => false
- | false => true
- end.
-
-Fixpoint is_even [n:nat] : bool :=
- Cases n of
- O => true
- | (S n) => (bnot (bnot (is_odd n)))
- end
-with is_odd [n:nat] : bool :=
- Cases n of
- O => false
- | (S n) => (bnot (bnot (is_even n)))
- end
-.
-
-Fixpoint idn [n:nat] : nat :=
- Cases n of
- O => O
- | (S n) => (S (idn n))
- end.
-
-Definition test1 := (is_even (S (S O))).
-Definition test2 := (is_even (S (S (S O)))).
-Definition test3 := (idn (idn (S O))).
-Definition test4 := (is_odd (fact (S (S (O))))).
-Definition test5 := (is_odd (fact (S (S (S (S (S (S O)))))))).