Article CALCUL_2, MML version 4.99.1005

:: CALCUL_2:funcnot 1 => CALCUL_2:func 1
definition
  let a1, a2 be natural set;
  func seq(A1,A2) -> set equals
    {b1 where b1 is Element of NAT: 1 + a1 <= b1 & b1 <= a2 + a1};
end;

:: CALCUL_2:def 1
theorem
for b1, b2 being natural set holds
seq(b1,b2) = {b3 where b3 is Element of NAT: 1 + b1 <= b3 & b3 <= b2 + b1};

:: CALCUL_2:funcnot 2 => CALCUL_2:func 2
definition
  let a1, a2 be natural set;
  redefine func seq(a1,a2) -> Element of bool NAT;
end;

:: CALCUL_2:th 1
theorem
for b1, b2, b3 being natural set holds
   b1 in seq(b2,b3)
iff
   1 + b2 <= b1 & b1 <= b3 + b2;

:: CALCUL_2:th 2
theorem
for b1 being natural set holds
   seq(b1,0) = {};

:: CALCUL_2:th 3
theorem
for b1, b2 being natural set
      st b1 <> 0
   holds b1 + b2 in seq(b2,b1);

:: CALCUL_2:th 4
theorem
for b1, b2, b3 being natural set holds
   b1 <= b2
iff
   seq(b3,b1) c= seq(b3,b2);

:: CALCUL_2:th 5
theorem
for b1, b2 being natural set holds
(seq(b1,b2)) \/ {(b1 + b2) + 1} = seq(b1,b2 + 1);

:: CALCUL_2:th 6
theorem
for b1, b2 being Element of NAT holds
seq(b1,b2),b2 are_equipotent;

:: CALCUL_2:funcreg 1
registration
  let a1, a2 be Element of NAT;
  cluster seq(a1,a2) -> finite;
end;

:: CALCUL_2:funcreg 2
registration
  let a1 be FinSequence of CQC-WFF;
  cluster Card a1 -> finite cardinal;
end;

:: CALCUL_2:th 7
theorem
for b1, b2 being Element of NAT holds
seq(b1,b2) c= Seg (b1 + b2);

:: CALCUL_2:th 8
theorem
for b1, b2 being Element of NAT holds
Seg b1 misses seq(b1,b2);

:: CALCUL_2:th 9
theorem
for b1, b2 being Relation-like Function-like FinSequence-like set holds
dom (b1 ^ b2) = (dom b1) \/ seq(len b1,len b2);

:: CALCUL_2:th 10
theorem
for b1, b2 being FinSequence of CQC-WFF holds
len Sgm seq(len b1,len b2) = len b2;

:: CALCUL_2:th 11
theorem
for b1, b2 being FinSequence of CQC-WFF holds
dom Sgm seq(len b1,len b2) = dom b2;

:: CALCUL_2:th 12
theorem
for b1, b2 being FinSequence of CQC-WFF holds
rng Sgm seq(len b1,len b2) = seq(len b1,len b2);

:: CALCUL_2:th 13
theorem
for b1 being Element of NAT
for b2, b3 being FinSequence of CQC-WFF
      st b1 in dom Sgm seq(len b2,len b3)
   holds (Sgm seq(len b2,len b3)) . b1 = (len b2) + b1;

:: CALCUL_2:th 14
theorem
for b1, b2 being FinSequence of CQC-WFF holds
seq(len b1,len b2) c= dom (b1 ^ b2);

:: CALCUL_2:th 15
theorem
for b1, b2 being FinSequence of CQC-WFF holds
dom ((b1 ^ b2) | seq(len b1,len b2)) = seq(len b1,len b2);

:: CALCUL_2:th 16
theorem
for b1, b2 being FinSequence of CQC-WFF holds
Seq ((b1 ^ b2) | seq(len b1,len b2)) = (Sgm seq(len b1,len b2)) * (b1 ^ b2);

:: CALCUL_2:th 17
theorem
for b1, b2 being FinSequence of CQC-WFF holds
dom Seq ((b1 ^ b2) | seq(len b1,len b2)) = dom b2;

:: CALCUL_2:th 18
theorem
for b1, b2 being FinSequence of CQC-WFF holds
b1 is_Subsequence_of b2 ^ b1;

:: CALCUL_2:funcnot 3 => CALCUL_2:func 3
definition
  let a1 be non empty set;
  let a2 be FinSequence of a1;
  let a3 be Function-like quasi_total bijective Relation of dom a2,dom a2;
  func Per(A2,A3) -> FinSequence of a1 equals
    a3 * a2;
end;

:: CALCUL_2:def 2
theorem
for b1 being non empty set
for b2 being FinSequence of b1
for b3 being Function-like quasi_total bijective Relation of dom b2,dom b2 holds
   Per(b2,b3) = b3 * b2;

:: CALCUL_2:th 19
theorem
for b1 being FinSequence of CQC-WFF
for b2 being Function-like quasi_total bijective Relation of dom b1,dom b1 holds
   dom Per(b1,b2) = dom b1;

:: CALCUL_2:th 20
theorem
for b1 being Element of CQC-WFF
for b2, b3 being FinSequence of CQC-WFF
      st |- b2 ^ <*b1*>
   holds |- (b3 ^ b2) ^ <*b1*>;

:: CALCUL_2:funcnot 4 => CALCUL_2:func 4
definition
  let a1 be FinSequence of CQC-WFF;
  func Begin A1 -> Element of CQC-WFF means
    it = a1 . 1
    if 1 <= len a1
    otherwise it = VERUM;
end;

:: CALCUL_2:def 3
theorem
for b1 being FinSequence of CQC-WFF
for b2 being Element of CQC-WFF holds
   (1 <= len b1 implies    (b2 = Begin b1
    iff
       b2 = b1 . 1)) &
    (1 <= len b1 or    (b2 = Begin b1
    iff
       b2 = VERUM));

:: CALCUL_2:funcnot 5 => CALCUL_2:func 5
definition
  let a1 be FinSequence of CQC-WFF;
  assume 1 <= len a1;
  func Impl A1 -> Element of CQC-WFF means
    ex b1 being FinSequence of CQC-WFF st
       it = b1 . len a1 &
        len b1 = len a1 &
        (b1 . 1 = Begin a1 or len a1 = 0) &
        (for b2 being Element of NAT
              st 1 <= b2 & b2 < len a1
           holds ex b3, b4 being Element of CQC-WFF st
              b3 = a1 . (b2 + 1) & b4 = b1 . b2 & b1 . (b2 + 1) = b3 => b4);
end;

:: CALCUL_2:def 4
theorem
for b1 being FinSequence of CQC-WFF
   st 1 <= len b1
for b2 being Element of CQC-WFF holds
      b2 = Impl b1
   iff
      ex b3 being FinSequence of CQC-WFF st
         b2 = b3 . len b1 &
          len b3 = len b1 &
          (b3 . 1 = Begin b1 or len b1 = 0) &
          (for b4 being Element of NAT
                st 1 <= b4 & b4 < len b1
             holds ex b5, b6 being Element of CQC-WFF st
                b5 = b1 . (b4 + 1) & b6 = b3 . b4 & b3 . (b4 + 1) = b5 => b6);

:: CALCUL_2:th 21
theorem
for b1 being Element of CQC-WFF
for b2 being FinSequence of CQC-WFF holds
   |- (b2 ^ <*b1*>) ^ <*b1*>;

:: CALCUL_2:th 22
theorem
for b1, b2 being Element of CQC-WFF
for b3 being FinSequence of CQC-WFF
      st |- b3 ^ <*b1 '&' b2*>
   holds |- b3 ^ <*b1*>;

:: CALCUL_2:th 23
theorem
for b1, b2 being Element of CQC-WFF
for b3 being FinSequence of CQC-WFF
      st |- b3 ^ <*b1 '&' b2*>
   holds |- b3 ^ <*b2*>;

:: CALCUL_2:th 24
theorem
for b1, b2 being Element of CQC-WFF
for b3 being FinSequence of CQC-WFF
      st |- b3 ^ <*b1*> &
         |- (b3 ^ <*b1*>) ^ <*b2*>
   holds |- b3 ^ <*b2*>;

:: CALCUL_2:th 25
theorem
for b1, b2 being Element of CQC-WFF
for b3 being FinSequence of CQC-WFF
      st |- b3 ^ <*b1*> & |- b3 ^ <*'not' b1*>
   holds |- b3 ^ <*b2*>;

:: CALCUL_2:th 26
theorem
for b1, b2 being Element of CQC-WFF
for b3 being FinSequence of CQC-WFF
      st |- (b3 ^ <*b1*>) ^ <*b2*> &
         |- (b3 ^ <*'not' b1*>) ^ <*b2*>
   holds |- b3 ^ <*b2*>;

:: CALCUL_2:th 27
theorem
for b1, b2 being Element of CQC-WFF
for b3 being FinSequence of CQC-WFF
      st |- (b3 ^ <*b1*>) ^ <*b2*>
   holds |- b3 ^ <*b1 => b2*>;

:: CALCUL_2:th 28
theorem
for b1, b2 being FinSequence of CQC-WFF
      st 1 <= len b1 & |- b2 ^ b1
   holds |- b2 ^ <*Impl Rev b1*>;

:: CALCUL_2:th 29
theorem
for b1 being Element of CQC-WFF
for b2 being FinSequence of CQC-WFF
for b3 being Function-like quasi_total bijective Relation of dom b2,dom b2
      st |- (Per(b2,b3)) ^ <*Impl Rev (b2 ^ <*b1*>)*>
   holds |- (Per(b2,b3)) ^ <*b1*>;

:: CALCUL_2:th 30
theorem
for b1 being Element of CQC-WFF
for b2 being FinSequence of CQC-WFF
for b3 being Function-like quasi_total bijective Relation of dom b2,dom b2
      st |- b2 ^ <*b1*>
   holds |- (Per(b2,b3)) ^ <*b1*>;

:: CALCUL_2:funcnot 6 => FINSEQ_2:func 2
notation
  let a1 be Element of NAT;
  let a2 be set;
  synonym IdFinS(a2,a1) for a1 |-> a2;
end;

:: CALCUL_2:th 31
theorem
for b1 being Element of NAT
for b2 being set
      st 1 <= b1
   holds proj2 (b1 |-> b2) = proj2 <*b2*>;

:: CALCUL_2:funcnot 7 => CALCUL_2:func 6
definition
  let a1 be non empty set;
  let a2 be Element of NAT;
  let a3 be Element of a1;
  redefine func IdFinS(a3,a2) -> FinSequence of a1;
end;

:: CALCUL_2:th 32
theorem
for b1, b2 being Element of CQC-WFF
for b3 being Element of NAT
for b4 being FinSequence of CQC-WFF
      st 1 <= b3 &
         |- (b4 ^ IdFinS(b1,b3)) ^ <*b2*>
   holds |- (b4 ^ <*b1*>) ^ <*b2*>;