git @ Cat's Eye Technologies Eqthy / master eg / socks-and-shoes.eqthy.md
master

Tree @master (Download .tar.gz)

socks-and-shoes.eqthy.md @masterview markup · raw · history · blame

Socks and Shoes

See Socks and shoes proof on Wikiversity.

Also see Inverse of Product on ProofWiki.

Requires Group theory.

theorem (#socks-and-shoes)
    inv(mul(A, B)) = mul(inv(B), inv(A))
proof
    e = e
    mul(A, inv(A)) = e

    mul(mul(A, B), inv(mul(A, B))) = e                 [by substitution of mul(A, B) into A]
    mul(mul(A, B), inv(mul(A, B))) = mul(A, inv(A))
    mul(mul(A, B), inv(mul(A, B))) = mul(mul(A, e), inv(A))
    mul(mul(A, B), inv(mul(A, B))) = mul(mul(A, mul(B, inv(B))), inv(A))  [by #inv-right with A=B]
    mul(mul(A, B), inv(mul(A, B))) = mul(mul(mul(A, B), inv(B)), inv(A))
    mul(mul(A, B), inv(mul(A, B))) = mul(mul(A, B), mul(inv(B), inv(A)))

    mul(inv(A), mul(mul(A, B), inv(mul(A, B)))) = mul(inv(A), mul(mul(A, B), mul(inv(B), inv(A))))  [by congruence of C and mul(inv(A), C)]
    mul(mul(inv(A), mul(A, B)), inv(mul(A, B))) = mul(inv(A), mul(mul(A, B), mul(inv(B), inv(A))))
    mul(mul(mul(inv(A), A), B), inv(mul(A, B))) = mul(inv(A), mul(mul(A, B), mul(inv(B), inv(A))))
    mul(mul(e, B), inv(mul(A, B))) = mul(inv(A), mul(mul(A, B), mul(inv(B), inv(A))))
    mul(B, inv(mul(A, B))) = mul(inv(A), mul(mul(A, B), mul(inv(B), inv(A))))

    mul(B, inv(mul(A, B))) = mul(mul(inv(A), mul(A, B)), mul(inv(B), inv(A)))
    mul(B, inv(mul(A, B))) = mul(mul(mul(inv(A), A), B), mul(inv(B), inv(A)))
    mul(B, inv(mul(A, B))) = mul(mul(e, B), mul(inv(B), inv(A)))
    mul(B, inv(mul(A, B))) = mul(B, mul(inv(B), inv(A)))

    mul(inv(B), mul(B, inv(mul(A, B)))) = mul(inv(B), mul(B, mul(inv(B), inv(A))))  [by congruence of C and mul(inv(B), C)]
    mul(mul(inv(B), B), inv(mul(A, B))) = mul(inv(B), mul(B, mul(inv(B), inv(A))))
    mul(mul(inv(B), B), inv(mul(A, B))) = mul(mul(inv(B), B), mul(inv(B), inv(A)))
    mul(e, inv(mul(A, B))) = mul(mul(inv(B), B), mul(inv(B), inv(A)))
    mul(e, inv(mul(A, B))) = mul(e, mul(inv(B), inv(A)))
    inv(mul(A, B)) = mul(e, mul(inv(B), inv(A)))
    inv(mul(A, B)) = mul(inv(B), inv(A))

qed