let S1, S2, E be non empty Signature; :: thesis: ( E is Extension of S1 & E is Extension of S2 iff ( S1 tolerates S2 & E is Extension of S1 +* S2 ) )
set f1 = id the carrier of S1;
set g1 = id the carrier' of S1;
set f2 = id the carrier of S2;
set g2 = id the carrier' of S2;
A1:
( E is Extension of S1 & E is Extension of S2 implies S1 tolerates S2 )
( the carrier of S1 c= the carrier of S1 \/ the carrier of S2 & the carrier of S2 c= the carrier of S1 \/ the carrier of S2 )
by XBOOLE_1:7;
then
( id the carrier of S1 c= id (the carrier of S1 \/ the carrier of S2) & id the carrier of S2 c= id (the carrier of S1 \/ the carrier of S2) )
by FUNCT_4:4;
then A3:
id the carrier of S1 tolerates id the carrier of S2
by PARTFUN1:131;
A4:
( the carrier of (S1 +* S2) = the carrier of S1 \/ the carrier of S2 & the carrier' of (S1 +* S2) = the carrier' of S1 \/ the carrier' of S2 )
by CIRCCOMB:def 2;
( E is Extension of S1 & E is Extension of S2 implies E is Extension of S1 +* S2 )
proof
assume
(
id the
carrier of
S1,
id the
carrier' of
S1 form_morphism_between S1,
E &
id the
carrier of
S2,
id the
carrier' of
S2 form_morphism_between S2,
E )
;
:: according to INSTALG1:def 2,
ALGSPEC1:def 5 :: thesis: E is Extension of S1 +* S2
then
(id the carrier of S1) +* (id the carrier of S2),
(id the carrier' of S1) +* (id the carrier' of S2) form_morphism_between S1 +* S2,
E
by A3, Th51;
then
id the
carrier of
(S1 +* S2),
(id the carrier' of S1) +* (id the carrier' of S2) form_morphism_between S1 +* S2,
E
by A4, FUNCT_4:23;
hence
id the
carrier of
(S1 +* S2),
id the
carrier' of
(S1 +* S2) form_morphism_between S1 +* S2,
E
by A4, FUNCT_4:23;
:: according to INSTALG1:def 2,
ALGSPEC1:def 5 :: thesis: verum
end;
hence
( E is Extension of S1 & E is Extension of S2 implies ( S1 tolerates S2 & E is Extension of S1 +* S2 ) )
by A1; :: thesis: ( S1 tolerates S2 & E is Extension of S1 +* S2 implies ( E is Extension of S1 & E is Extension of S2 ) )
assume
S1 tolerates S2
; :: thesis: ( not E is Extension of S1 +* S2 or ( E is Extension of S1 & E is Extension of S2 ) )
then
( S1 +* S2 is Extension of S1 & S1 +* S2 is Extension of S2 )
by Th49, Th50;
hence
( not E is Extension of S1 +* S2 or ( E is Extension of S1 & E is Extension of S2 ) )
by Th48; :: thesis: verum