Inductive natural : Set := | Zero : natural | Succ : natural -> natural. Fixpoint add (n m : natural ): natural := match n with | Zero => m | Succ n' => Succ (add n' m) end. (** The Associative Law of Addition **) Theorem add_assoc : forall n m o, add ( add n m) o = add n (add m o). Proof. induction n. intros. reflexivity. intros. simpl. rewrite IHn. reflexivity. Qed. Lemma add_Zero : forall n, add n Zero = n. induction n; simpl. reflexivity. rewrite IHn. reflexivity. Qed. Lemma add_Succ: forall n m, add n (Succ m ) = Succ (add n m). induction n; simpl; intros. reflexivity. rewrite IHn. reflexivity. Qed. Theorem add_comm : forall n m, add n m = add m n. Proof. induction n;intros;simpl. rewrite add_Zero. reflexivity. rewrite IHn. rewrite add_Succ. reflexivity. Qed.