let x, y be Element of REAL+ ; :: thesis: ( x in RAT+ & y in RAT+ implies ex x', y' being Element of RAT+ st
( x = x' & y = y' & x *' y = x' *' y' ) )

assume that
A1: x in RAT+ and
A2: y in RAT+ ; :: thesis: ex x', y' being Element of RAT+ st
( x = x' & y = y' & x *' y = x' *' y' )

per cases ( x = {} or y = {} or ( y <> {} & x <> {} ) ) ;
suppose A3: x = {} ; :: thesis: ex x', y' being Element of RAT+ st
( x = x' & y = y' & x *' y = x' *' y' )

reconsider y' = y as Element of RAT+ by A2;
take {} ; :: thesis: ex y' being Element of RAT+ st
( x = {} & y = y' & x *' y = {} *' y' )

take y' ; :: thesis: ( x = {} & y = y' & x *' y = {} *' y' )
thus x = {} by A3; :: thesis: ( y = y' & x *' y = {} *' y' )
thus y = y' ; :: thesis: x *' y = {} *' y'
thus x *' y = {} by A3, Th4
.= {} *' y' by ARYTM_3:54 ; :: thesis: verum
end;
suppose A4: y = {} ; :: thesis: ex x', y' being Element of RAT+ st
( x = x' & y = y' & x *' y = x' *' y' )

reconsider x' = x as Element of RAT+ by A1;
take x' ; :: thesis: ex y' being Element of RAT+ st
( x = x' & y = y' & x *' y = x' *' y' )

take {} ; :: thesis: ( x = x' & y = {} & x *' y = x' *' {} )
thus x = x' ; :: thesis: ( y = {} & x *' y = x' *' {} )
thus y = {} by A4; :: thesis: x *' y = x' *' {}
thus x *' y = {} by A4, Th4
.= x' *' {} by ARYTM_3:54 ; :: thesis: verum
end;
suppose that y <> {} and
A5: x <> {} ; :: thesis: ex x', y' being Element of RAT+ st
( x = x' & y = y' & x *' y = x' *' y' )

consider x' being Element of RAT+ such that
A6: x = x' and
A7: DEDEKIND_CUT x = { s where s is Element of RAT+ : s < x' } by A1, Def3;
consider y' being Element of RAT+ such that
A8: y = y' and
A9: DEDEKIND_CUT y = { s where s is Element of RAT+ : s < y' } by A2, Def3;
take x' ; :: thesis: ex y' being Element of RAT+ st
( x = x' & y = y' & x *' y = x' *' y' )

take y' ; :: thesis: ( x = x' & y = y' & x *' y = x' *' y' )
thus ( x = x' & y = y' ) by A6, A8; :: thesis: x *' y = x' *' y'
set A = DEDEKIND_CUT x;
set B = DEDEKIND_CUT y;
A10: for s being Element of RAT+ holds
( s in (DEDEKIND_CUT x) *' (DEDEKIND_CUT y) iff s < x' *' y' )
proof
let s2 be Element of RAT+ ; :: thesis: ( s2 in (DEDEKIND_CUT x) *' (DEDEKIND_CUT y) iff s2 < x' *' y' )
thus ( s2 in (DEDEKIND_CUT x) *' (DEDEKIND_CUT y) implies s2 < x' *' y' ) :: thesis: ( s2 < x' *' y' implies s2 in (DEDEKIND_CUT x) *' (DEDEKIND_CUT y) )
proof
assume s2 in (DEDEKIND_CUT x) *' (DEDEKIND_CUT y) ; :: thesis: s2 < x' *' y'
then consider r1, s1 being Element of RAT+ such that
A11: s2 = r1 *' s1 and
A12: r1 in DEDEKIND_CUT x and
A13: s1 in DEDEKIND_CUT y ;
A14: ex s being Element of RAT+ st
( s = r1 & s < x' ) by A7, A12;
A15: ex s being Element of RAT+ st
( s = s1 & s < y' ) by A9, A13;
then s1 <> y' ;
then A16: x' *' s1 <> x' *' y' by A5, A6, ARYTM_3:62;
x' *' s1 <=' x' *' y' by A15, ARYTM_3:90;
then A17: x' *' s1 < x' *' y' by A16, ARYTM_3:75;
r1 *' s1 <=' x' *' s1 by A14, ARYTM_3:90;
hence s2 < x' *' y' by A11, A17, ARYTM_3:76; :: thesis: verum
end;
assume A18: s2 < x' *' y' ; :: thesis: s2 in (DEDEKIND_CUT x) *' (DEDEKIND_CUT y)
then consider t0 being Element of RAT+ such that
A19: s2 = x' *' t0 and
A20: t0 <=' y' by ARYTM_3:87;
t0 <> y' by A18, A19;
then t0 < y' by A20, ARYTM_3:75;
then consider t1 being Element of RAT+ such that
A21: t0 < t1 and
A22: t1 < y' by ARYTM_3:101;
s2 <=' t1 *' x' by A19, A21, ARYTM_3:90;
then consider t2 being Element of RAT+ such that
A23: s2 = t1 *' t2 and
A24: t2 <=' x' by ARYTM_3:87;
now
assume t2 = x' ; :: thesis: contradiction
then t0 = t1 by A5, A6, A19, A23, ARYTM_3:62;
hence contradiction by A21; :: thesis: verum
end;
then t2 < x' by A24, ARYTM_3:75;
then A25: t2 in DEDEKIND_CUT x by A7;
t1 in DEDEKIND_CUT y by A9, A22;
hence s2 in (DEDEKIND_CUT x) *' (DEDEKIND_CUT y) by A23, A25; :: thesis: verum
end;
then consider r being Element of RAT+ such that
A26: GLUED ((DEDEKIND_CUT x) *' (DEDEKIND_CUT y)) = r and
A27: for s being Element of RAT+ holds
( s in (DEDEKIND_CUT x) *' (DEDEKIND_CUT y) iff s < r ) by Def4;
for s being Element of RAT+ holds
( s < x' *' y' iff s < r )
proof
let s be Element of RAT+ ; :: thesis: ( s < x' *' y' iff s < r )
( s in (DEDEKIND_CUT x) *' (DEDEKIND_CUT y) iff s < x' *' y' ) by A10;
hence ( s < x' *' y' iff s < r ) by A27; :: thesis: verum
end;
hence x *' y = x' *' y' by A26, Lm6; :: thesis: verum
end;
end;