+set "baseuri" "cic:/matita/tests/rewrite/".
+
alias id "nat" = "cic:/Coq/Init/Datatypes/nat.ind#xpointer(1/1)".
alias num (instance 0) = "natural number".
-alias symbol "eq" (instance 0) = "leibnitz's equality".
+alias symbol "eq" (instance 0) = "leibnitz's equality".
alias symbol "plus" (instance 0) = "natural plus".
-(* with the unary [[ - ]] we point the term that the path refers to *)
+
theorem a:
\forall a,b:nat.
- a = b \to a + b = ((\lambda w.((\lambda x.x + b) a)) b).
+ a = b \to b + a + b + a= (\lambda j.((\lambda w.((\lambda x.x + b + w + j) a)) b)) a.
intros.
+rewrite < H in \vdash (? ? ? ((\lambda j.((\lambda w.%) ?)) ?)).
-(* a + b = (\w.(\x. [[ x + b ]] ) a) b *)
-rewrite right H in \vdash (? ? ? ((\lambda x.%) ?)).
-
-(* [[ a + b ]] = (\w.(\x.x + a) a) b *)
-rewrite right H in \vdash (? ? % ?).
+rewrite < H in \vdash (? ? % ?).
-(* a + a = (\w. [[ (\x.x + a) a ]] b *)
-simplify in \vdash (? ? ? ((\lambda x.%) ?)).
+simplify in \vdash (? ? ? ((\lambda _.((\lambda _.%) ?)) ?)).
-(* a + a = (\w.a + a) [[ b ]] *)
-rewrite right H in \vdash (? ? ? (? %)).
+rewrite < H in \vdash (? ? ? (% ?)).
simplify.
reflexivity.
qed.
+