Article FINSEQ_1, MML version 4.99.1005

:: FINSEQ_1:funcnot 1 => FINSEQ_1:func 1
definition
  let a1 be natural set;
  func Seg A1 -> set equals
    {b1 where b1 is Element of NAT: 1 <= b1 & b1 <= a1};
end;

:: FINSEQ_1:def 1
theorem
for b1 being natural set holds
   Seg b1 = {b2 where b2 is Element of NAT: 1 <= b2 & b2 <= b1};

:: FINSEQ_1:funcnot 2 => FINSEQ_1:func 2
definition
  let a1 be natural set;
  redefine func Seg a1 -> Element of bool NAT;
end;

:: FINSEQ_1:th 3
theorem
for b1, b2 being natural set holds
   b1 in Seg b2
iff
   1 <= b1 & b1 <= b2;

:: FINSEQ_1:th 4
theorem
Seg 0 = {} & Seg 1 = {1} & Seg 2 = {1,2};

:: FINSEQ_1:th 5
theorem
for b1 being natural set
      st b1 <> 0
   holds b1 in Seg b1;

:: FINSEQ_1:th 6
theorem
for b1 being natural set holds
   b1 + 1 in Seg (b1 + 1);

:: FINSEQ_1:th 7
theorem
for b1, b2 being natural set holds
   b1 <= b2
iff
   Seg b1 c= Seg b2;

:: FINSEQ_1:th 8
theorem
for b1, b2 being natural set
      st Seg b1 = Seg b2
   holds b1 = b2;

:: FINSEQ_1:th 9
theorem
for b1, b2 being natural set
      st b1 <= b2
   holds Seg b1 = (Seg b2) /\ Seg b1;

:: FINSEQ_1:th 10
theorem
for b1, b2 being natural set
      st Seg b1 = (Seg b1) /\ Seg b2
   holds b1 <= b2;

:: FINSEQ_1:th 11
theorem
for b1 being natural set holds
   (Seg b1) \/ {b1 + 1} = Seg (b1 + 1);

:: FINSEQ_1:th 12
theorem
for b1 being natural set holds
   Seg b1 = (Seg (b1 + 1)) \ {b1 + 1};

:: FINSEQ_1:attrnot 1 => FINSEQ_1:attr 1
definition
  let a1 be Relation-like set;
  attr a1 is FinSequence-like means
    ex b1 being natural set st
       proj1 a1 = Seg b1;
end;

:: FINSEQ_1:dfs 2
definiens
  let a1 be Relation-like set;
To prove
     a1 is FinSequence-like
it is sufficient to prove
  thus ex b1 being natural set st
       proj1 a1 = Seg b1;

:: FINSEQ_1:def 2
theorem
for b1 being Relation-like set holds
      b1 is FinSequence-like
   iff
      ex b2 being natural set st
         proj1 b1 = Seg b2;

:: FINSEQ_1:exreg 1
registration
  cluster Relation-like Function-like FinSequence-like set;
end;

:: FINSEQ_1:modenot 1
definition
  mode FinSequence is Relation-like Function-like FinSequence-like set;
end;

:: FINSEQ_1:funcreg 1
registration
  let a1 be natural set;
  cluster Seg a1 -> finite;
end;

:: FINSEQ_1:condreg 1
registration
  cluster Relation-like Function-like FinSequence-like -> finite (set);
end;

:: FINSEQ_1:funcnot 3 => CARD_1:func 1
notation
  let a1 be Relation-like Function-like FinSequence-like set;
  synonym len a1 for Card a1;
end;

:: FINSEQ_1:funcnot 4 => FINSEQ_1:func 3
definition
  let a1 be Relation-like Function-like FinSequence-like set;
  redefine func len A1 -> Element of NAT means
    Seg it = proj1 a1;
  projectivity;
::  for a1 being Relation-like Function-like FinSequence-like set holds
::     len len a1 = len a1;
end;

:: FINSEQ_1:def 3
theorem
for b1 being Relation-like Function-like FinSequence-like set
for b2 being Element of NAT holds
      b2 = len b1
   iff
      Seg b2 = proj1 b1;

:: FINSEQ_1:funcnot 5 => FINSEQ_1:func 4
definition
  let a1 be Relation-like Function-like FinSequence-like set;
  redefine func dom a1 -> Element of bool NAT;
end;

:: FINSEQ_1:th 14
theorem
{} is Relation-like Function-like FinSequence-like set;

:: FINSEQ_1:th 15
theorem
for b1 being Relation-like Function-like set
      st ex b2 being natural set st
           proj1 b1 c= Seg b2
   holds ex b2 being Relation-like Function-like FinSequence-like set st
      b1 c= b2;

:: FINSEQ_1:sch 1
scheme FINSEQ_1:sch 1
{F1 -> natural set}:
ex b1 being Relation-like Function-like FinSequence-like set st
   dom b1 = Seg F1() &
    (for b2 being natural set
          st b2 in Seg F1()
       holds P1[b2, b1 . b2])
provided
   for b1 being natural set
   for b2, b3 being set
         st b1 in Seg F1() & P1[b1, b2] & P1[b1, b3]
      holds b2 = b3
and
   for b1 being natural set
         st b1 in Seg F1()
      holds ex b2 being set st
         P1[b1, b2];


:: FINSEQ_1:sch 2
scheme FINSEQ_1:sch 2
{F1 -> natural set,
  F2 -> set}:
ex b1 being Relation-like Function-like FinSequence-like set st
   len b1 = F1() &
    (for b2 being natural set
          st b2 in dom b1
       holds b1 . b2 = F2(b2))


:: FINSEQ_1:th 16
theorem
for b1 being set
for b2 being Relation-like Function-like FinSequence-like set
      st b1 in b2
   holds ex b3 being natural set st
      b3 in dom b2 & b1 = [b3,b2 . b3];

:: FINSEQ_1:th 17
theorem
for b1, b2 being Relation-like Function-like FinSequence-like set
      st dom b1 = dom b2 &
         (for b3 being natural set
               st b3 in dom b1
            holds b1 . b3 = b2 . b3)
   holds b1 = b2;

:: FINSEQ_1:th 18
theorem
for b1, b2 being Relation-like Function-like FinSequence-like set
      st len b1 = len b2 &
         (for b3 being natural set
               st 1 <= b3 & b3 <= len b1
            holds b1 . b3 = b2 . b3)
   holds b1 = b2;

:: FINSEQ_1:th 19
theorem
for b1 being natural set
for b2 being Relation-like Function-like FinSequence-like set holds
   b2 | Seg b1 is Relation-like Function-like FinSequence-like set;

:: FINSEQ_1:th 20
theorem
for b1 being Relation-like Function-like set
for b2 being Relation-like Function-like FinSequence-like set
      st proj2 b2 c= proj1 b1
   holds b2 * b1 is Relation-like Function-like FinSequence-like set;

:: FINSEQ_1:th 21
theorem
for b1 being natural set
for b2, b3 being Relation-like Function-like FinSequence-like set
      st b1 <= len b2 & b3 = b2 | Seg b1
   holds len b3 = b1 & dom b3 = Seg b1;

:: FINSEQ_1:modenot 2 => FINSEQ_1:mode 1
definition
  let a1 be set;
  mode FinSequence of A1 -> Relation-like Function-like FinSequence-like set means
    proj2 it c= a1;
end;

:: FINSEQ_1:dfs 4
definiens
  let a1 be set;
  let a2 be Relation-like Function-like FinSequence-like set;
To prove
     a2 is FinSequence of a1
it is sufficient to prove
  thus proj2 a2 c= a1;

:: FINSEQ_1:def 4
theorem
for b1 being set
for b2 being Relation-like Function-like FinSequence-like set holds
      b2 is FinSequence of b1
   iff
      proj2 b2 c= b1;

:: FINSEQ_1:funcreg 2
registration
  cluster {} -> FinSequence-like;
end;

:: FINSEQ_1:exreg 2
registration
  let a1 be set;
  cluster Relation-like Function-like FinSequence-like Relation of NAT,a1;
end;

:: FINSEQ_1:modenot 3 => FINSEQ_1:mode 2
definition
  let a1 be set;
  redefine mode FinSequence of a1 -> Function-like FinSequence-like Relation of NAT,a1;
end;

:: FINSEQ_1:th 23
theorem
for b1 being natural set
for b2 being set
for b3 being FinSequence of b2 holds
   b3 | Seg b1 is FinSequence of b2;

:: FINSEQ_1:th 24
theorem
for b1 being natural set
for b2 being non empty set holds
   ex b3 being FinSequence of b2 st
      len b3 = b1;

:: FINSEQ_1:exreg 3
registration
  cluster Relation-like Function-like empty finite FinSequence-like set;
end;

:: FINSEQ_1:th 28
theorem
for b1 being Relation-like Function-like FinSequence-like set holds
      b1 <> {}
   iff
      1 <= len b1;

:: FINSEQ_1:funcnot 6 => FINSEQ_1:func 5
definition
  let a1 be set;
  func <*A1*> -> set equals
    {[1,a1]};
end;

:: FINSEQ_1:def 5
theorem
for b1 being set holds
   <*b1*> = {[1,b1]};

:: FINSEQ_1:funcnot 7 => FINSEQ_1:func 6
definition
  let a1 be set;
  func <*> A1 -> FinSequence of a1 equals
    {};
end;

:: FINSEQ_1:def 6
theorem
for b1 being set holds
   <*> b1 = {};

:: FINSEQ_1:funcreg 3
registration
  let a1 be set;
  cluster <*> a1 -> empty;
end;

:: FINSEQ_1:exreg 4
registration
  let a1 be set;
  cluster Relation-like Function-like empty finite FinSequence-like FinSequence of a1;
end;

:: FINSEQ_1:th 32
theorem
for b1 being Relation-like Function-like FinSequence-like set
for b2 being set holds
      b1 = <*> b2
   iff
      len b1 = 0;

:: FINSEQ_1:funcnot 8 => FINSEQ_1:func 7
definition
  let a1, a2 be Relation-like Function-like FinSequence-like set;
  func A1 ^ A2 -> Relation-like Function-like FinSequence-like set means
    dom it = Seg ((len a1) + len a2) &
     (for b1 being natural set
           st b1 in dom a1
        holds it . b1 = a1 . b1) &
     (for b1 being natural set
           st b1 in dom a2
        holds it . ((len a1) + b1) = a2 . b1);
end;

:: FINSEQ_1:def 7
theorem
for b1, b2, b3 being Relation-like Function-like FinSequence-like set holds
   b3 = b1 ^ b2
iff
   dom b3 = Seg ((len b1) + len b2) &
    (for b4 being natural set
          st b4 in dom b1
       holds b3 . b4 = b1 . b4) &
    (for b4 being natural set
          st b4 in dom b2
       holds b3 . ((len b1) + b4) = b2 . b4);

:: FINSEQ_1:th 33
theorem
for b1, b2 being Relation-like Function-like FinSequence-like set holds
b1 = (b1 ^ b2) | dom b1;

:: FINSEQ_1:th 35
theorem
for b1, b2 being Relation-like Function-like FinSequence-like set holds
len (b1 ^ b2) = (len b1) + len b2;

:: FINSEQ_1:th 36
theorem
for b1, b2 being Relation-like Function-like FinSequence-like set
for b3 being natural set
      st (len b1) + 1 <= b3 & b3 <= (len b1) + len b2
   holds (b1 ^ b2) . b3 = b2 . (b3 - len b1);

:: FINSEQ_1:th 37
theorem
for b1, b2 being Relation-like Function-like FinSequence-like set
for b3 being natural set
      st len b1 < b3 & b3 <= len (b1 ^ b2)
   holds (b1 ^ b2) . b3 = b2 . (b3 - len b1);

:: FINSEQ_1:th 38
theorem
for b1, b2 being Relation-like Function-like FinSequence-like set
for b3 being natural set
      st b3 in dom (b1 ^ b2) & not b3 in dom b1
   holds ex b4 being natural set st
      b4 in dom b2 & b3 = (len b1) + b4;

:: FINSEQ_1:th 39
theorem
for b1, b2 being Relation-like Function-like FinSequence-like set holds
dom b1 c= dom (b1 ^ b2);

:: FINSEQ_1:th 40
theorem
for b1 being set
for b2, b3 being Relation-like Function-like FinSequence-like set
      st b1 in dom b2
   holds ex b4 being natural set st
      b4 = b1 & (len b3) + b4 in dom (b3 ^ b2);

:: FINSEQ_1:th 41
theorem
for b1 being natural set
for b2, b3 being Relation-like Function-like FinSequence-like set
      st b1 in dom b2
   holds (len b3) + b1 in dom (b3 ^ b2);

:: FINSEQ_1:th 42
theorem
for b1, b2 being Relation-like Function-like FinSequence-like set holds
proj2 b1 c= proj2 (b1 ^ b2);

:: FINSEQ_1:th 43
theorem
for b1, b2 being Relation-like Function-like FinSequence-like set holds
proj2 b1 c= proj2 (b2 ^ b1);

:: FINSEQ_1:th 44
theorem
for b1, b2 being Relation-like Function-like FinSequence-like set holds
proj2 (b1 ^ b2) = (proj2 b1) \/ proj2 b2;

:: FINSEQ_1:th 45
theorem
for b1, b2, b3 being Relation-like Function-like FinSequence-like set holds
(b1 ^ b2) ^ b3 = b1 ^ (b2 ^ b3);

:: FINSEQ_1:th 46
theorem
for b1, b2, b3 being Relation-like Function-like FinSequence-like set
      st (b1 ^ b2 = b3 ^ b2 or b2 ^ b1 = b2 ^ b3)
   holds b1 = b3;

:: FINSEQ_1:th 47
theorem
for b1 being Relation-like Function-like FinSequence-like set holds
   b1 ^ {} = b1 & {} ^ b1 = b1;

:: FINSEQ_1:th 48
theorem
for b1, b2 being Relation-like Function-like FinSequence-like set
      st b1 ^ b2 = {}
   holds b1 = {} & b2 = {};

:: FINSEQ_1:funcnot 9 => FINSEQ_1:func 8
definition
  let a1 be set;
  let a2, a3 be FinSequence of a1;
  redefine func a2 ^ a3 -> FinSequence of a1;
end;

:: FINSEQ_1:funcnot 10 => FINSEQ_1:func 9
definition
  let a1 be set;
  redefine func <*A1*> -> Relation-like Function-like set means
    proj1 it = Seg 1 & it . 1 = a1;
end;

:: FINSEQ_1:def 8
theorem
for b1 being set
for b2 being Relation-like Function-like set holds
      b2 = <*b1*>
   iff
      proj1 b2 = Seg 1 & b2 . 1 = b1;

:: FINSEQ_1:funcreg 4
registration
  let a1 be set;
  cluster <*a1*> -> Relation-like Function-like;
end;

:: FINSEQ_1:funcreg 5
registration
  let a1 be set;
  cluster <*a1*> -> FinSequence-like;
end;

:: FINSEQ_1:th 50
theorem
for b1, b2 being Relation-like Function-like FinSequence-like set
for b3 being set
      st b1 ^ b2 is FinSequence of b3
   holds b1 is FinSequence of b3 & b2 is FinSequence of b3;

:: FINSEQ_1:funcnot 11 => FINSEQ_1:func 10
definition
  let a1, a2 be set;
  func <*A1,A2*> -> set equals
    <*a1*> ^ <*a2*>;
end;

:: FINSEQ_1:def 9
theorem
for b1, b2 being set holds
<*b1,b2*> = <*b1*> ^ <*b2*>;

:: FINSEQ_1:funcnot 12 => FINSEQ_1:func 11
definition
  let a1, a2, a3 be set;
  func <*A1,A2,A3*> -> set equals
    (<*a1*> ^ <*a2*>) ^ <*a3*>;
end;

:: FINSEQ_1:def 10
theorem
for b1, b2, b3 being set holds
<*b1,b2,b3*> = (<*b1*> ^ <*b2*>) ^ <*b3*>;

:: FINSEQ_1:funcreg 6
registration
  let a1, a2 be set;
  cluster <*a1,a2*> -> Relation-like Function-like;
end;

:: FINSEQ_1:funcreg 7
registration
  let a1, a2, a3 be set;
  cluster <*a1,a2,a3*> -> Relation-like Function-like;
end;

:: FINSEQ_1:funcreg 8
registration
  let a1, a2 be set;
  cluster <*a1,a2*> -> FinSequence-like;
end;

:: FINSEQ_1:funcreg 9
registration
  let a1, a2, a3 be set;
  cluster <*a1,a2,a3*> -> FinSequence-like;
end;

:: FINSEQ_1:th 52
theorem
for b1 being set holds
   <*b1*> = {[1,b1]};

:: FINSEQ_1:th 55
theorem
for b1 being set
for b2 being Relation-like Function-like FinSequence-like set holds
      b2 = <*b1*>
   iff
      dom b2 = Seg 1 & proj2 b2 = {b1};

:: FINSEQ_1:th 56
theorem
for b1 being set
for b2 being Relation-like Function-like FinSequence-like set holds
      b2 = <*b1*>
   iff
      len b2 = 1 & proj2 b2 = {b1};

:: FINSEQ_1:th 57
theorem
for b1 being set
for b2 being Relation-like Function-like FinSequence-like set holds
      b2 = <*b1*>
   iff
      len b2 = 1 & b2 . 1 = b1;

:: FINSEQ_1:th 58
theorem
for b1 being set
for b2 being Relation-like Function-like FinSequence-like set holds
   (<*b1*> ^ b2) . 1 = b1;

:: FINSEQ_1:th 59
theorem
for b1 being set
for b2 being Relation-like Function-like FinSequence-like set holds
   (b2 ^ <*b1*>) . ((len b2) + 1) = b1;

:: FINSEQ_1:th 60
theorem
for b1, b2, b3 being set holds
<*b1,b2,b3*> = <*b1*> ^ <*b2,b3*> &
 <*b1,b2,b3*> = <*b1,b2*> ^ <*b3*>;

:: FINSEQ_1:th 61
theorem
for b1, b2 being set
for b3 being Relation-like Function-like FinSequence-like set holds
      b3 = <*b1,b2*>
   iff
      len b3 = 2 & b3 . 1 = b1 & b3 . 2 = b2;

:: FINSEQ_1:th 62
theorem
for b1, b2, b3 being set
for b4 being Relation-like Function-like FinSequence-like set holds
      b4 = <*b1,b2,b3*>
   iff
      len b4 = 3 & b4 . 1 = b1 & b4 . 2 = b2 & b4 . 3 = b3;

:: FINSEQ_1:th 63
theorem
for b1 being Relation-like Function-like FinSequence-like set
      st b1 <> {}
   holds ex b2 being Relation-like Function-like FinSequence-like set st
      ex b3 being set st
         b1 = b2 ^ <*b3*>;

:: FINSEQ_1:funcnot 13 => FINSEQ_1:func 12
definition
  let a1 be non empty set;
  let a2 be Element of a1;
  redefine func <*a2*> -> FinSequence of a1;
end;

:: FINSEQ_1:sch 3
scheme FINSEQ_1:sch 3
for b1 being Relation-like Function-like FinSequence-like set holds
   P1[b1]
provided
   P1[{}]
and
   for b1 being Relation-like Function-like FinSequence-like set
   for b2 being set
         st P1[b1]
      holds P1[b1 ^ <*b2*>];


:: FINSEQ_1:th 64
theorem
for b1, b2, b3, b4 being Relation-like Function-like FinSequence-like set
      st b1 ^ b2 = b3 ^ b4 & len b1 <= len b3
   holds ex b5 being Relation-like Function-like FinSequence-like set st
      b1 ^ b5 = b3;

:: FINSEQ_1:funcnot 14 => FINSEQ_1:func 13
definition
  let a1 be set;
  func A1 * -> set means
    for b1 being set holds
          b1 in it
       iff
          b1 is FinSequence of a1;
end;

:: FINSEQ_1:def 11
theorem
for b1, b2 being set holds
   b2 = b1 *
iff
   for b3 being set holds
         b3 in b2
      iff
         b3 is FinSequence of b1;

:: FINSEQ_1:funcreg 10
registration
  let a1 be set;
  cluster a1 * -> non empty;
end;

:: FINSEQ_1:th 65
theorem
for b1, b2 being Relation-like Function-like FinSequence-like set
      st proj2 b1 = proj2 b2 & b1 is one-to-one & b2 is one-to-one
   holds len b1 = len b2;

:: FINSEQ_1:th 66
theorem
for b1 being set holds
   {} in b1 *;

:: FINSEQ_1:sch 4
scheme FINSEQ_1:sch 4
{F1 -> non empty set}:
ex b1 being set st
   for b2 being set holds
         b2 in b1
      iff
         ex b3 being Relation-like Function-like FinSequence-like set st
            b3 in F1() * & P1[b3] & b2 = b3


:: FINSEQ_1:attrnot 2 => FINSEQ_1:attr 2
definition
  let a1 be Relation-like Function-like set;
  attr a1 is FinSubsequence-like means
    ex b1 being natural set st
       proj1 a1 c= Seg b1;
end;

:: FINSEQ_1:dfs 12
definiens
  let a1 be Relation-like Function-like set;
To prove
     a1 is FinSubsequence-like
it is sufficient to prove
  thus ex b1 being natural set st
       proj1 a1 c= Seg b1;

:: FINSEQ_1:def 12
theorem
for b1 being Relation-like Function-like set holds
      b1 is FinSubsequence-like
   iff
      ex b2 being natural set st
         proj1 b1 c= Seg b2;

:: FINSEQ_1:exreg 5
registration
  cluster Relation-like Function-like FinSubsequence-like set;
end;

:: FINSEQ_1:modenot 4
definition
  mode FinSubsequence is Relation-like Function-like FinSubsequence-like set;
end;

:: FINSEQ_1:th 68
theorem
for b1 being Relation-like Function-like FinSequence-like set holds
   b1 is Relation-like Function-like FinSubsequence-like set;

:: FINSEQ_1:th 69
theorem
for b1 being set
for b2 being Relation-like Function-like FinSequence-like set holds
   b2 | b1 is Relation-like Function-like FinSubsequence-like set &
    b1 | b2 is Relation-like Function-like FinSubsequence-like set;

:: FINSEQ_1:funcnot 15 => FINSEQ_1:func 14
definition
  let a1 be set;
  assume ex b1 being natural set st
       a1 c= Seg b1;
  func Sgm A1 -> FinSequence of NAT means
    proj2 it = a1 &
     (for b1, b2, b3, b4 being natural set
           st 1 <= b1 & b1 < b2 & b2 <= len it & b3 = it . b1 & b4 = it . b2
        holds b3 < b4);
end;

:: FINSEQ_1:def 13
theorem
for b1 being set
   st ex b2 being natural set st
        b1 c= Seg b2
for b2 being FinSequence of NAT holds
      b2 = Sgm b1
   iff
      proj2 b2 = b1 &
       (for b3, b4, b5, b6 being natural set
             st 1 <= b3 & b3 < b4 & b4 <= len b2 & b5 = b2 . b3 & b6 = b2 . b4
          holds b5 < b6);

:: FINSEQ_1:th 71
theorem
for b1 being Relation-like Function-like FinSubsequence-like set holds
   proj2 Sgm proj1 b1 = proj1 b1;

:: FINSEQ_1:funcnot 16 => FINSEQ_1:func 15
definition
  let a1 be Relation-like Function-like FinSubsequence-like set;
  func Seq A1 -> Relation-like Function-like set equals
    (Sgm proj1 a1) * a1;
end;

:: FINSEQ_1:def 14
theorem
for b1 being Relation-like Function-like FinSubsequence-like set holds
   Seq b1 = (Sgm proj1 b1) * b1;

:: FINSEQ_1:funcreg 11
registration
  let a1 be Relation-like Function-like FinSubsequence-like set;
  cluster Seq a1 -> Relation-like Function-like FinSequence-like;
end;

:: FINSEQ_1:th 72
theorem
for b1 being set
      st ex b2 being natural set st
           b1 c= Seg b2
   holds    Sgm b1 = {}
   iff
      b1 = {};

:: FINSEQ_1:th 73
theorem
for b1 being set holds
      b1 is finite
   iff
      ex b2 being Relation-like Function-like FinSequence-like set st
         b1 = proj2 b2;

:: FINSEQ_1:th 74
theorem
for b1, b2 being natural set
      st Seg b1,Seg b2 are_equipotent
   holds b1 = b2;

:: FINSEQ_1:th 75
theorem
for b1 being natural set holds
   Seg b1,b1 are_equipotent;

:: FINSEQ_1:th 76
theorem
for b1 being natural set holds
   Card Seg b1 = Card b1;

:: FINSEQ_1:th 77
theorem
for b1 being set
      st b1 is finite
   holds ex b2 being natural set st
      b1,Seg b2 are_equipotent;

:: FINSEQ_1:th 78
theorem
for b1 being natural set holds
   card Seg b1 = b1;

:: FINSEQ_1:funcreg 12
registration
  let a1 be set;
  cluster <*a1*> -> non empty;
end;

:: FINSEQ_1:exreg 6
registration
  cluster Relation-like Function-like non empty finite FinSequence-like set;
end;

:: FINSEQ_1:funcreg 13
registration
  let a1 be Relation-like Function-like FinSequence-like set;
  let a2 be Relation-like Function-like non empty FinSequence-like set;
  cluster a1 ^ a2 -> Relation-like Function-like non empty FinSequence-like;
end;

:: FINSEQ_1:funcreg 14
registration
  let a1 be Relation-like Function-like FinSequence-like set;
  let a2 be Relation-like Function-like non empty FinSequence-like set;
  cluster a2 ^ a1 -> Relation-like Function-like non empty FinSequence-like;
end;

:: FINSEQ_1:sch 5
scheme FINSEQ_1:sch 5
{F1 -> non empty set,
  F2 -> natural set}:
ex b1 being FinSequence of F1() st
   dom b1 = Seg F2() &
    (for b2 being natural set
          st b2 in Seg F2()
       holds P1[b2, b1 . b2])
provided
   for b1 being natural set
         st b1 in Seg F2()
      holds ex b2 being Element of F1() st
         P1[b1, b2];


:: FINSEQ_1:funcnot 17 => FINSEQ_1:func 16
definition
  let a1 be Relation-like Function-like FinSequence-like set;
  let a2 be natural set;
  func A1 | A2 -> Relation-like Function-like FinSequence-like set equals
    a1 | Seg a2;
end;

:: FINSEQ_1:def 15
theorem
for b1 being Relation-like Function-like FinSequence-like set
for b2 being natural set holds
   b1 | b2 = b1 | Seg b2;

:: FINSEQ_1:funcnot 18 => FINSEQ_1:func 17
definition
  let a1 be set;
  let a2 be FinSequence of a1;
  let a3 be natural set;
  redefine func a2 | a3 -> FinSequence of a1;
end;

:: FINSEQ_1:funcreg 15
registration
  let a1 be set;
  let a2 be FinSequence of a1;
  cluster a2 | 0 -> Relation-like Function-like empty FinSequence-like;
end;

:: FINSEQ_1:th 79
theorem
for b1 being natural set
for b2 being Relation-like Function-like FinSequence-like set
      st len b2 <= b1
   holds b2 | b1 = b2;

:: FINSEQ_1:th 80
theorem
for b1 being natural set
for b2 being Relation-like Function-like FinSequence-like set
      st b1 <= len b2
   holds len (b2 | b1) = b1;

:: FINSEQ_1:th 81
theorem
for b1, b2, b3 being natural set
      st b2 in Seg b1
   holds b2 + b3 in Seg (b1 + b3);

:: FINSEQ_1:th 82
theorem
for b1, b2, b3 being natural set
      st 0 < b2 & b2 + b3 in Seg (b1 + b3)
   holds b2 in Seg b1 & b2 in Seg (b1 + b3);

:: FINSEQ_1:funcnot 19 => FINSEQ_1:func 18
definition
  let a1 be Relation-like set;
  func A1 [*] -> Relation-like set means
    for b1, b2 being set holds
       [b1,b2] in it
    iff
       b1 in field a1 &
        b2 in field a1 &
        (ex b3 being Relation-like Function-like FinSequence-like set st
           1 <= len b3 &
            b3 . 1 = b1 &
            b3 . len b3 = b2 &
            (for b4 being natural set
                  st 1 <= b4 & b4 < len b3
               holds [b3 . b4,b3 . (b4 + 1)] in a1));
end;

:: FINSEQ_1:def 16
theorem
for b1, b2 being Relation-like set holds
   b2 = b1 [*]
iff
   for b3, b4 being set holds
      [b3,b4] in b2
   iff
      b3 in field b1 &
       b4 in field b1 &
       (ex b5 being Relation-like Function-like FinSequence-like set st
          1 <= len b5 &
           b5 . 1 = b3 &
           b5 . len b5 = b4 &
           (for b6 being natural set
                 st 1 <= b6 & b6 < len b5
              holds [b5 . b6,b5 . (b6 + 1)] in b1));

:: FINSEQ_1:th 83
theorem
for b1, b2 being set
      st b1 c= b2
   holds b1 * c= b2 *;

:: FINSEQ_1:funcreg 16
registration
  let a1 be set;
  cluster a1 * -> functional;
end;

:: FINSEQ_1:funcreg 17
registration
  let a1 be Relation-like Function-like finite set;
  let a2 be set;
  cluster a1 " a2 -> finite;
end;

:: FINSEQ_1:th 84
theorem
for b1, b2 being Relation-like Function-like FinSequence-like set
      st b1 c= b2
   holds len b1 <= len b2;

:: FINSEQ_1:th 85
theorem
for b1, b2 being Relation-like Function-like FinSequence-like set
for b3 being natural set
      st 1 <= b3 & b3 <= len b1
   holds (b1 ^ b2) . b3 = b1 . b3;

:: FINSEQ_1:th 86
theorem
for b1, b2 being Relation-like Function-like FinSequence-like set
for b3 being natural set
      st 1 <= b3 & b3 <= len b2
   holds (b1 ^ b2) . ((len b1) + b3) = b2 . b3;

:: FINSEQ_1:sch 6
scheme FINSEQ_1:sch 6
{F1 -> natural set,
  F2 -> natural set,
  F3 -> set}:
{F3(b1) where b1 is Element of NAT: F1() <= b1 & b1 <= F2() & P1[b1]} is finite


:: FINSEQ_1:th 87
theorem
for b1, b2, b3, b4 being set
for b5 being Relation-like Function-like FinSequence-like set
      st b5 = ((<*b1*> ^ <*b2*>) ^ <*b3*>) ^ <*b4*>
   holds len b5 = 4 & b5 . 1 = b1 & b5 . 2 = b2 & b5 . 3 = b3 & b5 . 4 = b4;

:: FINSEQ_1:th 88
theorem
for b1, b2, b3, b4, b5 being set
for b6 being Relation-like Function-like FinSequence-like set
      st b6 = (((<*b1*> ^ <*b2*>) ^ <*b3*>) ^ <*b4*>) ^ <*b5*>
   holds len b6 = 5 & b6 . 1 = b1 & b6 . 2 = b2 & b6 . 3 = b3 & b6 . 4 = b4 & b6 . 5 = b5;

:: FINSEQ_1:th 89
theorem
for b1, b2, b3, b4, b5, b6 being set
for b7 being Relation-like Function-like FinSequence-like set
      st b7 = ((((<*b1*> ^ <*b2*>) ^ <*b3*>) ^ <*b4*>) ^ <*b5*>) ^ <*b6*>
   holds len b7 = 6 & b7 . 1 = b1 & b7 . 2 = b2 & b7 . 3 = b3 & b7 . 4 = b4 & b7 . 5 = b5 & b7 . 6 = b6;

:: FINSEQ_1:th 90
theorem
for b1, b2, b3, b4, b5, b6, b7 being set
for b8 being Relation-like Function-like FinSequence-like set
      st b8 = (((((<*b1*> ^ <*b2*>) ^ <*b3*>) ^ <*b4*>) ^ <*b5*>) ^ <*b6*>) ^ <*b7*>
   holds len b8 = 7 & b8 . 1 = b1 & b8 . 2 = b2 & b8 . 3 = b3 & b8 . 4 = b4 & b8 . 5 = b5 & b8 . 6 = b6 & b8 . 7 = b7;

:: FINSEQ_1:th 91
theorem
for b1, b2, b3, b4, b5, b6, b7, b8 being set
for b9 being Relation-like Function-like FinSequence-like set
      st b9 = ((((((<*b1*> ^ <*b2*>) ^ <*b3*>) ^ <*b4*>) ^ <*b5*>) ^ <*b6*>) ^ <*b7*>) ^ <*b8*>
   holds len b9 = 8 & b9 . 1 = b1 & b9 . 2 = b2 & b9 . 3 = b3 & b9 . 4 = b4 & b9 . 5 = b5 & b9 . 6 = b6 & b9 . 7 = b7 & b9 . 8 = b8;

:: FINSEQ_1:th 92
theorem
for b1, b2, b3, b4, b5, b6, b7, b8, b9 being set
for b10 being Relation-like Function-like FinSequence-like set
      st b10 = (((((((<*b1*> ^ <*b2*>) ^ <*b3*>) ^ <*b4*>) ^ <*b5*>) ^ <*b6*>) ^ <*b7*>) ^ <*b8*>) ^ <*b9*>
   holds len b10 = 9 & b10 . 1 = b1 & b10 . 2 = b2 & b10 . 3 = b3 & b10 . 4 = b4 & b10 . 5 = b5 & b10 . 6 = b6 & b10 . 7 = b7 & b10 . 8 = b8 & b10 . 9 = b9;

:: FINSEQ_1:th 93
theorem
for b1 being Relation-like Function-like FinSequence-like set holds
   b1 | Seg 0 = {};

:: FINSEQ_1:th 94
theorem
for b1, b2 being Relation-like Function-like FinSequence-like set holds
b1 | Seg 0 = b2 | Seg 0;

:: FINSEQ_1:th 95
theorem
for b1 being non empty set
for b2 being Element of b1 holds
   <*b2*> is FinSequence of b1;

:: FINSEQ_1:th 96
theorem
for b1 being set
for b2, b3 being FinSequence of b1 holds
b2 ^ b3 is FinSequence of b1;

:: FINSEQ_1:funcreg 18
registration
  let a1 be Relation-like Function-like set;
  let a2 be Relation-like Function-like non empty set;
  cluster a1 +* a2 -> Relation-like Function-like non empty;
end;

:: FINSEQ_1:funcreg 19
registration
  let a1 be Relation-like Function-like set;
  let a2 be Relation-like Function-like non empty set;
  cluster a2 +* a1 -> Relation-like Function-like non empty;
end;

:: FINSEQ_1:funcreg 20
registration
  let a1, a2 be Relation-like Function-like finite set;
  cluster a1 +* a2 -> Relation-like Function-like finite;
end;

:: FINSEQ_1:th 97
theorem
for b1, b2 being set
      st <*b1*> = <*b2*>
   holds b1 = b2;

:: FINSEQ_1:th 98
theorem
for b1, b2, b3, b4 being set
      st <*b1,b2*> = <*b3,b4*>
   holds b1 = b3 & b2 = b4;

:: FINSEQ_1:th 99
theorem
for b1, b2, b3, b4, b5, b6 being set
      st <*b1,b2,b3*> = <*b4,b5,b6*>
   holds b1 = b4 & b2 = b5 & b3 = b6;

:: FINSEQ_1:exreg 7
registration
  cluster Relation-like non-empty Function-like non empty finite FinSequence-like set;
end;

:: FINSEQ_1:th 100
theorem
for b1 being natural set
for b2, b3 being Relation-like Function-like FinSequence-like set
      st b3 = b2 | Seg b1
   holds len b3 <= len b2;

:: FINSEQ_1:th 101
theorem
for b1 being natural set
for b2, b3 being Relation-like Function-like FinSequence-like set
      st b3 = b2 | Seg b1
   holds ex b4 being Relation-like Function-like FinSequence-like set st
      b2 = b3 ^ b4;

:: FINSEQ_1:exreg 8
registration
  let a1 be non empty set;
  cluster Relation-like Function-like non empty finite FinSequence-like FinSequence of a1;
end;

:: FINSEQ_1:th 102
theorem
for b1 being non empty set
for b2 being Element of b1 holds
   <*b2*> is FinSequence of b1;

:: FINSEQ_1:th 103
theorem
for b1 being set
for b2, b3 being FinSequence of b1 holds
b2 ^ b3 is FinSequence of b1;

:: FINSEQ_1:prednot 1 => HIDDEN:pred 1
definition
  let a1, a2 be set;
  pred A1 = A2 means
    len a1 = len a2 &
     (for b1 being natural set
           st 1 <= b1 & b1 <= len a1
        holds a1 . b1 = a2 . b1);
  symmetry;
::  for a1, a2 being set
::        st a1 = a2
::     holds a2 = a1;
  reflexivity;
::  for a1 being set holds
::     a1 = a1;
end;

:: FINSEQ_1:dfs 17
definiens
  let a1, a2 be Relation-like Function-like FinSequence-like set;
To prove
     a1 = a2
it is sufficient to prove
  thus len a1 = len a2 &
     (for b1 being natural set
           st 1 <= b1 & b1 <= len a1
        holds a1 . b1 = a2 . b1);

:: FINSEQ_1:def 17
theorem
for b1, b2 being Relation-like Function-like FinSequence-like set holds
   b1 = b2
iff
   len b1 = len b2 &
    (for b3 being natural set
          st 1 <= b3 & b3 <= len b1
       holds b1 . b3 = b2 . b3);

:: FINSEQ_1:th 104
theorem
for b1, b2 being set
      st Card b1 = 0 & Card b2 = 0
   holds b1 = b2;