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 right 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 (? ? % ?).
-(* a + a = (\w. [[ (\x.x + a) a ]] b *)
-simplify in \vdash (? ? ? ((\lambda x.%) ?)).
+simplify in \vdash (? ? ? ((\lambda x.((\lambda y.%) ?)) ?)).
-(* a + a = (\w.a + a) [[ b ]] *)
-rewrite right H in \vdash (? ? ? (? %)).
+rewrite right H in \vdash (? ? ? (% ?)).
simplify.
reflexivity.
qed.