Article MSSCYC_2, MML version 4.99.1005

:: MSSCYC_2:funcnot 1 => MSSCYC_2:func 1
definition
  let a1 be ManySortedSign;
  func InducedEdges A1 -> set means
    for b1 being set holds
          b1 in it
       iff
          ex b2, b3 being set st
             b1 = [b2,b3] &
              b2 in the OperSymbols of a1 &
              b3 in the carrier of a1 &
              (ex b4 being natural set st
                 ex b5 being Element of (the carrier of a1) * st
                    (the Arity of a1) . b2 = b5 & b4 in dom b5 & b5 . b4 = b3);
end;

:: MSSCYC_2:def 1
theorem
for b1 being ManySortedSign
for b2 being set holds
      b2 = InducedEdges b1
   iff
      for b3 being set holds
            b3 in b2
         iff
            ex b4, b5 being set st
               b3 = [b4,b5] &
                b4 in the OperSymbols of b1 &
                b5 in the carrier of b1 &
                (ex b6 being natural set st
                   ex b7 being Element of (the carrier of b1) * st
                      (the Arity of b1) . b4 = b7 & b6 in dom b7 & b7 . b6 = b5);

:: MSSCYC_2:th 1
theorem
for b1 being ManySortedSign holds
   InducedEdges b1 c= [:the OperSymbols of b1,the carrier of b1:];

:: MSSCYC_2:funcnot 2 => MSSCYC_2:func 2
definition
  let a1 be ManySortedSign;
  func InducedSource A1 -> Function-like quasi_total Relation of InducedEdges a1,the carrier of a1 means
    for b1 being set
          st b1 in InducedEdges a1
       holds it . b1 = b1 `2;
end;

:: MSSCYC_2:def 2
theorem
for b1 being ManySortedSign
for b2 being Function-like quasi_total Relation of InducedEdges b1,the carrier of b1 holds
      b2 = InducedSource b1
   iff
      for b3 being set
            st b3 in InducedEdges b1
         holds b2 . b3 = b3 `2;

:: MSSCYC_2:funcnot 3 => MSSCYC_2:func 3
definition
  let a1 be ManySortedSign;
  func InducedTarget A1 -> Function-like quasi_total Relation of InducedEdges a1,the carrier of a1 means
    for b1 being set
          st b1 in InducedEdges a1
       holds it . b1 = (the ResultSort of a1) . (b1 `1);
end;

:: MSSCYC_2:def 3
theorem
for b1 being ManySortedSign
for b2 being Function-like quasi_total Relation of InducedEdges b1,the carrier of b1 holds
      b2 = InducedTarget b1
   iff
      for b3 being set
            st b3 in InducedEdges b1
         holds b2 . b3 = (the ResultSort of b1) . (b3 `1);

:: MSSCYC_2:funcnot 4 => MSSCYC_2:func 4
definition
  let a1 be non empty ManySortedSign;
  func InducedGraph A1 -> Graph-like MultiGraphStruct equals
    MultiGraphStruct(#the carrier of a1,InducedEdges a1,InducedSource a1,InducedTarget a1#);
end;

:: MSSCYC_2:def 4
theorem
for b1 being non empty ManySortedSign holds
   InducedGraph b1 = MultiGraphStruct(#the carrier of b1,InducedEdges b1,InducedSource b1,InducedTarget b1#);

:: MSSCYC_2:th 2
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
for b4 being natural set
      st 1 <= b4
   holds    ex b5 being Element of (the Sorts of FreeMSA b2) . b3 st
         depth b5 = b4
   iff
      ex b5 being oriented Chain of InducedGraph b1 st
         len b5 = b4 &
          (vertex-seq b5) . ((len b5) + 1) = b3;

:: MSSCYC_2:th 3
theorem
for b1 being non empty void ManySortedSign holds
      b1 is monotonic
   iff
      InducedGraph b1 is well-founded;

:: MSSCYC_2:th 4
theorem
for b1 being non empty non void ManySortedSign
      st b1 is monotonic
   holds InducedGraph b1 is well-founded;

:: MSSCYC_2:th 5
theorem
for b1 being non empty non void ManySortedSign
for b2 being non-empty finite-yielding ManySortedSet of the carrier of b1
   st b1 is finitely_operated
for b3 being natural set
for b4 being Element of the carrier of b1 holds
   {b5 where b5 is Element of (the Sorts of FreeMSA b2) . b4: depth b5 <= b3} is finite;

:: MSSCYC_2:th 6
theorem
for b1 being non empty non void ManySortedSign
      st b1 is finitely_operated & InducedGraph b1 is well-founded
   holds b1 is monotonic;