We give a little more detail in this proof than usual, since it's a short proof and paradigmatic of many little proofs heavy on trivial computation.
The idea, as with many of our proofs of
In this case we map A
B
C
(A
B)
C
We show the expressions gotten by expanding
Def InvFuns(A;B;f;g) == ( x:A. g(f(x)) = x) & (
y:B. f(g(y)) = y)
then instantiating the arguments with the appopriate nested pairs and compute down.
Here's one reduction step-by-step; watch
(
xyz.xyz/xy,z. xy/x,y. <x,y,z>)
((
abc.abc/a,bc. bc/b,c. <<a,b>,c>)(<a1,a3,a4>))
look
*
(
abc.abc/a,bc. bc/b,c. <<a,b>,c>)(<a1,a3,a4>)/xy,z. xy/x,y. <x,y,z>
*
(<a1,a3,a4>/a,bc. bc/b,c. <<a,b>,c>)/xy,z. xy/x,y. <x,y,z>
*
(<a3,a4>/b,c. <<a1,b>,c>)/xy,z. xy/x,y. <x,y,z>
*
<<a1,a3>,a4>/xy,z. xy/x,y. <x,y,z>
look
*
<a1,a3>/x,y. <x,y,a4>
*
<a1,a3,a4> look
Also see the amusing proof of a,b,c:
. a
(b
c) = (a
b)
c
About:
![]() | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() |
![]() | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() |