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 y' being Element of RAT+ such that
A6: y = y' and
A7: DEDEKIND_CUT y = { s where s is Element of RAT+ : s < y' } by A2, Def3;
set A = DEDEKIND_CUT x;
set B = DEDEKIND_CUT y;
consider x' being Element of RAT+ such that
A8: x = x' and
A9: DEDEKIND_CUT x = { s where s is Element of RAT+ : s < x' } by A1, Def3;
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 ;
ex s being Element of RAT+ st
( s = r1 & s < x' ) by A9, A12;
then A14: r1 *' s1 <=' x' *' s1 by ARYTM_3:90;
A15: ex s being Element of RAT+ st
( s = s1 & s < y' ) by A7, A13;
then s1 <> y' ;
then A16: x' *' s1 <> x' *' y' by A5, A8, ARYTM_3:62;
x' *' s1 <=' x' *' y' by A15, ARYTM_3:90;
then x' *' s1 < x' *' y' by A16, ARYTM_3:75;
hence s2 < x' *' y' by A11, A14, ARYTM_3:76; :: thesis: verum
end;
assume A17: s2 < x' *' y' ; :: thesis: s2 in (DEDEKIND_CUT x) *' (DEDEKIND_CUT y)
then consider t0 being Element of RAT+ such that
A18: s2 = x' *' t0 and
A19: t0 <=' y' by ARYTM_3:87;
t0 <> y' by A17, A18;
then t0 < y' by A19, ARYTM_3:75;
then consider t1 being Element of RAT+ such that
A20: t0 < t1 and
A21: t1 < y' by ARYTM_3:101;
s2 <=' t1 *' x' by A18, A20, ARYTM_3:90;
then consider t2 being Element of RAT+ such that
A22: s2 = t1 *' t2 and
A23: t2 <=' x' by ARYTM_3:87;
now
assume t2 = x' ; :: thesis: contradiction
then t0 = t1 by A5, A8, A18, A22, ARYTM_3:62;
hence contradiction by A20; :: thesis: verum
end;
then t2 < x' by A23, ARYTM_3:75;
then A24: t2 in DEDEKIND_CUT x by A9;
t1 in DEDEKIND_CUT y by A7, A21;
hence s2 in (DEDEKIND_CUT x) *' (DEDEKIND_CUT y) by A22, A24; :: thesis: verum
end;
then consider r being Element of RAT+ such that
A25: GLUED ((DEDEKIND_CUT x) *' (DEDEKIND_CUT y)) = r and
A26: for s being Element of RAT+ holds
( s in (DEDEKIND_CUT x) *' (DEDEKIND_CUT y) iff s < r ) by Def4;
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 A8, A6; :: thesis: x *' y = x' *' y'
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 A26; :: thesis: verum
end;
hence x *' y = x' *' y' by A25, Lm6; :: thesis: verum
end;
end;