flang_1.miz



    begin

    reserve E,x,y,X for set;

    reserve A,B,C,D for Subset of (E ^omega );

    reserve a,a1,a2,b,c,c1,c2,d,ab,bc for Element of (E ^omega );

    reserve e for Element of E;

    reserve i,j,k,l,n,n1,n2,m for Nat;

    definition

      let E, a, b;

      :: original: ^

      redefine

      func a ^ b -> Element of (E ^omega ) ;

      coherence by AFINSQ_1:def 7;

    end

    definition

      let E;

      :: original: <%>

      redefine

      func <%> E -> Element of (E ^omega ) ;

      coherence by AFINSQ_1:def 7;

    end

    definition

      let E be non empty set;

      let e be Element of E;

      :: original: <%

      redefine

      func <%e%> -> Element of (E ^omega ) ;

      coherence by AFINSQ_1:def 7;

    end

    definition

      let E, a;

      :: original: {

      redefine

      func {a} -> Subset of (E ^omega ) ;

      coherence by SUBSET_1: 33;

    end

    definition

      let E;

      let f be sequence of ( bool E);

      let n;

      :: original: .

      redefine

      func f . n -> Subset of E ;

      coherence

      proof

        n is Element of NAT by ORDINAL1:def 12;

        then (f . n) in ( rng f) by FUNCT_2: 112;

        hence thesis;

      end;

    end

    theorem :: FLANG_1:1

    

     Th1: n1 > n or n2 > n implies (n1 + n2) > n

    proof

      

       A1: n1 > n & n2 >= 0 implies (n1 + n2) > (n + 0 ) by XREAL_1: 8;

      

       A2: n1 >= 0 & n2 > n implies (n1 + n2) > (n + 0 ) by XREAL_1: 8;

      assume n1 > n or n2 > n;

      hence thesis by A1, A2;

    end;

    theorem :: FLANG_1:2

    

     Th2: (n1 + n) <= (n2 + 1) & n > 0 implies n1 <= n2

    proof

      assume that

       A1: (n1 + n) <= (n2 + 1) and

       A2: n > 0 ;

      (1 + 0 ) <= n by A2, NAT_1: 13;

      hence thesis by A1, XREAL_1: 8;

    end;

    theorem :: FLANG_1:3

    

     Th3: (n1 + n2) = 1 iff n1 = 1 & n2 = 0 or n1 = 0 & n2 = 1

    proof

      thus (n1 + n2) = 1 implies n1 = 1 & n2 = 0 or n1 = 0 & n2 = 1

      proof

        assume

         A1: (n1 + n2) = 1;

        now

          

           A2: n1 = 0 & n2 = 0 implies contradiction by A1;

          assume

           A3: n1 <= 1 & n2 <= 1;

          n1 = 1 & n2 = 1 implies contradiction by A1;

          hence thesis by A3, A2, NAT_1: 25;

        end;

        hence thesis by A1, Th1;

      end;

      thus thesis;

    end;

    theorem :: FLANG_1:4

    

     Th4: (a ^ b) = <%x%> iff a = ( <%> E) & b = <%x%> or b = ( <%> E) & a = <%x%>

    proof

      thus (a ^ b) = <%x%> implies a = ( <%> E) & b = <%x%> or b = ( <%> E) & a = <%x%>

      proof

        assume

         A1: (a ^ b) = <%x%>;

        then ( len (a ^ b)) = 1 by AFINSQ_1: 34;

        then (( len a) + ( len b)) = 1 by AFINSQ_1: 17;

        then ( len a) = 1 & b = ( <%> E) or a = ( <%> E) & ( len b) = 1 by Th3;

        hence thesis by A1;

      end;

      assume a = ( <%> E) & b = <%x%> or b = ( <%> E) & a = <%x%>;

      hence thesis;

    end;

    theorem :: FLANG_1:5

    

     Th5: for p,q be XFinSequence holds a = (p ^ q) implies p is Element of (E ^omega ) & q is Element of (E ^omega )

    proof

      let p,q be XFinSequence;

      assume a = (p ^ q);

      then p is XFinSequence of E & q is XFinSequence of E by AFINSQ_1: 31;

      hence thesis by AFINSQ_1:def 7;

    end;

    theorem :: FLANG_1:6

    

     Th6: for x be object holds <%x%> is Element of (E ^omega ) implies x in E

    proof

      let x be object;

      assume <%x%> is Element of (E ^omega );

      then ( rng <%x%>) c= E by RELAT_1:def 19;

      then {x} c= E by AFINSQ_1: 33;

      hence thesis by ZFMISC_1: 31;

    end;

    theorem :: FLANG_1:7

    

     Th7: ( len b) = (n + 1) implies ex c, e st ( len c) = n & b = (c ^ <%e%>)

    proof

      assume

       A1: ( len b) = (n + 1);

      then b <> {} ;

      then

      consider c9 be XFinSequence, x be object such that

       A2: b = (c9 ^ <%x%>) by AFINSQ_1: 40;

       <%x%> is Element of (E ^omega ) by A2, Th5;

      then

      reconsider e = x as Element of E by Th6;

      reconsider c = c9 as Element of (E ^omega ) by A2, Th5;

      take c, e;

      (n + 1) = (( len c) + ( len <%x%>)) by A1, A2, AFINSQ_1: 17

      .= (( len c) + 1) by AFINSQ_1: 34;

      hence thesis by A2;

    end;

    theorem :: FLANG_1:8

    

     Th8: for p be XFinSequence st p <> {} holds ex q be XFinSequence, x be object st p = ( <%x%> ^ q)

    proof

      let p be XFinSequence;

      defpred P[ Nat] means for p be XFinSequence st ( len p) = $1 & p <> {} holds ex q be XFinSequence, x be object st p = ( <%x%> ^ q);

       A1:

      now

        let n;

        assume

         A2: P[n];

        thus P[(n + 1)]

        proof

          let p be XFinSequence such that

           A3: ( len p) = (n + 1) and

           A4: p <> {} ;

          consider q be XFinSequence, x be object such that

           A5: p = (q ^ <%x%>) by A4, AFINSQ_1: 40;

          

           A6: (n + 1) = (( len q) + ( len <%x%>)) by A3, A5, AFINSQ_1: 17

          .= (( len q) + 1) by AFINSQ_1: 34;

          per cases ;

            suppose q = {} ;

            

            then p = ( {} ^ <%x%>) by A5

            .= ( <%x%> ^ {} );

            hence thesis;

          end;

            suppose q <> {} ;

            then

            consider r be XFinSequence, y be object such that

             A7: q = ( <%y%> ^ r) by A2, A6;

            p = ( <%y%> ^ (r ^ <%x%>)) by A5, A7, AFINSQ_1: 27;

            hence thesis;

          end;

        end;

      end;

      

       A8: P[ 0 ];

      

       A9: for n holds P[n] from NAT_1:sch 2( A8, A1);

      

       A10: ( len p) = ( len p);

      assume p <> {} ;

      hence thesis by A9, A10;

    end;

    theorem :: FLANG_1:9

    ( len b) = (n + 1) implies ex c, e st ( len c) = n & b = ( <%e%> ^ c)

    proof

      assume

       A1: ( len b) = (n + 1);

      then b <> {} ;

      then

      consider c9 be XFinSequence, x be object such that

       A2: b = ( <%x%> ^ c9) by Th8;

       <%x%> is Element of (E ^omega ) by A2, Th5;

      then

      reconsider e = x as Element of E by Th6;

      reconsider c = c9 as Element of (E ^omega ) by A2, Th5;

      take c, e;

      (n + 1) = (( len c) + ( len <%x%>)) by A1, A2, AFINSQ_1: 17

      .= (( len c) + 1) by AFINSQ_1: 34;

      hence thesis by A2;

    end;

    

     Lm1: for p be XFinSequence st ( len p) = (i + j) holds ex q1,q2 be XFinSequence st ( len q1) = i & ( len q2) = j & p = (q1 ^ q2) by AFINSQ_1: 61;

    theorem :: FLANG_1:10

    ( len b) = (n + m) implies ex c1, c2 st ( len c1) = n & ( len c2) = m & b = (c1 ^ c2)

    proof

      assume ( len b) = (n + m);

      then

      consider c19,c29 be XFinSequence such that

       A1: ( len c19) = n & ( len c29) = m and

       A2: b = (c19 ^ c29) by Lm1;

      reconsider c2 = c29 as Element of (E ^omega ) by A2, Th5;

      reconsider c1 = c19 as Element of (E ^omega ) by A2, Th5;

      take c1, c2;

      thus thesis by A1, A2;

    end;

    theorem :: FLANG_1:11

    

     Th11: (a ^ a) = a implies a = {}

    proof

      assume (a ^ a) = a;

      then (( len a) + ( len a)) = ( len a) by AFINSQ_1: 17;

      hence thesis;

    end;

    begin

    definition

      let E, A, B;

      :: FLANG_1:def1

      func A ^^ B -> Subset of (E ^omega ) means

      : Def1: x in it iff ex a, b st a in A & b in B & x = (a ^ b);

      existence

      proof

        defpred P[ set] means ex a, b st a in A & b in B & $1 = (a ^ b);

        consider C such that

         A1: x in C iff x in (E ^omega ) & P[x] from SUBSET_1:sch 1;

        take C;

        thus thesis by A1;

      end;

      uniqueness

      proof

        let C1,C2 be Subset of (E ^omega ) such that

         A2: x in C1 iff ex a, b st a in A & b in B & x = (a ^ b) and

         A3: x in C2 iff ex a, b st a in A & b in B & x = (a ^ b);

        now

          let x be object;

          thus x in C1 implies x in C2

          proof

            assume x in C1;

            then ex a, b st a in A & b in B & x = (a ^ b) by A2;

            hence thesis by A3;

          end;

          assume x in C2;

          then ex a, b st a in A & b in B & x = (a ^ b) by A3;

          hence x in C1 by A2;

        end;

        hence thesis by TARSKI: 2;

      end;

    end

    theorem :: FLANG_1:12

    

     Th12: (A ^^ B) = {} iff A = {} or B = {}

    proof

      thus (A ^^ B) = {} implies A = {} or B = {}

      proof

        assume that

         A1: (A ^^ B) = {} and

         A2: A <> {} and

         A3: B <> {} ;

        consider a such that

         A4: a in A by A2, SUBSET_1: 4;

        consider b such that

         A5: b in B by A3, SUBSET_1: 4;

        (a ^ b) in (A ^^ B) by A4, A5, Def1;

        hence contradiction by A1;

      end;

      assume

       A6: A = {} or B = {} ;

       not ex x be object st x in (A ^^ B)

      proof

        given x be object such that

         A7: x in (A ^^ B);

        ex a, b st a in A & b in B & x = (a ^ b) by A7, Def1;

        hence contradiction by A6;

      end;

      hence thesis by XBOOLE_0:def 1;

    end;

    theorem :: FLANG_1:13

    

     Th13: (A ^^ {( <%> E)}) = A & ( {( <%> E)} ^^ A) = A

    proof

      

       A1: for x be object holds x in (A ^^ {( <%> E)}) implies x in A

      proof

        let x be object;

        assume x in (A ^^ {( <%> E)});

        then

        consider a, d such that

         A2: a in A and

         A3: d in {( <%> E)} & x = (a ^ d) by Def1;

        x = (a ^ {} ) by A3, TARSKI:def 1;

        hence thesis by A2;

      end;

      

       A4: for x be object holds x in A implies x in ( {( <%> E)} ^^ A)

      proof

        let x be object;

        assume

         A5: x in A;

        ex d, a st d in {( <%> E)} & a in A & x = (d ^ a)

        proof

          reconsider a = x as Element of (E ^omega ) by A5;

          consider d such that

           A6: d = ( <%> E);

          take d, a;

          thus thesis by A5, A6, TARSKI:def 1;

        end;

        hence thesis by Def1;

      end;

      

       A7: for x be object holds x in A implies x in (A ^^ {( <%> E)})

      proof

        let x be object;

        assume

         A8: x in A;

        ex a, d st a in A & d in {( <%> E)} & x = (a ^ d)

        proof

          reconsider a = x as Element of (E ^omega ) by A8;

          set d = ( <%> E);

          take a, d;

          thus thesis by A8, TARSKI:def 1;

        end;

        hence thesis by Def1;

      end;

      for x be object holds x in ( {( <%> E)} ^^ A) implies x in A

      proof

        let x be object;

        assume x in ( {( <%> E)} ^^ A);

        then

        consider d, a such that

         A9: d in {( <%> E)} and

         A10: a in A and

         A11: x = (d ^ a) by Def1;

        x = ( {} ^ a) by A9, A11, TARSKI:def 1;

        hence thesis by A10;

      end;

      hence thesis by A1, A4, A7, TARSKI: 2;

    end;

    theorem :: FLANG_1:14

    

     Th14: (A ^^ B) = {( <%> E)} iff A = {( <%> E)} & B = {( <%> E)}

    proof

      thus (A ^^ B) = {( <%> E)} implies A = {( <%> E)} & B = {( <%> E)}

      proof

        assume that

         A1: (A ^^ B) = {( <%> E)} and

         A2: A <> {( <%> E)} or B <> {( <%> E)};

        ( <%> E) in (A ^^ B) by A1, TARSKI:def 1;

        then

        consider a, b such that

         A3: a in A and

         A4: b in B and ( <%> E) = (a ^ b) by Def1;

         A5:

        now

          let x;

          assume that

           A6: x in A or x in B and

           A7: x <> ( <%> E);

           A8:

          now

            assume

             A9: x in B;

            then

            reconsider xb = x as Element of (E ^omega );

            

             A10: (a ^ xb) <> ( <%> E) by A7, AFINSQ_1: 30;

            (a ^ xb) in (A ^^ B) by A3, A9, Def1;

            hence contradiction by A1, A10, TARSKI:def 1;

          end;

          now

            assume

             A11: x in A;

            then

            reconsider xa = x as Element of (E ^omega );

            

             A12: (xa ^ b) <> ( <%> E) by A7, AFINSQ_1: 30;

            (xa ^ b) in (A ^^ B) by A4, A11, Def1;

            hence contradiction by A1, A12, TARSKI:def 1;

          end;

          hence contradiction by A6, A8;

        end;

        then

         A13: for x be object holds x in B iff x = ( <%> E) by A4;

        for x be object holds x in A iff x = ( <%> E) by A3, A5;

        hence contradiction by A2, A13, TARSKI:def 1;

      end;

      assume A = {( <%> E)} & B = {( <%> E)};

      hence thesis by Th13;

    end;

    theorem :: FLANG_1:15

    

     Th15: ( <%> E) in (A ^^ B) iff ( <%> E) in A & ( <%> E) in B

    proof

      thus ( <%> E) in (A ^^ B) implies ( <%> E) in A & ( <%> E) in B

      proof

        assume ( <%> E) in (A ^^ B);

        then ex a, b st a in A & b in B & (a ^ b) = ( <%> E) by Def1;

        hence thesis by AFINSQ_1: 30;

      end;

      assume ( <%> E) in A & ( <%> E) in B;

      then ( {} ^ ( <%> E)) in (A ^^ B) by Def1;

      hence thesis;

    end;

    theorem :: FLANG_1:16

    

     Th16: ( <%> E) in B implies A c= (A ^^ B) & A c= (B ^^ A)

    proof

      assume

       A1: ( <%> E) in B;

      thus A c= (A ^^ B)

      proof

        let x be object;

        assume

         A2: x in A;

        then

        reconsider xa = x as Element of (E ^omega );

        (xa ^ {} ) in (A ^^ B) by A1, A2, Def1;

        hence thesis;

      end;

      thus A c= (B ^^ A)

      proof

        let x be object;

        assume

         A3: x in A;

        then

        reconsider xa = x as Element of (E ^omega );

        ( {} ^ xa) in (B ^^ A) by A1, A3, Def1;

        hence thesis;

      end;

    end;

    theorem :: FLANG_1:17

    

     Th17: A c= C & B c= D implies (A ^^ B) c= (C ^^ D)

    proof

      assume

       A1: A c= C & B c= D;

      thus thesis

      proof

        let x be object;

        assume x in (A ^^ B);

        then ex a, b st a in A & b in B & x = (a ^ b) by Def1;

        hence thesis by A1, Def1;

      end;

    end;

    theorem :: FLANG_1:18

    

     Th18: ((A ^^ B) ^^ C) = (A ^^ (B ^^ C))

    proof

      now

        let x be object;

        thus x in ((A ^^ B) ^^ C) implies x in (A ^^ (B ^^ C))

        proof

          assume x in ((A ^^ B) ^^ C);

          then

          consider ab, c such that

           A1: ab in (A ^^ B) and

           A2: c in C & x = (ab ^ c) by Def1;

          consider a, b such that

           A3: a in A and

           A4: b in B & ab = (a ^ b) by A1, Def1;

          x = (a ^ (b ^ c)) & (b ^ c) in (B ^^ C) by A2, A4, Def1, AFINSQ_1: 27;

          hence thesis by A3, Def1;

        end;

        assume x in (A ^^ (B ^^ C));

        then

        consider a, bc such that

         A5: a in A and

         A6: bc in (B ^^ C) and

         A7: x = (a ^ bc) by Def1;

        consider b, c such that

         A8: b in B and

         A9: c in C and

         A10: bc = (b ^ c) by A6, Def1;

        x = ((a ^ b) ^ c) & (a ^ b) in (A ^^ B) by A5, A7, A8, A10, Def1, AFINSQ_1: 27;

        hence x in ((A ^^ B) ^^ C) by A9, Def1;

      end;

      hence thesis by TARSKI: 2;

    end;

    theorem :: FLANG_1:19

    

     Th19: (A ^^ (B /\ C)) c= ((A ^^ B) /\ (A ^^ C)) & ((B /\ C) ^^ A) c= ((B ^^ A) /\ (C ^^ A))

    proof

      thus (A ^^ (B /\ C)) c= ((A ^^ B) /\ (A ^^ C))

      proof

        let x be object;

        assume x in (A ^^ (B /\ C));

        then

        consider a, bc such that

         A1: a in A and

         A2: bc in (B /\ C) and

         A3: x = (a ^ bc) by Def1;

        bc in C by A2, XBOOLE_0:def 4;

        then

         A4: x in (A ^^ C) by A1, A3, Def1;

        bc in B by A2, XBOOLE_0:def 4;

        then x in (A ^^ B) by A1, A3, Def1;

        hence thesis by A4, XBOOLE_0:def 4;

      end;

      thus ((B /\ C) ^^ A) c= ((B ^^ A) /\ (C ^^ A))

      proof

        let x be object;

        assume x in ((B /\ C) ^^ A);

        then

        consider bc, a such that

         A5: bc in (B /\ C) and

         A6: a in A & x = (bc ^ a) by Def1;

        bc in C by A5, XBOOLE_0:def 4;

        then

         A7: x in (C ^^ A) by A6, Def1;

        bc in B by A5, XBOOLE_0:def 4;

        then x in (B ^^ A) by A6, Def1;

        hence thesis by A7, XBOOLE_0:def 4;

      end;

    end;

    theorem :: FLANG_1:20

    

     Th20: ((A ^^ B) \/ (A ^^ C)) = (A ^^ (B \/ C)) & ((B ^^ A) \/ (C ^^ A)) = ((B \/ C) ^^ A)

    proof

      

       A1: (A ^^ (B \/ C)) c= ((A ^^ B) \/ (A ^^ C))

      proof

        let x be object;

        assume x in (A ^^ (B \/ C));

        then

        consider a, bc such that

         A2: a in A and

         A3: bc in (B \/ C) and

         A4: x = (a ^ bc) by Def1;

        bc in B or bc in C by A3, XBOOLE_0:def 3;

        then x in (A ^^ B) or x in (A ^^ C) by A2, A4, Def1;

        hence thesis by XBOOLE_0:def 3;

      end;

      

       A5: ((B \/ C) ^^ A) c= ((B ^^ A) \/ (C ^^ A))

      proof

        let x be object;

        assume x in ((B \/ C) ^^ A);

        then

        consider bc, a such that

         A6: bc in (B \/ C) and

         A7: a in A & x = (bc ^ a) by Def1;

        bc in B or bc in C by A6, XBOOLE_0:def 3;

        then x in (B ^^ A) or x in (C ^^ A) by A7, Def1;

        hence thesis by XBOOLE_0:def 3;

      end;

      C c= (B \/ C) by XBOOLE_1: 7;

      then

       A8: (C ^^ A) c= ((B \/ C) ^^ A) by Th17;

      B c= (B \/ C) by XBOOLE_1: 7;

      then (B ^^ A) c= ((B \/ C) ^^ A) by Th17;

      then

       A9: ((B ^^ A) \/ (C ^^ A)) c= ((B \/ C) ^^ A) by A8, XBOOLE_1: 8;

      C c= (B \/ C) by XBOOLE_1: 7;

      then

       A10: (A ^^ C) c= (A ^^ (B \/ C)) by Th17;

      B c= (B \/ C) by XBOOLE_1: 7;

      then (A ^^ B) c= (A ^^ (B \/ C)) by Th17;

      then ((A ^^ B) \/ (A ^^ C)) c= (A ^^ (B \/ C)) by A10, XBOOLE_1: 8;

      hence thesis by A1, A5, A9, XBOOLE_0:def 10;

    end;

    theorem :: FLANG_1:21

    

     Th21: ((A ^^ B) \ (A ^^ C)) c= (A ^^ (B \ C)) & ((B ^^ A) \ (C ^^ A)) c= ((B \ C) ^^ A)

    proof

      thus ((A ^^ B) \ (A ^^ C)) c= (A ^^ (B \ C))

      proof

        let x be object;

        assume

         A1: x in ((A ^^ B) \ (A ^^ C));

        then x in (A ^^ B) by XBOOLE_0:def 5;

        then

        consider a, b such that

         A2: a in A and

         A3: b in B and

         A4: x = (a ^ b) by Def1;

         A5:

        now

          assume not b in C;

          then b in (B \ C) by A3, XBOOLE_0:def 5;

          hence thesis by A2, A4, Def1;

        end;

         not x in (A ^^ C) by A1, XBOOLE_0:def 5;

        hence thesis by A2, A4, A5, Def1;

      end;

      thus ((B ^^ A) \ (C ^^ A)) c= ((B \ C) ^^ A)

      proof

        let x be object;

        assume

         A6: x in ((B ^^ A) \ (C ^^ A));

        then x in (B ^^ A) by XBOOLE_0:def 5;

        then

        consider b, a such that

         A7: b in B and

         A8: a in A & x = (b ^ a) by Def1;

         A9:

        now

          assume not b in C;

          then b in (B \ C) by A7, XBOOLE_0:def 5;

          hence thesis by A8, Def1;

        end;

         not x in (C ^^ A) by A6, XBOOLE_0:def 5;

        hence thesis by A8, A9, Def1;

      end;

    end;

    theorem :: FLANG_1:22

    ((A ^^ B) \+\ (A ^^ C)) c= (A ^^ (B \+\ C)) & ((B ^^ A) \+\ (C ^^ A)) c= ((B \+\ C) ^^ A)

    proof

      ((A ^^ B) \+\ (A ^^ C)) = (((A ^^ B) \/ (A ^^ C)) \ ((A ^^ B) /\ (A ^^ C))) by XBOOLE_1: 101

      .= ((A ^^ (B \/ C)) \ ((A ^^ B) /\ (A ^^ C))) by Th20;

      then

       A1: ((A ^^ B) \+\ (A ^^ C)) c= ((A ^^ (B \/ C)) \ (A ^^ (B /\ C))) by Th19, XBOOLE_1: 34;

      ((B ^^ A) \+\ (C ^^ A)) = (((B ^^ A) \/ (C ^^ A)) \ ((B ^^ A) /\ (C ^^ A))) by XBOOLE_1: 101

      .= (((B \/ C) ^^ A) \ ((B ^^ A) /\ (C ^^ A))) by Th20;

      then

       A2: ((B ^^ A) \+\ (C ^^ A)) c= (((B \/ C) ^^ A) \ ((B /\ C) ^^ A)) by Th19, XBOOLE_1: 34;

      (((B \/ C) ^^ A) \ ((B /\ C) ^^ A)) c= (((B \/ C) \ (B /\ C)) ^^ A) by Th21;

      then

       A3: ((B ^^ A) \+\ (C ^^ A)) c= (((B \/ C) \ (B /\ C)) ^^ A) by A2;

      ((A ^^ (B \/ C)) \ (A ^^ (B /\ C))) c= (A ^^ ((B \/ C) \ (B /\ C))) by Th21;

      then ((A ^^ B) \+\ (A ^^ C)) c= (A ^^ ((B \/ C) \ (B /\ C))) by A1;

      hence thesis by A3, XBOOLE_1: 101;

    end;

    begin

    definition

      let E, A, n;

      :: FLANG_1:def2

      func A |^ n -> Subset of (E ^omega ) means

      : Def2: ex concat be sequence of ( bool (E ^omega )) st it = (concat . n) & (concat . 0 ) = {( <%> E)} & for i holds (concat . (i + 1)) = ((concat . i) ^^ A);

      existence

      proof

        defpred P[ set, set, set] means ex B, C st C = $3 & B = $2 & C = (B ^^ A);

        

         A1: for i be Nat holds for x be Element of ( bool (E ^omega )) holds ex y be Element of ( bool (E ^omega )) st P[i, x, y]

        proof

          let i be Nat;

          let x be Element of ( bool (E ^omega ));

          take (x ^^ A);

          thus thesis;

        end;

        consider f be sequence of ( bool (E ^omega )) such that

         A2: (f . 0 ) = {( <%> E)} & for i be Nat holds P[i, (f . i), (f . (i + 1))] from RECDEF_1:sch 2( A1);

        consider C be Subset of (E ^omega ) such that

         A3: C = (f . n);

        take C;

        now

          let i;

          reconsider j = i as Element of NAT by ORDINAL1:def 12;

          ex B, C st C = (f . (j + 1)) & B = (f . j) & C = (B ^^ A) by A2;

          hence (f . (i + 1)) = ((f . i) ^^ A);

        end;

        hence thesis by A2, A3;

      end;

      uniqueness

      proof

        let C1,C2 be Subset of (E ^omega );

        given f1 be sequence of ( bool (E ^omega )) such that

         A4: C1 = (f1 . n) and

         A5: (f1 . 0 ) = {( <%> E)} and

         A6: for i holds (f1 . (i + 1)) = ((f1 . i) ^^ A);

        given f2 be sequence of ( bool (E ^omega )) such that

         A7: C2 = (f2 . n) and

         A8: (f2 . 0 ) = {( <%> E)} and

         A9: for i holds (f2 . (i + 1)) = ((f2 . i) ^^ A);

        defpred P[ Nat] means (f1 . $1) = (f2 . $1);

         A10:

        now

          let k;

          assume

           A11: P[k];

          (f2 . (k + 1)) = ((f2 . k) ^^ A) by A9;

          hence P[(k + 1)] by A6, A11;

        end;

        

         A12: P[ 0 ] by A5, A8;

        for k holds P[k] from NAT_1:sch 2( A12, A10);

        hence thesis by A4, A7;

      end;

    end

    theorem :: FLANG_1:23

    

     Th23: (A |^ (n + 1)) = ((A |^ n) ^^ A)

    proof

      consider concat be sequence of ( bool (E ^omega )) such that

       A1: (A |^ n) = (concat . n) and

       A2: (concat . 0 ) = {( <%> E)} and

       A3: for i holds (concat . (i + 1)) = ((concat . i) ^^ A) by Def2;

      (concat . (n + 1)) = ((A |^ n) ^^ A) by A1, A3;

      hence thesis by A2, A3, Def2;

    end;

    theorem :: FLANG_1:24

    

     Th24: (A |^ 0 ) = {( <%> E)}

    proof

      ex concat be sequence of ( bool (E ^omega )) st (A |^ 0 ) = (concat . 0 ) & (concat . 0 ) = {( <%> E)} & for i holds (concat . (i + 1)) = ((concat . i) ^^ A) by Def2;

      hence thesis;

    end;

    theorem :: FLANG_1:25

    

     Th25: (A |^ 1) = A

    proof

      consider concat be sequence of ( bool (E ^omega )) such that

       A1: (A |^ 1) = (concat . 1) and

       A2: (concat . 0 ) = {( <%> E)} & for i holds (concat . (i + 1)) = ((concat . i) ^^ A) by Def2;

      

      thus (A |^ 1) = (concat . ( 0 + 1)) by A1

      .= ( {( <%> E)} ^^ A) by A2

      .= A by Th13;

    end;

    theorem :: FLANG_1:26

    

     Th26: (A |^ 2) = (A ^^ A)

    proof

      

      thus (A |^ 2) = (A |^ (1 + 1))

      .= ((A |^ 1) ^^ A) by Th23

      .= (A ^^ A) by Th25;

    end;

    theorem :: FLANG_1:27

    

     Th27: (A |^ n) = {} iff n > 0 & A = {}

    proof

      defpred P[ Nat] means (A |^ $1) = {} ;

      thus (A |^ n) = {} implies n > 0 & A = {}

      proof

        assume that

         A1: (A |^ n) = {} and

         A2: n <= 0 or A <> {} ;

         A3:

        now

          defpred P[ Nat] means (A |^ $1) <> {} ;

          assume

           A4: A <> {} ;

           A5:

          now

            let n;

            assume P[n];

            then

            consider a1 such that

             A6: a1 in (A |^ n) by SUBSET_1: 4;

            consider a2 such that

             A7: a2 in A by A4, SUBSET_1: 4;

            (a1 ^ a2) in ((A |^ n) ^^ A) by A6, A7, Def1;

            hence P[(n + 1)] by Th23;

          end;

          (A |^ 0 ) = {( <%> E)} by Th24;

          then

           A8: P[ 0 ];

          for n holds P[n] from NAT_1:sch 2( A8, A5);

          hence contradiction by A1;

        end;

        now

          assume n <= 0 ;

          then n = 0 ;

          then (A |^ n) = {( <%> E)} by Th24;

          hence contradiction by A1;

        end;

        hence thesis by A2, A3;

      end;

      assume that

       A9: n > 0 and

       A10: A = {} ;

       A11:

      now

        let m be Nat;

        assume that 1 <= m and P[m];

        (( {} (E ^omega )) |^ (m + 1)) = ((( {} (E ^omega )) |^ m) ^^ ( {} (E ^omega ))) by Th23

        .= {} by Th12;

        hence P[(m + 1)] by A10;

      end;

      

       A12: P[1] by A10, Th25;

      

       A13: for m be Nat st m >= 1 holds P[m] from NAT_1:sch 8( A12, A11);

      n >= ( 0 + 1) by A9, NAT_1: 13;

      hence thesis by A13;

    end;

    theorem :: FLANG_1:28

    

     Th28: ( {( <%> E)} |^ n) = {( <%> E)}

    proof

      defpred P[ Nat] means ( {( <%> E)} |^ $1) = {( <%> E)};

       A1:

      now

        let n;

        assume

         A2: P[n];

        ( {( <%> E)} |^ (n + 1)) = (( {( <%> E)} |^ n) ^^ {( <%> E)}) by Th23

        .= {( <%> E)} by A2, Th13;

        hence P[(n + 1)];

      end;

      

       A3: P[ 0 ] by Th24;

      for n holds P[n] from NAT_1:sch 2( A3, A1);

      hence thesis;

    end;

    theorem :: FLANG_1:29

    (A |^ n) = {( <%> E)} iff n = 0 or A = {( <%> E)}

    proof

      thus (A |^ n) = {( <%> E)} implies n = 0 or A = {( <%> E)}

      proof

        assume

         A1: (A |^ n) = {( <%> E)};

        now

          assume n > 0 ;

          then

          consider m such that

           A2: (m + 1) = n by NAT_1: 6;

          (A |^ n) = ((A |^ m) ^^ A) by A2, Th23;

          hence A = {( <%> E)} by A1, Th14;

        end;

        hence thesis;

      end;

      assume n = 0 or A = {( <%> E)};

      hence thesis by Th24, Th28;

    end;

    theorem :: FLANG_1:30

    

     Th30: ( <%> E) in A implies ( <%> E) in (A |^ n)

    proof

      defpred P[ Nat] means ( <%> E) in (A |^ $1);

      assume

       A1: ( <%> E) in A;

       A2:

      now

        let n;

        assume P[n];

        then ( <%> E) in ((A |^ n) ^^ A) by A1, Th15;

        hence P[(n + 1)] by Th23;

      end;

      (A |^ 0 ) = {( <%> E)} by Th24;

      then

       A3: P[ 0 ] by TARSKI:def 1;

      for n holds P[n] from NAT_1:sch 2( A3, A2);

      hence thesis;

    end;

    theorem :: FLANG_1:31

    ( <%> E) in (A |^ n) & n > 0 implies ( <%> E) in A

    proof

      assume that

       A1: ( <%> E) in (A |^ n) and

       A2: n > 0 ;

      consider m such that

       A3: (m + 1) = n by A2, NAT_1: 6;

      (A |^ n) = ((A |^ m) ^^ A) by A3, Th23;

      then ex a1, a2 st a1 in (A |^ m) & a2 in A & (a1 ^ a2) = ( <%> E) by A1, Def1;

      hence thesis by AFINSQ_1: 30;

    end;

    theorem :: FLANG_1:32

    

     Th32: ((A |^ n) ^^ A) = (A ^^ (A |^ n))

    proof

      defpred P[ Nat] means ((A |^ $1) ^^ A) = (A ^^ (A |^ $1));

       A1:

      now

        let n;

        assume

         A2: P[n];

        ((A |^ (n + 1)) ^^ A) = (((A |^ n) ^^ A) ^^ A) by Th23

        .= (A ^^ ((A |^ n) ^^ A)) by A2, Th18

        .= (A ^^ (A |^ (n + 1))) by Th23;

        hence P[(n + 1)];

      end;

      ((A |^ 0 ) ^^ A) = ( {( <%> E)} ^^ A) by Th24

      .= A by Th13

      .= (A ^^ {( <%> E)}) by Th13

      .= (A ^^ (A |^ 0 )) by Th24;

      then

       A3: P[ 0 ];

      for n holds P[n] from NAT_1:sch 2( A3, A1);

      hence thesis;

    end;

    theorem :: FLANG_1:33

    

     Th33: (A |^ (m + n)) = ((A |^ m) ^^ (A |^ n))

    proof

      defpred P[ Nat] means for m, n st (m + n) <= $1 holds (A |^ (m + n)) = ((A |^ m) ^^ (A |^ n));

       A1:

      now

        let l;

        assume

         A2: P[l];

        now

          let m,n be Nat;

           A3:

          now

            assume (m + n) < (l + 1);

            then (m + n) <= l by NAT_1: 13;

            hence (A |^ (m + n)) = ((A |^ m) ^^ (A |^ n)) by A2;

          end;

           A4:

          now

            assume

             A5: (m + n) = (l + 1);

             A6:

            now

              assume

               A7: n = 0 ;

              

              thus (A |^ (m + n)) = ((A |^ (l + 1)) ^^ {( <%> E)}) by A5, Th13

              .= ((A |^ m) ^^ (A |^ n)) by A5, A7, Th24;

            end;

             A8:

            now

              assume that

               A9: m > 0 and

               A10: n > 0 ;

              consider k such that

               A11: (k + 1) = m by A9, NAT_1: 6;

              (A |^ (m + n)) = (A |^ ((k + n) + 1)) by A11

              .= ((A |^ (k + n)) ^^ A) by Th23

              .= (A ^^ (A |^ (k + n))) by Th32

              .= (A ^^ ((A |^ k) ^^ (A |^ n))) by A2, A5, A11

              .= ((A ^^ (A |^ k)) ^^ (A |^ n)) by Th18

              .= (((A |^ k) ^^ A) ^^ (A |^ n)) by Th32

              .= (((A |^ k) ^^ (A |^ 1)) ^^ (A |^ n)) by Th25

              .= ((A |^ m) ^^ (A |^ n)) by A2, A5, A10, A11, Th2;

              hence (A |^ (m + n)) = ((A |^ m) ^^ (A |^ n));

            end;

            now

              assume

               A12: m = 0 ;

              

              thus (A |^ (m + n)) = ( {( <%> E)} ^^ (A |^ (l + 1))) by A5, Th13

              .= ((A |^ m) ^^ (A |^ n)) by A5, A12, Th24;

            end;

            hence (A |^ (m + n)) = ((A |^ m) ^^ (A |^ n)) by A6, A8;

          end;

          assume (m + n) <= (l + 1);

          hence (A |^ (m + n)) = ((A |^ m) ^^ (A |^ n)) by A4, A3, XXREAL_0: 1;

        end;

        hence P[(l + 1)];

      end;

      

       A13: P[ 0 ]

      proof

        let m, n;

        assume

         A14: (m + n) <= 0 ;

        then

         A15: m = 0 ;

        

         A16: (m + n) = 0 by A14;

        

        hence (A |^ (m + n)) = ((A |^ 0 ) ^^ {( <%> E)}) by Th13

        .= ((A |^ m) ^^ (A |^ n)) by A16, A15, Th24;

      end;

      for l holds P[l] from NAT_1:sch 2( A13, A1);

      hence thesis;

    end;

    theorem :: FLANG_1:34

    ((A |^ m) |^ n) = (A |^ (m * n))

    proof

      defpred P[ Nat] means for m, n st (m + n) <= $1 holds ((A |^ m) |^ n) = (A |^ (m * n));

       A1:

      now

        let l;

        assume

         A2: P[l];

        now

          let m, n;

           A3:

          now

            assume (m + n) < (l + 1);

            then (m + n) <= l by NAT_1: 13;

            hence ((A |^ m) |^ n) = (A |^ (m * n)) by A2;

          end;

           A4:

          now

            assume

             A5: (m + n) = (l + 1);

             A6:

            now

              assume that m > 0 and

               A7: n > 0 ;

              consider k such that

               A8: (k + 1) = n by A7, NAT_1: 6;

              

               A9: (m + k) <= l by A5, A8;

              ((A |^ m) |^ n) = (((A |^ m) |^ k) ^^ (A |^ m)) by A8, Th23

              .= ((A |^ (m * k)) ^^ (A |^ m)) by A2, A9

              .= (A |^ ((m * k) + m)) by Th33

              .= (A |^ (m * n)) by A8;

              hence ((A |^ m) |^ n) = (A |^ (m * n));

            end;

             A10:

            now

              assume

               A11: n = 0 ;

              

              hence ((A |^ m) |^ n) = {( <%> E)} by Th24

              .= (A |^ (m * n)) by A11, Th24;

            end;

            now

              assume

               A12: m = 0 ;

              

              hence ((A |^ m) |^ n) = ( {( <%> E)} |^ n) by Th24

              .= {( <%> E)} by Th28

              .= (A |^ (m * n)) by A12, Th24;

            end;

            hence ((A |^ m) |^ n) = (A |^ (m * n)) by A10, A6;

          end;

          assume (m + n) <= (l + 1);

          hence ((A |^ m) |^ n) = (A |^ (m * n)) by A4, A3, XXREAL_0: 1;

        end;

        hence P[(l + 1)];

      end;

      

       A13: P[ 0 ]

      proof

        let m, n;

        assume

         A14: (m + n) <= 0 ;

        then

         A15: m = 0 ;

        n = 0 by A14;

        

        hence ((A |^ m) |^ n) = {( <%> E)} by Th24

        .= (A |^ (m * n)) by A15, Th24;

      end;

      

       A16: for l holds P[l] from NAT_1:sch 2( A13, A1);

      now

        let m, n;

        reconsider l = (m + n) as Nat;

        (m + n) <= l;

        hence ((A |^ m) |^ n) = (A |^ (m * n)) by A16;

      end;

      hence thesis;

    end;

    theorem :: FLANG_1:35

    

     Th35: ( <%> E) in A & n > 0 implies A c= (A |^ n)

    proof

      assume that

       A1: ( <%> E) in A and

       A2: n > 0 ;

      consider m such that

       A3: (m + 1) = n by A2, NAT_1: 6;

      ( <%> E) in (A |^ m) by A1, Th30;

      then A c= ((A |^ m) ^^ A) by Th16;

      hence thesis by A3, Th23;

    end;

    theorem :: FLANG_1:36

    ( <%> E) in A & m > n implies (A |^ n) c= (A |^ m)

    proof

      assume that

       A1: ( <%> E) in A and

       A2: m > n;

      consider k such that

       A3: (n + k) = m by A2, NAT_1: 10;

      ( <%> E) in (A |^ k) by A1, Th30;

      then (A |^ n) c= ((A |^ k) ^^ (A |^ n)) by Th16;

      hence thesis by A3, Th33;

    end;

    theorem :: FLANG_1:37

    

     Th37: A c= B implies (A |^ n) c= (B |^ n)

    proof

      defpred P[ Nat] means (A |^ $1) c= (B |^ $1);

      assume

       A1: A c= B;

       A2:

      now

        let n;

        assume

         A3: P[n];

        ((A |^ n) ^^ A) = (A |^ (n + 1)) & ((B |^ n) ^^ B) = (B |^ (n + 1)) by Th23;

        hence P[(n + 1)] by A1, A3, Th17;

      end;

      (A |^ 0 ) = {( <%> E)} by Th24;

      then

       A4: P[ 0 ] by Th24;

      for n holds P[n] from NAT_1:sch 2( A4, A2);

      hence thesis;

    end;

    theorem :: FLANG_1:38

    ((A |^ n) \/ (B |^ n)) c= ((A \/ B) |^ n)

    proof

      (A |^ n) c= ((A \/ B) |^ n) & (B |^ n) c= ((A \/ B) |^ n) by Th37, XBOOLE_1: 7;

      hence thesis by XBOOLE_1: 8;

    end;

    theorem :: FLANG_1:39

    ((A /\ B) |^ n) c= ((A |^ n) /\ (B |^ n))

    proof

      ((A /\ B) |^ n) c= (A |^ n) & ((A /\ B) |^ n) c= (B |^ n) by Th37, XBOOLE_1: 17;

      hence thesis by XBOOLE_1: 19;

    end;

    theorem :: FLANG_1:40

    

     Th40: a in (C |^ m) & b in (C |^ n) implies (a ^ b) in (C |^ (m + n))

    proof

      assume a in (C |^ m) & b in (C |^ n);

      then (a ^ b) in ((C |^ m) ^^ (C |^ n)) by Def1;

      hence thesis by Th33;

    end;

    begin

    definition

      let E, A;

      :: FLANG_1:def3

      func A * -> Subset of (E ^omega ) equals ( union { B : ex n st B = (A |^ n) });

      coherence

      proof

        defpred P[ set] means ex n st $1 = (A |^ n);

        reconsider M = { B : P[B] } as Subset-Family of (E ^omega ) from DOMAIN_1:sch 7;

        ( union M) is Subset of (E ^omega );

        hence thesis;

      end;

    end

    theorem :: FLANG_1:41

    

     Th41: x in (A * ) iff ex n st x in (A |^ n)

    proof

      thus x in (A * ) implies ex n st x in (A |^ n)

      proof

        defpred P[ set] means ex k st $1 = (A |^ k);

        assume x in (A * );

        then

        consider X such that

         A1: x in X and

         A2: X in { B : ex k st B = (A |^ k) } by TARSKI:def 4;

        

         A3: X in { B : P[B] } by A2;

         P[X] from CARD_FIL:sch 1( A3);

        hence thesis by A1;

      end;

      given n such that

       A4: x in (A |^ n);

      defpred P[ set] means ex k st $1 = (A |^ k);

      consider B such that

       A5: x in B and

       A6: P[B] by A4;

      reconsider A = { C : P[C] } as Subset-Family of (E ^omega ) from DOMAIN_1:sch 7;

      B in A by A6;

      hence thesis by A5, TARSKI:def 4;

    end;

    theorem :: FLANG_1:42

    

     Th42: (A |^ n) c= (A * )

    proof

      (A |^ n) in { B : ex k st B = (A |^ k) };

      hence thesis by ZFMISC_1: 74;

    end;

    theorem :: FLANG_1:43

    

     Th43: A c= (A * )

    proof

      A = (A |^ 1) by Th25;

      hence thesis by Th42;

    end;

    theorem :: FLANG_1:44

    (A ^^ A) c= (A * )

    proof

      (A ^^ A) = (A |^ 2) by Th26;

      hence thesis by Th42;

    end;

    theorem :: FLANG_1:45

    

     Th45: a in (C * ) & b in (C * ) implies (a ^ b) in (C * )

    proof

      assume that

       A1: a in (C * ) and

       A2: b in (C * );

      consider k such that

       A3: a in (C |^ k) by A1, Th41;

      consider l such that

       A4: b in (C |^ l) by A2, Th41;

      (a ^ b) in (C |^ (k + l)) by A3, A4, Th40;

      hence thesis by Th41;

    end;

    theorem :: FLANG_1:46

    

     Th46: A c= (C * ) & B c= (C * ) implies (A ^^ B) c= (C * )

    proof

      assume

       A1: A c= (C * ) & B c= (C * );

      thus thesis

      proof

        let x be object;

        assume x in (A ^^ B);

        then ex a, b st a in A & b in B & x = (a ^ b) by Def1;

        hence thesis by A1, Th45;

      end;

    end;

    theorem :: FLANG_1:47

    (A * ) = {( <%> E)} iff A = {} or A = {( <%> E)}

    proof

      thus (A * ) = {( <%> E)} implies A = {} or A = {( <%> E)}

      proof

        

         A1: A c= (A * ) by Th43;

        assume that

         A2: (A * ) = {( <%> E)} and

         A3: A <> {} & A <> {( <%> E)};

        ex x be object st x in A & x <> ( <%> E) by A3, ZFMISC_1: 35;

        hence contradiction by A2, A1, TARSKI:def 1;

      end;

       A4:

      now

        assume

         A5: A = {} ;

         A6:

        now

          let x be object;

          assume x in (A * );

          then

          consider n such that

           A7: x in (A |^ n) by Th41;

          n = 0 implies x in {( <%> E)} by A7, Th24;

          hence x in {( <%> E)} by A5, A7, Th27;

        end;

        now

          let x be object;

          assume x in {( <%> E)};

          then x in (A |^ 0 ) by Th24;

          hence x in (A * ) by Th41;

        end;

        hence (A * ) = {( <%> E)} by A6, TARSKI: 2;

      end;

      now

        assume

         A8: A = {( <%> E)};

        

         A9: (A * ) c= {( <%> E)}

        proof

          let x be object;

          assume x in (A * );

          then ex n st x in (A |^ n) by Th41;

          hence thesis by A8, Th28;

        end;

         {( <%> E)} c= (A * )

        proof

          let x be object;

          assume x in {( <%> E)};

          then x in (A |^ 0 ) by Th24;

          hence thesis by Th41;

        end;

        hence (A * ) = {( <%> E)} by A9, XBOOLE_0:def 10;

      end;

      hence thesis by A4;

    end;

    theorem :: FLANG_1:48

    

     Th48: ( <%> E) in (A * )

    proof

       {( <%> E)} = (A |^ 0 ) by Th24;

      then ( <%> E) in (A |^ 0 ) by TARSKI:def 1;

      hence thesis by Th41;

    end;

    theorem :: FLANG_1:49

    (A * ) = {x} implies x = ( <%> E)

    proof

      assume that

       A1: (A * ) = {x} and

       A2: x <> ( <%> E);

      reconsider a = x as Element of (E ^omega ) by A1, ZFMISC_1: 31;

      x in (A * ) by A1, ZFMISC_1: 31;

      then

       A3: (a ^ a) in (A * ) by Th45;

      (a ^ a) <> x by A2, Th11;

      hence thesis by A1, A3, TARSKI:def 1;

    end;

    theorem :: FLANG_1:50

    

     Th50: x in (A |^ (m + 1)) implies x in ((A * ) ^^ A) & x in (A ^^ (A * ))

    proof

      assume x in (A |^ (m + 1));

      then

       A1: x in ((A |^ m) ^^ A) by Th23;

      then

      consider a, b such that

       A2: a in (A |^ m) and

       A3: b in A & x = (a ^ b) by Def1;

      a in (A * ) by A2, Th41;

      hence x in ((A * ) ^^ A) by A3, Def1;

      x in (A ^^ (A |^ m)) by A1, Th32;

      then

      consider a, b such that

       A4: a in A and

       A5: b in (A |^ m) and

       A6: x = (a ^ b) by Def1;

      b in (A * ) by A5, Th41;

      hence thesis by A4, A6, Def1;

    end;

    theorem :: FLANG_1:51

    (A |^ (m + 1)) c= ((A * ) ^^ A) & (A |^ (m + 1)) c= (A ^^ (A * )) by Th50;

    theorem :: FLANG_1:52

    

     Th52: x in ((A * ) ^^ A) or x in (A ^^ (A * )) implies x in (A * )

    proof

       A1:

      now

        let x;

        assume x in (A ^^ (A * ));

        then

        consider a, b such that

         A2: a in A and

         A3: b in (A * ) and

         A4: x = (a ^ b) by Def1;

        consider n such that

         A5: b in (A |^ n) by A3, Th41;

        a in (A |^ 1) by A2, Th25;

        then (a ^ b) in (A |^ (n + 1)) by A5, Th40;

        hence x in (A * ) by A4, Th41;

      end;

      now

        let x;

        assume x in ((A * ) ^^ A);

        then

        consider a, b such that

         A6: a in (A * ) and

         A7: b in A and

         A8: x = (a ^ b) by Def1;

        consider n such that

         A9: a in (A |^ n) by A6, Th41;

        b in (A |^ 1) by A7, Th25;

        then (a ^ b) in (A |^ (n + 1)) by A9, Th40;

        hence x in (A * ) by A8, Th41;

      end;

      hence thesis by A1;

    end;

    theorem :: FLANG_1:53

    ((A * ) ^^ A) c= (A * ) & (A ^^ (A * )) c= (A * ) by Th52;

    theorem :: FLANG_1:54

    

     Th54: ( <%> E) in A implies (A * ) = ((A * ) ^^ A) & (A * ) = (A ^^ (A * ))

    proof

      assume

       A1: ( <%> E) in A;

      

       A2: ( <%> E) in (A * ) by Th48;

       A3:

      now

        let x;

        assume x in (A * );

        then

        consider n such that

         A4: x in (A |^ n) by Th41;

         A5:

        now

          assume n = 0 ;

          then x in {( <%> E)} by A4, Th24;

          then x = ( <%> E) by TARSKI:def 1;

          hence x in ((A * ) ^^ A) & x in (A ^^ (A * )) by A1, A2, Th15;

        end;

         A6:

        now

          assume n > 0 ;

          then ex m st (m + 1) = n by NAT_1: 6;

          hence x in (A ^^ (A * )) by A4, Th50;

        end;

        now

          assume n > 0 ;

          then ex m st (m + 1) = n by NAT_1: 6;

          hence x in ((A * ) ^^ A) by A4, Th50;

        end;

        hence x in ((A * ) ^^ A) & x in (A ^^ (A * )) by A5, A6;

      end;

      then

       A7: for x be object holds x in (A * ) implies x in ((A * ) ^^ A);

      

       A8: for x be object holds x in (A * ) implies x in (A ^^ (A * )) by A3;

      for x be object holds (x in ((A * ) ^^ A) implies x in (A * )) & (x in (A ^^ (A * )) implies x in (A * )) by Th52;

      hence thesis by A7, A8, TARSKI: 2;

    end;

    theorem :: FLANG_1:55

    ( <%> E) in A implies (A * ) = ((A * ) ^^ (A |^ n)) & (A * ) = ((A |^ n) ^^ (A * ))

    proof

      defpred P[ Nat] means (A * ) = ((A * ) ^^ (A |^ $1)) & (A * ) = ((A |^ $1) ^^ (A * ));

      

       A1: ((A |^ 0 ) ^^ (A * )) = ( {( <%> E)} ^^ (A * )) by Th24

      .= (A * ) by Th13;

      assume

       A2: ( <%> E) in A;

       A3:

      now

        let n;

        assume

         A4: P[n];

        

         A5: ((A * ) ^^ (A |^ (n + 1))) = ((A * ) ^^ ((A |^ n) ^^ A)) by Th23

        .= ((A * ) ^^ A) by A4, Th18

        .= (A * ) by A2, Th54;

        ((A |^ (n + 1)) ^^ (A * )) = (((A |^ n) ^^ A) ^^ (A * )) by Th23

        .= ((A ^^ (A |^ n)) ^^ (A * )) by Th32

        .= (A ^^ (A * )) by A4, Th18

        .= (A * ) by A2, Th54;

        hence P[(n + 1)] by A5;

      end;

      ((A * ) ^^ (A |^ 0 )) = ((A * ) ^^ {( <%> E)}) by Th24

      .= (A * ) by Th13;

      then

       A6: P[ 0 ] by A1;

      for n holds P[n] from NAT_1:sch 2( A6, A3);

      hence thesis;

    end;

    theorem :: FLANG_1:56

    

     Th56: (A * ) = ( {( <%> E)} \/ (A ^^ (A * ))) & (A * ) = ( {( <%> E)} \/ ((A * ) ^^ A))

    proof

       A1:

      now

        let x be object;

        assume x in ( {( <%> E)} \/ ((A * ) ^^ A));

        then x in {( <%> E)} or x in ((A * ) ^^ A) by XBOOLE_0:def 3;

        then x = ( <%> E) or x in (A * ) by Th52, TARSKI:def 1;

        hence x in (A * ) by Th48;

      end;

       A2:

      now

        let x be object;

        assume x in (A * );

        then

        consider n such that

         A3: x in (A |^ n) by Th41;

         A4:

        now

          assume n > 0 ;

          then ex m st (m + 1) = n by NAT_1: 6;

          hence x in ((A * ) ^^ A) by A3, Th50;

        end;

        n = 0 implies x in {( <%> E)} by A3, Th24;

        hence x in ( {( <%> E)} \/ ((A * ) ^^ A)) by A4, XBOOLE_0:def 3;

      end;

       A5:

      now

        let x be object;

        assume x in (A * );

        then

        consider n such that

         A6: x in (A |^ n) by Th41;

         A7:

        now

          assume n > 0 ;

          then ex m st (m + 1) = n by NAT_1: 6;

          hence x in (A ^^ (A * )) by A6, Th50;

        end;

        n = 0 implies x in {( <%> E)} by A6, Th24;

        hence x in ( {( <%> E)} \/ (A ^^ (A * ))) by A7, XBOOLE_0:def 3;

      end;

      now

        let x be object;

        assume x in ( {( <%> E)} \/ (A ^^ (A * )));

        then x in {( <%> E)} or x in (A ^^ (A * )) by XBOOLE_0:def 3;

        then x = ( <%> E) or x in (A * ) by Th52, TARSKI:def 1;

        hence x in (A * ) by Th48;

      end;

      hence thesis by A2, A5, A1, TARSKI: 2;

    end;

    theorem :: FLANG_1:57

    

     Th57: (A ^^ (A * )) = ((A * ) ^^ A)

    proof

      

       A1: (A * ) = ( {( <%> E)} \/ (A ^^ (A * ))) & (A * ) = ( {( <%> E)} \/ ((A * ) ^^ A)) by Th56;

      now

        per cases ;

          suppose

           A2: ( <%> E) in A;

          then (A * ) = (A ^^ (A * )) by Th54;

          hence thesis by A2, Th54;

        end;

          suppose

           A3: not ( <%> E) in A;

          then not ( <%> E) in ((A * ) ^^ A) by Th15;

          then

           A4: {( <%> E)} misses ((A * ) ^^ A) by ZFMISC_1: 50;

           not ( <%> E) in (A ^^ (A * )) by A3, Th15;

          then {( <%> E)} misses (A ^^ (A * )) by ZFMISC_1: 50;

          hence thesis by A1, A4, XBOOLE_1: 71;

        end;

      end;

      hence thesis;

    end;

    theorem :: FLANG_1:58

    ((A |^ n) ^^ (A * )) = ((A * ) ^^ (A |^ n))

    proof

      defpred P[ Nat] means ((A |^ $1) ^^ (A * )) = ((A * ) ^^ (A |^ $1));

       A1:

      now

        let n;

        assume

         A2: P[n];

        ((A |^ (n + 1)) ^^ (A * )) = (((A |^ n) ^^ A) ^^ (A * )) by Th23

        .= ((A |^ n) ^^ (A ^^ (A * ))) by Th18

        .= ((A |^ n) ^^ ((A * ) ^^ A)) by Th57

        .= (((A * ) ^^ (A |^ n)) ^^ A) by A2, Th18

        .= ((A * ) ^^ ((A |^ n) ^^ A)) by Th18

        .= ((A * ) ^^ (A |^ (n + 1))) by Th23;

        hence P[(n + 1)];

      end;

      ((A |^ 0 ) ^^ (A * )) = ( {( <%> E)} ^^ (A * )) by Th24

      .= (A * ) by Th13

      .= ((A * ) ^^ {( <%> E)}) by Th13

      .= ((A * ) ^^ (A |^ 0 )) by Th24;

      then

       A3: P[ 0 ];

      for n holds P[n] from NAT_1:sch 2( A3, A1);

      hence thesis;

    end;

    theorem :: FLANG_1:59

    

     Th59: A c= (B * ) implies (A |^ n) c= (B * )

    proof

      defpred P[ Nat] means (A |^ $1) c= (B * );

      assume

       A1: A c= (B * );

       A2:

      now

        let n;

        assume P[n];

        then ((A |^ n) ^^ A) c= (B * ) by A1, Th46;

        hence P[(n + 1)] by Th23;

      end;

      ( <%> E) in (B * ) by Th48;

      then {( <%> E)} c= (B * ) by ZFMISC_1: 31;

      then

       A3: P[ 0 ] by Th24;

      for n holds P[n] from NAT_1:sch 2( A3, A2);

      hence thesis;

    end;

    theorem :: FLANG_1:60

    

     Th60: A c= (B * ) implies (A * ) c= (B * )

    proof

      assume

       A1: A c= (B * );

      thus thesis

      proof

        let x be object;

        assume x in (A * );

        then

        consider n such that

         A2: x in (A |^ n) by Th41;

        (A |^ n) c= (B * ) by A1, Th59;

        hence thesis by A2;

      end;

    end;

    theorem :: FLANG_1:61

    

     Th61: A c= B implies (A * ) c= (B * )

    proof

      assume

       A1: A c= B;

      B c= (B * ) by Th43;

      then A c= (B * ) by A1;

      hence thesis by Th60;

    end;

    theorem :: FLANG_1:62

    

     Th62: ((A * ) * ) = (A * )

    proof

      ((A * ) * ) c= (A * ) & (A * ) c= ((A * ) * ) by Th43, Th60;

      hence thesis by XBOOLE_0:def 10;

    end;

    theorem :: FLANG_1:63

    ((A * ) ^^ (A * )) = (A * )

    proof

      ( <%> E) in (A * ) by Th48;

      then

       A1: (A * ) c= ((A * ) ^^ (A * )) by Th16;

      ((A * ) ^^ (A * )) c= (A * ) by Th46;

      hence thesis by A1, XBOOLE_0:def 10;

    end;

    theorem :: FLANG_1:64

    ((A |^ n) * ) c= (A * ) by Th42, Th60;

    theorem :: FLANG_1:65

    

     Th65: ((A * ) |^ n) c= (A * )

    proof

      ((A * ) |^ n) c= ((A * ) * ) by Th42;

      hence thesis by Th62;

    end;

    theorem :: FLANG_1:66

    n > 0 implies ((A * ) |^ n) = (A * )

    proof

      ( <%> E) in (A * ) by Th48;

      then

       A1: n > 0 implies (A * ) c= ((A * ) |^ n) by Th35;

      ((A * ) |^ n) c= (A * ) by Th65;

      hence thesis by A1, XBOOLE_0:def 10;

    end;

    theorem :: FLANG_1:67

    

     Th67: A c= (B * ) implies (B * ) = ((B \/ A) * )

    proof

      defpred P[ Nat] means ((B \/ A) |^ $1) c= (B * );

      assume

       A1: A c= (B * );

       A2:

      now

        let n;

        assume

         A3: P[n];

        B c= (B * ) by Th43;

        then

         A4: (B \/ A) c= (B * ) by A1, XBOOLE_1: 8;

        ((B \/ A) |^ (n + 1)) = (((B \/ A) |^ n) ^^ (B \/ A)) by Th23;

        hence P[(n + 1)] by A3, A4, Th46;

      end;

      ((B \/ A) |^ 0 ) = {( <%> E)} & ( <%> E) in (B * ) by Th24, Th48;

      then

       A5: P[ 0 ] by ZFMISC_1: 31;

      

       A6: for n holds P[n] from NAT_1:sch 2( A5, A2);

      

       A7: ((B \/ A) * ) c= (B * )

      proof

        let x be object;

        assume x in ((B \/ A) * );

        then

        consider n such that

         A8: x in ((B \/ A) |^ n) by Th41;

        ((B \/ A) |^ n) c= (B * ) by A6;

        hence thesis by A8;

      end;

      (B * ) c= ((B \/ A) * ) by Th61, XBOOLE_1: 7;

      hence thesis by A7, XBOOLE_0:def 10;

    end;

    theorem :: FLANG_1:68

    

     Th68: a in (A * ) implies (A * ) = ((A \/ {a}) * ) by ZFMISC_1: 31, Th67;

    theorem :: FLANG_1:69

    (A * ) = ((A \ {( <%> E)}) * )

    proof

      

      thus ((A \ {( <%> E)}) * ) = (((A \ {( <%> E)}) \/ {( <%> E)}) * ) by Th48, Th68

      .= ((A \/ {( <%> E)}) * ) by XBOOLE_1: 39

      .= (A * ) by Th48, Th68;

    end;

    theorem :: FLANG_1:70

    ((A * ) \/ (B * )) c= ((A \/ B) * )

    proof

      (A * ) c= ((A \/ B) * ) & (B * ) c= ((A \/ B) * ) by Th61, XBOOLE_1: 7;

      hence thesis by XBOOLE_1: 8;

    end;

    theorem :: FLANG_1:71

    ((A /\ B) * ) c= ((A * ) /\ (B * ))

    proof

      ((A /\ B) * ) c= (A * ) & ((A /\ B) * ) c= (B * ) by Th61, XBOOLE_1: 17;

      hence thesis by XBOOLE_1: 19;

    end;

    theorem :: FLANG_1:72

    

     Th72: <%x%> in (A * ) iff <%x%> in A

    proof

      thus <%x%> in (A * ) implies <%x%> in A

      proof

        defpred P[ Nat] means <%x%> in (A |^ $1);

        assume that

         A1: <%x%> in (A * ) and

         A2: not <%x%> in A;

        

         A3: ex i be Nat st P[i] by A1, Th41;

        ex n1 be Nat st P[n1] & for n2 be Nat st P[n2] holds n1 <= n2 from NAT_1:sch 5( A3);

        then

        consider n1 be Nat such that

         A4: P[n1] and

         A5: for n2 be Nat st P[n2] holds n1 <= n2;

         A6:

        now

          assume n1 = 0 ;

          then <%x%> in {( <%> E)} by A4, Th24;

          hence contradiction by TARSKI:def 1;

        end;

         A7:

        now

          assume n1 > 1;

          then

          consider n2 such that

           A8: (n2 + 1) = n1 by NAT_1: 6;

           <%x%> in ((A |^ n2) ^^ A) by A4, A8, Th23;

          then

          consider a, b such that

           A9: a in (A |^ n2) and

           A10: b in A & <%x%> = (a ^ b) by Def1;

          now

            reconsider n2 as Element of NAT by ORDINAL1:def 12;

            assume that

             A11: a = <%x%> and b = ( <%> E);

            ex i be Element of NAT st P[i] & n1 > i

            proof

              take n2;

              thus thesis by A8, A9, A11, NAT_1: 13;

            end;

            hence contradiction by A5;

          end;

          hence <%x%> in A by A10, Th4;

        end;

        n1 = 1 implies <%x%> in A by A4, Th25;

        hence contradiction by A2, A7, A6, NAT_1: 25;

      end;

      assume <%x%> in A;

      then <%x%> in (A |^ 1) by Th25;

      hence thesis by Th41;

    end;

    begin

    definition

      let E;

      :: FLANG_1:def4

      func Lex (E) -> Subset of (E ^omega ) means

      : Def4: x in it iff ex e st e in E & x = <%e%>;

      existence

      proof

        defpred P[ set] means ex e st e in E & $1 = <%e%>;

        consider C such that

         A1: x in C iff x in (E ^omega ) & P[x] from SUBSET_1:sch 1;

        take C;

        x in C iff ex e st e in E & x = <%e%>

        proof

          thus x in C implies ex e st e in E & x = <%e%> by A1;

          given e such that

           A2: e in E and

           A3: x = <%e%>;

           {e} c= E by A2, ZFMISC_1: 31;

          then ( rng <%e%>) c= E by AFINSQ_1: 33;

          then <%e%> is XFinSequence of E by RELAT_1:def 19;

          then <%e%> is Element of (E ^omega ) by AFINSQ_1:def 7;

          hence thesis by A1, A2, A3;

        end;

        hence thesis;

      end;

      uniqueness

      proof

        let C1,C2 be Subset of (E ^omega ) such that

         A4: x in C1 iff ex e st e in E & x = <%e%> and

         A5: x in C2 iff ex e st e in E & x = <%e%>;

        now

          let x be object;

          thus x in C1 implies x in C2

          proof

            assume x in C1;

            then ex e st e in E & x = <%e%> by A4;

            hence thesis by A5;

          end;

          assume x in C2;

          then ex e st e in E & x = <%e%> by A5;

          hence x in C1 by A4;

        end;

        hence thesis by TARSKI: 2;

      end;

    end

    theorem :: FLANG_1:73

    

     Th73: a in (( Lex E) |^ ( len a))

    proof

      defpred P[ Nat] means for a holds ( len a) = $1 implies a in (( Lex E) |^ $1);

       A1:

      now

        let n;

        assume

         A2: P[n];

        now

          let b;

          assume ( len b) = (n + 1);

          then

          consider c, e such that

           A3: ( len c) = n and

           A4: b = (c ^ <%e%>) by Th7;

           <%e%> is Element of (E ^omega ) by A4, Th5;

          then e in E by Th6;

          then <%e%> in ( Lex E) by Def4;

          then

           A5: <%e%> in (( Lex E) |^ 1) by Th25;

          c in (( Lex E) |^ n) by A2, A3;

          hence b in (( Lex E) |^ (n + 1)) by A4, A5, Th40;

        end;

        hence P[(n + 1)];

      end;

      

       A6: P[ 0 ]

      proof

        let a;

        assume ( len a) = 0 ;

        then a = ( <%> E);

        then a in {( <%> E)} by TARSKI:def 1;

        hence thesis by Th24;

      end;

      for n holds P[n] from NAT_1:sch 2( A6, A1);

      hence thesis;

    end;

    theorem :: FLANG_1:74

    (( Lex E) * ) = (E ^omega )

    proof

       A1:

      now

        let x be object;

        assume x in (E ^omega );

        then

        reconsider a = x as Element of (E ^omega );

        a in (( Lex E) |^ ( len a)) by Th73;

        hence x in (( Lex E) * ) by Th41;

      end;

      for x be object st x in (( Lex E) * ) holds x in (E ^omega );

      hence thesis by A1, TARSKI: 2;

    end;

    theorem :: FLANG_1:75

    (A * ) = (E ^omega ) implies ( Lex E) c= A

    proof

      assume

       A1: (A * ) = (E ^omega );

      thus thesis

      proof

        let x be object;

        assume

         A2: x in ( Lex E);

        then ex e st e in E & x = <%e%> by Def4;

        hence thesis by A1, A2, Th72;

      end;

    end;