Article MSSCYC_1, MML version 4.99.1005

:: MSSCYC_1:th 1
theorem
for b1 being Relation-like Function-like finite set
      st for b2 being set
              st b2 in proj1 b1
           holds b1 . b2 is finite
   holds product b1 is finite;

:: MSSCYC_1:modenot 1 => GRAPH_1:mode 1
definition
  let a1 be Graph-like MultiGraphStruct;
  mode Chain of A1 -> Relation-like Function-like FinSequence-like set means
    it is FinSequence of the Edges of a1 &
     (ex b1 being FinSequence of the Vertices of a1 st
        b1 is_vertex_seq_of it);
end;

:: MSSCYC_1:dfs 1
definiens
  let a1 be Graph-like MultiGraphStruct;
  let a2 be Relation-like Function-like FinSequence-like set;
To prove
     a2 is Chain of a1
it is sufficient to prove
  thus a2 is FinSequence of the Edges of a1 &
     (ex b1 being FinSequence of the Vertices of a1 st
        b1 is_vertex_seq_of a2);

:: MSSCYC_1:def 1
theorem
for b1 being Graph-like MultiGraphStruct
for b2 being Relation-like Function-like FinSequence-like set holds
      b2 is Chain of b1
   iff
      b2 is FinSequence of the Edges of b1 &
       (ex b3 being FinSequence of the Vertices of b1 st
          b3 is_vertex_seq_of b2);

:: MSSCYC_1:th 2
theorem
for b1 being Element of NAT
for b2, b3 being Relation-like Function-like FinSequence-like set
      st b1 <= len b2
   holds (1,b1)-cut b2 = (1,b1)-cut (b2 ^ b3);

:: MSSCYC_1:attrnot 1 => GRAPH_1:attr 8
notation
  let a1 be Graph-like MultiGraphStruct;
  let a2 be Chain of a1;
  synonym directed for oriented;
end;

:: MSSCYC_1:attrnot 2 => MSSCYC_1:attr 1
definition
  let a1 be Graph-like MultiGraphStruct;
  let a2 be Chain of a1;
  attr a2 is cyclic means
    ex b1 being FinSequence of the Vertices of a1 st
       b1 is_vertex_seq_of a2 & b1 . 1 = b1 . len b1;
end;

:: MSSCYC_1:dfs 2
definiens
  let a1 be Graph-like MultiGraphStruct;
  let a2 be Chain of a1;
To prove
     a2 is cyclic
it is sufficient to prove
  thus ex b1 being FinSequence of the Vertices of a1 st
       b1 is_vertex_seq_of a2 & b1 . 1 = b1 . len b1;

:: MSSCYC_1:def 2
theorem
for b1 being Graph-like MultiGraphStruct
for b2 being Chain of b1 holds
      b2 is cyclic(b1)
   iff
      ex b3 being FinSequence of the Vertices of b1 st
         b3 is_vertex_seq_of b2 & b3 . 1 = b3 . len b3;

:: MSSCYC_1:attrnot 3 => MSSCYC_1:attr 2
definition
  let a1 be Graph-like MultiGraphStruct;
  attr a1 is empty means
    the Edges of a1 is empty;
end;

:: MSSCYC_1:dfs 3
definiens
  let a1 be Graph-like MultiGraphStruct;
To prove
     a1 is empty
it is sufficient to prove
  thus the Edges of a1 is empty;

:: MSSCYC_1:def 3
theorem
for b1 being Graph-like MultiGraphStruct holds
      b1 is empty
   iff
      the Edges of b1 is empty;

:: MSSCYC_1:exreg 1
registration
  cluster Graph-like empty MultiGraphStruct;
end;

:: MSSCYC_1:th 3
theorem
for b1 being Graph-like MultiGraphStruct holds
   (proj2 the Source of b1) \/ proj2 the Target of b1 c= the Vertices of b1;

:: MSSCYC_1:exreg 2
registration
  cluster strict Graph-like simple connected finite non empty MultiGraphStruct;
end;

:: MSSCYC_1:funcreg 1
registration
  let a1 be Graph-like non empty MultiGraphStruct;
  cluster the Edges of a1 -> non empty;
end;

:: MSSCYC_1:th 4
theorem
for b1 being Graph-like MultiGraphStruct
for b2 being set
for b3, b4 being Element of the Vertices of b1
      st b3 = (the Source of b1) . b2 & b4 = (the Target of b1) . b2
   holds <*b3,b4*> is_vertex_seq_of <*b2*>;

:: MSSCYC_1:th 5
theorem
for b1 being Graph-like MultiGraphStruct
for b2 being set
      st b2 in the Edges of b1
   holds <*b2*> is oriented Chain of b1;

:: MSSCYC_1:exreg 3
registration
  let a1 be Graph-like non empty MultiGraphStruct;
  cluster Relation-like Function-like one-to-one non empty finite FinSequence-like oriented Chain of a1;
end;

:: MSSCYC_1:th 6
theorem
for b1 being Graph-like MultiGraphStruct
for b2 being Chain of b1
for b3 being FinSequence of the Vertices of b1
      st b2 is cyclic(b1) & b3 is_vertex_seq_of b2
   holds b3 . 1 = b3 . len b3;

:: MSSCYC_1:th 7
theorem
for b1 being Graph-like MultiGraphStruct
for b2 being set
   st b2 in the Edges of b1
for b3 being oriented Chain of b1
      st b3 = <*b2*>
   holds vertex-seq b3 = <*(the Source of b1) . b2,(the Target of b1) . b2*>;

:: MSSCYC_1:th 8
theorem
for b1, b2 being Element of NAT
for b3 being Relation-like Function-like FinSequence-like set holds
   len ((b1,b2)-cut b3) <= len b3;

:: MSSCYC_1:th 9
theorem
for b1, b2 being Element of NAT
for b3 being Graph-like non empty MultiGraphStruct
for b4 being oriented Chain of b3
      st 1 <= b1 & b1 <= b2 & b2 <= len b4
   holds (b1,b2)-cut b4 is oriented Chain of b3;

:: MSSCYC_1:th 10
theorem
for b1 being Graph-like non empty MultiGraphStruct
for b2 being non empty oriented Chain of b1 holds
   len vertex-seq b2 = (len b2) + 1;

:: MSSCYC_1:funcreg 2
registration
  let a1 be Graph-like non empty MultiGraphStruct;
  let a2 be non empty oriented Chain of a1;
  cluster vertex-seq a2 -> non empty;
end;

:: MSSCYC_1:th 11
theorem
for b1 being Graph-like non empty MultiGraphStruct
for b2 being non empty oriented Chain of b1
for b3 being Element of NAT
      st 1 <= b3 & b3 <= len b2
   holds (vertex-seq b2) . b3 = (the Source of b1) . (b2 . b3) &
    (vertex-seq b2) . (b3 + 1) = (the Target of b1) . (b2 . b3);

:: MSSCYC_1:th 12
theorem
for b1, b2 being Element of NAT
for b3 being Relation-like Function-like non empty FinSequence-like set
      st 1 <= b1 & b1 <= b2 & b2 <= len b3
   holds (b1,b2)-cut b3 is not empty;

:: MSSCYC_1:th 13
theorem
for b1, b2 being Element of NAT
for b3 being Graph-like non empty MultiGraphStruct
for b4, b5 being oriented Chain of b3
      st 1 <= b1 & b1 <= b2 & b2 <= len b4 & b5 = (b1,b2)-cut b4
   holds vertex-seq b5 = (b1,b2 + 1)-cut vertex-seq b4;

:: MSSCYC_1:th 14
theorem
for b1 being Graph-like non empty MultiGraphStruct
for b2 being non empty oriented Chain of b1 holds
   (vertex-seq b2) . ((len b2) + 1) = (the Target of b1) . (b2 . len b2);

:: MSSCYC_1:th 15
theorem
for b1 being Graph-like non empty MultiGraphStruct
for b2, b3 being non empty oriented Chain of b1 holds
   (vertex-seq b2) . ((len b2) + 1) = (vertex-seq b3) . 1
iff
   b2 ^ b3 is non empty oriented Chain of b1;

:: MSSCYC_1:th 16
theorem
for b1 being Graph-like non empty MultiGraphStruct
for b2, b3, b4 being non empty oriented Chain of b1
      st b2 = b3 ^ b4
   holds (vertex-seq b2) . 1 = (vertex-seq b3) . 1 &
    (vertex-seq b2) . ((len b2) + 1) = (vertex-seq b4) . ((len b4) + 1);

:: MSSCYC_1:th 17
theorem
for b1 being Graph-like non empty MultiGraphStruct
for b2 being non empty oriented Chain of b1
      st b2 is cyclic(b1)
   holds (vertex-seq b2) . 1 = (vertex-seq b2) . ((len b2) + 1);

:: MSSCYC_1:th 18
theorem
for b1 being Graph-like non empty MultiGraphStruct
for b2 being non empty oriented Chain of b1
   st b2 is cyclic(b1)
for b3 being Element of NAT holds
   ex b4 being oriented Chain of b1 st
      len b4 = b3 & b4 ^ b2 is non empty oriented Chain of b1;

:: MSSCYC_1:attrnot 4 => MSSCYC_1:attr 3
definition
  let a1 be Graph-like MultiGraphStruct;
  attr a1 is directed_cycle-less means
    for b1 being oriented Chain of a1
          st b1 is not empty
       holds b1 is not cyclic(a1);
end;

:: MSSCYC_1:dfs 4
definiens
  let a1 be Graph-like MultiGraphStruct;
To prove
     a1 is directed_cycle-less
it is sufficient to prove
  thus for b1 being oriented Chain of a1
          st b1 is not empty
       holds b1 is not cyclic(a1);

:: MSSCYC_1:def 4
theorem
for b1 being Graph-like MultiGraphStruct holds
      b1 is directed_cycle-less
   iff
      for b2 being oriented Chain of b1
            st b2 is not empty
         holds b2 is not cyclic(b1);

:: MSSCYC_1:attrnot 5 => MSSCYC_1:attr 3
notation
  let a1 be Graph-like MultiGraphStruct;
  antonym with_directed_cycle for directed_cycle-less;
end;

:: MSSCYC_1:condreg 1
registration
  cluster Graph-like empty -> directed_cycle-less (MultiGraphStruct);
end;

:: MSSCYC_1:attrnot 6 => MSSCYC_1:attr 4
definition
  let a1 be Graph-like MultiGraphStruct;
  attr a1 is well-founded means
    for b1 being Element of the Vertices of a1 holds
       ex b2 being Element of NAT st
          for b3 being oriented Chain of a1
                st b3 is not empty &
                   (vertex-seq b3) . ((len b3) + 1) = b1
             holds len b3 <= b2;
end;

:: MSSCYC_1:dfs 5
definiens
  let a1 be Graph-like MultiGraphStruct;
To prove
     a1 is well-founded
it is sufficient to prove
  thus for b1 being Element of the Vertices of a1 holds
       ex b2 being Element of NAT st
          for b3 being oriented Chain of a1
                st b3 is not empty &
                   (vertex-seq b3) . ((len b3) + 1) = b1
             holds len b3 <= b2;

:: MSSCYC_1:def 5
theorem
for b1 being Graph-like MultiGraphStruct holds
      b1 is well-founded
   iff
      for b2 being Element of the Vertices of b1 holds
         ex b3 being Element of NAT st
            for b4 being oriented Chain of b1
                  st b4 is not empty &
                     (vertex-seq b4) . ((len b4) + 1) = b2
               holds len b4 <= b3;

:: MSSCYC_1:condreg 2
registration
  let a1 be Graph-like empty MultiGraphStruct;
  cluster -> empty (Chain of a1);
end;

:: MSSCYC_1:condreg 3
registration
  cluster Graph-like empty -> well-founded (MultiGraphStruct);
end;

:: MSSCYC_1:condreg 4
registration
  cluster Graph-like non well-founded -> non empty (MultiGraphStruct);
end;

:: MSSCYC_1:exreg 4
registration
  cluster Graph-like well-founded MultiGraphStruct;
end;

:: MSSCYC_1:condreg 5
registration
  cluster Graph-like well-founded -> directed_cycle-less (MultiGraphStruct);
end;

:: MSSCYC_1:exreg 5
registration
  cluster Graph-like non well-founded MultiGraphStruct;
end;

:: MSSCYC_1:exreg 6
registration
  cluster Graph-like directed_cycle-less MultiGraphStruct;
end;

:: MSSCYC_1:th 19
theorem
for b1 being Relation-like Function-like DecoratedTree-like set
for b2 being Element of proj1 b1
for b3 being Element of NAT holds
   b2 | b3 is Element of proj1 b1;

:: MSSCYC_1:th 20
theorem
for b1 being non empty non void ManySortedSign
for b2 being non-empty ManySortedSet of the carrier of b1
for b3 being Element of b1 -Terms b2
      st b3 is not root
   holds ex b4 being Element of the OperSymbols of b1 st
      b3 . {} = [b4,the carrier of b1];

:: MSSCYC_1:th 21
theorem
for b1 being non empty non void ManySortedSign
for b2 being MSAlgebra over b1
for b3 being GeneratorSet of b2
for b4 being ManySortedSubset of the Sorts of b2
      st b3 c= b4
   holds b4 is GeneratorSet of b2;

:: MSSCYC_1:exreg 7
registration
  let a1 be non empty non void ManySortedSign;
  let a2 be non-empty finitely-generated MSAlgebra over a1;
  cluster Relation-like non-empty Function-like finite-yielding GeneratorSet of a2;
end;

:: MSSCYC_1:th 22
theorem
for b1 being non empty non void ManySortedSign
for b2 being non-empty MSAlgebra over b1
for b3 being non-empty GeneratorSet of b2 holds
   ex b4 being ManySortedFunction of the Sorts of FreeMSA b3,the Sorts of b2 st
      b4 is_epimorphism FreeMSA b3,b2;

:: MSSCYC_1:th 23
theorem
for b1 being non empty non void ManySortedSign
for b2 being non-empty MSAlgebra over b1
for b3 being non-empty GeneratorSet of b2
      st b2 is not locally-finite(b1)
   holds FreeMSA b3 is not locally-finite(b1);

:: MSSCYC_1:funcreg 3
registration
  let a1 be non empty non void ManySortedSign;
  let a2 be non-empty finite-yielding ManySortedSet of the carrier of a1;
  let a3 be Element of the carrier of a1;
  cluster FreeGen(a3,a2) -> finite;
end;

:: MSSCYC_1:th 25
theorem
for b1 being non empty non void ManySortedSign
for b2 being non-empty MSAlgebra over b1
for b3 being Element of the OperSymbols of b1
      st (the Arity of b1) . b3 = {}
   holds proj1 Den(b3,b2) = {{}};

:: MSSCYC_1:attrnot 7 => MSSCYC_1:attr 5
definition
  let a1 be non empty non void ManySortedSign;
  attr a1 is finitely_operated means
    for b1 being Element of the carrier of a1 holds
       {b2 where b2 is Element of the OperSymbols of a1: the_result_sort_of b2 = b1} is finite;
end;

:: MSSCYC_1:dfs 6
definiens
  let a1 be non empty non void ManySortedSign;
To prove
     a1 is finitely_operated
it is sufficient to prove
  thus for b1 being Element of the carrier of a1 holds
       {b2 where b2 is Element of the OperSymbols of a1: the_result_sort_of b2 = b1} is finite;

:: MSSCYC_1:def 6
theorem
for b1 being non empty non void ManySortedSign holds
      b1 is finitely_operated
   iff
      for b2 being Element of the carrier of b1 holds
         {b3 where b3 is Element of the OperSymbols of b1: the_result_sort_of b3 = b2} is finite;

:: MSSCYC_1:th 26
theorem
for b1 being non empty non void ManySortedSign
for b2 being non-empty MSAlgebra over b1
for b3 being Element of the carrier of b1
      st b1 is finitely_operated
   holds Constants(b2,b3) is finite;

:: MSSCYC_1:th 27
theorem
for b1 being non empty non void ManySortedSign
for b2 being non-empty ManySortedSet of the carrier of b1
for b3 being Element of the carrier of b1 holds
   {b4 where b4 is Element of (the Sorts of FreeMSA b2) . b3: depth b4 = 0} = (FreeGen(b3,b2)) \/ Constants(FreeMSA b2,b3);

:: MSSCYC_1:th 28
theorem
for b1 being non empty non void ManySortedSign
for b2 being non-empty ManySortedSet of the carrier of b1
for b3, b4 being Element of the carrier of b1
for b5 being Element of the OperSymbols of b1
for b6 being Element of (the Sorts of FreeMSA b2) . b3
for b7 being ArgumentSeq of Sym(b5,b2)
for b8 being Element of NAT
for b9 being Element of (the Sorts of FreeMSA b2) . b4
      st b6 = [b5,the carrier of b1] -tree b7 & b8 in dom b7 & b9 = b7 . b8
   holds depth b9 < depth b6;