HomeHome Metamath Proof Explorer < Previous   Next >
Related theorems
Unicode version

Theorem fun11 3548
Description: Two ways of stating that A is one-to-one (but not necessarily a function). Each side is equivalent to Definition 6.4(3) of [TakeutiZaring] p. 24, who use the notation "Un2 (A)" for one-to-one (but not necessarily a function).
Assertion
Ref Expression
fun11 |- ((Fun `'`'A /\ Fun `'A) <-> A.xA.yA.zA.w((xAy /\ zAw) -> (x = z <-> y = w)))
Distinct variable group:   x,y,z,w,A

Proof of Theorem fun11
StepHypRef Expression
1 bi 513 . . . . . . . 8 |- ((x = z <-> y = w) <-> ((x = z -> y = w) /\ (y = w -> x = z)))
21imbi2i 185 . . . . . . 7 |- (((xAy /\ zAw) -> (x = z <-> y = w)) <-> ((xAy /\ zAw) -> ((x = z -> y = w) /\ (y = w -> x = z))))
3 pm4.76 597 . . . . . . 7 |- ((((xAy /\ zAw) -> (x = z -> y = w)) /\ ((xAy /\ zAw) -> (y = w -> x = z))) <-> ((xAy /\ zAw) -> ((x = z -> y = w) /\ (y = w -> x = z))))
4 bi2.04 160 . . . . . . . 8 |- (((xAy /\ zAw) -> (x = z -> y = w)) <-> (x = z -> ((xAy /\ zAw) -> y = w)))
5 bi2.04 160 . . . . . . . 8 |- (((xAy /\ zAw) -> (y = w -> x = z)) <-> (y = w -> ((xAy /\ zAw) -> x = z)))
64, 5anbi12i 481 . . . . . . 7 |- ((((xAy /\ zAw) -> (x = z -> y = w)) /\ ((xAy /\ zAw) -> (y = w -> x = z))) <-> ((x = z -> ((xAy /\ zAw) -> y = w)) /\ (y = w -> ((xAy /\ zAw) -> x = z))))
72, 3, 63bitr2 179 . . . . . 6 |- (((xAy /\ zAw) -> (x = z <-> y = w)) <-> ((x = z -> ((xAy /\ zAw) -> y = w)) /\ (y = w -> ((xAy /\ zAw) -> x = z))))
872albii 997 . . . . 5 |- (A.xA.y((xAy /\ zAw) -> (x = z <-> y = w)) <-> A.xA.y((x = z -> ((xAy /\ zAw) -> y = w)) /\ (y = w -> ((xAy /\ zAw) -> x = z))))
9 19.26-2 1064 . . . . 5 |- (A.xA.y((x = z -> ((xAy /\ zAw) -> y = w)) /\ (y = w -> ((xAy /\ zAw) -> x = z))) <-> (A.xA.y(x = z -> ((xAy /\ zAw) -> y = w)) /\ A.xA.y(y = w -> ((xAy /\ zAw) -> x = z))))
10 alcom 1028 . . . . . . 7 |- (A.xA.y(x = z -> ((xAy /\ zAw) -> y = w)) <-> A.yA.x(x = z -> ((xAy /\ zAw) -> y = w)))
11 ax-17 968 . . . . . . . . 9 |- (((zAy /\ zAw) -> y = w) -> A.x((zAy /\ zAw) -> y = w))
12 breq1 2612 . . . . . . . . . . 11 |- (x = z -> (xAy <-> zAy))
1312anbi1d 615 . . . . . . . . . 10 |- (x = z -> ((xAy /\ zAw) <-> (zAy /\ zAw)))
1413imbi1d 611 . . . . . . . . 9 |- (x = z -> (((xAy /\ zAw) -> y = w) <-> ((zAy /\ zAw) -> y = w)))
1511, 14equsal 1147 . . . . . . . 8 |- (A.x(x = z -> ((xAy /\ zAw) -> y = w)) <-> ((zAy /\ zAw) -> y = w))
1615albii 996 . . . . . . 7 |- (A.yA.x(x = z -> ((xAy /\ zAw) -> y = w)) <-> A.y((zAy /\ zAw) -> y = w))
1710, 16bitr 173 . . . . . 6 |- (A.xA.y(x = z -> ((xAy /\ zAw) -> y = w)) <-> A.y((zAy /\ zAw) -> y = w))
18 ax-17 968 . . . . . . . 8 |- (((xAw /\ zAw) -> x = z) -> A.y((xAw /\ zAw) -> x = z))
19 breq2 2613 . . . . . . . . . 10 |- (y = w -> (xAy <-> xAw))
2019anbi1d 615 . . . . . . . . 9 |- (y = w -> ((xAy /\ zAw) <-> (xAw /\ zAw)))
2120imbi1d 611 . . . . . . . 8 |- (y = w -> (((xAy /\ zAw) -> x = z) <-> ((xAw /\ zAw) -> x = z)))
2218, 21equsal 1147 . . . . . . 7 |- (A.y(y = w -> ((xAy /\ zAw) -> x = z)) <-> ((xAw /\ zAw) -> x = z))
2322albii 996 . . . . . 6 |- (A.xA.y(y = w -> ((xAy /\ zAw) -> x = z)) <-> A.x((xAw /\ zAw) -> x = z))
2417, 23anbi12i 481 . . . . 5 |- ((A.xA.y(x = z -> ((xAy /\ zAw) -> y = w)) /\ A.xA.y(y = w -> ((xAy /\ zAw) -> x = z))) <-> (A.y((zAy /\ zAw) -> y = w) /\ A.x((xAw /\ zAw) -> x = z)))
258, 9, 243bitr 177 . . . 4 |- (A.xA.y((xAy /\ zAw) -> (x = z <-> y = w)) <-> (A.y((zAy /\ zAw) -> y = w) /\ A.x((xAw /\ zAw) -> x = z)))
26252albii 997 . . 3 |- (A.zA.wA.xA.y((xAy /\ zAw) -> (x = z <-> y = w)) <-> A.zA.w(A.y((zAy /\ zAw) -> y = w) /\ A.x((xAw /\ zAw) -> x = z)))
27 19.26-2 1064 . . 3 |- (A.zA.w(A.y((zAy /\ zAw) -> y = w) /\ A.x((xAw /\ zAw) -> x = z)) <-> (A.zA.wA.y((zAy /\ zAw) -> y = w) /\ A.zA.wA.x((xAw /\ zAw) -> x = z)))
2826, 27bitr2 174 . 2 |- ((A.zA.wA.y((zAy /\ zAw) -> y = w) /\ A.zA.wA.x((xAw /\ zAw) -> x = z)) <-> A.zA.wA.xA.y((xAy /\ zAw) -> (x = z <-> y = w)))
29 fun2cnv 3545 . . . 4 |- (Fun `'`'A <-> A.zE*y zAy)
30 breq2 2613 . . . . . 6 |- (y = w -> (zAy <-> zAw))
3130mo4 1396 . . . . 5 |- (E*y zAy <-> A.yA.w((zAy /\ zAw) -> y = w))
3231albii 996 . . . 4 |- (A.zE*y zAy <-> A.zA.yA.w((zAy /\ zAw) -> y = w))
33 alcom 1028 . . . . 5 |- (A.yA.w((zAy /\ zAw) -> y = w) <-> A.wA.y((zAy /\ zAw) -> y = w))
3433albii 996 . . . 4 |- (A.zA.yA.w((zAy /\ zAw) -> y = w) <-> A.zA.wA.y((zAy /\ zAw) -> y = w))
3529, 32, 343bitr 177 . . 3 |- (Fun `'`'A <-> A.zA.wA.y((zAy /\ zAw) -> y = w))
36 funcnv2 3542 . . . 4 |- (Fun `'A <-> A.wE*x xAw)
37 breq1 2612 . . . . . 6 |- (x = z -> (xAw <-> zAw))
3837mo4 1396 . . . . 5 |- (E*x xAw <-> A.xA.z((xAw /\ zAw) -> x = z))
3938albii 996 . . . 4 |- (A.wE*x xAw <-> A.wA.xA.z((xAw /\ zAw) -> x = z))
40 alcom 1028 . . . . . 6 |- (A.xA.z((xAw /\ zAw) -> x = z) <-> A.zA.x((xAw /\ zAw) -> x = z))
4140albii 996 . . . . 5 |- (A.wA.xA.z((xAw /\ zAw) -> x = z) <-> A.wA.zA.x((xAw /\ zAw) -> x = z))
42 alcom 1028 . . . . 5 |- (A.wA.zA.x((xAw /\ zAw) -> x = z) <-> A.zA.wA.x((xAw /\ zAw) -> x = z))
4341, 42bitr 173 . . . 4 |- (A.wA.xA.z((xAw /\ zAw) -> x = z) <-> A.zA.wA.x((xAw /\ zAw) -> x = z))
4436, 39, 433bitr 177 . . 3 |- (Fun `'A <-> A.zA.wA.x((xAw /\ zAw)