FLANG_3

index · ← INT_5 · COMPL_SP →
:: Regular Expression Quantifiers -- at least $m$ Occurrences
::  by Micha{\l} Trybulec
::
:: Received October 9, 2007
:: Copyright (c) 2007-2026 Association of Mizar Users
::           (Stowarzyszenie Uzytkownikow Mizara, Bialystok, Poland).
:: This code can be distributed under the GNU General Public Licence
:: version 3.0 or later, or the Creative Commons Attribution-ShareAlike
:: License version 3.0 or later, subject to the binding interpretation
:: detailed in file COPYING.interpretation.
:: See COPYING.GPL and COPYING.CC-BY-SA for the full text of these
:: licenses, or see http://www.gnu.org/licenses/gpl.html and
:: http://creativecommons.org/licenses/by-sa/3.0/.

environ

 vocabularies NUMBERS, SUBSET_1, AFINSQ_1, NAT_1, TARSKI, RELAT_1, PRE_POLY,
      XXREAL_0, NEWTON, SETFAM_1, XBOOLE_0, CARD_1, ARYTM_3, ORDINAL4, MODAL_1,
      FLANG_3;
 notations TARSKI, XBOOLE_0, SUBSET_1, ORDINAL1, NUMBERS, XCMPLX_0, SETFAM_1,
      XXREAL_0, AFINSQ_1, FLANG_1, FLANG_2;
 constructors NAT_1, XREAL_0, FLANG_1, FLANG_2;
 registrations SUBSET_1, NAT_1, ORDINAL1, AFINSQ_1, XREAL_0, XBOOLE_0;
 requirements NUMERALS, REAL, BOOLE, SUBSET, ARITHM;
 definitions TARSKI;
 expansions TARSKI;
 theorems NAT_1, TARSKI, XBOOLE_0, XBOOLE_1, XREAL_1, ZFMISC_1, FLANG_1,
      XXREAL_0, FLANG_2;
 schemes CARD_FIL, DOMAIN_1, NAT_1;

begin

reserve E, x, y, X for set;
reserve A, B, C for Subset of E^omega;
reserve a, a1, a2, b for Element of E^omega;

reserve i, k, l, m, n for Nat;

theorem
  B c= A* implies A* ^^ B c= A* & B ^^ (A*) c= A*
proof
  assume
A1: B c= A*;
  then
A2: B ^^ (A*) c= A* ^^ (A*) by FLANG_1:17;
  A* ^^ B c= A* ^^ (A*) by A1,FLANG_1:17;
  hence thesis by A2,FLANG_1:63;
end;

begin

:: At least n Occurences
:: Definition of |^.. n

definition
  let E, A, n;
  func A |^.. n -> Subset of E^omega equals
  union { B: ex m st n <= m & B = A
  |^ m };
  coherence
  proof
    defpred P[set] means ex m st n <= m & $1 = A |^ m;
    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;

:: At least n Occurences
:: Properties of |^.. n

theorem Th2:
  x in A |^.. n iff ex m st n <= m & x in A |^ m
proof
  thus x in A |^.. n implies ex m st n <= m & x in A |^ m
  proof
    defpred P[set] means ex m st n <= m & $1 = A |^ m;
    assume x in A |^.. n;
    then consider X such that
A1: x in X and
A2: X in { B: ex m st n <= m & B = A |^ m } 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 m such that
A4: n <= m and
A5: x in A |^ m;
  defpred P[set] means ex m st n <= m & $1 = A |^ m;
  consider B such that
A6: x in B and
A7: P[B] by A4,A5;
  reconsider A = { C : P[C] } as Subset-Family of E^omega from DOMAIN_1:sch 7;
  B in A by A7;
  hence thesis by A6,TARSKI:def 4;
end;

theorem Th3:
  n <= m implies A |^ m c= A |^.. n
by Th2;

theorem Th4:
  A |^.. n = {} iff n > 0 & A = {}
proof
  thus A |^.. n = {} implies n > 0 & A = {}
  proof
A1: A <> {} implies A |^.. n <> {}
    proof
      assume
A2:   A <> {};
      now
        let m;
        consider m such that
A3:     n <= m;
        A |^ m <> {} by A2,FLANG_1:27;
        then ex x being object st x in A |^ m by XBOOLE_0:def 1;
        hence thesis by A3,Th2;
      end;
      hence thesis;
    end;
    assume that
A4: A |^.. n = {} and
A5: n <= 0 or A <> {};
    n <= 0 implies <%>E in A |^.. n
    proof
      assume n <= 0;
      then
A6:   n = 0;
      A |^ 0 c= A |^.. 0 by Th3;
      then {<%>E} c= A |^.. 0 by FLANG_1:24;
      hence thesis by A6,ZFMISC_1:31;
    end;
    hence contradiction by A4,A5,A1;
  end;
  assume that
A7: n > 0 and
A8: A = {};
  now
    let x be object;
    assume x in A |^.. n;
    then ex m st n <= m & x in A |^ m by Th2;
    hence contradiction by A7,A8,FLANG_1:27;
  end;
  hence thesis by XBOOLE_0:def 1;
end;

theorem Th5:
  m <= n implies A |^.. n c= A |^.. m
proof
  assume
A1: m <= n;
    let x be object;
    assume x in A |^.. n;
    then consider k such that
A2: n <= k and
A3: x in A |^ k by Th2;
    m <= k by A1,A2,XXREAL_0:2;
    hence x in A |^.. m by A3,Th2;
end;

theorem Th6:
  k <= m implies A |^ (m, n) c= A |^.. k
proof
  assume
A1: k <= m;
    let x be object;
    assume x in A |^ (m, n);
    then consider l such that
A2: m <= l and
    l <= n and
A3: x in A |^ l by FLANG_2:19;
    k <= l by A1,A2,XXREAL_0:2;
    hence x in A |^.. k by A3,Th2;
end;

theorem Th7:
  m <= n + 1 implies A |^ (m, n) \/ A |^.. (n + 1) = A |^.. m
proof
  assume m <= n + 1;
  then
A1: A |^.. (n + 1) c= A |^.. m by Th5;
  now
    let x be object;
    assume x in A |^.. m;
    then consider k such that
A2: m <= k and
A3: x in A |^ k by Th2;
A4: now
      assume k > n;
      then k >= n + 1 by NAT_1:13;
      hence x in A |^.. (n + 1) by A3,Th2;
    end;
    k <= n implies x in A |^ (m, n) by A2,A3,FLANG_2:19;
    hence x in A |^ (m, n) \/ A |^.. (n + 1) by A4,XBOOLE_0:def 3;
  end;
  then
A5: A |^.. m c= A |^ (m, n) \/ A |^.. (n + 1);
  A |^ (m, n) c= A |^.. m by Th6;
  then A |^ (m, n) \/ A |^.. (n + 1) c= A |^.. m by A1,XBOOLE_1:8;
  hence thesis by A5,XBOOLE_0:def 10;
end;

theorem
  A |^ n \/ A |^.. (n + 1) = A |^.. n
proof
A1: n <= n + 1 by NAT_1:13;
  thus A |^ n \/ A |^.. (n + 1) = A |^ (n, n) \/ A |^.. (n + 1) by FLANG_2:22
    .= A |^.. n by A1,Th7;
end;

theorem Th9:
  A |^.. n c= A*
proof
    let x be object;
    assume x in A |^.. n;
    then ex k st n <= k & x in A |^ k by Th2;
    hence x in A* by FLANG_1:41;
end;

theorem Th10:
  <%>E in A |^.. n iff n = 0 or <%>E in A
proof
  thus <%>E in A |^.. n implies n = 0 or <%>E in A
  proof
    assume <%>E in A |^.. n;
    then
A1: ex k st n <= k & <%>E in A |^ k by Th2;
    n = 0 or n > 0;
    hence thesis by A1,FLANG_1:31;
  end;
  assume
A2: n = 0 or <%>E in A;
  per cases by A2;
  suppose
A3: n = 0;
    {<%>E} = A |^ 0 by FLANG_1:24;
    then <%>E in A |^ n by A3,TARSKI:def 1;
    hence thesis by Th2;
  end;
  suppose
    <%>E in A;
    then <%>E in A |^ n by FLANG_1:30;
    hence thesis by Th2;
  end;
end;

theorem Th11:
  A |^.. n = A* iff <%>E in A or n = 0
proof
  thus A |^.. n = A* implies <%>E in A or n = 0
  by FLANG_1:48,Th10;
  assume
A1: <%>E in A or n = 0;
    now
      let x be object;
      assume x in A*;
      then consider k such that
A2:   x in A |^ k by FLANG_1:41;
      per cases;
      suppose
        n <= k;
        hence x in A |^.. n by A2,Th2;
      end;
      suppose
        k < n;
        then A |^ k c= A |^ n by A1,FLANG_1:36;
        hence x in A |^.. n by A2,Th2;
      end;
    end;
    then
A3: A* c= A |^.. n;
    A |^.. n c= A* by Th9;
    hence thesis by A3,XBOOLE_0:def 10;
end;

theorem
  A* = A |^ (0, n) \/ A |^.. (n + 1)
proof
  thus A* = A |^.. 0 by Th11
    .= A |^ (0, n) \/ A |^.. (n + 1) by Th7;
end;

theorem Th13:
  A c= B implies A |^.. n c= B |^.. n
proof
  assume
A1: A c= B;
    let x be object;
    assume x in A |^.. n;
    then consider k such that
A2: n <= k and
A3: x in A |^ k by Th2;
    A |^ k c= B |^ k by A1,FLANG_1:37;
    hence x in B |^.. n by A2,A3,Th2;
end;

theorem Th14:
  x in A & x <> <%>E implies A |^.. n <> {<%>E}
proof
  assume that
A1: x in A and
A2: x <> <%>E;
  per cases;
  suppose
A3: n = 0;
    x in A |^ 1 by A1,FLANG_1:25;
    then x in A |^.. n by A3,Th2;
    hence thesis by A2,TARSKI:def 1;
  end;
  suppose
A4: n > 0;
A5: A |^ n <> {} by A1,FLANG_1:27;
    A |^ n <> {<%>E} by A1,A2,A4,FLANG_2:7;
    then consider y being object such that
A6: y in A |^ n and
A7: y <> <%>E by A5,ZFMISC_1:35;
    y in A |^.. n by A6,Th2;
    hence thesis by A7,TARSKI:def 1;
  end;
end;

theorem Th15:
  A |^.. n = {<%>E} iff A = {<%>E} or n = 0 & A = {}
proof
  thus A |^.. n = {<%>E} implies A = {<%>E} or n = 0 & A = {}
  proof
    assume that
A1: A |^.. n = {<%>E} and
A2: A <> {<%>E} and
A3: n <> 0 or A <> {};
    per cases by A3;
    suppose
A4:   n <> 0;
      <%>E in A |^.. n by A1,ZFMISC_1:31;
      then consider k such that
A5:   n <= k and
A6:   <%>E in A |^ k by Th2;
      k > 0 by A4,A5;
      then
A7:   <%>E in A by A6,FLANG_1:31;
      not ex x being object st x in A & x <> <%>E by A1,Th14;
      hence contradiction by A2,A7,ZFMISC_1:35;
    end;
    suppose
      A <> {};
      then ex x being object st x in A & x <> <%>E by A2,ZFMISC_1:35;
      hence contradiction by A1,Th14;
    end;
  end;
  assume
A8: A = {<%>E} or n = 0 & A = {};
  per cases by A8;
  suppose
A9: A = {<%>E};
A10: now
      let x be object;
      assume x in {<%>E};
      then x in A |^ n by A9,FLANG_1:28;
      hence x in A |^.. n by Th2;
    end;
    now
      let x be object;
      assume x in A |^.. n;
      then ex k st n <= k & x in A |^ k by Th2;
      hence x in {<%>E} by A9,FLANG_1:28;
    end;
    hence thesis by A10,TARSKI:2;
  end;
  suppose
A11: n = 0 & A = {};
    hence A |^.. n = A* by Th11
      .= {<%>E} by A11,FLANG_1:47;
  end;
end;

theorem Th16:
  A |^.. (n + 1) = (A |^.. n) ^^ A
proof
  now
    let x be object;
    assume x in A |^.. (n + 1);
    then consider k such that
A1: n + 1 <= k and
A2: x in A |^ k by Th2;
    consider l such that
A3: l + 1 = k by A1,NAT_1:6;
    x in (A |^ l) ^^ (A |^ 1) by A2,A3,FLANG_1:33;
    then consider a, b such that
A4: a in A |^ l and
A5: b in A |^ 1 and
A6: x = a ^ b by FLANG_1:def 1;
    n <= l by A1,A3,XREAL_1:6;
    then a in A |^.. n by A4,Th2;
    then x in (A |^.. n) ^^ (A |^ 1) by A5,A6,FLANG_1:def 1;
    hence x in (A |^.. n) ^^ A by FLANG_1:25;
  end;
  then
A7: A |^.. (n + 1) c= (A |^.. n) ^^ A;
  now
    let x be object;
    assume x in (A |^.. n) ^^ A;
    then consider a, b such that
A8: a in (A |^.. n) and
A9: b in A and
A10: x = a ^ b by FLANG_1:def 1;
    consider k such that
A11: n <= k and
A12: a in A |^ k by A8,Th2;
A13: n + 1 <= k + 1 by A11,XREAL_1:6;
    b in A |^ 1 by A9,FLANG_1:25;
    then x in A |^ (k + 1) by A10,A12,FLANG_1:40;
    hence x in A |^.. (n + 1) by A13,Th2;
  end;
  then (A |^.. n) ^^ A c= A |^.. (n + 1);
  hence thesis by A7,XBOOLE_0:def 10;
end;

theorem Th17:
  (A |^.. m) ^^ (A*) = A |^.. m
proof
  now
    let x be object;
    assume x in (A |^.. m) ^^ (A*);
    then consider a, b such that
A1: a in A |^.. m and
A2: b in A* and
A3: x = a ^ b by FLANG_1:def 1;
    consider k such that
A4: b in A |^ k by A2,FLANG_1:41;
    consider l such that
A5: m <= l and
A6: a in A |^ l by A1,Th2;
A7: l + k >= m by A5,NAT_1:12;
    a ^ b in A |^ (l + k) by A4,A6,FLANG_1:40;
    hence x in A |^.. m by A3,A7,Th2;
  end;
  then
A8: (A |^.. m) ^^ (A*) c= A |^.. m;
  <%>E in A* by FLANG_1:48;
  then A |^.. m c= (A |^.. m) ^^ (A*) by FLANG_1:16;
  hence thesis by A8,XBOOLE_0:def 10;
end;

theorem Th18:
  (A |^.. m) ^^ (A |^.. n) = A |^.. (m + n)
proof
  defpred P[Nat] means (A |^.. m) ^^ (A |^.. $1) = A |^.. (m + $1);
A1: now
    let n;
    assume
A2: P[n];
    (A |^.. m) ^^ (A |^.. (n + 1)) = (A |^.. m) ^^ ((A |^.. n) ^^ A) by Th16
      .= A |^.. (m + n) ^^ A by A2,FLANG_1:18
      .= A |^.. (m + n + 1) by Th16;
    hence P[n + 1];
  end;
  (A |^.. m) ^^ (A |^.. 0) = (A |^.. m) ^^ (A*) by Th11
    .= (A |^.. (m + 0)) by Th17;
  then
A3: P[0];
  for n holds P[n] from NAT_1:sch 2(A3, A1);
  hence thesis;
end;

theorem Th19:
  n > 0 implies (A |^.. m) |^ n = A |^.. (m * n)
proof
  defpred P[Nat] means $1 > 0 implies (A |^.. m) |^ $1 = A |^.. (m * $1);
A1: now
    let n;
    assume
A2: P[n];
    now
      assume n + 1 > 0;
      per cases;
      suppose
        n = 0;
        hence (A |^.. m) |^ (n + 1) = A |^.. (m * (n + 1)) by FLANG_1:25;
      end;
      suppose
        n > 0;
        hence (A |^.. m) |^ (n + 1) = (A |^.. (m * n)) ^^ (A |^.. m) by A2,
FLANG_1:23
          .= A |^.. (m * n + m) by Th18
          .= A |^.. (m * (n + 1));
      end;
    end;
    hence P[n + 1];
  end;
A3: P[0];
  for n holds P[n] from NAT_1:sch 2(A3, A1);
  hence thesis;
end;

theorem
  (A |^.. n)* = (A |^.. n)?
proof
  now
    let x be object;
    assume x in (A |^.. n)*;
    then consider k such that
A1: x in (A |^.. n) |^ k by FLANG_1:41;
    per cases;
    suppose
      k = 0;
      then x in (A |^.. n) |^ 0 \/ (A |^.. n) |^ 1 by A1,XBOOLE_0:def 3;
      hence x in (A |^.. n)? by FLANG_2:75;
    end;
    suppose
A2:   k > 0;
      then (A |^.. n) |^ k c= A |^.. (n * k) by Th19;
      then consider l such that
A3:   n * k <= l and
A4:   x in A |^ l by A1,Th2;
      k >= 0 + 1 by A2,NAT_1:13;
      then n * k >= n by XREAL_1:151;
      then l >= n by A3,XXREAL_0:2;
      then x in A |^.. n by A4,Th2;
      then x in (A |^.. n) |^ 1 by FLANG_1:25;
      then x in (A |^.. n) |^ 0 \/ (A |^.. n) |^ 1 by XBOOLE_0:def 3;
      hence x in (A |^.. n)? by FLANG_2:75;
    end;
  end;
  then
A5: (A |^.. n)* c= (A |^.. n)?;
  (A |^.. n)? c= (A |^.. n)* by FLANG_2:86;
  hence thesis by A5,XBOOLE_0:def 10;
end;

theorem Th21:
  A c= C |^.. m & B c= C |^.. n implies A ^^ B c= C |^.. (m + n)
proof
  assume that
A1: A c= C |^.. m and
A2: B c= C |^.. n;
  thus for x being object holds x in A ^^ B implies x in C |^.. (m + n)
  proof let x be object;
    assume x in A ^^ B;
    then consider a, b such that
A3: a in A and
A4: b in B and
A5: x = a ^ b by FLANG_1:def 1;
    a ^ b in (C |^.. m) ^^ (C |^.. n) by A1,A2,A3,A4,FLANG_1:def 1;
    hence thesis by A5,Th18;
  end;
end;

theorem Th22:
  A |^.. (n + k) = (A |^.. n) ^^ (A |^ k)
proof
  defpred P[Nat] means A |^.. (n + $1) = (A |^.. n) ^^ (A |^ $1);
A1: now
    let k be Nat;
    assume
A2: P[k];
    A |^.. (n + (k + 1)) = (A |^.. (n + k + 1))
      .= (A |^.. n) ^^ (A |^ k) ^^ A by A2,Th16
      .= (A |^.. n) ^^ ((A |^ k) ^^ A) by FLANG_1:18
      .= (A |^.. n) ^^ (A |^ (k + 1)) by FLANG_1:23;
    hence P[k + 1];
  end;
  A |^.. (n + 0) = (A |^.. n) ^^ {<%>E} by FLANG_1:13
    .= (A |^.. n) ^^ (A |^ 0) by FLANG_1:24;
  then
A3: P[0];
  for k being Nat holds P[k] from NAT_1:sch 2(A3, A1);
  hence thesis;
end;

theorem Th23:
  A ^^ (A |^.. n) = (A |^.. n) ^^ A
proof
  defpred P[Nat] means A ^^ (A |^.. $1) = (A |^.. $1) ^^ A;
A1: now
    let k be Nat;
    assume
A2: P[k];
    A ^^ (A |^.. (k + 1)) = A ^^ ((A |^.. k) ^^ A) by Th16
      .= (A |^.. k) ^^ A ^^ A by A2,FLANG_1:18
      .= (A |^.. (k + 1)) ^^ A by Th16;
    hence P[k + 1];
  end;
  A ^^ (A |^.. 0) = A ^^ (A*) by Th11
    .= (A*) ^^ A by FLANG_1:57
    .= (A |^.. 0) ^^ A by Th11;
  then
A3: P[0];
  for k being Nat holds P[k] from NAT_1:sch 2(A3, A1);
  hence thesis;
end;

theorem Th24:
  (A |^ k) ^^ (A |^.. n) = (A |^.. n) ^^ (A |^ k)
proof
  defpred P[Nat] means (A |^ $1) ^^ (A |^.. n) = (A |^.. n) ^^ (A |^ $1);
A1: now
    let k;
    assume
A2: P[k];
    (A |^ (k + 1)) ^^ (A |^.. n) = ((A |^ k) ^^ A) ^^ (A |^.. n) by FLANG_1:23
      .= (A ^^ (A |^ k)) ^^ (A |^.. n) by FLANG_1:32
      .= A ^^ ((A |^.. n) ^^ (A |^ k)) by A2,FLANG_1:18
      .= (A ^^ (A |^.. n)) ^^ (A |^ k) by FLANG_1:18
      .= (A |^.. n) ^^ A ^^ (A |^ k) by Th23
      .= (A |^.. n) ^^ (A ^^ (A |^ k)) by FLANG_1:18
      .= (A |^.. n) ^^ ((A |^ k) ^^ A) by FLANG_1:32
      .= (A |^.. n) ^^ (A |^ (k + 1)) by FLANG_1:23;
    hence P[k + 1];
  end;
  (A |^ 0) ^^ (A |^.. n) = {<%>E} ^^ (A |^.. n) by FLANG_1:24
    .= (A |^.. n) by FLANG_1:13
    .= (A |^.. n) ^^ {<%>E} by FLANG_1:13
    .= (A |^.. n) ^^ (A |^ 0) by FLANG_1:24;
  then
A3: P[0];
  for k holds P[k] from NAT_1:sch 2(A3, A1);
  hence thesis;
end;

theorem Th25:
  (A |^ (k, l)) ^^ (A |^.. n) = (A |^.. n) ^^ (A |^ (k, l))
proof
  defpred P[Nat] means (A |^ (k, l)) ^^ (A |^.. $1) = (A |^.. $1) ^^ (A |^ (k,
  l));
A1: now
    let n;
    assume
A2: P[n];
    (A |^ (k, l)) ^^ (A |^.. (n + 1)) = (A |^ (k, l)) ^^ ((A |^.. n) ^^ A)
    by Th16
      .= (A |^.. n) ^^ (A |^ (k, l)) ^^ A by A2,FLANG_1:18
      .= (A |^.. n) ^^ ((A |^ (k, l)) ^^ A) by FLANG_1:18
      .= (A |^.. n) ^^ (A ^^ (A |^ (k, l))) by FLANG_2:36
      .= (A |^.. n) ^^ A ^^ (A |^ (k, l)) by FLANG_1:18
      .= (A |^.. (n + 1)) ^^ (A |^ (k, l)) by Th16;
    hence P[n + 1];
  end;
  (A |^ (k, l)) ^^ (A |^.. 0) = (A |^ (k, l)) ^^ (A*) by Th11
    .= A* ^^ (A |^ (k, l)) by FLANG_2:66
    .= (A |^.. 0) ^^ (A |^ (k, l)) by Th11;
  then
A3: P[0];
  for n holds P[n] from NAT_1:sch 2(A3, A1);
  hence thesis;
end;

theorem
  <%>E in B implies A c= A ^^ (B |^.. n) & A c= (B |^.. n) ^^ A
proof
  assume <%>E in B;
  then <%>E in B |^.. n by Th10;
  hence thesis by FLANG_1:16;
end;

theorem Th27:
  (A |^.. m) ^^ (A |^.. n) = (A |^.. n) ^^ (A |^.. m)
proof
  thus (A |^.. m) ^^ (A |^.. n) = A |^.. (m + n) by Th18
    .= (A |^.. n) ^^ (A |^.. m) by Th18;
end;

theorem Th28:
  A c= B |^.. k & n > 0 implies A |^ n c= B |^.. k
proof
  assume that
A1: A c= B |^.. k and
A2: n > 0;
  defpred P[Nat] means $1 > 0 implies A |^ $1 c= B |^.. k;
A3: now
    let m;
    assume
A4: P[m];
    per cases;
    suppose
      m <= 0;
      then m = 0;
      hence P[m + 1] by A1,FLANG_1:25;
    end;
    suppose
      m > 0;
      then (A |^ m) ^^ A c= (B |^.. k) ^^ (B |^.. k) by A1,A4,FLANG_1:17;
      then A |^ (m + 1) c= (B |^.. k) ^^ (B |^.. k) by FLANG_1:23;
      then
A5:   A |^ (m + 1) c= (B |^.. (k + k)) by Th18;
      B |^.. (k + k) c= B |^.. k by Th5,NAT_1:11;
      hence P[m + 1] by A5,XBOOLE_1:1;
    end;
  end;
A6: P[0];
  for m holds P[m] from NAT_1:sch 2(A6, A3);
  hence thesis by A2;
end;

theorem Th29:
  A c= B |^.. k & n > 0 implies A |^.. n c= B |^.. k
proof
  assume that
A1: A c= B |^.. k and
A2: n > 0;
  let x be object;
  assume x in A |^.. n;
  then consider m such that
A3: m >= n and
A4: x in A |^ m by Th2;
  A |^ m c= B |^.. k by A1,A2,A3,Th28;
  hence thesis by A4;
end;

theorem Th30:
  A* ^^ A = A |^.. 1
proof
A1: now
    let x be object;
    assume x in (A*) ^^ A;
    then consider a1, a2 such that
A2: a1 in A* and
A3: a2 in A and
A4: x = a1 ^ a2 by FLANG_1:def 1;
    consider n such that
A5: a1 in A |^ n by A2,FLANG_1:41;
A6: n + 1 >= 1 by NAT_1:11;
    a2 in A |^ 1 by A3,FLANG_1:25;
    then a1 ^ a2 in A |^ (n + 1) by A5,FLANG_1:40;
    hence x in A |^.. 1 by A4,A6,Th2;
  end;
  now
    let x be object;
    assume x in A |^.. 1;
    then consider n such that
A7: n >= 1 and
A8: x in A |^ n by Th2;
    consider m such that
A9: m + 1 = n by A7,NAT_1:6;
    A |^ (m + 1) c= (A*) ^^ A by FLANG_1:51;
    hence x in (A*) ^^ A by A8,A9;
  end;
  hence thesis by A1,TARSKI:2;
end;

theorem
  A* ^^ (A |^ k) = A |^.. k
proof
  defpred P[Nat] means A* ^^ (A |^ $1) = A |^.. $1;
A1: now
    let k;
    assume
A2: P[k];
    A* ^^ (A |^ (k + 1)) = A* ^^ ((A |^ k) ^^ A) by FLANG_1:23
      .= A |^.. k ^^ A by A2,FLANG_1:18
      .= A |^.. (k + 1) by Th16;
    hence P[k + 1];
  end;
  A* ^^ (A |^ 0) = A* ^^ {<%>E} by FLANG_1:24
    .= A* by FLANG_1:13
    .= A |^.. 0 by Th11;
  then
A3: P[0];
  for k holds P[k] from NAT_1:sch 2(A3, A1);
  hence thesis;
end;

theorem Th32:
  (A |^.. m) ^^ (A*) = A* ^^ (A |^.. m)
proof
  thus (A |^.. m) ^^ (A*) = (A |^.. m) ^^ (A |^.. 0) by Th11
    .= (A |^.. 0) ^^ (A |^.. m) by Th27
    .= A* ^^ (A |^.. m) by Th11;
end;

theorem Th33:
  k <= l implies (A |^.. n) ^^ (A |^ (k, l)) = A |^.. (n + k)
proof
  assume
A1: k <= l;
A2: A |^.. (n + k) c= (A |^.. n) ^^ (A |^ (k, l))
  proof
    let x be object;
    assume x in A |^.. (n + k);
    then consider i such that
A3: i >= n + k and
A4: x in A |^ i by Th2;
    consider m such that
A5: n + k + m = i by A3,NAT_1:10;
    i = n + m + k by A5;
    then x in (A |^ (n + m)) ^^ (A |^ k) by A4,FLANG_1:33;
    then
A6: ex a, b st a in A |^ (n + m) & b in A |^ k & x = a ^ b by FLANG_1:def 1;
A7: A |^ (n + m) c= A |^.. n by Th3,NAT_1:11;
    A |^ k c= A |^ (k, l) by A1,FLANG_2:20;
    hence thesis by A6,A7,FLANG_1:def 1;
  end;
  (A |^.. n) ^^ (A |^ (k, l)) c= A |^.. (n + k)
  proof
    let x be object;
    assume x in (A |^.. n) ^^ (A |^ (k, l));
    then consider a, b such that
A8: a in A |^.. n and
A9: b in A |^ (k, l) and
A10: x = a ^ b by FLANG_1:def 1;
    A |^ (k, l) c= A |^.. k by Th6;
    then a ^ b in (A |^.. n) ^^ (A |^.. k) by A8,A9,FLANG_1:def 1;
    hence thesis by A10,Th18;
  end;
  hence thesis by A2,XBOOLE_0:def 10;
end;

theorem
  k <= l implies A* ^^ (A |^ (k, l)) = A |^.. k
proof
  assume k <= l;
  then (A |^.. 0) ^^ (A |^ (k, l)) = A |^.. (0 + k) by Th33;
  hence thesis by Th11;
end;

theorem Th35:
  (A |^ m) |^.. n c= A |^.. (m * n)
proof
  let x be object;
  assume x in (A |^ m) |^.. n;
  then consider k such that
A1: k >= n and
A2: x in (A |^ m) |^ k by Th2;
A3: m * k >= m * n by A1,XREAL_1:64;
  x in A |^ (m * k) by A2,FLANG_1:34;
  hence thesis by A3,Th2;
end;

theorem
  (A |^ m) |^.. n c= (A |^.. n) |^ m
proof
  per cases;
  suppose
A1: m > 0;
    (A |^ m) |^.. n c= A |^.. (m * n) by Th35;
    hence thesis by A1,Th19;
  end;
  suppose
    m <= 0;
    then
A2: m = 0;
    then (A |^ m) |^.. n = {<%>E} |^.. n by FLANG_1:24
      .= {<%>E} by Th15
      .= (A |^.. n) |^ m by A2,FLANG_1:24;
    hence thesis;
  end;
end;

theorem Th37:
  a in C |^.. m & b in C |^.. n implies a ^ b in C |^.. (m + n)
proof
  assume that
A1: a in C |^.. m and
A2: b in C |^.. n;
A3: (C |^.. m) ^^ (C |^.. n) c= C |^.. (m + n) by Th21;
  a ^ b in (C |^.. m) ^^ (C |^.. n) by A1,A2,FLANG_1:def 1;
  hence thesis by A3;
end;

theorem Th38:
  A |^.. k = {x} implies x = <%>E
proof
  assume that
A1: A |^.. k = {x} and
A2: x <> <%>E;
  reconsider a = x as Element of E^omega by A1,ZFMISC_1:31;
  x in A |^.. k by A1,ZFMISC_1:31;
  then
A3: a ^ a in A |^.. (k + k) by Th37;
A4: A |^.. (k + k) c= A |^.. k by Th5,NAT_1:11;
  a ^ a <> x by A2,FLANG_1:11;
  hence thesis by A1,A4,A3,TARSKI:def 1;
end;

theorem
  A c= B* implies A |^.. n c= B*
proof
  assume
A1: A c= B*;
  let x be object;
  assume x in A |^.. n;
  then consider k such that
  k >= n and
A2: x in A |^ k by Th2;
  A |^ k c= B* by A1,FLANG_1:59;
  hence thesis by A2;
end;

theorem Th40:
  A? c= A |^.. k iff k = 0 or <%>E in A
proof
  thus A? c= A |^.. k implies k = 0 or <%>E in A
  proof
A1: <%>E in A? by FLANG_2:78;
    assume A? c= A |^.. k;
    hence thesis by A1,Th10;
  end;
  assume k = 0 or <%>E in A;
  then A |^.. k = A* by Th11;
  hence thesis by FLANG_2:86;
end;

theorem Th41:
  A |^.. k ^^ (A?) = A |^.. k
proof
  thus A |^.. k ^^ (A?) = A |^.. k ^^ (A |^ (0, 1)) by FLANG_2:79
    .= A |^.. (k + 0) by Th33
    .= A |^.. k;
end;

theorem
  A |^.. k ^^ (A?) = A? ^^ (A |^.. k)
proof
  thus A |^.. k ^^ (A?) = A |^.. k ^^ (A |^ (0, 1)) by FLANG_2:79
    .= A |^ (0, 1) ^^ (A |^.. k) by Th25
    .= A? ^^ (A |^.. k) by FLANG_2:79;
end;

theorem
  B c= A* implies A |^.. k ^^ B c= A |^.. k & B ^^ (A |^.. k) c= A |^.. k
proof
  assume
A1: B c= A*;
  then B ^^ (A |^.. k) c= A* ^^ (A |^.. k) by FLANG_1:17;
  then
A2: B ^^ (A |^.. k) c= A |^.. k ^^ (A*) by Th32;
  A |^.. k ^^ B c= A |^.. k ^^ (A*) by A1,FLANG_1:17;
  hence thesis by A2,Th17;
end;

theorem Th44:
  (A /\ B) |^.. k c= (A |^.. k) /\ (B |^.. k)
proof
 let x be object;
    assume x in (A /\ B) |^.. k;
    then consider m such that
A1: k <= m and
A2: x in (A /\ B) |^ m by Th2;
A3: B |^ m c= B |^.. k by A1,Th3;
    (A /\ B) |^ m c= (A |^ m) /\ (B |^ m) by FLANG_1:39;
    then
A4: x in (A |^ m) /\ (B |^ m) by A2;
    A |^ m c= A |^.. k by A1,Th3;
    then (A |^ m) /\ (B |^ m) c= (A |^.. k) /\ (B |^.. k) by A3,XBOOLE_1:27;
    hence thesis by A4;
end;

theorem Th45:
  (A |^.. k) \/ (B |^.. k) c= (A \/ B) |^.. k
proof
  let x be object;
    assume
A1: x in (A |^.. k) \/ (B |^.. k);
    per cases by A1,XBOOLE_0:def 3;
    suppose
      x in (A |^.. k);
      then consider m such that
A2:   k <= m and
A3:   x in A |^ m by Th2;
A4:   (A |^ m) \/ (B |^ m) c= (A \/ B) |^ m by FLANG_1:38;
      A |^ m c= (A |^ m) \/ (B |^ m) by XBOOLE_1:7;
      then A |^ m c= (A \/ B) |^ m by A4;
      then
A5:   x in (A \/ B) |^ m by A3;
      (A \/ B) |^ m c= (A \/ B) |^.. k by A2,Th3;
      hence thesis by A5;
    end;
    suppose
      x in (B |^.. k);
      then consider m such that
A6:   k <= m and
A7:   x in B |^ m by Th2;
A8:   (A |^ m) \/ (B |^ m) c= (A \/ B) |^ m by FLANG_1:38;
      B |^ m c= (A |^ m) \/ (B |^ m) by XBOOLE_1:7;
      then B |^ m c= (A \/ B) |^ m by A8;
      then
A9:   x in (A \/ B) |^ m by A7;
      (A \/ B) |^ m c= (A \/ B) |^.. k by A6,Th3;
      hence thesis by A9;
    end;
end;

theorem Th46:
  <%x%> in A |^.. k iff <%x%> in A & (<%>E in A or k <= 1)
proof
  thus <%x%> in A |^.. k implies <%x%> in A & (<%>E in A or k <= 1)
  proof
    assume <%x%> in A |^.. k;
    then ex m st k <= m & <%x%> in A |^ m by Th2;
    hence thesis by FLANG_2:9;
  end;
  assume that
A1: <%x%> in A and
A2: <%>E in A or k <= 1;
  per cases by A2,NAT_1:25;
  suppose
    <%>E in A & k > 1;
    then <%x%> in A |^ k by A1,FLANG_2:9;
    hence thesis by Th2;
  end;
  suppose
    k = 0;
    then A |^.. k = A* by Th11;
    hence thesis by A1,FLANG_1:72;
  end;
  suppose
    k = 1;
    then <%x%> in A |^ k by A1,FLANG_1:25;
    hence thesis by Th2;
  end;
end;

theorem Th47:
  A c= B |^.. k implies B |^.. k = (B \/ A) |^.. k
proof
  defpred P[Nat] means $1 >= k implies (B \/ A) |^ $1 c= B |^.. k;
  B |^ 1 c= B |^.. 1 by Th3;
  then
A1: B c= B |^.. 1 by FLANG_1:25;
  assume
A2: A c= B |^.. k;
A3: now
    let n;
    assume
A4: P[n];
    now
      assume
A5:   n + 1 >= k;
      per cases by A5,NAT_1:8;
      suppose
A6:     n + 1 = k;
        per cases;
        suppose
          k = 0;
          hence (B \/ A) |^ (n + 1) c= B |^.. k by A6;
        end;
        suppose
A7:       k > 0;
          then k >= 0 + 1 by NAT_1:13;
          then B |^.. k c= B |^.. 1 by Th5;
          then A c= B |^.. 1 by A2;
          then B \/ A c= B |^.. 1 by A1,XBOOLE_1:8;
          then
A8:       (B \/ A) |^ k c= (B |^.. 1) |^ k by FLANG_1:37;
          (B |^.. 1) |^ k c= B |^.. (1 * k) by A7,Th19;
          hence (B \/ A) |^ (n + 1) c= B |^.. k by A6,A8;
        end;
      end;
      suppose
A9:     n >= k;
A10:    B |^.. (k + k) c= B |^.. k by Th5,NAT_1:11;
        (B \/ A) |^ n ^^ A c= B |^.. (k + k) by A2,A4,A9,Th21;
        then
A11:    (B \/ A) |^ n ^^ A c= B |^.. k by A10;
A12:    B |^.. (k + 1) c= B |^.. k by Th5,NAT_1:11;
        (B \/ A) |^ n ^^ B c= B |^.. (k + 1) by A1,A4,A9,Th21;
        then
A13:    (B \/ A) |^ n ^^ B c= B |^.. k by A12;
        (B \/ A) |^ (n + 1) = (B \/ A) |^ n ^^ (B \/ A) by FLANG_1:23
          .= (B \/ A) |^ n ^^ B \/ (B \/ A) |^ n ^^ A by FLANG_1:20;
        hence (B \/ A) |^ (n + 1) c= B |^.. k by A13,A11,XBOOLE_1:8;
      end;
    end;
    hence P[n + 1];
  end;
A14: P[0]
  proof
    assume 0 >= k;
    then k = 0;
    then
A15: B |^.. k = B* by Th11;
A16: <%>E in B* by FLANG_1:48;
    (B \/ A) |^ 0 = {<%>E} by FLANG_1:24;
    hence thesis by A15,A16,ZFMISC_1:31;
  end;
A17: for n holds P[n] from NAT_1:sch 2(A14, A3);
A18: (B \/ A) |^.. k c= B |^.. k
  proof
    let x be object;
    assume x in (B \/ A) |^.. k;
    then consider n such that
A19: n >= k and
A20: x in (B \/ A) |^ n by Th2;
    (B \/ A) |^ n c= B |^.. k by A17,A19;
    hence thesis by A20;
  end;
  B |^.. k c= (B \/ A) |^.. k by Th13,XBOOLE_1:7;
  hence thesis by A18,XBOOLE_0:def 10;
end;

begin

:: Positive Closure
:: Definition of +

definition
  let E, A;
  func A+ -> Subset of E^omega equals
  union { B: ex n st n > 0 & B = A |^ n };
  coherence
  proof
    defpred P[set] means ex n st n > 0 & $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;

:: Positive Closure
:: Properties of +

theorem Th48:
  x in A+ iff ex n st n > 0 & x in A |^ n
proof
  thus x in A+ implies ex n st n > 0 & x in A |^ n
  proof
    defpred P[set] means ex n st n > 0 & $1 = A |^ n;
    assume x in A+;
    then consider X such that
A1: x in X and
A2: X in { B: ex n st n > 0 & B = A |^ n } 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: n > 0 and
A5: x in A |^ n;
  defpred P[set] means ex n st n > 0 & $1 = A |^ n;
  consider B such that
A6: x in B and
A7: P[B] by A4,A5;
  reconsider A = { C : P[C] } as Subset-Family of E^omega from DOMAIN_1:sch 7;
  B in A by A7;
  hence thesis by A6,TARSKI:def 4;
end;

theorem Th49:
  n > 0 implies A |^ n c= A+
by Th48;

theorem Th50:
  A+ = A |^.. 1
proof
A1: now
    let x be object;
    assume x in A+;
    then consider k such that
A2: 0 < k and
A3: x in A |^ k by Th48;
    0 + 1 <= k by A2,NAT_1:13;
    hence x in A |^.. 1 by A3,Th2;
  end;
  now
    let x be object;
    assume x in A |^.. 1;
    then ex k st 1 <= k & x in A |^ k by Th2;
    hence x in A+ by Th48;
  end;
  hence thesis by A1,TARSKI:2;
end;

theorem
  A+ = {} iff A = {}
proof
  A+ = A |^.. 1 by Th50;
  hence thesis by Th4;
end;

theorem Th52:
  A+ = (A*) ^^ A
proof
  A* ^^ A = A |^.. 1 by Th30;
  hence thesis by Th50;
end;

theorem Th53:
  A* = {<%>E} \/ (A+)
proof
  thus A* = {<%>E} \/ ((A*) ^^ A) by FLANG_1:56
    .= {<%>E} \/ (A+) by Th52;
end;

theorem
  A+ = A |^ (1, n) \/ A |^.. (n + 1)
proof
A1: 0 + 1 <= n + 1 by XREAL_1:7;
  thus A+ = A |^.. 1 by Th50
    .= A |^ (1, n) \/ A |^.. (n + 1) by A1,Th7;
end;

theorem Th55:
  A+ c= A*
proof
  A |^.. 1 c= A* by Th9;
  hence thesis by Th50;
end;

theorem Th56:
  <%>E in A+ iff <%>E in A
proof
  A+ = A |^.. 1 by Th50;
  hence thesis by Th10;
end;

theorem Th57:
  A+ = A* iff <%>E in A
proof
  thus A+ = A* implies <%>E in A
  by FLANG_1:48,Th56;
  assume <%>E in A;
  then A* = (A*) ^^ A by FLANG_1:54;
  hence thesis by Th52;
end;

theorem Th58:
  A c= B implies A+ c= B+
proof
  assume A c= B;
  then A |^.. 1 c= B |^.. 1 by Th13;
  then A+ c= B |^.. 1 by Th50;
  hence thesis by Th50;
end;

theorem Th59:
  A c= A+
proof
  A |^ 1 c= A+ by Th49;
  hence thesis by FLANG_1:25;
end;

theorem Th60:
  (A*)+ = A* & (A+)* = A*
proof
A1: A* c= (A+)* by Th59,FLANG_1:61;
  now
    let x be object;
    assume x in (A*)+;
    then consider k such that
    0 < k and
A2: x in (A*) |^ k by Th48;
    (A*) |^ k c= A* by FLANG_1:65;
    hence x in A* by A2;
  end;
  then
A3: (A*)+ c= A*;
  now
    let x be object;
    assume x in (A+)*;
    then consider k such that
A4: x in (A+) |^ k by FLANG_1:41;
    (A+) |^ k c= A* by Th55,FLANG_1:59;
    hence x in A* by A4;
  end;
  then
A5: (A+)* c= A*;
  A* c= (A*)+ by Th59;
  hence thesis by A1,A3,A5,XBOOLE_0:def 10;
end;

theorem Th61:
  A c= B* implies A+ c= B*
proof
  assume A c= B*;
  then A+ c= (B*)+ by Th58;
  hence thesis by Th60;
end;

theorem
  (A+)+ = A+
proof
  now
    let x be object;
    assume that
A1: x in (A+)+;
    per cases;
    suppose
      x = <%>E;
      hence x in A+ by A1,Th56;
    end;
    suppose
A2:   x <> <%>E;
      (A+)+ c= A* by Th55,Th61;
      then x in A* by A1;
      then
A3:   x in (A+) \/ {<%>E} by Th53;
      not x in {<%>E} by A2,TARSKI:def 1;
      hence x in A+ by A3,XBOOLE_0:def 3;
    end;
  end;
  then
A4: (A+)+ c= A+;
  A+ c= (A+)+ by Th59;
  hence thesis by A4,XBOOLE_0:def 10;
end;

theorem
  x in A & x <> <%>E implies A+ <> {<%>E}
proof
  assume that
A1: x in A and
A2: x <> <%>E;
  A+ = A |^.. 1 by Th50;
  hence thesis by A1,A2,Th14;
end;

theorem
  A+ = {<%>E} iff A = {<%>E}
proof
  A+ = A |^.. 1 by Th50;
  hence thesis by Th15;
end;

theorem
  (A+)? = A* & (A?)+ = A*
proof
  thus (A+)? = {<%>E} \/ (A+) by FLANG_2:76
    .= A* by Th53;
  <%>E in A? by FLANG_2:78;
  then (A?)+ = (A?)* by Th57;
  hence (A?)+ = A* by FLANG_2:85;
end;

theorem Th66:
  a in C+ & b in C+ implies a ^ b in C+
proof
  assume that
A1: a in C+ and
A2: b in C+;
  consider l such that
  l > 0 and
A3: b in C |^ l by A2,Th48;
  consider k such that
A4: k > 0 and
A5: a in C |^ k by A1,Th48;
  a ^ b in C |^ (k + l) by A5,A3,FLANG_1:40;
  hence thesis by A4,Th48;
end;

theorem
  A c= C+ & B c= C+ implies A ^^ B c= C+
proof
  assume that
A1: A c= C+ and
A2: B c= C+;
    let x be object;
    assume x in A ^^ B;
    then ex a, b st a in A & b in B & x = a ^ b by FLANG_1:def 1;
    hence x in C+ by A1,A2,Th66;
end;

theorem
  A ^^ A c= A+
proof
  A ^^ A = A |^ 2 by FLANG_1:26;
  hence thesis by Th49;
end;

theorem
  A+ = {x} implies x = <%>E
proof
  assume that
A1: A+ = {x} and
A2: x <> <%>E;
  A |^.. 1 = {x} by A1,Th50;
  hence thesis by A2,Th38;
end;

theorem
  A ^^ (A+) = (A+) ^^ A
proof
  thus A ^^ (A+) = A ^^ (A |^.. 1) by Th50
    .= (A |^.. 1) ^^ A by Th23
    .= A+ ^^ A by Th50;
end;

theorem
  (A |^ k) ^^ (A+) = (A+) ^^ (A |^ k)
proof
  thus (A |^ k) ^^ (A+) = (A |^ k) ^^ (A |^.. 1) by Th50
    .= (A |^.. 1) ^^ (A |^ k) by Th24
    .= A+ ^^ (A |^ k) by Th50;
end;

theorem Th72:
  (A |^ (m, n)) ^^ (A+) = A+ ^^ (A |^ (m, n))
proof
  thus (A |^ (m, n)) ^^ (A+) = (A |^ (m, n)) ^^ (A |^.. 1) by Th50
    .= (A |^.. 1) ^^ (A |^ (m, n)) by Th25
    .= A+ ^^ (A |^ (m, n)) by Th50;
end;

theorem
  <%>E in B implies A c= A ^^ (B+) & A c= (B+) ^^ A
proof
  assume <%>E in B;
  then B+ = B* by Th57;
  hence thesis by FLANG_2:18;
end;

theorem
  A+ ^^ (A+) = A |^.. 2
proof
  thus A+ ^^ (A+) = A |^.. 1 ^^ (A+) by Th50
    .= A |^.. 1 ^^ (A |^.. 1) by Th50
    .= A |^.. (1 + 1) by Th18
    .= A |^.. 2;
end;

theorem Th75:
  A+ ^^ (A |^ k) = A |^.. (k + 1)
proof
  thus A+ ^^ (A |^ k) = (A |^.. 1) ^^ (A |^ k) by Th50
    .= A |^.. (k + 1) by Th22;
end;

theorem
  A+ ^^ A = A |^.. 2
proof
  A+ ^^ A = A+ ^^ (A |^ 1) by FLANG_1:25
    .= A |^.. (1 + 1) by Th75;
  hence thesis;
end;

theorem
  k <= l implies A+ ^^ (A |^ (k, l)) = A |^.. (k + 1)
proof
  assume k <= l;
  then (A |^.. 1) ^^ (A |^ (k, l)) = A |^.. (1 + k) by Th33;
  hence thesis by Th50;
end;

theorem
  A c= B+ & n > 0 implies A |^ n c= B+
proof
  assume that
A1: A c= B+ and
A2: n > 0;
  A c= B |^.. 1 by A1,Th50;
  then A |^ n c= B |^.. 1 by A2,Th28;
  hence thesis by Th50;
end;

theorem
  A+ ^^ (A?) = A? ^^ (A+)
proof
  thus A+ ^^ (A?) = A+ ^^ (A |^ (0, 1)) by FLANG_2:79
    .= A |^ (0, 1) ^^ (A+) by Th72
    .= A? ^^ (A+) by FLANG_2:79;
end;

theorem
  A+ ^^ (A?) = A+
proof
  thus A+ ^^ (A?) = A |^.. 1 ^^ (A?) by Th50
    .= A |^.. 1 by Th41
    .= A+ by Th50;
end;

theorem
  A? c= A+ iff <%>E in A
proof
  A+ = A |^.. 1 by Th50;
  hence thesis by Th40;
end;

theorem
  A c= B+ implies A+ c= B+
proof
  assume A c= B+;
  then A c= B |^.. 1 by Th50;
  then A |^.. 1 c= B |^.. 1 by Th29;
  then A+ c= B |^.. 1 by Th50;
  hence thesis by Th50;
end;

theorem
  A c= B+ implies B+ = (B \/ A)+
proof
  assume A c= B+;
  then A c= B |^.. 1 by Th50;
  then B |^.. 1 = (B \/ A) |^.. 1 by Th47;
  then B |^.. 1 = (B \/ A)+ by Th50;
  hence thesis by Th50;
end;

theorem
  n > 0 implies A |^.. n c= A+
proof
  assume
A1: n > 0;
  let x be object;
  assume x in A |^.. n;
  then ex k st k >= n & x in A |^ k by Th2;
  hence thesis by A1,Th48;
end;

theorem
  m > 0 implies A |^ (m, n) c= A+
proof
  assume
A1: m > 0;
  let x be object;
  assume x in A |^ (m, n);
  then ex k st m <= k & k <= n & x in A |^ k by FLANG_2:19;
  hence thesis by A1,Th48;
end;

theorem Th86:
  A* ^^ (A+) = A+ ^^ (A*)
proof
  thus A* ^^ (A+) = A* ^^ (A |^.. 1) by Th50
    .= (A |^.. 1) ^^ (A*) by Th32
    .= A+ ^^ (A*) by Th50;
end;

theorem Th87:
  A+ |^ k c= A |^.. k
proof
  per cases;
  suppose
    k > 0;
    then (A |^.. 1) |^ k c= A |^.. (1 * k) by Th19;
    hence thesis by Th50;
  end;
  suppose
A1: k = 0;
    A |^.. 0 = A* by Th11;
    then
A2: <%>E in A |^.. 0 by FLANG_1:48;
    A+ |^ k = {<%>E} by A1,FLANG_1:24;
    hence thesis by A1,A2,ZFMISC_1:31;
  end;
end;

theorem
  A+ |^ (m, n) c= A |^.. m
proof
  let x be object;
  assume x in A+ |^ (m, n);
  then consider k such that
A1: m <= k and
  k <= n and
A2: x in A+ |^ k by FLANG_2:19;
  A+ |^ k c= A |^.. k by Th87;
  then
A3: x in A |^.. k by A2;
  A |^.. k c= A |^.. m by A1,Th5;
  hence thesis by A3;
end;

theorem
  A c= B+ & n > 0 implies A |^.. n c= B+
proof
  assume that
A1: A c= B+ and
A2: n > 0;
  A c= B |^.. 1 by A1,Th50;
  then A |^.. n c= B |^.. 1 by A2,Th29;
  hence thesis by Th50;
end;

theorem Th90:
  A+ ^^ (A |^.. k) = A |^.. (k + 1)
proof
  thus A+ ^^ (A |^.. k) = (A |^.. 1) ^^ (A |^.. k) by Th50
    .= A |^.. (k + 1) by Th18;
end;

theorem
  A+ ^^ (A |^.. k) = A |^.. k ^^ (A+)
proof
  thus A+ ^^ (A |^.. k) = A |^.. (k + 1) by Th90
    .= (A |^.. k) ^^ (A |^.. 1) by Th18
    .= A |^.. k ^^ (A+) by Th50;
end;

theorem Th92:
  A+ ^^ (A*) = A+
proof
  thus A+ ^^ (A*) = (A |^.. 1) ^^ (A*) by Th50
    .= A |^.. 1 by Th17
    .= A+ by Th50;
end;

theorem
  B c= A* implies A+ ^^ B c= A+ & B ^^ (A+) c= A+
proof
  assume
A1: B c= A*;
  then B ^^ (A+) c= A* ^^ (A+) by FLANG_1:17;
  then
A2: B ^^ (A+) c= A+ ^^ (A*) by Th86;
  A+ ^^ B c= A+ ^^ (A*) by A1,FLANG_1:17;
  hence thesis by A2,Th92;
end;

theorem
  (A /\ B)+ c= (A+) /\ (B+)
proof
A1: A+ = A |^.. 1 by Th50;
A2: B+ = B |^.. 1 by Th50;
  (A /\ B)+ = (A /\ B) |^.. 1 by Th50;
  hence thesis by A1,A2,Th44;
end;

theorem
  (A+) \/ (B+) c= (A \/ B)+
proof
A1: A+ = A |^.. 1 by Th50;
A2: B+ = B |^.. 1 by Th50;
  (A \/ B)+ = (A \/ B) |^.. 1 by Th50;
  hence thesis by A1,A2,Th45;
end;

theorem
  <%x%> in A+ iff <%x%> in A
proof
  A+ = A |^.. 1 by Th50;
  hence thesis by Th46;
end;