ff_siec.miz



    begin

    reserve x,y for object,

X,Y for set;

    reserve M for Pnet;

    definition

      let X, Y;

      assume

       A1: X misses Y;

      :: FF_SIEC:def1

      func PTempty_f_net (X,Y) -> strict Pnet equals

      : Def1: PT_net_Str (# X, Y, ( {} (X,Y)), ( {} (Y,X)) #);

      correctness

      proof

        set M = PT_net_Str (# X, Y, ( {} (X,Y)), ( {} (Y,X)) #);

        ( Flow M) c= ( [:the carrier of M, the carrier' of M:] \/ [:the carrier' of M, the carrier of M:]) by XBOOLE_1: 13;

        hence thesis by A1, NET_1:def 2;

      end;

    end

    definition

      let X;

      :: FF_SIEC:def2

      func Tempty_f_net (X) -> strict Pnet equals ( PTempty_f_net (X, {} ));

      correctness ;

      :: FF_SIEC:def3

      func Pempty_f_net (X) -> strict Pnet equals ( PTempty_f_net ( {} ,X));

      correctness ;

    end

    definition

      let x;

      :: FF_SIEC:def4

      func Tsingle_f_net (x) -> strict Pnet equals ( PTempty_f_net ( {} , {x}));

      correctness ;

      :: FF_SIEC:def5

      func Psingle_f_net (x) -> strict Pnet equals ( PTempty_f_net ( {x}, {} ));

      correctness ;

    end

    definition

      :: FF_SIEC:def6

      func empty_f_net -> strict Pnet equals ( PTempty_f_net ( {} , {} ));

      correctness ;

    end

    theorem :: FF_SIEC:1

    X misses Y implies the carrier of ( PTempty_f_net (X,Y)) = X & the carrier' of ( PTempty_f_net (X,Y)) = Y & ( Flow ( PTempty_f_net (X,Y))) = {}

    proof

      assume X misses Y;

      then ( PTempty_f_net (X,Y)) = PT_net_Str (# X, Y, ( {} (X,Y)), ( {} (Y,X)) #) by Def1;

      hence thesis;

    end;

    theorem :: FF_SIEC:2

    the carrier of ( Tempty_f_net X) = X & the carrier' of ( Tempty_f_net X) = {} & ( Flow ( Tempty_f_net X)) = {}

    proof

      ( Tempty_f_net X) = PT_net_Str (# X, {} , ( {} (X, {} )), ( {} ( {} ,X)) #) by Def1, XBOOLE_1: 65;

      hence thesis;

    end;

    theorem :: FF_SIEC:3

    for X holds the carrier of ( Pempty_f_net X) = {} & the carrier' of ( Pempty_f_net X) = X & ( Flow ( Pempty_f_net X)) = {}

    proof

      let X;

       {} misses X by XBOOLE_1: 65;

      then ( Pempty_f_net X) = PT_net_Str (# {} , X, ( {} ( {} ,X)), ( {} (X, {} )) #) by Def1;

      hence thesis;

    end;

    theorem :: FF_SIEC:4

    for x holds the carrier of ( Tsingle_f_net x) = {} & the carrier' of ( Tsingle_f_net x) = {x} & ( Flow ( Tsingle_f_net x)) = {}

    proof

      let x;

       {} misses {x} by XBOOLE_1: 65;

      then ( Tsingle_f_net x) = PT_net_Str (# {} , {x}, ( {} ( {} , {x})), ( {} ( {x}, {} )) #) by Def1;

      hence thesis;

    end;

    theorem :: FF_SIEC:5

    for x holds the carrier of ( Psingle_f_net x) = {x} & the carrier' of ( Psingle_f_net x) = {} & ( Flow ( Psingle_f_net x)) = {}

    proof

      let x;

      ( Psingle_f_net x) = PT_net_Str (# {x}, {} , ( {} ( {x}, {} )), ( {} ( {} , {x})) #) by Def1, XBOOLE_1: 65;

      hence thesis;

    end;

    theorem :: FF_SIEC:6

    the carrier of empty_f_net = {} & the carrier' of empty_f_net = {} & ( Flow empty_f_net ) = {}

    proof

       empty_f_net = PT_net_Str (# {} , {} , ( {} ( {} , {} )), ( {} ( {} , {} )) #) by Def1, XBOOLE_1: 65;

      hence thesis;

    end;

    theorem :: FF_SIEC:7

    

     Th7: ( [x, y] in ( Flow M) & x in the carrier' of M implies not x in the carrier of M & not y in the carrier' of M & y in the carrier of M) & ( [x, y] in ( Flow M) & y in the carrier' of M implies not y in the carrier of M & not x in the carrier' of M & x in the carrier of M) & ( [x, y] in ( Flow M) & x in the carrier of M implies not y in the carrier of M & not x in the carrier' of M & y in the carrier' of M) & ( [x, y] in ( Flow M) & y in the carrier of M implies not x in the carrier of M & not y in the carrier' of M & x in the carrier' of M)

    proof

      

       A1: the carrier of M misses the carrier' of M by NET_1:def 2;

      ( Flow M) c= ( [:the carrier of M, the carrier' of M:] \/ [:the carrier' of M, the carrier of M:]) by NET_1:def 2;

      hence thesis by A1, SYSREL: 7;

    end;

    theorem :: FF_SIEC:8

    

     Th8: ( Flow M) c= [:( Elements M), ( Elements M):] & (( Flow M) ~ ) c= [:( Elements M), ( Elements M):]

    proof

      

       A1: the carrier of M c= ( Elements M) by XBOOLE_1: 7;

      

       A2: the carrier' of M c= ( Elements M) by XBOOLE_1: 7;

      then

       A3: [:the carrier of M, the carrier' of M:] c= [:( Elements M), ( Elements M):] by A1, ZFMISC_1: 96;

       [:the carrier' of M, the carrier of M:] c= [:( Elements M), ( Elements M):] by A1, A2, ZFMISC_1: 96;

      then

       A4: ( [:the carrier of M, the carrier' of M:] \/ [:the carrier' of M, the carrier of M:]) c= [:( Elements M), ( Elements M):] by A3, XBOOLE_1: 8;

      ( Flow M) c= ( [:the carrier of M, the carrier' of M:] \/ [:the carrier' of M, the carrier of M:]) by NET_1:def 2;

      then ( Flow M) c= [:( Elements M), ( Elements M):] by A4, XBOOLE_1: 1;

      hence thesis by SYSREL: 4;

    end;

    theorem :: FF_SIEC:9

    

     Th9: ( rng (( Flow M) | the carrier' of M)) c= the carrier of M & ( rng ((( Flow M) ~ ) | the carrier' of M)) c= the carrier of M & ( rng (( Flow M) | the carrier of M)) c= the carrier' of M & ( rng ((( Flow M) ~ ) | the carrier of M)) c= the carrier' of M & ( rng ( id the carrier' of M)) c= the carrier' of M & ( dom ( id the carrier' of M)) c= the carrier' of M & ( rng ( id the carrier of M)) c= the carrier of M & ( dom ( id the carrier of M)) c= the carrier of M

    proof

      

       A1: for x be object holds x in ( rng (( Flow M) | the carrier' of M)) implies x in the carrier of M

      proof

        let x be object;

        assume x in ( rng (( Flow M) | the carrier' of M));

        then

        consider y be object such that

         A2: [y, x] in (( Flow M) | the carrier' of M) by XTUPLE_0:def 13;

        

         A3: y in the carrier' of M by A2, RELAT_1:def 11;

         [y, x] in ( Flow M) by A2, RELAT_1:def 11;

        hence thesis by A3, Th7;

      end;

      

       A4: for x be object holds x in ( rng ((( Flow M) ~ ) | the carrier' of M)) implies x in the carrier of M

      proof

        let x be object;

        assume x in ( rng ((( Flow M) ~ ) | the carrier' of M));

        then

        consider y be object such that

         A5: [y, x] in ((( Flow M) ~ ) | the carrier' of M) by XTUPLE_0:def 13;

        

         A6: [y, x] in (( Flow M) ~ ) by A5, RELAT_1:def 11;

        

         A7: y in the carrier' of M by A5, RELAT_1:def 11;

         [x, y] in ( Flow M) by A6, RELAT_1:def 7;

        hence thesis by A7, Th7;

      end;

      

       A8: for x be object holds x in ( rng (( Flow M) | the carrier of M)) implies x in the carrier' of M

      proof

        let x be object;

        assume x in ( rng (( Flow M) | the carrier of M));

        then

        consider y be object such that

         A9: [y, x] in (( Flow M) | the carrier of M) by XTUPLE_0:def 13;

        

         A10: y in the carrier of M by A9, RELAT_1:def 11;

         [y, x] in ( Flow M) by A9, RELAT_1:def 11;

        hence thesis by A10, Th7;

      end;

      for x be object holds x in ( rng ((( Flow M) ~ ) | the carrier of M)) implies x in the carrier' of M

      proof

        let x be object;

        assume x in ( rng ((( Flow M) ~ ) | the carrier of M));

        then

        consider y be object such that

         A11: [y, x] in ((( Flow M) ~ ) | the carrier of M) by XTUPLE_0:def 13;

        

         A12: [y, x] in (( Flow M) ~ ) by A11, RELAT_1:def 11;

        

         A13: y in the carrier of M by A11, RELAT_1:def 11;

         [x, y] in ( Flow M) by A12, RELAT_1:def 7;

        hence thesis by A13, Th7;

      end;

      hence thesis by A1, A4, A8, TARSKI:def 3;

    end;

    theorem :: FF_SIEC:10

    

     Th10: ( rng (( Flow M) | the carrier' of M)) misses ( dom (( Flow M) | the carrier' of M)) & ( rng (( Flow M) | the carrier' of M)) misses ( dom ((( Flow M) ~ ) | the carrier' of M)) & ( rng (( Flow M) | the carrier' of M)) misses ( dom ( id the carrier' of M)) & ( rng ((( Flow M) ~ ) | the carrier' of M)) misses ( dom (( Flow M) | the carrier' of M)) & ( rng ((( Flow M) ~ ) | the carrier' of M)) misses ( dom ((( Flow M) ~ ) | the carrier' of M)) & ( rng ((( Flow M) ~ ) | the carrier' of M)) misses ( dom ( id the carrier' of M)) & ( dom (( Flow M) | the carrier' of M)) misses ( rng (( Flow M) | the carrier' of M)) & ( dom (( Flow M) | the carrier' of M)) misses ( rng ((( Flow M) ~ ) | the carrier' of M)) & ( dom (( Flow M) | the carrier' of M)) misses ( rng ( id the carrier of M)) & ( dom ((( Flow M) ~ ) | the carrier' of M)) misses ( rng (( Flow M) | the carrier' of M)) & ( dom ((( Flow M) ~ ) | the carrier' of M)) misses ( rng ((( Flow M) ~ ) | the carrier' of M)) & ( dom ((( Flow M) ~ ) | the carrier' of M)) misses ( rng ( id the carrier of M)) & ( rng (( Flow M) | the carrier of M)) misses ( dom (( Flow M) | the carrier of M)) & ( rng (( Flow M) | the carrier of M)) misses ( dom ((( Flow M) ~ ) | the carrier of M)) & ( rng (( Flow M) | the carrier of M)) misses ( dom ( id the carrier of M)) & ( rng ((( Flow M) ~ ) | the carrier of M)) misses ( dom (( Flow M) | the carrier of M)) & ( rng ((( Flow M) ~ ) | the carrier of M)) misses ( dom ((( Flow M) ~ ) | the carrier of M)) & ( rng ((( Flow M) ~ ) | the carrier of M)) misses ( dom ( id the carrier of M)) & ( dom (( Flow M) | the carrier of M)) misses ( rng (( Flow M) | the carrier of M)) & ( dom (( Flow M) | the carrier of M)) misses ( rng ((( Flow M) ~ ) | the carrier of M)) & ( dom (( Flow M) | the carrier of M)) misses ( rng ( id the carrier' of M)) & ( dom ((( Flow M) ~ ) | the carrier of M)) misses ( rng (( Flow M) | the carrier of M)) & ( dom ((( Flow M) ~ ) | the carrier of M)) misses ( rng ((( Flow M) ~ ) | the carrier of M)) & ( dom ((( Flow M) ~ ) | the carrier of M)) misses ( rng ( id the carrier' of M))

    proof

      set R = (( Flow M) | the carrier' of M);

      set S = ((( Flow M) ~ ) | the carrier' of M);

      set T = ( id the carrier' of M);

      set R1 = (( Flow M) | the carrier of M);

      set S1 = ((( Flow M) ~ ) | the carrier of M);

      set T1 = ( id the carrier of M);

      

       A1: ( dom R) c= the carrier' of M by RELAT_1: 58;

      

       A2: ( rng R) c= the carrier of M by Th9;

      

       A3: ( dom S) c= the carrier' of M by RELAT_1: 58;

      

       A4: ( rng S) c= the carrier of M by Th9;

      

       A5: ( dom R1) c= the carrier of M by RELAT_1: 58;

      

       A6: ( rng R1) c= the carrier' of M by Th9;

      

       A7: ( dom S1) c= the carrier of M by RELAT_1: 58;

      

       A8: ( rng S1) c= the carrier' of M by Th9;

      the carrier of M misses the carrier' of M by NET_1:def 2;

      hence thesis by A1, A2, A3, A4, A5, A6, A7, A8, XBOOLE_1: 64;

    end;

    theorem :: FF_SIEC:11

    

     Th11: ((( Flow M) | the carrier' of M) * (( Flow M) | the carrier' of M)) = {} & (((( Flow M) ~ ) | the carrier' of M) * ((( Flow M) ~ ) | the carrier' of M)) = {} & ((( Flow M) | the carrier' of M) * ((( Flow M) ~ ) | the carrier' of M)) = {} & (((( Flow M) ~ ) | the carrier' of M) * (( Flow M) | the carrier' of M)) = {} & ((( Flow M) | the carrier of M) * (( Flow M) | the carrier of M)) = {} & (((( Flow M) ~ ) | the carrier of M) * ((( Flow M) ~ ) | the carrier of M)) = {} & ((( Flow M) | the carrier of M) * ((( Flow M) ~ ) | the carrier of M)) = {} & (((( Flow M) ~ ) | the carrier of M) * (( Flow M) | the carrier of M)) = {}

    proof

      

       A1: ( rng (( Flow M) | the carrier' of M)) misses ( dom (( Flow M) | the carrier' of M)) by Th10;

      

       A2: ( rng ((( Flow M) ~ ) | the carrier' of M)) misses ( dom ((( Flow M) ~ ) | the carrier' of M)) by Th10;

      

       A3: ( rng (( Flow M) | the carrier' of M)) misses ( dom ((( Flow M) ~ ) | the carrier' of M)) by Th10;

      

       A4: ( rng ((( Flow M) ~ ) | the carrier' of M)) misses ( dom (( Flow M) | the carrier' of M)) by Th10;

      

       A5: ( rng (( Flow M) | the carrier of M)) misses ( dom (( Flow M) | the carrier of M)) by Th10;

      

       A6: ( rng ((( Flow M) ~ ) | the carrier of M)) misses ( dom ((( Flow M) ~ ) | the carrier of M)) by Th10;

      

       A7: ( rng (( Flow M) | the carrier of M)) misses ( dom ((( Flow M) ~ ) | the carrier of M)) by Th10;

      ( rng ((( Flow M) ~ ) | the carrier of M)) misses ( dom (( Flow M) | the carrier of M)) by Th10;

      hence thesis by A1, A2, A3, A4, A5, A6, A7, RELAT_1: 44;

    end;

    theorem :: FF_SIEC:12

    

     Th12: ((( Flow M) | the carrier' of M) * ( id the carrier of M)) = (( Flow M) | the carrier' of M) & (((( Flow M) ~ ) | the carrier' of M) * ( id the carrier of M)) = ((( Flow M) ~ ) | the carrier' of M) & (( id the carrier' of M) * (( Flow M) | the carrier' of M)) = (( Flow M) | the carrier' of M) & (( id the carrier' of M) * ((( Flow M) ~ ) | the carrier' of M)) = ((( Flow M) ~ ) | the carrier' of M) & ((( Flow M) | the carrier of M) * ( id the carrier' of M)) = (( Flow M) | the carrier of M) & (((( Flow M) ~ ) | the carrier of M) * ( id the carrier' of M)) = ((( Flow M) ~ ) | the carrier of M) & (( id the carrier of M) * (( Flow M) | the carrier of M)) = (( Flow M) | the carrier of M) & (( id the carrier of M) * ((( Flow M) ~ ) | the carrier of M)) = ((( Flow M) ~ ) | the carrier of M) & ((( Flow M) | the carrier of M) * ( id the carrier' of M)) = (( Flow M) | the carrier of M) & (((( Flow M) ~ ) | the carrier of M) * ( id the carrier' of M)) = ((( Flow M) ~ ) | the carrier of M) & (( id the carrier' of M) * (( Flow M) | the carrier of M)) = {} & (( id the carrier' of M) * ((( Flow M) ~ ) | the carrier of M)) = {} & ((( Flow M) | the carrier of M) * ( id the carrier of M)) = {} & (((( Flow M) ~ ) | the carrier of M) * ( id the carrier of M)) = {} & (( id the carrier of M) * (( Flow M) | the carrier' of M)) = {} & (( id the carrier of M) * ((( Flow M) ~ ) | the carrier' of M)) = {} & ((( Flow M) | the carrier' of M) * ( id the carrier' of M)) = {} & (((( Flow M) ~ ) | the carrier' of M) * ( id the carrier' of M)) = {}

    proof

      

       A1: ( rng (( Flow M) | the carrier' of M)) c= the carrier of M by Th9;

      

       A2: ( rng ((( Flow M) ~ ) | the carrier' of M)) c= the carrier of M by Th9;

      

       A3: ( rng (( Flow M) | the carrier of M)) c= the carrier' of M by Th9;

      

       A4: ( rng ((( Flow M) ~ ) | the carrier of M)) c= the carrier' of M by Th9;

      

       A5: ( dom (( Flow M) | the carrier of M)) misses ( rng ( id the carrier' of M)) by Th10;

      

       A6: ( dom ((( Flow M) ~ ) | the carrier of M)) misses ( rng ( id the carrier' of M)) by Th10;

      

       A7: ( rng (( Flow M) | the carrier of M)) misses ( dom ( id the carrier of M)) by Th10;

      

       A8: ( rng ((( Flow M) ~ ) | the carrier of M)) misses ( dom ( id the carrier of M)) by Th10;

      

       A9: ( rng ( id the carrier of M)) misses ( dom (( Flow M) | the carrier' of M)) by Th10;

      

       A10: ( rng ( id the carrier of M)) misses ( dom ((( Flow M) ~ ) | the carrier' of M)) by Th10;

      

       A11: ( rng (( Flow M) | the carrier' of M)) misses ( dom ( id the carrier' of M)) by Th10;

      ( rng ((( Flow M) ~ ) | the carrier' of M)) misses ( dom ( id the carrier' of M)) by Th10;

      hence thesis by A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, RELAT_1: 44, RELAT_1: 51, RELAT_1: 53, RELAT_1: 58;

    end;

    theorem :: FF_SIEC:13

    

     Th13: ((( Flow M) ~ ) | the carrier' of M) misses ( id ( Elements M)) & (( Flow M) | the carrier' of M) misses ( id ( Elements M)) & ((( Flow M) ~ ) | the carrier of M) misses ( id ( Elements M)) & (( Flow M) | the carrier of M) misses ( id ( Elements M))

    proof

      set T = ( id ( Elements M));

      thus ((( Flow M) ~ ) | the carrier' of M) misses ( id ( Elements M))

      proof

        set R = ((( Flow M) ~ ) | the carrier' of M);

        for x,y be object holds not [x, y] in (R /\ T)

        proof

          let x,y be object;

          assume

           A1: [x, y] in (R /\ T);

          then

           A2: [x, y] in R by XBOOLE_0:def 4;

          

           A3: [x, y] in T by A1, XBOOLE_0:def 4;

          

           A4: [x, y] in (( Flow M) ~ ) by A2, RELAT_1:def 11;

          

           A5: x in the carrier' of M by A2, RELAT_1:def 11;

           [y, x] in ( Flow M) by A4, RELAT_1:def 7;

          then x <> y by A5, Th7;

          hence thesis by A3, RELAT_1:def 10;

        end;

        then (R /\ T) = {} by RELAT_1: 37;

        hence thesis by XBOOLE_0:def 7;

      end;

      thus (( Flow M) | the carrier' of M) misses ( id ( Elements M))

      proof

        set R = (( Flow M) | the carrier' of M);

        for x,y be object holds not [x, y] in (R /\ T)

        proof

          let x,y be object;

          assume

           A6: [x, y] in (R /\ T);

          then

           A7: [x, y] in R by XBOOLE_0:def 4;

          

           A8: [x, y] in T by A6, XBOOLE_0:def 4;

          

           A9: x in the carrier' of M by A7, RELAT_1:def 11;

           [x, y] in ( Flow M) by A7, RELAT_1:def 11;

          then x <> y by A9, Th7;

          hence thesis by A8, RELAT_1:def 10;

        end;

        then (R /\ T) = {} by RELAT_1: 37;

        hence thesis by XBOOLE_0:def 7;

      end;

      thus ((( Flow M) ~ ) | the carrier of M) misses ( id ( Elements M))

      proof

        set R = ((( Flow M) ~ ) | the carrier of M);

        for x,y be object holds not [x, y] in (R /\ T)

        proof

          let x,y be object;

          assume

           A10: [x, y] in (R /\ T);

          then

           A11: [x, y] in R by XBOOLE_0:def 4;

          

           A12: [x, y] in T by A10, XBOOLE_0:def 4;

          

           A13: [x, y] in (( Flow M) ~ ) by A11, RELAT_1:def 11;

          

           A14: x in the carrier of M by A11, RELAT_1:def 11;

           [y, x] in ( Flow M) by A13, RELAT_1:def 7;

          then x <> y by A14, Th7;

          hence thesis by A12, RELAT_1:def 10;

        end;

        then (R /\ T) = {} by RELAT_1: 37;

        hence thesis by XBOOLE_0:def 7;

      end;

      set R = (( Flow M) | the carrier of M);

      for x,y be object holds not [x, y] in (R /\ T)

      proof

        let x,y be object;

        assume

         A15: [x, y] in (R /\ T);

        then

         A16: [x, y] in R by XBOOLE_0:def 4;

        

         A17: [x, y] in T by A15, XBOOLE_0:def 4;

        

         A18: x in the carrier of M by A16, RELAT_1:def 11;

         [x, y] in ( Flow M) by A16, RELAT_1:def 11;

        then x <> y by A18, Th7;

        hence thesis by A17, RELAT_1:def 10;

      end;

      then (R /\ T) = {} by RELAT_1: 37;

      hence thesis by XBOOLE_0:def 7;

    end;

    theorem :: FF_SIEC:14

    

     Th14: ((((( Flow M) ~ ) | the carrier' of M) \/ ( id the carrier of M)) \ ( id ( Elements M))) = ((( Flow M) ~ ) | the carrier' of M) & (((( Flow M) | the carrier' of M) \/ ( id the carrier of M)) \ ( id ( Elements M))) = (( Flow M) | the carrier' of M) & ((((( Flow M) ~ ) | the carrier of M) \/ ( id the carrier of M)) \ ( id ( Elements M))) = ((( Flow M) ~ ) | the carrier of M) & (((( Flow M) | the carrier of M) \/ ( id the carrier of M)) \ ( id ( Elements M))) = (( Flow M) | the carrier of M) & ((((( Flow M) ~ ) | the carrier of M) \/ ( id the carrier' of M)) \ ( id ( Elements M))) = ((( Flow M) ~ ) | the carrier of M) & (((( Flow M) | the carrier of M) \/ ( id the carrier' of M)) \ ( id ( Elements M))) = (( Flow M) | the carrier of M) & ((((( Flow M) ~ ) | the carrier' of M) \/ ( id the carrier' of M)) \ ( id ( Elements M))) = ((( Flow M) ~ ) | the carrier' of M) & (((( Flow M) | the carrier' of M) \/ ( id the carrier' of M)) \ ( id ( Elements M))) = (( Flow M) | the carrier' of M)

    proof

      

       A1: ((((( Flow M) ~ ) | the carrier' of M) \/ ( id the carrier of M)) \ ( id ( Elements M))) = ((( Flow M) ~ ) | the carrier' of M)

      proof

        set R = ((( Flow M) ~ ) | the carrier' of M);

        set S = ( id the carrier of M);

        set T = ( id ( Elements M));

        

         A2: S c= T by SYSREL: 15, XBOOLE_1: 7;

        

         A3: R misses T by Th13;

        ((R \/ S) \ T) = ((R \ T) \/ (S \ T)) by XBOOLE_1: 42

        .= ((R \ T) \/ {} ) by A2, XBOOLE_1: 37

        .= R by A3, XBOOLE_1: 83;

        hence thesis;

      end;

      

       A4: (((( Flow M) | the carrier' of M) \/ ( id the carrier of M)) \ ( id ( Elements M))) = (( Flow M) | the carrier' of M)

      proof

        set R = (( Flow M) | the carrier' of M);

        set S = ( id the carrier of M);

        set T = ( id ( Elements M));

        

         A5: S c= T by SYSREL: 15, XBOOLE_1: 7;

        

         A6: R misses T by Th13;

        ((R \/ S) \ T) = ((R \ T) \/ (S \ T)) by XBOOLE_1: 42

        .= ((R \ T) \/ {} ) by A5, XBOOLE_1: 37

        .= R by A6, XBOOLE_1: 83;

        hence thesis;

      end;

      

       A7: ((((( Flow M) ~ ) | the carrier of M) \/ ( id the carrier of M)) \ ( id ( Elements M))) = ((( Flow M) ~ ) | the carrier of M)

      proof

        set R = ((( Flow M) ~ ) | the carrier of M);

        set S = ( id the carrier of M);

        set T = ( id ( Elements M));

        

         A8: S c= T by SYSREL: 15, XBOOLE_1: 7;

        

         A9: R misses T by Th13;

        ((R \/ S) \ T) = ((R \ T) \/ (S \ T)) by XBOOLE_1: 42

        .= ((R \ T) \/ {} ) by A8, XBOOLE_1: 37

        .= R by A9, XBOOLE_1: 83;

        hence thesis;

      end;

      

       A10: (((( Flow M) | the carrier of M) \/ ( id the carrier of M)) \ ( id ( Elements M))) = (( Flow M) | the carrier of M)

      proof

        set R = (( Flow M) | the carrier of M);

        set S = ( id the carrier of M);

        set T = ( id ( Elements M));

        

         A11: S c= T by SYSREL: 15, XBOOLE_1: 7;

        

         A12: R misses T by Th13;

        ((R \/ S) \ T) = ((R \ T) \/ (S \ T)) by XBOOLE_1: 42

        .= ((R \ T) \/ {} ) by A11, XBOOLE_1: 37

        .= R by A12, XBOOLE_1: 83;

        hence thesis;

      end;

      

       A13: ((((( Flow M) ~ ) | the carrier of M) \/ ( id the carrier' of M)) \ ( id ( Elements M))) = ((( Flow M) ~ ) | the carrier of M)

      proof

        set R = ((( Flow M) ~ ) | the carrier of M);

        set S = ( id the carrier' of M);

        set T = ( id ( Elements M));

        

         A14: S c= T by SYSREL: 15, XBOOLE_1: 7;

        

         A15: R misses T by Th13;

        ((R \/ S) \ T) = ((R \ T) \/ (S \ T)) by XBOOLE_1: 42

        .= ((R \ T) \/ {} ) by A14, XBOOLE_1: 37

        .= R by A15, XBOOLE_1: 83;

        hence thesis;

      end;

      

       A16: (((( Flow M) | the carrier of M) \/ ( id the carrier' of M)) \ ( id ( Elements M))) = (( Flow M) | the carrier of M)

      proof

        set R = (( Flow M) | the carrier of M);

        set S = ( id the carrier' of M);

        set T = ( id ( Elements M));

        

         A17: S c= T by SYSREL: 15, XBOOLE_1: 7;

        

         A18: R misses T by Th13;

        ((R \/ S) \ T) = ((R \ T) \/ (S \ T)) by XBOOLE_1: 42

        .= ((R \ T) \/ {} ) by A17, XBOOLE_1: 37

        .= R by A18, XBOOLE_1: 83;

        hence thesis;

      end;

      

       A19: ((((( Flow M) ~ ) | the carrier' of M) \/ ( id the carrier' of M)) \ ( id ( Elements M))) = ((( Flow M) ~ ) | the carrier' of M)

      proof

        set R = ((( Flow M) ~ ) | the carrier' of M);

        set S = ( id the carrier' of M);

        set T = ( id ( Elements M));

        

         A20: S c= T by SYSREL: 15, XBOOLE_1: 7;

        

         A21: R misses T by Th13;

        ((R \/ S) \ T) = ((R \ T) \/ (S \ T)) by XBOOLE_1: 42

        .= ((R \ T) \/ {} ) by A20, XBOOLE_1: 37

        .= R by A21, XBOOLE_1: 83;

        hence thesis;

      end;

      (((( Flow M) | the carrier' of M) \/ ( id the carrier' of M)) \ ( id ( Elements M))) = (( Flow M) | the carrier' of M)

      proof

        set R = (( Flow M) | the carrier' of M);

        set S = ( id the carrier' of M);

        set T = ( id ( Elements M));

        

         A22: S c= T by SYSREL: 15, XBOOLE_1: 7;

        

         A23: R misses T by Th13;

        ((R \/ S) \ T) = ((R \ T) \/ (S \ T)) by XBOOLE_1: 42

        .= ((R \ T) \/ {} ) by A22, XBOOLE_1: 37

        .= R by A23, XBOOLE_1: 83;

        hence thesis;

      end;

      hence thesis by A1, A4, A7, A10, A13, A16, A19;

    end;

    theorem :: FF_SIEC:15

    

     Th15: ((( Flow M) | the carrier of M) ~ ) = ((( Flow M) ~ ) | the carrier' of M) & ((( Flow M) | the carrier' of M) ~ ) = ((( Flow M) ~ ) | the carrier of M)

    proof

      set R = ( Flow M);

      set X = the carrier of M;

      set Y = the carrier' of M;

      for x,y be object holds [x, y] in ((R | X) ~ ) implies [x, y] in ((R ~ ) | Y)

      proof

        let x,y be object;

        assume [x, y] in ((R | X) ~ );

        then

         A1: [y, x] in (R | X) by RELAT_1:def 7;

        then

         A2: [y, x] in R by RELAT_1:def 11;

        

         A3: y in X by A1, RELAT_1:def 11;

        

         A4: [x, y] in (R ~ ) by A2, RELAT_1:def 7;

        x in Y by A2, A3, Th7;

        hence thesis by A4, RELAT_1:def 11;

      end;

      then

       A5: ((R | X) ~ ) c= ((R ~ ) | Y) by RELAT_1:def 3;

      for x,y be object holds [x, y] in ((R ~ ) | Y) implies [x, y] in ((R | X) ~ )

      proof

        let x,y be object;

        assume

         A6: [x, y] in ((R ~ ) | Y);

        then [x, y] in (R ~ ) by RELAT_1:def 11;

        then

         A7: [y, x] in R by RELAT_1:def 7;

        x in Y by A6, RELAT_1:def 11;

        then y in X by A7, Th7;

        then [y, x] in (R | X) by A7, RELAT_1:def 11;

        hence thesis by RELAT_1:def 7;

      end;

      then

       A8: ((R ~ ) | Y) c= ((R | X) ~ ) by RELAT_1:def 3;

      for x,y be object holds [x, y] in ((R | Y) ~ ) implies [x, y] in ((R ~ ) | X)

      proof

        let x,y be object;

        assume [x, y] in ((R | Y) ~ );

        then

         A9: [y, x] in (R | Y) by RELAT_1:def 7;

        then

         A10: [y, x] in R by RELAT_1:def 11;

        

         A11: y in Y by A9, RELAT_1:def 11;

        

         A12: [x, y] in (R ~ ) by A10, RELAT_1:def 7;

        x in X by A10, A11, Th7;

        hence thesis by A12, RELAT_1:def 11;

      end;

      then

       A13: ((R | Y) ~ ) c= ((R ~ ) | X) by RELAT_1:def 3;

      for x,y be object holds [x, y] in ((R ~ ) | X) implies [x, y] in ((R | Y) ~ )

      proof

        let x,y be object;

        assume

         A14: [x, y] in ((R ~ ) | X);

        then [x, y] in (R ~ ) by RELAT_1:def 11;

        then

         A15: [y, x] in R by RELAT_1:def 7;

        x in X by A14, RELAT_1:def 11;

        then y in Y by A15, Th7;

        then [y, x] in (R | Y) by A15, RELAT_1:def 11;

        hence thesis by RELAT_1:def 7;

      end;

      then ((R ~ ) | X) c= ((R | Y) ~ ) by RELAT_1:def 3;

      hence thesis by A5, A8, A13, XBOOLE_0:def 10;

    end;

    theorem :: FF_SIEC:16

    

     Th16: ((( Flow M) | the carrier of M) \/ (( Flow M) | the carrier' of M)) = ( Flow M) & ((( Flow M) | the carrier' of M) \/ (( Flow M) | the carrier of M)) = ( Flow M) & (((( Flow M) | the carrier of M) ~ ) \/ ((( Flow M) | the carrier' of M) ~ )) = (( Flow M) ~ ) & (((( Flow M) | the carrier' of M) ~ ) \/ ((( Flow M) | the carrier of M) ~ )) = (( Flow M) ~ )

    proof

      set R = ( Flow M);

      ( Flow M) c= [:( Elements M), ( Elements M):] by Th8;

      then ((R | the carrier of M) \/ (R | the carrier' of M)) = R by SYSREL: 9;

      hence thesis by RELAT_1: 23;

    end;

    definition

      let M;

      :: FF_SIEC:def7

      func f_enter (M) -> Relation equals (((( Flow M) ~ ) | the carrier' of M) \/ ( id the carrier of M));

      correctness ;

      :: FF_SIEC:def8

      func f_exit (M) -> Relation equals ((( Flow M) | the carrier' of M) \/ ( id the carrier of M));

      correctness ;

    end

    theorem :: FF_SIEC:17

    ( f_exit M) c= [:( Elements M), ( Elements M):] & ( f_enter M) c= [:( Elements M), ( Elements M):]

    proof

      

       A1: ( id the carrier of M) c= ( id ( Elements M)) by SYSREL: 15, XBOOLE_1: 7;

      ( id ( Elements M)) c= [:( Elements M), ( Elements M):] by RELSET_1: 13;

      then

       A2: ( id the carrier of M) c= [:( Elements M), ( Elements M):] by A1, XBOOLE_1: 1;

      

       A3: (( Flow M) | the carrier' of M) c= ( Flow M) by RELAT_1: 59;

      ( Flow M) c= [:( Elements M), ( Elements M):] by Th8;

      then (( Flow M) | the carrier' of M) c= [:( Elements M), ( Elements M):] by A3, XBOOLE_1: 1;

      hence ( f_exit M) c= [:( Elements M), ( Elements M):] by A2, XBOOLE_1: 8;

      

       A4: ( id the carrier of M) c= ( id ( Elements M)) by SYSREL: 15, XBOOLE_1: 7;

      ( id ( Elements M)) c= [:( Elements M), ( Elements M):] by RELSET_1: 13;

      then

       A5: ( id the carrier of M) c= [:( Elements M), ( Elements M):] by A4, XBOOLE_1: 1;

      

       A6: ((( Flow M) ~ ) | the carrier' of M) c= (( Flow M) ~ ) by RELAT_1: 59;

      (( Flow M) ~ ) c= [:( Elements M), ( Elements M):] by Th8;

      then ((( Flow M) ~ ) | the carrier' of M) c= [:( Elements M), ( Elements M):] by A6, XBOOLE_1: 1;

      hence thesis by A5, XBOOLE_1: 8;

    end;

    theorem :: FF_SIEC:18

    ( dom ( f_exit M)) c= ( Elements M) & ( rng ( f_exit M)) c= ( Elements M) & ( dom ( f_enter M)) c= ( Elements M) & ( rng ( f_enter M)) c= ( Elements M)

    proof

      

       A1: for x be object holds x in ( dom ( f_exit M)) implies x in ( Elements M)

      proof

        let x be object;

        assume x in ( dom ( f_exit M));

        then x in (( dom (( Flow M) | the carrier' of M)) \/ ( dom ( id the carrier of M))) by XTUPLE_0: 23;

        then x in ( dom (( Flow M) | the carrier' of M)) or x in ( dom ( id the carrier of M)) by XBOOLE_0:def 3;

        then x in the carrier' of M or x in the carrier of M by RELAT_1: 57;

        hence thesis by XBOOLE_0:def 3;

      end;

      

       A2: for x be object holds x in ( rng ( f_exit M)) implies x in ( Elements M)

      proof

        let x be object;

        assume x in ( rng ( f_exit M));

        then

         A3: x in (( rng (( Flow M) | the carrier' of M)) \/ ( rng ( id the carrier of M))) by RELAT_1: 12;

        

         A4: x in ( rng (( Flow M) | the carrier' of M)) implies thesis

        proof

          assume x in ( rng (( Flow M) | the carrier' of M));

          then

          consider y be object such that

           A5: [y, x] in (( Flow M) | the carrier' of M) by XTUPLE_0:def 13;

          

           A6: y in the carrier' of M by A5, RELAT_1:def 11;

           [y, x] in ( Flow M) by A5, RELAT_1:def 11;

          then x in the carrier' of M or x in the carrier of M by A6, Th7;

          hence thesis by XBOOLE_0:def 3;

        end;

        x in ( rng ( id the carrier of M)) implies thesis by XBOOLE_0:def 3;

        hence thesis by A3, A4, XBOOLE_0:def 3;

      end;

      

       A7: for x be object holds x in ( dom ( f_enter M)) implies x in ( Elements M)

      proof

        let x be object;

        assume x in ( dom ( f_enter M));

        then x in (( dom ((( Flow M) ~ ) | the carrier' of M)) \/ ( dom ( id the carrier of M))) by XTUPLE_0: 23;

        then x in ( dom ((( Flow M) ~ ) | the carrier' of M)) or x in ( dom ( id the carrier of M)) by XBOOLE_0:def 3;

        then x in the carrier' of M or x in the carrier of M by RELAT_1: 57;

        hence thesis by XBOOLE_0:def 3;

      end;

      for x be object holds x in ( rng ( f_enter M)) implies x in ( Elements M)

      proof

        let x be object;

        assume x in ( rng ( f_enter M));

        then

         A8: x in (( rng ((( Flow M) ~ ) | the carrier' of M)) \/ ( rng ( id the carrier of M))) by RELAT_1: 12;

        

         A9: x in ( rng ((( Flow M) ~ ) | the carrier' of M)) implies thesis

        proof

          assume x in ( rng ((( Flow M) ~ ) | the carrier' of M));

          then

          consider y be object such that

           A10: [y, x] in ((( Flow M) ~ ) | the carrier' of M) by XTUPLE_0:def 13;

          

           A11: [y, x] in (( Flow M) ~ ) by A10, RELAT_1:def 11;

          

           A12: y in the carrier' of M by A10, RELAT_1:def 11;

           [x, y] in ( Flow M) by A11, RELAT_1:def 7;

          then x in the carrier' of M or x in the carrier of M by A12, Th7;

          hence thesis by XBOOLE_0:def 3;

        end;

        x in ( rng ( id the carrier of M)) implies thesis by XBOOLE_0:def 3;

        hence thesis by A8, A9, XBOOLE_0:def 3;

      end;

      hence thesis by A1, A2, A7, TARSKI:def 3;

    end;

    theorem :: FF_SIEC:19

    (( f_exit M) * ( f_exit M)) = ( f_exit M) & (( f_exit M) * ( f_enter M)) = ( f_exit M) & (( f_enter M) * ( f_enter M)) = ( f_enter M) & (( f_enter M) * ( f_exit M)) = ( f_enter M)

    proof

      

       A1: (( f_exit M) * ( f_exit M)) = ( f_exit M)

      proof

        set R = (( Flow M) | the carrier' of M);

        set S = ( id the carrier of M);

        

         A2: (S * R) = {} by Th12;

        

         A3: (R * S) = R by Th12;

        

         A4: (S * S) = S by SYSREL: 12;

        (( f_exit M) * ( f_exit M)) = ((R * (R \/ S)) \/ (S * (R \/ S))) by SYSREL: 6

        .= (((R * R) \/ (R * S)) \/ (S * (R \/ S))) by RELAT_1: 32

        .= (((R * R) \/ (R * S)) \/ ((S * R) \/ (S * S))) by RELAT_1: 32

        .= (( {} \/ R) \/ ( {} \/ S)) by A2, A3, A4, Th11

        .= ( f_exit M);

        hence thesis;

      end;

      

       A5: (( f_exit M) * ( f_enter M)) = ( f_exit M)

      proof

        set R = (( Flow M) | the carrier' of M);

        set S = ( id the carrier of M);

        set T = ((( Flow M) ~ ) | the carrier' of M);

        

         A6: (S * T) = {} by Th12;

        

         A7: (R * S) = R by Th12;

        

         A8: (S * S) = S by SYSREL: 12;

        (( f_exit M) * ( f_enter M)) = ((R * (T \/ S)) \/ (S * (T \/ S))) by SYSREL: 6

        .= (((R * T) \/ (R * S)) \/ (S * (T \/ S))) by RELAT_1: 32

        .= (((R * T) \/ (R * S)) \/ ((S * T) \/ (S * S))) by RELAT_1: 32

        .= (( {} \/ R) \/ ( {} \/ S)) by A6, A7, A8, Th11

        .= ( f_exit M);

        hence thesis;

      end;

      

       A9: (( f_enter M) * ( f_enter M)) = ( f_enter M)

      proof

        set R = ((( Flow M) ~ ) | the carrier' of M);

        set S = ( id the carrier of M);

        

         A10: (S * R) = {} by Th12;

        

         A11: (R * S) = R by Th12;

        

         A12: (S * S) = S by SYSREL: 12;

        (( f_enter M) * ( f_enter M)) = ((R * (R \/ S)) \/ (S * (R \/ S))) by SYSREL: 6

        .= (((R * R) \/ (R * S)) \/ (S * (R \/ S))) by RELAT_1: 32

        .= (((R * R) \/ (R * S)) \/ ((S * R) \/ (S * S))) by RELAT_1: 32

        .= (( {} \/ R) \/ ( {} \/ S)) by A10, A11, A12, Th11

        .= ( f_enter M);

        hence thesis;

      end;

      (( f_enter M) * ( f_exit M)) = ( f_enter M)

      proof

        set R = (( Flow M) | the carrier' of M);

        set S = ( id the carrier of M);

        set T = ((( Flow M) ~ ) | the carrier' of M);

        

         A13: (T * S) = T by Th12;

        

         A14: (S * R) = {} by Th12;

        

         A15: (S * S) = S by SYSREL: 12;

        (( f_enter M) * ( f_exit M)) = ((T * (R \/ S)) \/ (S * (R \/ S))) by SYSREL: 6

        .= (((T * R) \/ (T * S)) \/ (S * (R \/ S))) by RELAT_1: 32

        .= (((T * R) \/ (T * S)) \/ ((S * R) \/ (S * S))) by RELAT_1: 32

        .= (( {} \/ T) \/ ( {} \/ S)) by A13, A14, A15, Th11

        .= ( f_enter M);

        hence thesis;

      end;

      hence thesis by A1, A5, A9;

    end;

    theorem :: FF_SIEC:20

    (( f_exit M) * (( f_exit M) \ ( id ( Elements M)))) = {} & (( f_enter M) * (( f_enter M) \ ( id ( Elements M)))) = {}

    proof

      set S = ( id the carrier of M);

      thus (( f_exit M) * (( f_exit M) \ ( id ( Elements M)))) = {}

      proof

        set R = (( Flow M) | the carrier' of M);

        

         A1: (S * R) = {} by Th12;

        (( f_exit M) * (( f_exit M) \ ( id ( Elements M)))) = ((R \/ S) * R) by Th14

        .= ((R * R) \/ (S * R)) by SYSREL: 6

        .= {} by A1, Th11;

        hence thesis;

      end;

      set R = ((( Flow M) ~ ) | the carrier' of M);

      

       A2: (S * R) = {} by Th12;

      (( f_enter M) * (( f_enter M) \ ( id ( Elements M)))) = ((R \/ S) * R) by Th14

      .= ((R * R) \/ (S * R)) by SYSREL: 6

      .= {} by A2, Th11;

      hence thesis;

    end;

    definition

      let M;

      :: FF_SIEC:def9

      func f_prox (M) -> Relation equals (((( Flow M) | the carrier of M) \/ ((( Flow M) ~ ) | the carrier of M)) \/ ( id the carrier of M));

      correctness ;

      :: FF_SIEC:def10

      func f_flow (M) -> Relation equals (( Flow M) \/ ( id ( Elements M)));

      correctness ;

    end

    theorem :: FF_SIEC:21

    (( f_prox M) * ( f_prox M)) = ( f_prox M) & ((( f_prox M) \ ( id ( Elements M))) * ( f_prox M)) = {} & ((( f_prox M) \/ (( f_prox M) ~ )) \/ ( id ( Elements M))) = (( f_flow M) \/ (( f_flow M) ~ ))

    proof

      set R = (( Flow M) | the carrier of M);

      set S = ((( Flow M) ~ ) | the carrier of M);

      set T = ( id the carrier of M);

      set Q = ( id ( Elements M));

      

       A1: (((R \/ S) \/ T) \ Q) = (((R \/ T) \/ (S \/ T)) \ Q) by XBOOLE_1: 5

      .= (((R \/ T) \ ( id ( Elements M))) \/ ((S \/ T) \ ( id ( Elements M)))) by XBOOLE_1: 42

      .= (R \/ ((S \/ T) \ ( id ( Elements M)))) by Th14

      .= (R \/ S) by Th14;

      

       A2: ((R \/ S) * (R \/ S)) = (((R \/ S) * R) \/ ((R \/ S) * S)) by RELAT_1: 32

      .= (((R * R) \/ (S * R)) \/ ((R \/ S) * S)) by SYSREL: 6

      .= (((R * R) \/ (S * R)) \/ ((R * S) \/ (S * S))) by SYSREL: 6

      .= (( {} \/ (S * R)) \/ ((R * S) \/ (S * S))) by Th11

      .= (( {} \/ {} ) \/ ((R * S) \/ (S * S))) by Th11

      .= (( {} \/ {} ) \/ ( {} \/ (S * S))) by Th11

      .= {} by Th11;

      

       A3: (R \/ (S ~ )) = (R \/ (((( Flow M) | the carrier' of M) ~ ) ~ )) by Th15

      .= ( Flow M) by Th16;

      

       A4: ((R ~ ) \/ S) = ((R ~ ) \/ ((( Flow M) | the carrier' of M) ~ )) by Th15

      .= (( Flow M) ~ ) by Th16;

      

       A5: (((R \/ S) ~ ) \/ (R \/ S)) = (((R ~ ) \/ (S ~ )) \/ (R \/ S)) by RELAT_1: 23

      .= (((R ~ ) \/ (S \/ R)) \/ (S ~ )) by XBOOLE_1: 4

      .= ((((R ~ ) \/ S) \/ R) \/ (S ~ )) by XBOOLE_1: 4

      .= (( Flow M) \/ (( Flow M) ~ )) by A3, A4, XBOOLE_1: 4;

      

       A6: (( f_prox M) \/ (( f_prox M) ~ )) = (((R \/ S) \/ T) \/ (((R \/ S) ~ ) \/ (T ~ ))) by RELAT_1: 23

      .= ((((R \/ S) \/ T) \/ ((R \/ S) ~ )) \/ (T ~ )) by XBOOLE_1: 4

      .= ((((R \/ S) \/ ((R \/ S) ~ )) \/ T) \/ (T ~ )) by XBOOLE_1: 4

      .= (((R \/ S) \/ ((R \/ S) ~ )) \/ (T \/ (T ~ ))) by XBOOLE_1: 4

      .= (((R \/ S) \/ ((R \/ S) ~ )) \/ (T \/ T))

      .= ((( Flow M) \/ (( Flow M) ~ )) \/ ( id the carrier of M)) by A5;

      

       A7: ( id the carrier of M) c= ( id ( Elements M)) by SYSREL: 15, XBOOLE_1: 7;

      

       A8: (( f_prox M) * ( f_prox M)) = ((((R \/ S) \/ T) * (R \/ S)) \/ (((R \/ S) \/ T) * T)) by RELAT_1: 32

      .= (((((R \/ S) \/ T) * R) \/ (((R \/ S) \/ T) * S)) \/ (((R \/ S) \/ T) * T)) by RELAT_1: 32

      .= (((((R \/ S) * R) \/ (T * R)) \/ (((R \/ S) \/ T) * S)) \/ (((R \/ S) \/ T) * T)) by SYSREL: 6

      .= (((((R * R) \/ (S * R)) \/ (T * R)) \/ (((R \/ S) \/ T) * S)) \/ (((R \/ S) \/ T) * T)) by SYSREL: 6

      .= (((((R * R) \/ (S * R)) \/ (T * R)) \/ (((R \/ S) * S) \/ (T * S))) \/ (((R \/ S) \/ T) * T)) by SYSREL: 6

      .= (((((R * R) \/ (S * R)) \/ (T * R)) \/ (((R * S) \/ (S * S)) \/ (T * S))) \/ (((R \/ S) \/ T) * T)) by SYSREL: 6

      .= (((((R * R) \/ (S * R)) \/ (T * R)) \/ (((R * S) \/ (S * S)) \/ (T * S))) \/ (((R \/ S) * T) \/ (T * T))) by SYSREL: 6

      .= (((((R * R) \/ (S * R)) \/ (T * R)) \/ (((R * S) \/ (S * S)) \/ (T * S))) \/ (((R * T) \/ (S * T)) \/ (T * T))) by SYSREL: 6

      .= (((( {} \/ (S * R)) \/ (T * R)) \/ (((R * S) \/ (S * S)) \/ (T * S))) \/ (((R * T) \/ (S * T)) \/ (T * T))) by Th11

      .= (((( {} \/ {} ) \/ (T * R)) \/ (((R * S) \/ (S * S)) \/ (T * S))) \/ (((R * T) \/ (S * T)) \/ (T * T))) by Th11

      .= (((( {} \/ {} ) \/ (T * R)) \/ (( {} \/ (S * S)) \/ (T * S))) \/ (((R * T) \/ (S * T)) \/ (T * T))) by Th11

      .= (((T * R) \/ ( {} \/ (T * S))) \/ (((R * T) \/ (S * T)) \/ (T * T))) by Th11

      .= ((R \/ (T * S)) \/ (((R * T) \/ (S * T)) \/ (T * T))) by Th12

      .= ((R \/ S) \/ (((R * T) \/ (S * T)) \/ (T * T))) by Th12

      .= ((R \/ S) \/ (((R * T) \/ (S * T)) \/ T)) by SYSREL: 12

      .= ((R \/ S) \/ (( {} \/ (S * T)) \/ T)) by Th12

      .= ((R \/ S) \/ ( {} \/ T)) by Th12

      .= ( f_prox M);

      

       A9: ((( f_prox M) \ ( id ( Elements M))) * ( f_prox M)) = ( {} \/ ((R \/ S) * T)) by A1, A2, RELAT_1: 32

      .= ((R * T) \/ (S * T)) by SYSREL: 6

      .= ( {} \/ (S * T)) by Th12

      .= {} by Th12;

      ((( f_prox M) \/ (( f_prox M) ~ )) \/ ( id ( Elements M))) = ((( Flow M) \/ (( Flow M) ~ )) \/ (( id the carrier of M) \/ ( id ( Elements M)))) by A6, XBOOLE_1: 4

      .= ((( Flow M) \/ (( Flow M) ~ )) \/ ( id ( Elements M))) by A7, XBOOLE_1: 12

      .= ((( Flow M) \/ ( id ( Elements M))) \/ ((( Flow M) ~ ) \/ ( id ( Elements M)))) by XBOOLE_1: 5

      .= ((( Flow M) \/ ( id ( Elements M))) \/ ((( Flow M) ~ ) \/ (( id ( Elements M)) ~ )))

      .= (( f_flow M) \/ (( f_flow M) ~ )) by RELAT_1: 23;

      hence thesis by A8, A9;

    end;

    definition

      let M;

      :: FF_SIEC:def11

      func f_places (M) -> set equals the carrier of M;

      correctness ;

      :: FF_SIEC:def12

      func f_transitions (M) -> set equals the carrier' of M;

      correctness ;

      :: FF_SIEC:def13

      func f_pre (M) -> Relation equals (( Flow M) | the carrier' of M);

      correctness ;

      :: FF_SIEC:def14

      func f_post (M) -> Relation equals ((( Flow M) ~ ) | the carrier' of M);

      correctness ;

    end

    theorem :: FF_SIEC:22

    ( f_pre M) c= [:( f_transitions M), ( f_places M):] & ( f_post M) c= [:( f_transitions M), ( f_places M):]

    proof

      

       A1: for x,y be object holds [x, y] in ( f_pre M) implies [x, y] in [:( f_transitions M), ( f_places M):]

      proof

        let x,y be object;

        assume

         A2: [x, y] in ( f_pre M);

        then

         A3: x in the carrier' of M by RELAT_1:def 11;

         [x, y] in ( Flow M) by A2, RELAT_1:def 11;

        then y in the carrier of M by A3, Th7;

        hence thesis by A3, ZFMISC_1: 87;

      end;

      for x,y be object holds [x, y] in ( f_post M) implies [x, y] in [:( f_transitions M), ( f_places M):]

      proof

        let x,y be object;

        assume

         A4: [x, y] in ( f_post M);

        then

         A5: [x, y] in (( Flow M) ~ ) by RELAT_1:def 11;

        

         A6: x in the carrier' of M by A4, RELAT_1:def 11;

         [y, x] in ( Flow M) by A5, RELAT_1:def 7;

        then y in the carrier of M by A6, Th7;

        hence thesis by A6, ZFMISC_1: 87;

      end;

      hence thesis by A1, RELAT_1:def 3;

    end;

    theorem :: FF_SIEC:23

    ( f_prox M) c= [:( Elements M), ( Elements M):] & ( f_flow M) c= [:( Elements M), ( Elements M):]

    proof

      

       A1: (( Flow M) | the carrier of M) c= ( Flow M) by RELAT_1: 59;

      ( Flow M) c= [:( Elements M), ( Elements M):] by Th8;

      then

       A2: (( Flow M) | the carrier of M) c= [:( Elements M), ( Elements M):] by A1, XBOOLE_1: 1;

      

       A3: ((( Flow M) ~ ) | the carrier of M) c= (( Flow M) ~ ) by RELAT_1: 59;

      (( Flow M) ~ ) c= [:( Elements M), ( Elements M):] by Th8;

      then

       A4: ((( Flow M) ~ ) | the carrier of M) c= [:( Elements M), ( Elements M):] by A3, XBOOLE_1: 1;

      the carrier of M c= ( Elements M) by XBOOLE_1: 7;

      then

       A5: [:the carrier of M, the carrier of M:] c= [:( Elements M), ( Elements M):] by ZFMISC_1: 96;

      ( id the carrier of M) c= [:the carrier of M, the carrier of M:] by RELSET_1: 13;

      then

       A6: ( id the carrier of M) c= [:( Elements M), ( Elements M):] by A5, XBOOLE_1: 1;

      ((( Flow M) | the carrier of M) \/ ((( Flow M) ~ ) | the carrier of M)) c= [:( Elements M), ( Elements M):] by A2, A4, XBOOLE_1: 8;

      hence ( f_prox M) c= [:( Elements M), ( Elements M):] by A6, XBOOLE_1: 8;

      

       A7: ( Flow M) c= [:( Elements M), ( Elements M):] by Th8;

      ( id ( Elements M)) c= [:( Elements M), ( Elements M):] by RELSET_1: 13;

      hence thesis by A7, XBOOLE_1: 8;

    end;

    definition

      let M;

      :: FF_SIEC:def15

      func f_entrance (M) -> Relation equals (((( Flow M) ~ ) | the carrier of M) \/ ( id the carrier' of M));

      correctness ;

      :: FF_SIEC:def16

      func f_escape (M) -> Relation equals ((( Flow M) | the carrier of M) \/ ( id the carrier' of M));

      correctness ;

    end

    theorem :: FF_SIEC:24

    ( f_escape M) c= [:( Elements M), ( Elements M):] & ( f_entrance M) c= [:( Elements M), ( Elements M):]

    proof

      

       A1: ( id the carrier' of M) c= ( id ( Elements M)) by SYSREL: 15, XBOOLE_1: 7;

      ( id ( Elements M)) c= [:( Elements M), ( Elements M):] by RELSET_1: 13;

      then

       A2: ( id the carrier' of M) c= [:( Elements M), ( Elements M):] by A1, XBOOLE_1: 1;

      

       A3: (( Flow M) | the carrier of M) c= ( Flow M) by RELAT_1: 59;

      ( Flow M) c= [:( Elements M), ( Elements M):] by Th8;

      then (( Flow M) | the carrier of M) c= [:( Elements M), ( Elements M):] by A3, XBOOLE_1: 1;

      hence ( f_escape M) c= [:( Elements M), ( Elements M):] by A2, XBOOLE_1: 8;

      

       A4: ( id the carrier' of M) c= ( id ( Elements M)) by SYSREL: 15, XBOOLE_1: 7;

      ( id ( Elements M)) c= [:( Elements M), ( Elements M):] by RELSET_1: 13;

      then

       A5: ( id the carrier' of M) c= [:( Elements M), ( Elements M):] by A4, XBOOLE_1: 1;

      

       A6: ((( Flow M) ~ ) | the carrier of M) c= (( Flow M) ~ ) by RELAT_1: 59;

      (( Flow M) ~ ) c= [:( Elements M), ( Elements M):] by Th8;

      then ((( Flow M) ~ ) | the carrier of M) c= [:( Elements M), ( Elements M):] by A6, XBOOLE_1: 1;

      hence thesis by A5, XBOOLE_1: 8;

    end;

    theorem :: FF_SIEC:25

    ( dom ( f_escape M)) c= ( Elements M) & ( rng ( f_escape M)) c= ( Elements M) & ( dom ( f_entrance M)) c= ( Elements M) & ( rng ( f_entrance M)) c= ( Elements M)

    proof

      

       A1: for x be object holds x in ( dom ( f_escape M)) implies x in ( Elements M)

      proof

        let x be object;

        assume x in ( dom ( f_escape M));

        then x in (( dom (( Flow M) | the carrier of M)) \/ ( dom ( id the carrier' of M))) by XTUPLE_0: 23;

        then x in ( dom (( Flow M) | the carrier of M)) or x in ( dom ( id the carrier' of M)) by XBOOLE_0:def 3;

        then x in the carrier of M or x in the carrier' of M by RELAT_1: 57;

        hence thesis by XBOOLE_0:def 3;

      end;

      

       A2: for x be object holds x in ( rng ( f_escape M)) implies x in ( Elements M)

      proof

        let x be object;

        assume x in ( rng ( f_escape M));

        then

         A3: x in (( rng (( Flow M) | the carrier of M)) \/ ( rng ( id the carrier' of M))) by RELAT_1: 12;

        

         A4: x in ( rng (( Flow M) | the carrier of M)) implies thesis

        proof

          assume x in ( rng (( Flow M) | the carrier of M));

          then

          consider y be object such that

           A5: [y, x] in (( Flow M) | the carrier of M) by XTUPLE_0:def 13;

          

           A6: y in the carrier of M by A5, RELAT_1:def 11;

           [y, x] in ( Flow M) by A5, RELAT_1:def 11;

          then x in the carrier of M or x in the carrier' of M by A6, Th7;

          hence thesis by XBOOLE_0:def 3;

        end;

        x in ( rng ( id the carrier' of M)) implies thesis by XBOOLE_0:def 3;

        hence thesis by A3, A4, XBOOLE_0:def 3;

      end;

      

       A7: for x be object holds x in ( dom ( f_entrance M)) implies x in ( Elements M)

      proof

        let x be object;

        assume x in ( dom ( f_entrance M));

        then x in (( dom ((( Flow M) ~ ) | the carrier of M)) \/ ( dom ( id the carrier' of M))) by XTUPLE_0: 23;

        then x in ( dom ((( Flow M) ~ ) | the carrier of M)) or x in ( dom ( id the carrier' of M)) by XBOOLE_0:def 3;

        then x in the carrier of M or x in the carrier' of M by RELAT_1: 57;

        hence thesis by XBOOLE_0:def 3;

      end;

      for x be object holds x in ( rng ( f_entrance M)) implies x in ( Elements M)

      proof

        let x be object;

        assume x in ( rng ( f_entrance M));

        then

         A8: x in (( rng ((( Flow M) ~ ) | the carrier of M)) \/ ( rng ( id the carrier' of M))) by RELAT_1: 12;

        

         A9: x in ( rng ((( Flow M) ~ ) | the carrier of M)) implies thesis

        proof

          assume x in ( rng ((( Flow M) ~ ) | the carrier of M));

          then

          consider y be object such that

           A10: [y, x] in ((( Flow M) ~ ) | the carrier of M) by XTUPLE_0:def 13;

          

           A11: [y, x] in (( Flow M) ~ ) by A10, RELAT_1:def 11;

          

           A12: y in the carrier of M by A10, RELAT_1:def 11;

           [x, y] in ( Flow M) by A11, RELAT_1:def 7;

          then x in the carrier of M or x in the carrier' of M by A12, Th7;

          hence thesis by XBOOLE_0:def 3;

        end;

        x in ( rng ( id the carrier' of M)) implies thesis by XBOOLE_0:def 3;

        hence thesis by A8, A9, XBOOLE_0:def 3;

      end;

      hence thesis by A1, A2, A7, TARSKI:def 3;

    end;

    theorem :: FF_SIEC:26

    (( f_escape M) * ( f_escape M)) = ( f_escape M) & (( f_escape M) * ( f_entrance M)) = ( f_escape M) & (( f_entrance M) * ( f_entrance M)) = ( f_entrance M) & (( f_entrance M) * ( f_escape M)) = ( f_entrance M)

    proof

      set R = (( Flow M) | the carrier of M);

      set S = ( id the carrier' of M);

      

       A1: (S * R) = {} by Th12;

      

       A2: (R * S) = R by Th12;

      

       A3: (S * S) = S by SYSREL: 12;

      

       A4: (( f_escape M) * ( f_escape M)) = ((R * (R \/ S)) \/ (S * (R \/ S))) by SYSREL: 6

      .= (((R * R) \/ (R * S)) \/ (S * (R \/ S))) by RELAT_1: 32

      .= (((R * R) \/ (R * S)) \/ ((S * R) \/ (S * S))) by RELAT_1: 32

      .= (( {} \/ R) \/ ( {} \/ S)) by A1, A2, A3, Th11

      .= ( f_escape M);

      

       A5: (( f_escape M) * ( f_entrance M)) = ( f_escape M)

      proof

        set T = ((( Flow M) ~ ) | the carrier of M);

        

         A6: (S * T) = {} by Th12;

        

         A7: (R * S) = R by Th12;

        

         A8: (S * S) = S by SYSREL: 12;

        (( f_escape M) * ( f_entrance M)) = ((R * (T \/ S)) \/ (S * (T \/ S))) by SYSREL: 6

        .= (((R * T) \/ (R * S)) \/ (S * (T \/ S))) by RELAT_1: 32

        .= (((R * T) \/ (R * S)) \/ ((S * T) \/ (S * S))) by RELAT_1: 32

        .= (( {} \/ R) \/ ( {} \/ S)) by A6, A7, A8, Th11

        .= ( f_escape M);

        hence thesis;

      end;

      

       A9: (( f_entrance M) * ( f_entrance M)) = ( f_entrance M)

      proof

        set R = ((( Flow M) ~ ) | the carrier of M);

        

         A10: (S * R) = {} by Th12;

        

         A11: (R * S) = R by Th12;

        

         A12: (S * S) = S by SYSREL: 12;

        (( f_entrance M) * ( f_entrance M)) = ((R * (R \/ S)) \/ (S * (R \/ S))) by SYSREL: 6

        .= (((R * R) \/ (R * S)) \/ (S * (R \/ S))) by RELAT_1: 32

        .= (((R * R) \/ (R * S)) \/ ((S * R) \/ (S * S))) by RELAT_1: 32

        .= (( {} \/ R) \/ ( {} \/ S)) by A10, A11, A12, Th11

        .= ( f_entrance M);

        hence thesis;

      end;

      (( f_entrance M) * ( f_escape M)) = ( f_entrance M)

      proof

        set T = ((( Flow M) ~ ) | the carrier of M);

        

         A13: (T * S) = T by Th12;

        

         A14: (S * R) = {} by Th12;

        

         A15: (S * S) = S by SYSREL: 12;

        (( f_entrance M) * ( f_escape M)) = ((T * (R \/ S)) \/ (S * (R \/ S))) by SYSREL: 6

        .= (((T * R) \/ (T * S)) \/ (S * (R \/ S))) by RELAT_1: 32

        .= (((T * R) \/ (T * S)) \/ ((S * R) \/ (S * S))) by RELAT_1: 32

        .= (( {} \/ T) \/ ( {} \/ S)) by A13, A14, A15, Th11

        .= ( f_entrance M);

        hence thesis;

      end;

      hence thesis by A4, A5, A9;

    end;

    theorem :: FF_SIEC:27

    (( f_escape M) * (( f_escape M) \ ( id ( Elements M)))) = {} & (( f_entrance M) * (( f_entrance M) \ ( id ( Elements M)))) = {}

    proof

      set R = (( Flow M) | the carrier of M);

      set S = ( id the carrier' of M);

      

       A1: (S * R) = {} by Th12;

      (( f_escape M) * (( f_escape M) \ ( id ( Elements M)))) = ((R \/ S) * R) by Th14

      .= ((R * R) \/ (S * R)) by SYSREL: 6

      .= {} by A1, Th11;

      hence (( f_escape M) * (( f_escape M) \ ( id ( Elements M)))) = {} ;

      set R = ((( Flow M) ~ ) | the carrier of M);

      

       A2: (S * R) = {} by Th12;

      (( f_entrance M) * (( f_entrance M) \ ( id ( Elements M)))) = ((R \/ S) * R) by Th14

      .= ((R * R) \/ (S * R)) by SYSREL: 6

      .= {} by A2, Th11;

      hence thesis;

    end;

    notation

      let M;

      synonym f_circulation (M) for f_flow (M);

    end

    definition

      let M;

      :: FF_SIEC:def17

      func f_adjac (M) -> Relation equals (((( Flow M) | the carrier' of M) \/ ((( Flow M) ~ ) | the carrier' of M)) \/ ( id the carrier' of M));

      correctness ;

    end

    theorem :: FF_SIEC:28

    (( f_adjac M) * ( f_adjac M)) = ( f_adjac M) & ((( f_adjac M) \ ( id ( Elements M))) * ( f_adjac M)) = {} & ((( f_adjac M) \/ (( f_adjac M) ~ )) \/ ( id ( Elements M))) = (( f_circulation M) \/ (( f_circulation M) ~ ))

    proof

      set R = (( Flow M) | the carrier' of M);

      set S = ((( Flow M) ~ ) | the carrier' of M);

      set T = ( id the carrier' of M);

      set Q = ( id ( Elements M));

      

       A1: (((R \/ S) \/ T) \ Q) = (((R \/ T) \/ (S \/ T)) \ Q) by XBOOLE_1: 5

      .= (((R \/ T) \ ( id ( Elements M))) \/ ((S \/ T) \ ( id ( Elements M)))) by XBOOLE_1: 42

      .= (R \/ ((S \/ T) \ ( id ( Elements M)))) by Th14

      .= (R \/ S) by Th14;

      

       A2: ((R \/ S) * (R \/ S)) = (((R \/ S) * R) \/ ((R \/ S) * S)) by RELAT_1: 32

      .= (((R * R) \/ (S * R)) \/ ((R \/ S) * S)) by SYSREL: 6

      .= (((R * R) \/ (S * R)) \/ ((R * S) \/ (S * S))) by SYSREL: 6

      .= (( {} \/ (S * R)) \/ ((R * S) \/ (S * S))) by Th11

      .= (( {} \/ {} ) \/ ((R * S) \/ (S * S))) by Th11

      .= (( {} \/ {} ) \/ ( {} \/ (S * S))) by Th11

      .= {} by Th11;

      

       A3: (R \/ (S ~ )) = (R \/ (((( Flow M) | the carrier of M) ~ ) ~ )) by Th15

      .= ( Flow M) by Th16;

      

       A4: ((R ~ ) \/ S) = ((R ~ ) \/ ((( Flow M) | the carrier of M) ~ )) by Th15

      .= (( Flow M) ~ ) by Th16;

      

       A5: (((R \/ S) ~ ) \/ (R \/ S)) = (((R ~ ) \/ (S ~ )) \/ (R \/ S)) by RELAT_1: 23

      .= (((R ~ ) \/ (S \/ R)) \/ (S ~ )) by XBOOLE_1: 4

      .= ((((R ~ ) \/ S) \/ R) \/ (S ~ )) by XBOOLE_1: 4

      .= (( Flow M) \/ (( Flow M) ~ )) by A3, A4, XBOOLE_1: 4;

      

       A6: (( f_adjac M) \/ (( f_adjac M) ~ )) = (((R \/ S) \/ T) \/ (((R \/ S) ~ ) \/ (T ~ ))) by RELAT_1: 23

      .= ((((R \/ S) \/ T) \/ ((R \/ S) ~ )) \/ (T ~ )) by XBOOLE_1: 4

      .= ((((R \/ S) \/ ((R \/ S) ~ )) \/ T) \/ (T ~ )) by XBOOLE_1: 4

      .= (((R \/ S) \/ ((R \/ S) ~ )) \/ (T \/ (T ~ ))) by XBOOLE_1: 4

      .= (((R \/ S) \/ ((R \/ S) ~ )) \/ (T \/ T))

      .= ((( Flow M) \/ (( Flow M) ~ )) \/ ( id the carrier' of M)) by A5;

      

       A7: ( id the carrier' of M) c= ( id ( Elements M)) by SYSREL: 15, XBOOLE_1: 7;

      

       A8: (( f_adjac M) * ( f_adjac M)) = ((((R \/ S) \/ T) * (R \/ S)) \/ (((R \/ S) \/ T) * T)) by RELAT_1: 32

      .= (((((R \/ S) \/ T) * R) \/ (((R \/ S) \/ T) * S)) \/ (((R \/ S) \/ T) * T)) by RELAT_1: 32

      .= (((((R \/ S) * R) \/ (T * R)) \/ (((R \/ S) \/ T) * S)) \/ (((R \/ S) \/ T) * T)) by SYSREL: 6

      .= (((((R * R) \/ (S * R)) \/ (T * R)) \/ (((R \/ S) \/ T) * S)) \/ (((R \/ S) \/ T) * T)) by SYSREL: 6

      .= (((((R * R) \/ (S * R)) \/ (T * R)) \/ (((R \/ S) * S) \/ (T * S))) \/ (((R \/ S) \/ T) * T)) by SYSREL: 6

      .= (((((R * R) \/ (S * R)) \/ (T * R)) \/ (((R * S) \/ (S * S)) \/ (T * S))) \/ (((R \/ S) \/ T) * T)) by SYSREL: 6

      .= (((((R * R) \/ (S * R)) \/ (T * R)) \/ (((R * S) \/ (S * S)) \/ (T * S))) \/ (((R \/ S) * T) \/ (T * T))) by SYSREL: 6

      .= (((((R * R) \/ (S * R)) \/ (T * R)) \/ (((R * S) \/ (S * S)) \/ (T * S))) \/ (((R * T) \/ (S * T)) \/ (T * T))) by SYSREL: 6

      .= (((( {} \/ (S * R)) \/ (T * R)) \/ (((R * S) \/ (S * S)) \/ (T * S))) \/ (((R * T) \/ (S * T)) \/ (T * T))) by Th11

      .= (((( {} \/ {} ) \/ (T * R)) \/ (((R * S) \/ (S * S)) \/ (T * S))) \/ (((R * T) \/ (S * T)) \/ (T * T))) by Th11

      .= (((( {} \/ {} ) \/ (T * R)) \/ (( {} \/ (S * S)) \/ (T * S))) \/ (((R * T) \/ (S * T)) \/ (T * T))) by Th11

      .= (((T * R) \/ ( {} \/ (T * S))) \/ (((R * T) \/ (S * T)) \/ (T * T))) by Th11

      .= ((R \/ (T * S)) \/ (((R * T) \/ (S * T)) \/ (T * T))) by Th12

      .= ((R \/ S) \/ (((R * T) \/ (S * T)) \/ (T * T))) by Th12

      .= ((R \/ S) \/ (((R * T) \/ (S * T)) \/ T)) by SYSREL: 12

      .= ((R \/ S) \/ (( {} \/ (S * T)) \/ T)) by Th12

      .= ((R \/ S) \/ ( {} \/ T)) by Th12

      .= ( f_adjac M);

      

       A9: ((( f_adjac M) \ ( id ( Elements M))) * ( f_adjac M)) = ( {} \/ ((R \/ S) * T)) by A1, A2, RELAT_1: 32

      .= ((R * T) \/ (S * T)) by SYSREL: 6

      .= ( {} \/ (S * T)) by Th12

      .= {} by Th12;

      ((( f_adjac M) \/ (( f_adjac M) ~ )) \/ ( id ( Elements M))) = ((( Flow M) \/ (( Flow M) ~ )) \/ (( id the carrier' of M) \/ ( id ( Elements M)))) by A6, XBOOLE_1: 4

      .= ((( Flow M) \/ (( Flow M) ~ )) \/ ( id ( Elements M))) by A7, XBOOLE_1: 12

      .= ((( Flow M) \/ ( id ( Elements M))) \/ ((( Flow M) ~ ) \/ ( id ( Elements M)))) by XBOOLE_1: 5

      .= ((( Flow M) \/ ( id ( Elements M))) \/ ((( Flow M) ~ ) \/ (( id ( Elements M)) ~ )))

      .= (( f_circulation M) \/ (( f_circulation M) ~ )) by RELAT_1: 23;

      hence thesis by A8, A9;

    end;