[ O \Rightarrow m
| (S p) \Rightarrow S (plus p m) ].
+(*CSC: the URI must disappear: there is a bug now *)
interpretation "natural plus" 'plus x y = (cic:/matita/nat/plus/plus.con x y).
-alias symbol "plus" (instance 0) = "natural plus".
theorem plus_n_O: \forall n:nat. n = n+O.
intros.elim n.
simplify.apply eq_f.assumption.
qed.
-(* some problem here: confusion between relations/symmetric
-and functions/symmetric; functions symmetric is not in
-functions.moo why?
-theorem symmetric_plus: symmetric nat plus. *)
-
theorem sym_plus: \forall n,m:nat. n+m = m+n.
intros.elim n.
simplify.apply plus_n_O.
theorem injective_plus_l: \forall m:nat.injective nat nat (\lambda n.n+m).
intro.simplify.intros.
-(* qui vorrei applicare injective_plus_r *)
-apply inj_plus_r m.
+apply injective_plus_r m.
rewrite < sym_plus.
rewrite < sym_plus y.
assumption.