proposition: Lemma square_plus : forall x y : R, (x[+]y) [^]2 [=] x[^]2[+]y[^]2[+]Two[*]x[*]y.
proof: Proof. intros x y. astepl ((x[+]y) [*] (x[+]y)). astepl (x[*] (x[+]y) [+]y[*] (x[+]y)). astepl (x[*]x[+]x[*]y[+] (y[*]x[+]y[*]y)). astepl (x[^]2[+]x[*]y[+] (x[*]y[+]y[^]2)). astepl (x[^]2[+]x[*]y[+]x[*]y[+]y[^]2). astepl (x[^]2[+] (x[*]y[+]x[*]y) [+]y[^]2). astepl (x[^]2[+]Two[*] (x[*]y) [+]y[^]2). astepl (x[^]2[+]Two[*]x[*]y[+]y[^]2). astepl (x[^]2[+] (Two[*]x[*]y[+]y[^]2)). Step_final (x[^]2[+] (y[^]2[+]Two[*]x[*]y)). Qed.
imports: CoRN.tactics.CornTac CoRN.algebra.CSums CoRN.algebra.CAbMonoids Coq.Sorting.Permutation CoRN.util.SetoidPermutation Coq.Setoids.Setoid Coq.Classes.Morphisms Coq(Lia)