on master help sign in
Prove that multiplication of inverses is the same os multiplication of original elements.
commitbcce75936c6377db0ce1205679d6e55166541389 authorSventimir <svantimir@gmail.com> dateSat 16 Mar 2019, 11:35 (8 years ago) parentaf6a4ca
1 file changed+7
libs/contrib/Control/Algebra/Laws.idr+7
libs/contrib/Control/Algebra/Laws.idr+7
@@ -77,3 +77,10 @@ multInverseInversesR l r =
7777 let step5 = replace {P = \x => x = inverse (l <.> r)} (semigroupOpIsAssociative (inverse (l <.> r)) (l <.> r) (l <.> inverse r)) step4 in
7878 let step6 = replace {P = \x => x <+> l <.> inverse r = inverse (l <.> r)} (groupInverseIsInverseR (l <.> r)) step5 in
7979 replace {P = \x => x = inverse (l <.> r)} (monoidNeutralIsNeutralR (l <.> inverse r)) step6
80+
81+multNegativeByNegativeIsPositive : VerifiedRingWithUnity t => (l, r : t) -> inverse l <.> inverse r = l <.> r
82+multNegativeByNegativeIsPositive l r =
83+ rewrite multInverseInversesR (inverse l) r in
84+ rewrite sym $ multInverseInversesL (inverse l) r in
85+ rewrite inverseSquaredIsIdentity l in
86+ Refl