deffunc H1( object ) -> Element of NAT = 0 ;
let p, q be bag of SetPrimes ; ( support p c= support q & p | (support p) = q | (support p) implies ex r being bag of SetPrimes st
( support r = (support q) \ (support p) & support p misses support r & r | (support r) = q | (support r) & p + r = q ) )
assume that
A1:
support p c= support q
and
A2:
p | (support p) = q | (support p)
; ex r being bag of SetPrimes st
( support r = (support q) \ (support p) & support p misses support r & r | (support r) = q | (support r) & p + r = q )
deffunc H2( object ) -> set = q . $1;
defpred S1[ object ] means $1 in (support q) \ (support p);
A3:
for x being object st x in SetPrimes holds
( ( S1[x] implies H2(x) in NAT ) & ( not S1[x] implies H1(x) in NAT ) )
by ORDINAL1:def 12;
consider f being Function of SetPrimes,NAT such that
A4:
for x being object st x in SetPrimes holds
( ( S1[x] implies f . x = H2(x) ) & ( not S1[x] implies f . x = H1(x) ) )
from FUNCT_2:sch 5(A3);
A5:
for x being set st x in SetPrimes & x in (support q) \ (support p) holds
f . x <> 0
A7:
for x being object st not x in SetPrimes holds
f . x = 0
A8:
for x being object holds
( x in (support q) \ (support p) iff f . x <> 0 )
then
support f is finite
by PRE_POLY:def 7;
then reconsider r = f as bag of SetPrimes by PRE_POLY:def 8;
A9: (support p) \/ (support r) =
(support p) \/ ((support q) \ (support p))
by A8, PRE_POLY:def 7
.=
(support p) \/ (support q)
by XBOOLE_1:39
.=
support q
by A1, XBOOLE_1:12
;
A10: dom (f | (support f)) =
(dom f) /\ (support f)
by RELAT_1:61
.=
support f
by PRE_POLY:37, XBOOLE_1:28
;
A11:
support f = (support q) \ (support p)
by A8, PRE_POLY:def 7;
A12:
for x being object st x in dom (f | (support f)) holds
(f | (support f)) . x = (q | (support f)) . x
dom (q | (support f)) =
(dom q) /\ (support f)
by RELAT_1:61
.=
(dom q) /\ ((support q) \ (support p))
by A8, PRE_POLY:def 7
.=
((dom q) /\ (support q)) \ (support p)
by XBOOLE_1:49
.=
(support q) \ (support p)
by PRE_POLY:37, XBOOLE_1:28
.=
support f
by A8, PRE_POLY:def 7
;
then A15:
f | (support f) = q | (support f)
by A10, A12, FUNCT_1:def 11;
A16:
support p misses support f
then
(support p) /\ (support f) = {}
by XBOOLE_0:def 7;
then
p + r = q
by A2, A15, A9, Th2;
hence
ex r being bag of SetPrimes st
( support r = (support q) \ (support p) & support p misses support r & r | (support r) = q | (support r) & p + r = q )
by A11, A16, A15; verum