defpred S1[ Element of NAT , FinSequence of bool (bool F1()), set ] means $3 = $2 ^ <*{ (union { F3(c,$1) where c is Element of F1() : for fq being Subset-Family of F1()
for q being Element of NAT st q <= $1 & fq = $2 /. (q + 1) holds
P2[c,V,$1,fq]
}
)
where V is Subset of F1() : P1[V]
}
*>
;
A1: for n being Element of NAT
for x being Element of (bool (bool F1())) * ex y being Element of (bool (bool F1())) * st S1[n,x,y]
proof
let n be Element of NAT ; :: thesis: for x being Element of (bool (bool F1())) * ex y being Element of (bool (bool F1())) * st S1[n,x,y]
let x be Element of (bool (bool F1())) * ; :: thesis: ex y being Element of (bool (bool F1())) * st S1[n,x,y]
set T = { (union { F3(c,n) where c is Element of F1() : for fq being Subset-Family of F1()
for q being Element of NAT st q <= n & fq = x /. (q + 1) holds
P2[c,V,n,fq]
}
)
where V is Subset of F1() : P1[V]
}
;
{ (union { F3(c,n) where c is Element of F1() : for fq being Subset-Family of F1()
for q being Element of NAT st q <= n & fq = x /. (q + 1) holds
P2[c,V,n,fq]
}
) where V is Subset of F1() : P1[V] } in bool (bool F1())
proof
now
let X be set ; :: thesis: ( X in { (union { F3(c,n) where c is Element of F1() : for fq being Subset-Family of F1()
for q being Element of NAT st q <= n & fq = x /. (q + 1) holds
P2[c,V,n,fq]
}
)
where V is Subset of F1() : P1[V]
}
implies X in bool F1() )

assume X in { (union { F3(c,n) where c is Element of F1() : for fq being Subset-Family of F1()
for q being Element of NAT st q <= n & fq = x /. (q + 1) holds
P2[c,V,n,fq]
}
)
where V is Subset of F1() : P1[V]
}
; :: thesis: X in bool F1()
then consider V being Subset of F1() such that
A2: X = union { F3(c,n) where c is Element of F1() : for fq being Subset-Family of F1()
for q being Element of NAT st q <= n & fq = x /. (q + 1) holds
P2[c,V,n,fq]
}
and
P1[V] ;
now
let a be set ; :: thesis: ( a in X implies a in F1() )
assume a in X ; :: thesis: a in F1()
then consider P being set such that
A3: a in P and
A4: P in { F3(c,n) where c is Element of F1() : for fq being Subset-Family of F1()
for q being Element of NAT st q <= n & fq = x /. (q + 1) holds
P2[c,V,n,fq]
}
by A2, TARSKI:def 4;
consider c being Element of F1() such that
A5: P = F3(c,n) and
for fq being Subset-Family of F1()
for q being Element of NAT st q <= n & fq = x /. (q + 1) holds
P2[c,V,n,fq] by A4;
thus a in F1() by A3, A5; :: thesis: verum
end;
then X c= F1() by TARSKI:def 3;
hence X in bool F1() ; :: thesis: verum
end;
then { (union { F3(c,n) where c is Element of F1() : for fq being Subset-Family of F1()
for q being Element of NAT st q <= n & fq = x /. (q + 1) holds
P2[c,V,n,fq]
}
) where V is Subset of F1() : P1[V] } c= bool F1() by TARSKI:def 3;
hence { (union { F3(c,n) where c is Element of F1() : for fq being Subset-Family of F1()
for q being Element of NAT st q <= n & fq = x /. (q + 1) holds
P2[c,V,n,fq]
}
) where V is Subset of F1() : P1[V] } in bool (bool F1()) ; :: thesis: verum
end;
then reconsider T = { (union { F3(c,n) where c is Element of F1() : for fq being Subset-Family of F1()
for q being Element of NAT st q <= n & fq = x /. (q + 1) holds
P2[c,V,n,fq]
}
)
where V is Subset of F1() : P1[V]
}
as Subset-Family of F1() ;
reconsider T1 = <*T*> as FinSequence of bool (bool F1()) ;
consider y being FinSequence of bool (bool F1()) such that
A6: y = x ^ T1 ;
reconsider y = y as Element of (bool (bool F1())) * by FINSEQ_1:def 11;
take y ; :: thesis: S1[n,x,y]
thus S1[n,x,y] by A6; :: thesis: verum
end;
reconsider A = <*F2()*> as Element of (bool (bool F1())) * by FINSEQ_1:def 11;
consider g being Function of NAT ,((bool (bool F1())) * ) such that
A7: g . 0 = A and
A8: for n being Element of NAT holds S1[n,g . n,g . (n + 1)] from RECDEF_1:sch 2(A1);
deffunc H1( Element of NAT ) -> Element of bool (bool F1()) = (g . $1) /. (len (g . $1));
consider f being Function of NAT ,(bool (bool F1())) such that
A9: for n being Element of NAT holds f . n = H1(n) from FUNCT_2:sch 4();
take f ; :: thesis: ( f . 0 = F2() & ( for n being Element of NAT holds f . (n + 1) = { (union { F3(c,n) where c is Element of F1() : for fq being Subset-Family of F1()
for q being Element of NAT st q <= n & fq = f . q holds
P2[c,V,n,fq]
}
)
where V is Subset of F1() : P1[V]
}
) )

len <*F2()*> = 1 by FINSEQ_1:56;
hence f . 0 = <*F2()*> /. 1 by A7, A9
.= F2() by FINSEQ_4:25 ;
:: thesis: for n being Element of NAT holds f . (n + 1) = { (union { F3(c,n) where c is Element of F1() : for fq being Subset-Family of F1()
for q being Element of NAT st q <= n & fq = f . q holds
P2[c,V,n,fq]
}
)
where V is Subset of F1() : P1[V]
}

defpred S2[ Element of NAT ] means len (g . $1) = $1 + 1;
A10: S2[ 0 ] by A7, FINSEQ_1:56;
A11: for k being Element of NAT st S2[k] holds
S2[k + 1]
proof
let k be Element of NAT ; :: thesis: ( S2[k] implies S2[k + 1] )
assume A12: len (g . k) = k + 1 ; :: thesis: S2[k + 1]
len (g . (k + 1)) = len ((g . k) ^ <*{ (union { F3(c,k) where c is Element of F1() : for fq being Subset-Family of F1()
for q being Element of NAT st q <= k & fq = (g . k) /. (q + 1) holds
P2[c,V,k,fq]
}
)
where V is Subset of F1() : P1[V]
}
*>
)
by A8
.= (len (g . k)) + 1 by FINSEQ_2:19 ;
hence S2[k + 1] by A12; :: thesis: verum
end;
A13: for n being Element of NAT holds S2[n] from NAT_1:sch 1(A10, A11);
defpred S3[ Element of NAT ] means for q being Element of NAT st q <= $1 holds
f . q = (g . $1) /. (q + 1);
A14: S3[ 0 ]
proof
let q be Element of NAT ; :: thesis: ( q <= 0 implies f . q = (g . 0 ) /. (q + 1) )
assume q <= 0 ; :: thesis: f . q = (g . 0 ) /. (q + 1)
then A15: q = 0 ;
thus f . q = (g . q) /. (len (g . q)) by A9
.= (g . 0 ) /. (q + 1) by A7, A15, FINSEQ_1:56 ; :: thesis: verum
end;
A16: for k being Element of NAT st S3[k] holds
S3[k + 1]
proof
let k be Element of NAT ; :: thesis: ( S3[k] implies S3[k + 1] )
assume A17: for q being Element of NAT st q <= k holds
f . q = (g . k) /. (q + 1) ; :: thesis: S3[k + 1]
let q be Element of NAT ; :: thesis: ( q <= k + 1 implies f . q = (g . (k + 1)) /. (q + 1) )
assume A18: q <= k + 1 ; :: thesis: f . q = (g . (k + 1)) /. (q + 1)
now
per cases ( q = k + 1 or q < k + 1 ) by A18, XXREAL_0:1;
suppose A19: q = k + 1 ; :: thesis: f . q = (g . (k + 1)) /. (q + 1)
thus f . q = (g . q) /. (len (g . q)) by A9
.= (g . (k + 1)) /. (q + 1) by A13, A19 ; :: thesis: verum
end;
suppose A20: q < k + 1 ; :: thesis: (g . (k + 1)) /. (q + 1) = f . q
then A21: q + 1 <= k + 1 by NAT_1:13;
A22: q <= k by A20, NAT_1:13;
q + 1 >= 1 by NAT_1:11;
then A23: q + 1 in Seg (k + 1) by A21, FINSEQ_1:3;
(k + 1) + 1 >= k + 1 by NAT_1:11;
then Seg (k + 1) c= Seg ((k + 1) + 1) by FINSEQ_1:7;
then q + 1 in Seg ((k + 1) + 1) by A23;
then q + 1 in Seg (len (g . (k + 1))) by A13;
then A24: q + 1 in dom (g . (k + 1)) by FINSEQ_1:def 3;
q + 1 in Seg (len (g . k)) by A13, A23;
then A25: q + 1 in dom (g . k) by FINSEQ_1:def 3;
thus (g . (k + 1)) /. (q + 1) = (g . (k + 1)) . (q + 1) by A24, PARTFUN1:def 8
.= ((g . k) ^ <*{ (union { F3(c,k) where c is Element of F1() : for fq being Subset-Family of F1()
for q being Element of NAT st q <= k & fq = (g . k) /. (q + 1) holds
P2[c,V,k,fq]
}
)
where V is Subset of F1() : P1[V]
}
*>
)
. (q + 1) by A8
.= (g . k) . (q + 1) by A25, FINSEQ_1:def 7
.= (g . k) /. (q + 1) by A25, PARTFUN1:def 8
.= f . q by A17, A22 ; :: thesis: verum
end;
end;
end;
hence f . q = (g . (k + 1)) /. (q + 1) ; :: thesis: verum
end;
A26: for n being Element of NAT holds S3[n] from NAT_1:sch 1(A14, A16);
let n be Element of NAT ; :: thesis: f . (n + 1) = { (union { F3(c,n) where c is Element of F1() : for fq being Subset-Family of F1()
for q being Element of NAT st q <= n & fq = f . q holds
P2[c,V,n,fq]
}
)
where V is Subset of F1() : P1[V]
}

deffunc H2( set ) -> set = union { F3(c,n) where c is Element of F1() : for fq being Subset-Family of F1()
for q being Element of NAT st q <= n & fq = f . q holds
P2[c,$1,n,fq]
}
;
deffunc H3( set ) -> set = union { F3(c,n) where c is Element of F1() : for fq being Subset-Family of F1()
for q being Element of NAT st q <= n & fq = (g . n) /. (q + 1) holds
P2[c,$1,n,fq]
}
;
set NF = { H2(V) where V is Subset of F1() : P1[V] } ;
A27: for V being Subset of F1() st P1[V] holds
H2(V) = H3(V)
proof
let V be Subset of F1(); :: thesis: ( P1[V] implies H2(V) = H3(V) )
assume P1[V] ; :: thesis: H2(V) = H3(V)
deffunc H4( set ) -> Subset of F1() = F3($1,n);
defpred S4[ set ] means for fq being Subset-Family of F1()
for q being Element of NAT st q <= n & fq = f . q holds
P2[$1,V,n,fq];
defpred S5[ set ] means for fq being Subset-Family of F1()
for q being Element of NAT st q <= n & fq = (g . n) /. (q + 1) holds
P2[$1,V,n,fq];
A28: for c being Element of F1() holds
( S4[c] iff S5[c] )
proof
let c be Element of F1(); :: thesis: ( S4[c] iff S5[c] )
thus ( ( for fq being Subset-Family of F1()
for q being Element of NAT st q <= n & fq = f . q holds
P2[c,V,n,fq] ) implies for fq being Subset-Family of F1()
for q being Element of NAT st q <= n & fq = (g . n) /. (q + 1) holds
P2[c,V,n,fq] ) :: thesis: ( S5[c] implies S4[c] )
proof
assume A29: for fq being Subset-Family of F1()
for q being Element of NAT st q <= n & fq = f . q holds
P2[c,V,n,fq] ; :: thesis: for fq being Subset-Family of F1()
for q being Element of NAT st q <= n & fq = (g . n) /. (q + 1) holds
P2[c,V,n,fq]

let fq be Subset-Family of F1(); :: thesis: for q being Element of NAT st q <= n & fq = (g . n) /. (q + 1) holds
P2[c,V,n,fq]

let q be Element of NAT ; :: thesis: ( q <= n & fq = (g . n) /. (q + 1) implies P2[c,V,n,fq] )
assume A30: ( q <= n & fq = (g . n) /. (q + 1) ) ; :: thesis: P2[c,V,n,fq]
then fq = f . q by A26;
hence P2[c,V,n,fq] by A29, A30; :: thesis: verum
end;
assume A31: for fq being Subset-Family of F1()
for q being Element of NAT st q <= n & fq = (g . n) /. (q + 1) holds
P2[c,V,n,fq] ; :: thesis: S4[c]
let fq be Subset-Family of F1(); :: thesis: for q being Element of NAT st q <= n & fq = f . q holds
P2[c,V,n,fq]

let q be Element of NAT ; :: thesis: ( q <= n & fq = f . q implies P2[c,V,n,fq] )
assume A32: ( q <= n & fq = f . q ) ; :: thesis: P2[c,V,n,fq]
then f . q = (g . n) /. (q + 1) by A26;
hence P2[c,V,n,fq] by A31, A32; :: thesis: verum
end;
{ H4(c) where c is Element of F1() : S4[c] } = { H4(c) where c is Element of F1() : S5[c] } from FRAENKEL:sch 3(A28);
hence H2(V) = H3(V) ; :: thesis: verum
end;
A33: { H2(V) where V is Subset of F1() : P1[V] } = { H3(V) where V is Subset of F1() : P1[V] } from FRAENKEL:sch 6(A27);
then A34: len (g . (n + 1)) = len ((g . n) ^ <*{ H2(V) where V is Subset of F1() : P1[V] } *>) by A8
.= (len (g . n)) + 1 by FINSEQ_2:19 ;
A35: (len (g . n)) + 1 in dom (g . (n + 1))
proof
len (g . (n + 1)) = (n + 1) + 1 by A13;
then A36: dom (g . (n + 1)) = Seg ((n + 1) + 1) by FINSEQ_1:def 3;
(len (g . n)) + 1 = (n + 1) + 1 by A13;
hence (len (g . n)) + 1 in dom (g . (n + 1)) by A36, FINSEQ_1:6; :: thesis: verum
end;
thus f . (n + 1) = (g . (n + 1)) /. ((len (g . n)) + 1) by A9, A34
.= (g . (n + 1)) . ((len (g . n)) + 1) by A35, PARTFUN1:def 8
.= ((g . n) ^ <*{ H2(V) where V is Subset of F1() : P1[V] } *>) . ((len (g . n)) + 1) by A8, A33
.= { H2(V) where V is Subset of F1() : P1[V] } by FINSEQ_1:59 ; :: thesis: verum