| Step | Hyp | Ref | Expression |
| 1 |
|
eqtr |
srecpaux A n = (\ f, nat (size (Dom f), lower {x | true (f @ x)} e. A)) @ lower ((\ i, srecpaux A i) |` upto n) ->
(\ f, nat (size (Dom f), lower {x | true (f @ x)} e. A)) @ lower ((\ i, srecpaux A i) |` upto n) = nat (n, sep (upto n) {i | srecp A i} e. A) ->
srecpaux A n = nat (n, sep (upto n) {i | srecp A i} e. A) |
| 2 |
|
srecval |
srec (\ f, nat (size (Dom f), lower {x | true (f @ x)} e. A)) n =
(\ f, nat (size (Dom f), lower {x | true (f @ x)} e. A)) @ (\. i e. upto n, srec (\ f, nat (size (Dom f), lower {x | true (f @ x)} e. A)) i) |
| 3 |
2 |
conv rlam, srecpaux |
srecpaux A n = (\ f, nat (size (Dom f), lower {x | true (f @ x)} e. A)) @ lower ((\ i, srecpaux A i) |` upto n) |
| 4 |
1, 3 |
ax_mp |
(\ f, nat (size (Dom f), lower {x | true (f @ x)} e. A)) @ lower ((\ i, srecpaux A i) |` upto n) = nat (n, sep (upto n) {i | srecp A i} e. A) ->
srecpaux A n = nat (n, sep (upto n) {i | srecp A i} e. A) |
| 5 |
|
eqtr4 |
(\ f, nat (size (Dom f), lower {x | true (f @ x)} e. A)) @ lower ((\ i, srecpaux A i) |` upto n) =
nat (n, lower {x | true (((\ i, srecpaux A i) |` upto n) @ x)} e. A) ->
nat (n, sep (upto n) {i | srecp A i} e. A) = nat (n, lower {x | true (((\ i, srecpaux A i) |` upto n) @ x)} e. A) ->
(\ f, nat (size (Dom f), lower {x | true (f @ x)} e. A)) @ lower ((\ i, srecpaux A i) |` upto n) = nat (n, sep (upto n) {i | srecp A i} e. A) |
| 6 |
|
sreclem |
f = \. i e. upto n, srecpaux A i -> size (Dom f) = n |
| 7 |
6 |
conv rlam |
f = lower ((\ i, srecpaux A i) |` upto n) -> size (Dom f) = n |
| 8 |
|
bi2 |
(f == (\ i, srecpaux A i) |` upto n <-> f = lower ((\ i, srecpaux A i) |` upto n)) ->
f = lower ((\ i, srecpaux A i) |` upto n) ->
f == (\ i, srecpaux A i) |` upto n |
| 9 |
|
eqlower2 |
finite ((\ i, srecpaux A i) |` upto n) -> (f == (\ i, srecpaux A i) |` upto n <-> f = lower ((\ i, srecpaux A i) |` upto n)) |
| 10 |
|
finlam |
finite (upto n) -> finite ((\ i, srecpaux A i) |` upto n) |
| 11 |
|
finns |
finite (upto n) |
| 12 |
10, 11 |
ax_mp |
finite ((\ i, srecpaux A i) |` upto n) |
| 13 |
9, 12 |
ax_mp |
f == (\ i, srecpaux A i) |` upto n <-> f = lower ((\ i, srecpaux A i) |` upto n) |
| 14 |
8, 13 |
ax_mp |
f = lower ((\ i, srecpaux A i) |` upto n) -> f == (\ i, srecpaux A i) |` upto n |
| 15 |
14 |
appeq1d |
f = lower ((\ i, srecpaux A i) |` upto n) -> f @ x = ((\ i, srecpaux A i) |` upto n) @ x |
| 16 |
15 |
trueeqd |
f = lower ((\ i, srecpaux A i) |` upto n) -> (true (f @ x) <-> true (((\ i, srecpaux A i) |` upto n) @ x)) |
| 17 |
16 |
abeqd |
f = lower ((\ i, srecpaux A i) |` upto n) -> {x | true (f @ x)} == {x | true (((\ i, srecpaux A i) |` upto n) @ x)} |
| 18 |
17 |
lowereqd |
f = lower ((\ i, srecpaux A i) |` upto n) -> lower {x | true (f @ x)} = lower {x | true (((\ i, srecpaux A i) |` upto n) @ x)} |
| 19 |
7, 18 |
preqd |
f = lower ((\ i, srecpaux A i) |` upto n) -> size (Dom f), lower {x | true (f @ x)} = n, lower {x | true (((\ i, srecpaux A i) |` upto n) @ x)} |
| 20 |
19 |
eleq1d |
f = lower ((\ i, srecpaux A i) |` upto n) -> (size (Dom f), lower {x | true (f @ x)} e. A <-> n, lower {x | true (((\ i, srecpaux A i) |` upto n) @ x)} e. A) |
| 21 |
20 |
nateqd |
f = lower ((\ i, srecpaux A i) |` upto n) ->
nat (size (Dom f), lower {x | true (f @ x)} e. A) = nat (n, lower {x | true (((\ i, srecpaux A i) |` upto n) @ x)} e. A) |
| 22 |
21 |
applame |
(\ f, nat (size (Dom f), lower {x | true (f @ x)} e. A)) @ lower ((\ i, srecpaux A i) |` upto n) =
nat (n, lower {x | true (((\ i, srecpaux A i) |` upto n) @ x)} e. A) |
| 23 |
5, 22 |
ax_mp |
nat (n, sep (upto n) {i | srecp A i} e. A) = nat (n, lower {x | true (((\ i, srecpaux A i) |` upto n) @ x)} e. A) ->
(\ f, nat (size (Dom f), lower {x | true (f @ x)} e. A)) @ lower ((\ i, srecpaux A i) |` upto n) = nat (n, sep (upto n) {i | srecp A i} e. A) |
| 24 |
|
nateq |
(n, sep (upto n) {i | srecp A i} e. A <-> n, lower {x | true (((\ i, srecpaux A i) |` upto n) @ x)} e. A) ->
nat (n, sep (upto n) {i | srecp A i} e. A) = nat (n, lower {x | true (((\ i, srecpaux A i) |` upto n) @ x)} e. A) |
| 25 |
|
eleq1 |
n, sep (upto n) {i | srecp A i} = n, lower {x | true (((\ i, srecpaux A i) |` upto n) @ x)} ->
(n, sep (upto n) {i | srecp A i} e. A <-> n, lower {x | true (((\ i, srecpaux A i) |` upto n) @ x)} e. A) |
| 26 |
|
preq2 |
sep (upto n) {i | srecp A i} = lower {x | true (((\ i, srecpaux A i) |` upto n) @ x)} ->
n, sep (upto n) {i | srecp A i} = n, lower {x | true (((\ i, srecpaux A i) |` upto n) @ x)} |
| 27 |
|
eqtr3 |
lower (sep (upto n) {i | srecp A i}) = sep (upto n) {i | srecp A i} ->
lower (sep (upto n) {i | srecp A i}) = lower {x | true (((\ i, srecpaux A i) |` upto n) @ x)} ->
sep (upto n) {i | srecp A i} = lower {x | true (((\ i, srecpaux A i) |` upto n) @ x)} |
| 28 |
|
lowerns |
lower (sep (upto n) {i | srecp A i}) = sep (upto n) {i | srecp A i} |
| 29 |
27, 28 |
ax_mp |
lower (sep (upto n) {i | srecp A i}) = lower {x | true (((\ i, srecpaux A i) |` upto n) @ x)} ->
sep (upto n) {i | srecp A i} = lower {x | true (((\ i, srecpaux A i) |` upto n) @ x)} |
| 30 |
|
lowereq |
sep (upto n) {i | srecp A i} == {x | true (((\ i, srecpaux A i) |` upto n) @ x)} ->
lower (sep (upto n) {i | srecp A i}) = lower {x | true (((\ i, srecpaux A i) |` upto n) @ x)} |
| 31 |
|
bitr |
(x e. sep (upto n) {i | srecp A i} <-> x e. upto n /\ x e. {i | srecp A i}) ->
(x e. upto n /\ x e. {i | srecp A i} <-> true (((\ i, srecpaux A i) |` upto n) @ x)) ->
(x e. sep (upto n) {i | srecp A i} <-> true (((\ i, srecpaux A i) |` upto n) @ x)) |
| 32 |
|
elsep |
x e. sep (upto n) {i | srecp A i} <-> x e. upto n /\ x e. {i | srecp A i} |
| 33 |
31, 32 |
ax_mp |
(x e. upto n /\ x e. {i | srecp A i} <-> true (((\ i, srecpaux A i) |` upto n) @ x)) ->
(x e. sep (upto n) {i | srecp A i} <-> true (((\ i, srecpaux A i) |` upto n) @ x)) |
| 34 |
|
anl |
x e. upto n /\ x e. {i | srecp A i} -> x e. upto n |
| 35 |
|
eleq2 |
Dom ((\ i, srecpaux A i) |` upto n) == upto n -> (x e. Dom ((\ i, srecpaux A i) |` upto n) <-> x e. upto n) |
| 36 |
|
dmreslam |
Dom ((\ i, srecpaux A i) |` upto n) == upto n |
| 37 |
35, 36 |
ax_mp |
x e. Dom ((\ i, srecpaux A i) |` upto n) <-> x e. upto n |
| 38 |
|
con1 |
(~x e. Dom ((\ i, srecpaux A i) |` upto n) -> ((\ i, srecpaux A i) |` upto n) @ x = 0) ->
~((\ i, srecpaux A i) |` upto n) @ x = 0 ->
x e. Dom ((\ i, srecpaux A i) |` upto n) |
| 39 |
38 |
conv ne, true |
(~x e. Dom ((\ i, srecpaux A i) |` upto n) -> ((\ i, srecpaux A i) |` upto n) @ x = 0) ->
true (((\ i, srecpaux A i) |` upto n) @ x) ->
x e. Dom ((\ i, srecpaux A i) |` upto n) |
| 40 |
|
ndmapp |
~x e. Dom ((\ i, srecpaux A i) |` upto n) -> ((\ i, srecpaux A i) |` upto n) @ x = 0 |
| 41 |
39, 40 |
ax_mp |
true (((\ i, srecpaux A i) |` upto n) @ x) -> x e. Dom ((\ i, srecpaux A i) |` upto n) |
| 42 |
37, 41 |
sylib |
true (((\ i, srecpaux A i) |` upto n) @ x) -> x e. upto n |
| 43 |
|
bian1 |
x e. upto n -> (x e. upto n /\ x e. {i | srecp A i} <-> x e. {i | srecp A i}) |
| 44 |
|
srecpeq2 |
i = x -> (srecp A i <-> srecp A x) |
| 45 |
44 |
elabe |
x e. {i | srecp A i} <-> srecp A x |
| 46 |
|
srecpauxeq2 |
i = x -> srecpaux A i = srecpaux A x |
| 47 |
46 |
applame |
(\ i, srecpaux A i) @ x = srecpaux A x |
| 48 |
|
resapp |
x e. upto n -> ((\ i, srecpaux A i) |` upto n) @ x = (\ i, srecpaux A i) @ x |
| 49 |
47, 48 |
syl6eq |
x e. upto n -> ((\ i, srecpaux A i) |` upto n) @ x = srecpaux A x |
| 50 |
49 |
trueeqd |
x e. upto n -> (true (((\ i, srecpaux A i) |` upto n) @ x) <-> true (srecpaux A x)) |
| 51 |
50 |
conv srecp |
x e. upto n -> (true (((\ i, srecpaux A i) |` upto n) @ x) <-> srecp A x) |
| 52 |
45, 51 |
syl6bbr |
x e. upto n -> (true (((\ i, srecpaux A i) |` upto n) @ x) <-> x e. {i | srecp A i}) |
| 53 |
43, 52 |
bitr4d |
x e. upto n -> (x e. upto n /\ x e. {i | srecp A i} <-> true (((\ i, srecpaux A i) |` upto n) @ x)) |
| 54 |
34, 42, 53 |
rbid |
x e. upto n /\ x e. {i | srecp A i} <-> true (((\ i, srecpaux A i) |` upto n) @ x) |
| 55 |
33, 54 |
ax_mp |
x e. sep (upto n) {i | srecp A i} <-> true (((\ i, srecpaux A i) |` upto n) @ x) |
| 56 |
55 |
eqab2i |
sep (upto n) {i | srecp A i} == {x | true (((\ i, srecpaux A i) |` upto n) @ x)} |
| 57 |
30, 56 |
ax_mp |
lower (sep (upto n) {i | srecp A i}) = lower {x | true (((\ i, srecpaux A i) |` upto n) @ x)} |
| 58 |
29, 57 |
ax_mp |
sep (upto n) {i | srecp A i} = lower {x | true (((\ i, srecpaux A i) |` upto n) @ x)} |
| 59 |
26, 58 |
ax_mp |
n, sep (upto n) {i | srecp A i} = n, lower {x | true (((\ i, srecpaux A i) |` upto n) @ x)} |
| 60 |
25, 59 |
ax_mp |
n, sep (upto n) {i | srecp A i} e. A <-> n, lower {x | true (((\ i, srecpaux A i) |` upto n) @ x)} e. A |
| 61 |
24, 60 |
ax_mp |
nat (n, sep (upto n) {i | srecp A i} e. A) = nat (n, lower {x | true (((\ i, srecpaux A i) |` upto n) @ x)} e. A) |
| 62 |
23, 61 |
ax_mp |
(\ f, nat (size (Dom f), lower {x | true (f @ x)} e. A)) @ lower ((\ i, srecpaux A i) |` upto n) = nat (n, sep (upto n) {i | srecp A i} e. A) |
| 63 |
4, 62 |
ax_mp |
srecpaux A n = nat (n, sep (upto n) {i | srecp A i} e. A) |