- cancelLeft : VerifiedGroup t =>
(x : t) ->
(y : t) ->
(z : t) ->
(x <+>
y =
x <+>
z) ->
y =
z
y = z if x + y = x + z.
- cancelRight : VerifiedGroup t =>
(x : t) ->
(y : t) ->
(z : t) ->
(y <+>
x =
z <+>
x) ->
y =
z
y = z if y + x = z + x.
- groupInverseIsInverseL : VerifiedGroup t =>
(x : t) ->
x <+>
inverse x =
neutral
Every element has a right inverse.
- inverseCommute : VerifiedGroup t =>
(x : t) ->
(y : t) ->
(y <+>
x =
neutral) ->
x <+>
y =
neutral
Inverse elements commute.
- inverseDistributesOverGroupOp : VerifiedAbelianGroup t =>
(l : t) ->
(r : t) ->
inverse (l <+>
r) =
inverse l <+>
inverse r
-(x + y) = -x + -y in any verified abelian group.
- inverseNeutralIsNeutral : VerifiedGroup t =>
inverse (the t
neutral) =
neutral
-0 = 0 in any verified group.
- inverseOfSum : VerifiedGroup t =>
(l : t) ->
(r : t) ->
inverse (l <+>
r) =
inverse r <+>
inverse l
-(x + y) = -y + -x in any verified group.
- inverseOfUnityL : VerifiedRingWithUnity t =>
(x : t) ->
x <.>
inverse unity =
inverse x
- inverseOfUnityR : VerifiedRingWithUnity t =>
(x : t) ->
inverse unity <.>
x =
inverse x
- inverseSquaredIsIdentity : VerifiedGroup t =>
(x : t) ->
inverse (inverse x) =
x
-(-x) = x in any verified group.
- latinSquareProperty : VerifiedGroup t =>
(a : t) ->
(b : t) ->
((x : t **
a <+>
x =
b),
(y : t **
y <+>
a =
b))
For any a and b, ax = b and ya = b have solutions.
- multInverseInversesL : VerifiedRing t =>
(l : t) ->
(r : t) ->
inverse l <.>
r =
inverse (l <.>
r)
Inverse operator can be extracted before multiplication.
(-x)y = -(xy)
- multInverseInversesR : VerifiedRing t =>
(l : t) ->
(r : t) ->
l <.>
inverse r =
inverse (l <.>
r)
Inverse operator can be extracted before multiplication.
x(-y) = -(xy)
- multNegativeByNegativeIsPositive : VerifiedRing t =>
(l : t) ->
(r : t) ->
inverse l <.>
inverse r =
l <.>
r
Multiplication of inverses is the same as multiplication of
original elements.
(-x)(-y) = xy
- multNeutralAbsorbingL : VerifiedRing t =>
(r : t) ->
neutral <.>
r =
neutral
Anything multiplied by zero yields zero back in a verified ring.
- multNeutralAbsorbingR : VerifiedRing t =>
(l : t) ->
l <.>
neutral =
neutral
Anything multiplied by zero yields zero back in a verified ring.
- selfSquareId : VerifiedGroup t =>
(x : t) ->
(x <+>
x =
x) ->
x =
neutral
Only identity is self-squaring.
- squareIdCommutative : VerifiedGroup t =>
(x : t) ->
(y : t) ->
((a : t) ->
a <+>
a =
neutral) ->
x <+>
y =
y <+>
x
If every square in a group is identity, the group is commutative.
- uniqueInverse : VerifiedMonoid t =>
(x : t) ->
(y : t) ->
(z : t) ->
(y <+>
x =
neutral) ->
(x <+>
z =
neutral) ->
y =
z
Inverses are unique.
- uniqueSolutionL : VerifiedGroup t =>
(a : t) ->
(b : t) ->
(x : t) ->
(y : t) ->
(x <+>
a =
b) ->
(y <+>
a =
b) ->
x =
y
For any a, b, y, the solution to ya = b is unique.
- uniqueSolutionR : VerifiedGroup t =>
(a : t) ->
(b : t) ->
(x : t) ->
(y : t) ->
(a <+>
x =
b) ->
(a <+>
y =
b) ->
x =
y
For any a, b, x, the solution to ax = b is unique.