defpred S1[ set ] means ( ( for a being set st a in $1 holds
a is FinSequence of NAT ) & ( for n being Nat holds atom. n in $1 ) & ( for p being FinSequence of NAT st p in $1 holds
'not' p in $1 ) & ( for p, q being FinSequence of NAT st p in $1 & q in $1 holds
p '&' q in $1 ) & ( for p, q being FinSequence of NAT st p in $1 & q in $1 holds
p 'or' q in $1 ) & ( for p being FinSequence of NAT st p in $1 holds
'X' p in $1 ) & ( for p, q being FinSequence of NAT st p in $1 & q in $1 holds
p 'U' q in $1 ) & ( for p, q being FinSequence of NAT st p in $1 & q in $1 holds
p 'R' q in $1 ) );
defpred S2[ object ] means for D being non empty set st S1[D] holds
$1 in D;
consider Y being set such that
A1: for a being object holds
( a in Y iff ( a in NAT * & S2[a] ) ) from XBOOLE_0:sch 1();
now :: thesis: ex b being FinSequence of NAT st b in Y
set a = atom. 0;
take b = atom. 0; :: thesis: b in Y
( atom. 0 in NAT * & ( for D being non empty set st S1[D] holds
atom. 0 in D ) ) by FINSEQ_1:def 11;
hence b in Y by A1; :: thesis: verum
end;
then reconsider Y = Y as non empty set ;
take Y ; :: thesis: ( ( for a being set st a in Y holds
a is FinSequence of NAT ) & ( for n being Nat holds atom. n in Y ) & ( for p being FinSequence of NAT st p in Y holds
'not' p in Y ) & ( for p, q being FinSequence of NAT st p in Y & q in Y holds
p '&' q in Y ) & ( for p, q being FinSequence of NAT st p in Y & q in Y holds
p 'or' q in Y ) & ( for p being FinSequence of NAT st p in Y holds
'X' p in Y ) & ( for p, q being FinSequence of NAT st p in Y & q in Y holds
p 'U' q in Y ) & ( for p, q being FinSequence of NAT st p in Y & q in Y holds
p 'R' q in Y ) & ( for D being non empty set st ( for a being set st a in D holds
a is FinSequence of NAT ) & ( for n being Nat holds atom. n in D ) & ( for p being FinSequence of NAT st p in D holds
'not' p in D ) & ( for p, q being FinSequence of NAT st p in D & q in D holds
p '&' q in D ) & ( for p, q being FinSequence of NAT st p in D & q in D holds
p 'or' q in D ) & ( for p being FinSequence of NAT st p in D holds
'X' p in D ) & ( for p, q being FinSequence of NAT st p in D & q in D holds
p 'U' q in D ) & ( for p, q being FinSequence of NAT st p in D & q in D holds
p 'R' q in D ) holds
Y c= D ) )

thus for a being set st a in Y holds
a is FinSequence of NAT :: thesis: ( ( for n being Nat holds atom. n in Y ) & ( for p being FinSequence of NAT st p in Y holds
'not' p in Y ) & ( for p, q being FinSequence of NAT st p in Y & q in Y holds
p '&' q in Y ) & ( for p, q being FinSequence of NAT st p in Y & q in Y holds
p 'or' q in Y ) & ( for p being FinSequence of NAT st p in Y holds
'X' p in Y ) & ( for p, q being FinSequence of NAT st p in Y & q in Y holds
p 'U' q in Y ) & ( for p, q being FinSequence of NAT st p in Y & q in Y holds
p 'R' q in Y ) & ( for D being non empty set st ( for a being set st a in D holds
a is FinSequence of NAT ) & ( for n being Nat holds atom. n in D ) & ( for p being FinSequence of NAT st p in D holds
'not' p in D ) & ( for p, q being FinSequence of NAT st p in D & q in D holds
p '&' q in D ) & ( for p, q being FinSequence of NAT st p in D & q in D holds
p 'or' q in D ) & ( for p being FinSequence of NAT st p in D holds
'X' p in D ) & ( for p, q being FinSequence of NAT st p in D & q in D holds
p 'U' q in D ) & ( for p, q being FinSequence of NAT st p in D & q in D holds
p 'R' q in D ) holds
Y c= D ) )
proof
let a be set ; :: thesis: ( a in Y implies a is FinSequence of NAT )
assume a in Y ; :: thesis: a is FinSequence of NAT
then a in NAT * by A1;
hence a is FinSequence of NAT by FINSEQ_1:def 11; :: thesis: verum
end;
thus for n being Nat holds atom. n in Y :: thesis: ( ( for p being FinSequence of NAT st p in Y holds
'not' p in Y ) & ( for p, q being FinSequence of NAT st p in Y & q in Y holds
p '&' q in Y ) & ( for p, q being FinSequence of NAT st p in Y & q in Y holds
p 'or' q in Y ) & ( for p being FinSequence of NAT st p in Y holds
'X' p in Y ) & ( for p, q being FinSequence of NAT st p in Y & q in Y holds
p 'U' q in Y ) & ( for p, q being FinSequence of NAT st p in Y & q in Y holds
p 'R' q in Y ) & ( for D being non empty set st ( for a being set st a in D holds
a is FinSequence of NAT ) & ( for n being Nat holds atom. n in D ) & ( for p being FinSequence of NAT st p in D holds
'not' p in D ) & ( for p, q being FinSequence of NAT st p in D & q in D holds
p '&' q in D ) & ( for p, q being FinSequence of NAT st p in D & q in D holds
p 'or' q in D ) & ( for p being FinSequence of NAT st p in D holds
'X' p in D ) & ( for p, q being FinSequence of NAT st p in D & q in D holds
p 'U' q in D ) & ( for p, q being FinSequence of NAT st p in D & q in D holds
p 'R' q in D ) holds
Y c= D ) )
proof
let n be Nat; :: thesis: atom. n in Y
( atom. n in NAT * & ( for D being non empty set st S1[D] holds
atom. n in D ) ) by FINSEQ_1:def 11;
hence atom. n in Y by A1; :: thesis: verum
end;
thus for p being FinSequence of NAT st p in Y holds
'not' p in Y :: thesis: ( ( for p, q being FinSequence of NAT st p in Y & q in Y holds
p '&' q in Y ) & ( for p, q being FinSequence of NAT st p in Y & q in Y holds
p 'or' q in Y ) & ( for p being FinSequence of NAT st p in Y holds
'X' p in Y ) & ( for p, q being FinSequence of NAT st p in Y & q in Y holds
p 'U' q in Y ) & ( for p, q being FinSequence of NAT st p in Y & q in Y holds
p 'R' q in Y ) & ( for D being non empty set st ( for a being set st a in D holds
a is FinSequence of NAT ) & ( for n being Nat holds atom. n in D ) & ( for p being FinSequence of NAT st p in D holds
'not' p in D ) & ( for p, q being FinSequence of NAT st p in D & q in D holds
p '&' q in D ) & ( for p, q being FinSequence of NAT st p in D & q in D holds
p 'or' q in D ) & ( for p being FinSequence of NAT st p in D holds
'X' p in D ) & ( for p, q being FinSequence of NAT st p in D & q in D holds
p 'U' q in D ) & ( for p, q being FinSequence of NAT st p in D & q in D holds
p 'R' q in D ) holds
Y c= D ) )
proof
let p be FinSequence of NAT ; :: thesis: ( p in Y implies 'not' p in Y )
assume A2: p in Y ; :: thesis: 'not' p in Y
A3: for D being non empty set st S1[D] holds
'not' p in D
proof
let D be non empty set ; :: thesis: ( S1[D] implies 'not' p in D )
assume A4: S1[D] ; :: thesis: 'not' p in D
then p in D by A1, A2;
hence 'not' p in D by A4; :: thesis: verum
end;
'not' p in NAT * by FINSEQ_1:def 11;
hence 'not' p in Y by A1, A3; :: thesis: verum
end;
thus for q, p being FinSequence of NAT st q in Y & p in Y holds
q '&' p in Y :: thesis: ( ( for p, q being FinSequence of NAT st p in Y & q in Y holds
p 'or' q in Y ) & ( for p being FinSequence of NAT st p in Y holds
'X' p in Y ) & ( for p, q being FinSequence of NAT st p in Y & q in Y holds
p 'U' q in Y ) & ( for p, q being FinSequence of NAT st p in Y & q in Y holds
p 'R' q in Y ) & ( for D being non empty set st ( for a being set st a in D holds
a is FinSequence of NAT ) & ( for n being Nat holds atom. n in D ) & ( for p being FinSequence of NAT st p in D holds
'not' p in D ) & ( for p, q being FinSequence of NAT st p in D & q in D holds
p '&' q in D ) & ( for p, q being FinSequence of NAT st p in D & q in D holds
p 'or' q in D ) & ( for p being FinSequence of NAT st p in D holds
'X' p in D ) & ( for p, q being FinSequence of NAT st p in D & q in D holds
p 'U' q in D ) & ( for p, q being FinSequence of NAT st p in D & q in D holds
p 'R' q in D ) holds
Y c= D ) )
proof
let q, p be FinSequence of NAT ; :: thesis: ( q in Y & p in Y implies q '&' p in Y )
assume A5: ( q in Y & p in Y ) ; :: thesis: q '&' p in Y
A6: for D being non empty set st S1[D] holds
q '&' p in D
proof
let D be non empty set ; :: thesis: ( S1[D] implies q '&' p in D )
assume A7: S1[D] ; :: thesis: q '&' p in D
then ( p in D & q in D ) by A1, A5;
hence q '&' p in D by A7; :: thesis: verum
end;
q '&' p in NAT * by FINSEQ_1:def 11;
hence q '&' p in Y by A1, A6; :: thesis: verum
end;
thus for q, p being FinSequence of NAT st q in Y & p in Y holds
q 'or' p in Y :: thesis: ( ( for p being FinSequence of NAT st p in Y holds
'X' p in Y ) & ( for p, q being FinSequence of NAT st p in Y & q in Y holds
p 'U' q in Y ) & ( for p, q being FinSequence of NAT st p in Y & q in Y holds
p 'R' q in Y ) & ( for D being non empty set st ( for a being set st a in D holds
a is FinSequence of NAT ) & ( for n being Nat holds atom. n in D ) & ( for p being FinSequence of NAT st p in D holds
'not' p in D ) & ( for p, q being FinSequence of NAT st p in D & q in D holds
p '&' q in D ) & ( for p, q being FinSequence of NAT st p in D & q in D holds
p 'or' q in D ) & ( for p being FinSequence of NAT st p in D holds
'X' p in D ) & ( for p, q being FinSequence of NAT st p in D & q in D holds
p 'U' q in D ) & ( for p, q being FinSequence of NAT st p in D & q in D holds
p 'R' q in D ) holds
Y c= D ) )
proof
let q, p be FinSequence of NAT ; :: thesis: ( q in Y & p in Y implies q 'or' p in Y )
assume A8: ( q in Y & p in Y ) ; :: thesis: q 'or' p in Y
A9: for D being non empty set st S1[D] holds
q 'or' p in D
proof
let D be non empty set ; :: thesis: ( S1[D] implies q 'or' p in D )
assume A10: S1[D] ; :: thesis: q 'or' p in D
then ( p in D & q in D ) by A1, A8;
hence q 'or' p in D by A10; :: thesis: verum
end;
q 'or' p in NAT * by FINSEQ_1:def 11;
hence q 'or' p in Y by A1, A9; :: thesis: verum
end;
thus for p being FinSequence of NAT st p in Y holds
'X' p in Y :: thesis: ( ( for p, q being FinSequence of NAT st p in Y & q in Y holds
p 'U' q in Y ) & ( for p, q being FinSequence of NAT st p in Y & q in Y holds
p 'R' q in Y ) & ( for D being non empty set st ( for a being set st a in D holds
a is FinSequence of NAT ) & ( for n being Nat holds atom. n in D ) & ( for p being FinSequence of NAT st p in D holds
'not' p in D ) & ( for p, q being FinSequence of NAT st p in D & q in D holds
p '&' q in D ) & ( for p, q being FinSequence of NAT st p in D & q in D holds
p 'or' q in D ) & ( for p being FinSequence of NAT st p in D holds
'X' p in D ) & ( for p, q being FinSequence of NAT st p in D & q in D holds
p 'U' q in D ) & ( for p, q being FinSequence of NAT st p in D & q in D holds
p 'R' q in D ) holds
Y c= D ) )
proof
let p be FinSequence of NAT ; :: thesis: ( p in Y implies 'X' p in Y )
assume A11: p in Y ; :: thesis: 'X' p in Y
A12: for D being non empty set st S1[D] holds
'X' p in D
proof
let D be non empty set ; :: thesis: ( S1[D] implies 'X' p in D )
assume A13: S1[D] ; :: thesis: 'X' p in D
then p in D by A1, A11;
hence 'X' p in D by A13; :: thesis: verum
end;
'X' p in NAT * by FINSEQ_1:def 11;
hence 'X' p in Y by A1, A12; :: thesis: verum
end;
thus for q, p being FinSequence of NAT st q in Y & p in Y holds
q 'U' p in Y :: thesis: ( ( for p, q being FinSequence of NAT st p in Y & q in Y holds
p 'R' q in Y ) & ( for D being non empty set st ( for a being set st a in D holds
a is FinSequence of NAT ) & ( for n being Nat holds atom. n in D ) & ( for p being FinSequence of NAT st p in D holds
'not' p in D ) & ( for p, q being FinSequence of NAT st p in D & q in D holds
p '&' q in D ) & ( for p, q being FinSequence of NAT st p in D & q in D holds
p 'or' q in D ) & ( for p being FinSequence of NAT st p in D holds
'X' p in D ) & ( for p, q being FinSequence of NAT st p in D & q in D holds
p 'U' q in D ) & ( for p, q being FinSequence of NAT st p in D & q in D holds
p 'R' q in D ) holds
Y c= D ) )
proof
let q, p be FinSequence of NAT ; :: thesis: ( q in Y & p in Y implies q 'U' p in Y )
assume A14: ( q in Y & p in Y ) ; :: thesis: q 'U' p in Y
A15: for D being non empty set st S1[D] holds
q 'U' p in D
proof
let D be non empty set ; :: thesis: ( S1[D] implies q 'U' p in D )
assume A16: S1[D] ; :: thesis: q 'U' p in D
then ( p in D & q in D ) by A1, A14;
hence q 'U' p in D by A16; :: thesis: verum
end;
q 'U' p in NAT * by FINSEQ_1:def 11;
hence q 'U' p in Y by A1, A15; :: thesis: verum
end;
thus for q, p being FinSequence of NAT st q in Y & p in Y holds
q 'R' p in Y :: thesis: for D being non empty set st ( for a being set st a in D holds
a is FinSequence of NAT ) & ( for n being Nat holds atom. n in D ) & ( for p being FinSequence of NAT st p in D holds
'not' p in D ) & ( for p, q being FinSequence of NAT st p in D & q in D holds
p '&' q in D ) & ( for p, q being FinSequence of NAT st p in D & q in D holds
p 'or' q in D ) & ( for p being FinSequence of NAT st p in D holds
'X' p in D ) & ( for p, q being FinSequence of NAT st p in D & q in D holds
p 'U' q in D ) & ( for p, q being FinSequence of NAT st p in D & q in D holds
p 'R' q in D ) holds
Y c= D
proof
let q, p be FinSequence of NAT ; :: thesis: ( q in Y & p in Y implies q 'R' p in Y )
assume A17: ( q in Y & p in Y ) ; :: thesis: q 'R' p in Y
A18: for D being non empty set st S1[D] holds
q 'R' p in D
proof
let D be non empty set ; :: thesis: ( S1[D] implies q 'R' p in D )
assume A19: S1[D] ; :: thesis: q 'R' p in D
then ( p in D & q in D ) by A1, A17;
hence q 'R' p in D by A19; :: thesis: verum
end;
q 'R' p in NAT * by FINSEQ_1:def 11;
hence q 'R' p in Y by A1, A18; :: thesis: verum
end;
let D be non empty set ; :: thesis: ( ( for a being set st a in D holds
a is FinSequence of NAT ) & ( for n being Nat holds atom. n in D ) & ( for p being FinSequence of NAT st p in D holds
'not' p in D ) & ( for p, q being FinSequence of NAT st p in D & q in D holds
p '&' q in D ) & ( for p, q being FinSequence of NAT st p in D & q in D holds
p 'or' q in D ) & ( for p being FinSequence of NAT st p in D holds
'X' p in D ) & ( for p, q being FinSequence of NAT st p in D & q in D holds
p 'U' q in D ) & ( for p, q being FinSequence of NAT st p in D & q in D holds
p 'R' q in D ) implies Y c= D )

assume A20: S1[D] ; :: thesis: Y c= D
let a be object ; :: according to TARSKI:def 3 :: thesis: ( not a in Y or a in D )
assume a in Y ; :: thesis: a in D
hence a in D by A1, A20; :: thesis: verum