Article CIRCTRM1, MML version 4.99.1005

:: CIRCTRM1:th 1
theorem
for b1 being non empty non void ManySortedSign
for b2 being non-empty MSAlgebra over b1
for b3 being Variables of b2
for b4 being Element of b1 -Terms b3
for b5 being Element of b1 -Terms ((the Sorts of b2) \/ b3)
      st b5 = b4
   holds the_sort_of b5 = the_sort_of b4;

:: CIRCTRM1:funcnot 1 => CIRCTRM1:func 1
definition
  let a1 be non empty non void ManySortedSign;
  let a2 be non-empty ManySortedSet of the carrier of a1;
  let a3 be non empty Element of bool (a1 -Terms a2);
  func A3 -CircuitStr -> non empty strict ManySortedSign equals
    ManySortedSign(#Subtrees a3,[:the OperSymbols of a1,{the carrier of a1}:] -Subtrees a3,[:the OperSymbols of a1,{the carrier of a1}:] -ImmediateSubtrees a3,incl ([:the OperSymbols of a1,{the carrier of a1}:] -Subtrees a3)#);
end;

:: CIRCTRM1:def 1
theorem
for b1 being non empty non void ManySortedSign
for b2 being non-empty ManySortedSet of the carrier of b1
for b3 being non empty Element of bool (b1 -Terms b2) holds
   b3 -CircuitStr = ManySortedSign(#Subtrees b3,[:the OperSymbols of b1,{the carrier of b1}:] -Subtrees b3,[:the OperSymbols of b1,{the carrier of b1}:] -ImmediateSubtrees b3,incl ([:the OperSymbols of b1,{the carrier of b1}:] -Subtrees b3)#);

:: CIRCTRM1:funcreg 1
registration
  let a1 be non empty non void ManySortedSign;
  let a2 be non-empty ManySortedSet of the carrier of a1;
  let a3 be non empty Element of bool (a1 -Terms a2);
  cluster a3 -CircuitStr -> non empty strict unsplit;
end;

:: CIRCTRM1: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 non empty Element of bool (b1 -Terms b2) holds
      b3 -CircuitStr is void
   iff
      for b4 being Element of b3 holds
         b4 is root &
          not b4 . {} in [:the OperSymbols of b1,{the carrier of b1}:];

:: CIRCTRM1:th 3
theorem
for b1 being non empty non void ManySortedSign
for b2 being non-empty ManySortedSet of the carrier of b1
for b3 being non empty Element of bool (b1 -Terms b2) holds
      b3 is SetWithCompoundTerm of b1,b2
   iff
      b3 -CircuitStr is not void;

:: CIRCTRM1:funcreg 2
registration
  let a1 be non empty non void ManySortedSign;
  let a2 be non-empty ManySortedSet of the carrier of a1;
  let a3 be SetWithCompoundTerm of a1,a2;
  cluster a3 -CircuitStr -> non empty strict non void;
end;

:: CIRCTRM1:th 4
theorem
for b1 being non empty non void ManySortedSign
for b2 being non-empty ManySortedSet of the carrier of b1
for b3 being non empty Element of bool (b1 -Terms b2) holds
   (for b4 being Element of the carrier of b3 -CircuitStr holds
       b4 is Element of b1 -Terms b2) &
    (for b4 being set
          st b4 in the OperSymbols of b3 -CircuitStr
       holds b4 is CompoundTerm of b1,b2);

:: CIRCTRM1:th 5
theorem
for b1 being non empty non void ManySortedSign
for b2 being non-empty ManySortedSet of the carrier of b1
for b3 being non empty Element of bool (b1 -Terms b2)
for b4 being Element of the carrier of b3 -CircuitStr holds
      b4 in the OperSymbols of b3 -CircuitStr
   iff
      b4 is CompoundTerm of b1,b2;

:: CIRCTRM1:funcreg 3
registration
  let a1 be non empty non void ManySortedSign;
  let a2 be non-empty ManySortedSet of the carrier of a1;
  let a3 be SetWithCompoundTerm of a1,a2;
  let a4 be Element of the OperSymbols of a3 -CircuitStr;
  cluster the_arity_of a4 -> DTree-yielding;
end;

:: CIRCTRM1:condreg 1
registration
  let a1 be non empty non void ManySortedSign;
  let a2 be non-empty ManySortedSet of the carrier of a1;
  let a3 be non empty Element of bool (a1 -Terms a2);
  cluster -> Relation-like Function-like finite (Element of the carrier of a3 -CircuitStr);
end;

:: CIRCTRM1:condreg 2
registration
  let a1 be non empty non void ManySortedSign;
  let a2 be non-empty ManySortedSet of the carrier of a1;
  let a3 be non empty Element of bool (a1 -Terms a2);
  cluster -> DecoratedTree-like (Element of the carrier of a3 -CircuitStr);
end;

:: CIRCTRM1:condreg 3
registration
  let a1 be non empty non void ManySortedSign;
  let a2 be non-empty ManySortedSet of the carrier of a1;
  let a3 be SetWithCompoundTerm of a1,a2;
  cluster -> Relation-like Function-like finite (Element of the OperSymbols of a3 -CircuitStr);
end;

:: CIRCTRM1:condreg 4
registration
  let a1 be non empty non void ManySortedSign;
  let a2 be non-empty ManySortedSet of the carrier of a1;
  let a3 be SetWithCompoundTerm of a1,a2;
  cluster -> DecoratedTree-like (Element of the OperSymbols of a3 -CircuitStr);
end;

:: CIRCTRM1:th 7
theorem
for b1 being non empty non void ManySortedSign
for b2 being non-empty ManySortedSet of the carrier of b1
for b3, b4 being non empty Element of bool (b1 -Terms b2) holds
the Arity of b3 -CircuitStr tolerates the Arity of b4 -CircuitStr &
 the ResultSort of b3 -CircuitStr tolerates the ResultSort of b4 -CircuitStr;

:: CIRCTRM1:funcreg 4
registration
  let a1, a2 be constituted-DTrees set;
  cluster a1 \/ a2 -> constituted-DTrees;
end;

:: CIRCTRM1:th 8
theorem
for b1, b2 being non empty constituted-DTrees set holds
Subtrees (b1 \/ b2) = (Subtrees b1) \/ Subtrees b2;

:: CIRCTRM1:th 9
theorem
for b1, b2 being non empty constituted-DTrees set
for b3 being set holds
   b3 -Subtrees (b1 \/ b2) = (b3 -Subtrees b1) \/ (b3 -Subtrees b2);

:: CIRCTRM1:th 10
theorem
for b1, b2 being non empty constituted-DTrees set
   st (for b3 being Element of b1 holds
         b3 is finite) &
      (for b3 being Element of b2 holds
         b3 is finite)
for b3 being set holds
   b3 -ImmediateSubtrees (b1 \/ b2) = (b3 -ImmediateSubtrees b1) +* (b3 -ImmediateSubtrees b2);

:: CIRCTRM1:th 11
theorem
for b1 being non empty non void ManySortedSign
for b2 being non-empty ManySortedSet of the carrier of b1
for b3, b4 being non empty Element of bool (b1 -Terms b2) holds
(b3 \/ b4) -CircuitStr = b3 -CircuitStr +* (b4 -CircuitStr);

:: CIRCTRM1:th 12
theorem
for b1 being non empty non void ManySortedSign
for b2 being non-empty ManySortedSet of the carrier of b1
for b3 being non empty Element of bool (b1 -Terms b2)
for b4 being set holds
      b4 in InputVertices (b3 -CircuitStr)
   iff
      b4 in Subtrees b3 &
       (ex b5 being Element of the carrier of b1 st
          ex b6 being Element of b2 . b5 st
             b4 = root-tree [b6,b5]);

:: CIRCTRM1:th 13
theorem
for b1 being non empty non void ManySortedSign
for b2 being non-empty ManySortedSet of the carrier of b1
for b3 being SetWithCompoundTerm of b1,b2
for b4 being Element of the OperSymbols of b3 -CircuitStr holds
   b4 = (b4 . {}) -tree the_arity_of b4;

:: CIRCTRM1:funcnot 2 => CIRCTRM1:func 2
definition
  let a1 be non empty non void ManySortedSign;
  let a2 be non-empty ManySortedSet of the carrier of a1;
  let a3 be non empty Element of bool (a1 -Terms a2);
  let a4 be Element of the carrier of a3 -CircuitStr;
  let a5 be MSAlgebra over a1;
  func the_sort_of(A4,A5) -> set means
    for b1 being Element of a1 -Terms a2
          st b1 = a4
       holds it = (the Sorts of a5) . the_sort_of b1;
end;

:: CIRCTRM1:def 2
theorem
for b1 being non empty non void ManySortedSign
for b2 being non-empty ManySortedSet of the carrier of b1
for b3 being non empty Element of bool (b1 -Terms b2)
for b4 being Element of the carrier of b3 -CircuitStr
for b5 being MSAlgebra over b1
for b6 being set holds
      b6 = the_sort_of(b4,b5)
   iff
      for b7 being Element of b1 -Terms b2
            st b7 = b4
         holds b6 = (the Sorts of b5) . the_sort_of b7;

:: CIRCTRM1:funcreg 5
registration
  let a1 be non empty non void ManySortedSign;
  let a2 be non-empty ManySortedSet of the carrier of a1;
  let a3 be non empty Element of bool (a1 -Terms a2);
  let a4 be Element of the carrier of a3 -CircuitStr;
  let a5 be non-empty MSAlgebra over a1;
  cluster the_sort_of(a4,a5) -> non empty;
end;

:: CIRCTRM1:funcnot 3 => CIRCTRM1:func 3
definition
  let a1 be non empty non void ManySortedSign;
  let a2 be non-empty ManySortedSet of the carrier of a1;
  let a3 be non empty Element of bool (a1 -Terms a2);
  let a4 be Element of the OperSymbols of a3 -CircuitStr;
  let a5 be MSAlgebra over a1;
  assume a3 is SetWithCompoundTerm of a1,a2;
  func the_action_of(A4,A5) -> Relation-like Function-like set means
    for b1 being SetWithCompoundTerm of a1,a2
       st b1 = a3
    for b2 being Element of the OperSymbols of b1 -CircuitStr
          st b2 = a4
       holds it = (the Charact of a5) . ((b2 . {}) `1);
end;

:: CIRCTRM1:def 3
theorem
for b1 being non empty non void ManySortedSign
for b2 being non-empty ManySortedSet of the carrier of b1
for b3 being non empty Element of bool (b1 -Terms b2)
   st b3 is SetWithCompoundTerm of b1,b2
for b4 being Element of the OperSymbols of b3 -CircuitStr
for b5 being MSAlgebra over b1
for b6 being Relation-like Function-like set holds
      b6 = the_action_of(b4,b5)
   iff
      for b7 being SetWithCompoundTerm of b1,b2
         st b7 = b3
      for b8 being Element of the OperSymbols of b7 -CircuitStr
            st b8 = b4
         holds b6 = (the Charact of b5) . ((b8 . {}) `1);

:: CIRCTRM1:sch 1
scheme CIRCTRM1:sch 1
{F1 -> non empty set,
  F2 -> non-empty ManySortedSet of F1(),
  F3 -> non-empty ManySortedSet of F1()}:
ex b1 being ManySortedFunction of F2(),F3() st
   for b2 being Element of F1()
   for b3 being Element of F2() . b2 holds
      P1[b2, b3, (b1 . b2) . b3]
provided
   for b1 being Element of F1()
   for b2 being Element of F2() . b1 holds
      ex b3 being Element of F3() . b1 st
         P1[b1, b2, b3];


:: CIRCTRM1:funcnot 4 => CIRCTRM1:func 4
definition
  let a1 be non empty non void ManySortedSign;
  let a2 be non-empty ManySortedSet of the carrier of a1;
  let a3 be non empty Element of bool (a1 -Terms a2);
  let a4 be MSAlgebra over a1;
  func A3 -CircuitSorts A4 -> ManySortedSet of the carrier of a3 -CircuitStr means
    for b1 being Element of the carrier of a3 -CircuitStr holds
       it . b1 = the_sort_of(b1,a4);
end;

:: CIRCTRM1:def 4
theorem
for b1 being non empty non void ManySortedSign
for b2 being non-empty ManySortedSet of the carrier of b1
for b3 being non empty Element of bool (b1 -Terms b2)
for b4 being MSAlgebra over b1
for b5 being ManySortedSet of the carrier of b3 -CircuitStr holds
      b5 = b3 -CircuitSorts b4
   iff
      for b6 being Element of the carrier of b3 -CircuitStr holds
         b5 . b6 = the_sort_of(b6,b4);

:: CIRCTRM1:funcreg 6
registration
  let a1 be non empty non void ManySortedSign;
  let a2 be non-empty ManySortedSet of the carrier of a1;
  let a3 be non empty Element of bool (a1 -Terms a2);
  let a4 be non-empty MSAlgebra over a1;
  cluster a3 -CircuitSorts a4 -> non-empty;
end;

:: CIRCTRM1:th 14
theorem
for b1 being non empty non void ManySortedSign
for b2 being non-empty ManySortedSet of the carrier of b1
for b3 being non-empty MSAlgebra over b1
for b4 being SetWithCompoundTerm of b1,b2
for b5 being Element of the OperSymbols of b4 -CircuitStr
for b6 being Element of the OperSymbols of b1
      st b5 . {} = [b6,the carrier of b1]
   holds (the_arity_of b5) * (b4 -CircuitSorts b3) = (the_arity_of b6) * the Sorts of b3;

:: CIRCTRM1:funcnot 5 => CIRCTRM1:func 5
definition
  let a1 be non empty non void ManySortedSign;
  let a2 be non-empty ManySortedSet of the carrier of a1;
  let a3 be non empty Element of bool (a1 -Terms a2);
  let a4 be non-empty MSAlgebra over a1;
  func A3 -CircuitCharact A4 -> ManySortedFunction of (a3 -CircuitSorts a4) # * the Arity of a3 -CircuitStr,(a3 -CircuitSorts a4) * the ResultSort of a3 -CircuitStr means
    for b1 being Element of the OperSymbols of a3 -CircuitStr
          st b1 in the OperSymbols of a3 -CircuitStr
       holds it . b1 = the_action_of(b1,a4);
end;

:: CIRCTRM1:def 5
theorem
for b1 being non empty non void ManySortedSign
for b2 being non-empty ManySortedSet of the carrier of b1
for b3 being non empty Element of bool (b1 -Terms b2)
for b4 being non-empty MSAlgebra over b1
for b5 being ManySortedFunction of (b3 -CircuitSorts b4) # * the Arity of b3 -CircuitStr,(b3 -CircuitSorts b4) * the ResultSort of b3 -CircuitStr holds
      b5 = b3 -CircuitCharact b4
   iff
      for b6 being Element of the OperSymbols of b3 -CircuitStr
            st b6 in the OperSymbols of b3 -CircuitStr
         holds b5 . b6 = the_action_of(b6,b4);

:: CIRCTRM1:funcnot 6 => CIRCTRM1:func 6
definition
  let a1 be non empty non void ManySortedSign;
  let a2 be non-empty ManySortedSet of the carrier of a1;
  let a3 be non empty Element of bool (a1 -Terms a2);
  let a4 be non-empty MSAlgebra over a1;
  func A3 -Circuit A4 -> strict non-empty MSAlgebra over a3 -CircuitStr equals
    MSAlgebra(#a3 -CircuitSorts a4,a3 -CircuitCharact a4#);
end;

:: CIRCTRM1:def 6
theorem
for b1 being non empty non void ManySortedSign
for b2 being non-empty ManySortedSet of the carrier of b1
for b3 being non empty Element of bool (b1 -Terms b2)
for b4 being non-empty MSAlgebra over b1 holds
   b3 -Circuit b4 = MSAlgebra(#b3 -CircuitSorts b4,b3 -CircuitCharact b4#);

:: CIRCTRM1:th 15
theorem
for b1 being non empty non void ManySortedSign
for b2 being non-empty ManySortedSet of the carrier of b1
for b3 being non-empty MSAlgebra over b1
for b4 being non empty Element of bool (b1 -Terms b2)
for b5 being Element of the carrier of b4 -CircuitStr holds
   (the Sorts of b4 -Circuit b3) . b5 = the_sort_of(b5,b3);

:: CIRCTRM1:th 16
theorem
for b1 being non empty non void ManySortedSign
for b2 being non-empty ManySortedSet of the carrier of b1
for b3 being non-empty locally-finite MSAlgebra over b1
for b4 being SetWithCompoundTerm of b1,b2
for b5 being Element of the OperSymbols of b4 -CircuitStr holds
   Den(b5,b4 -Circuit b3) = the_action_of(b5,b3);

:: CIRCTRM1:th 17
theorem
for b1 being non empty non void ManySortedSign
for b2 being non-empty ManySortedSet of the carrier of b1
for b3 being non-empty locally-finite MSAlgebra over b1
for b4 being SetWithCompoundTerm of b1,b2
for b5 being Element of the OperSymbols of b4 -CircuitStr
for b6 being Element of the OperSymbols of b1
      st b5 . {} = [b6,the carrier of b1]
   holds Den(b5,b4 -Circuit b3) = Den(b6,b3);

:: CIRCTRM1:th 18
theorem
for b1 being non empty non void ManySortedSign
for b2 being non-empty ManySortedSet of the carrier of b1
for b3 being non-empty locally-finite MSAlgebra over b1
for b4 being non empty Element of bool (b1 -Terms b2) holds
   b4 -Circuit b3 is locally-finite(b4 -CircuitStr);

:: CIRCTRM1:funcreg 7
registration
  let a1 be non empty non void ManySortedSign;
  let a2 be non-empty ManySortedSet of the carrier of a1;
  let a3 be SetWithCompoundTerm of a1,a2;
  let a4 be non-empty locally-finite MSAlgebra over a1;
  cluster a3 -Circuit a4 -> strict non-empty locally-finite;
end;

:: CIRCTRM1:th 19
theorem
for b1 being non empty non void ManySortedSign
for b2 being non-empty ManySortedSet of the carrier of b1
for b3, b4 being SetWithCompoundTerm of b1,b2
for b5 being non-empty MSAlgebra over b1 holds
   b3 -Circuit b5 tolerates b4 -Circuit b5;

:: CIRCTRM1:th 20
theorem
for b1 being non empty non void ManySortedSign
for b2 being non-empty ManySortedSet of the carrier of b1
for b3, b4 being SetWithCompoundTerm of b1,b2
for b5 being non-empty MSAlgebra over b1 holds
   (b3 \/ b4) -Circuit b5 = (b3 -Circuit b5) +* (b4 -Circuit b5);

:: CIRCTRM1:funcnot 7 => CIRCTRM1:func 7
definition
  let a1 be non empty non void ManySortedSign;
  let a2 be non-empty MSAlgebra over a1;
  let a3 be Variables of a2;
  let a4 be Relation-like Function-like DecoratedTree-like set;
  let a5 be ManySortedFunction of a3,the Sorts of a2;
  assume a4 is Element of a1 -Terms a3;
  func A4 @(A5,A2) -> set means
    ex b1 being Element of a1 -Terms ((the Sorts of a2) \/ a3) st
       b1 = a4 & it = b1 @ a5;
end;

:: CIRCTRM1:def 7
theorem
for b1 being non empty non void ManySortedSign
for b2 being non-empty MSAlgebra over b1
for b3 being Variables of b2
for b4 being Relation-like Function-like DecoratedTree-like set
   st b4 is Element of b1 -Terms b3
for b5 being ManySortedFunction of b3,the Sorts of b2
for b6 being set holds
      b6 = b4 @(b5,b2)
   iff
      ex b7 being Element of b1 -Terms ((the Sorts of b2) \/ b3) st
         b7 = b4 & b6 = b7 @ b5;

:: CIRCTRM1:modenot 1 => CIRCTRM1:mode 1
definition
  let a1 be non empty non void ManySortedSign;
  let a2 be non-empty ManySortedSet of the carrier of a1;
  let a3 be SetWithCompoundTerm of a1,a2;
  let a4 be non-empty locally-finite MSAlgebra over a1;
  let a5 be Element of product the Sorts of a3 -Circuit a4;
  mode CompatibleValuation of A5 -> ManySortedFunction of a2,the Sorts of a4 means
    for b1 being Element of the carrier of a1
    for b2 being Element of a2 . b1
          st root-tree [b2,b1] in Subtrees a3
       holds (it . b1) . b2 = a5 . root-tree [b2,b1];
end;

:: CIRCTRM1:dfs 8
definiens
  let a1 be non empty non void ManySortedSign;
  let a2 be non-empty ManySortedSet of the carrier of a1;
  let a3 be SetWithCompoundTerm of a1,a2;
  let a4 be non-empty locally-finite MSAlgebra over a1;
  let a5 be Element of product the Sorts of a3 -Circuit a4;
  let a6 be ManySortedFunction of a2,the Sorts of a4;
To prove
     a6 is CompatibleValuation of a5
it is sufficient to prove
  thus for b1 being Element of the carrier of a1
    for b2 being Element of a2 . b1
          st root-tree [b2,b1] in Subtrees a3
       holds (a6 . b1) . b2 = a5 . root-tree [b2,b1];

:: CIRCTRM1:def 8
theorem
for b1 being non empty non void ManySortedSign
for b2 being non-empty ManySortedSet of the carrier of b1
for b3 being SetWithCompoundTerm of b1,b2
for b4 being non-empty locally-finite MSAlgebra over b1
for b5 being Element of product the Sorts of b3 -Circuit b4
for b6 being ManySortedFunction of b2,the Sorts of b4 holds
      b6 is CompatibleValuation of b5
   iff
      for b7 being Element of the carrier of b1
      for b8 being Element of b2 . b7
            st root-tree [b8,b7] in Subtrees b3
         holds (b6 . b7) . b8 = b5 . root-tree [b8,b7];

:: CIRCTRM1:th 21
theorem
for b1 being non empty non void ManySortedSign
for b2 being non-empty locally-finite MSAlgebra over b1
for b3 being Variables of b2
for b4 being SetWithCompoundTerm of b1,b3
for b5 being Element of product the Sorts of b4 -Circuit b2
for b6 being CompatibleValuation of b5
for b7 being Element of NAT holds
   b6 is CompatibleValuation of Following(b5,b7);

:: CIRCTRM1:funcreg 8
registration
  let a1 be set;
  let a2 be non empty non void ManySortedSign;
  let a3 be non-empty ManySortedSet of the carrier of a2;
  let a4 be FinSequence of a2 -Terms a3;
  cluster a1 -tree a4 -> Relation-like Function-like finite DecoratedTree-like;
end;

:: CIRCTRM1:th 22
theorem
for b1 being non empty non void ManySortedSign
for b2 being non-empty locally-finite MSAlgebra over b1
for b3 being Variables of b2
for b4 being SetWithCompoundTerm of b1,b3
for b5 being Element of product the Sorts of b4 -Circuit b2
for b6 being CompatibleValuation of b5
for b7 being Element of b1 -Terms b3
      st b7 in Subtrees b4
   holds Following(b5,1 + height proj1 b7) is_stable_at b7 &
    (Following(b5,1 + height proj1 b7)) . b7 = b7 @(b6,b2);

:: CIRCTRM1:th 23
theorem
for b1 being non empty non void ManySortedSign
for b2 being non-empty locally-finite MSAlgebra over b1
for b3 being Variables of b2
for b4 being SetWithCompoundTerm of b1,b3
   st for b5 being Element of b1 -Terms b3
     for b6 being Element of the OperSymbols of b1
           st b5 in Subtrees b4 &
              b5 . {} = [b6,the carrier of b1]
        holds the_arity_of b6 <> {}
for b5 being Element of product the Sorts of b4 -Circuit b2
for b6 being CompatibleValuation of b5
for b7 being Element of b1 -Terms b3
      st b7 in Subtrees b4
   holds Following(b5,height proj1 b7) is_stable_at b7 &
    (Following(b5,height proj1 b7)) . b7 = b7 @(b6,b2);

:: CIRCTRM1:prednot 1 => CIRCTRM1:pred 1
definition
  let a1, a2 be non empty ManySortedSign;
  let a3, a4 be Relation-like Function-like set;
  pred A1,A2 are_equivalent_wrt A3,A4 means
    a3 is one-to-one & a4 is one-to-one & a3,a4 form_morphism_between a1,a2 & a3 ",a4 " form_morphism_between a2,a1;
end;

:: CIRCTRM1:dfs 9
definiens
  let a1, a2 be non empty ManySortedSign;
  let a3, a4 be Relation-like Function-like set;
To prove
     a1,a2 are_equivalent_wrt a3,a4
it is sufficient to prove
  thus a3 is one-to-one & a4 is one-to-one & a3,a4 form_morphism_between a1,a2 & a3 ",a4 " form_morphism_between a2,a1;

:: CIRCTRM1:def 9
theorem
for b1, b2 being non empty ManySortedSign
for b3, b4 being Relation-like Function-like set holds
   b1,b2 are_equivalent_wrt b3,b4
iff
   b3 is one-to-one & b4 is one-to-one & b3,b4 form_morphism_between b1,b2 & b3 ",b4 " form_morphism_between b2,b1;

:: CIRCTRM1:th 24
theorem
for b1, b2 being non empty ManySortedSign
for b3, b4 being Relation-like Function-like set
      st b1,b2 are_equivalent_wrt b3,b4
   holds the carrier of b2 = b3 .: the carrier of b1 & the OperSymbols of b2 = b4 .: the OperSymbols of b1;

:: CIRCTRM1:th 25
theorem
for b1, b2 being non empty ManySortedSign
for b3, b4 being Relation-like Function-like set
      st b1,b2 are_equivalent_wrt b3,b4
   holds proj2 b3 = the carrier of b2 & proj2 b4 = the OperSymbols of b2;

:: CIRCTRM1:th 26
theorem
for b1 being non empty ManySortedSign holds
   b1,b1 are_equivalent_wrt id the carrier of b1,id the OperSymbols of b1;

:: CIRCTRM1:th 27
theorem
for b1, b2 being non empty ManySortedSign
for b3, b4 being Relation-like Function-like set
      st b1,b2 are_equivalent_wrt b3,b4
   holds b2,b1 are_equivalent_wrt b3 ",b4 ";

:: CIRCTRM1:th 28
theorem
for b1, b2, b3 being non empty ManySortedSign
for b4, b5, b6, b7 being Relation-like Function-like set
      st b1,b2 are_equivalent_wrt b4,b5 & b2,b3 are_equivalent_wrt b6,b7
   holds b1,b3 are_equivalent_wrt b4 * b6,b5 * b7;

:: CIRCTRM1:th 29
theorem
for b1, b2 being non empty ManySortedSign
for b3, b4 being Relation-like Function-like set
      st b1,b2 are_equivalent_wrt b3,b4
   holds b3 .: InputVertices b1 = InputVertices b2 & b3 .: InnerVertices b1 = InnerVertices b2;

:: CIRCTRM1:prednot 2 => CIRCTRM1:pred 2
definition
  let a1, a2 be non empty ManySortedSign;
  pred A1,A2 are_equivalent means
    ex b1, b2 being Relation-like Function-like one-to-one set st
       a1,a2 are_equivalent_wrt b1,b2;
  symmetry;
::  for a1, a2 being non empty ManySortedSign
::        st a1,a2 are_equivalent
::     holds a2,a1 are_equivalent;
  reflexivity;
::  for a1 being non empty ManySortedSign holds
::     a1,a1 are_equivalent;
end;

:: CIRCTRM1:dfs 10
definiens
  let a1, a2 be non empty ManySortedSign;
To prove
     a1,a2 are_equivalent
it is sufficient to prove
  thus ex b1, b2 being Relation-like Function-like one-to-one set st
       a1,a2 are_equivalent_wrt b1,b2;

:: CIRCTRM1:def 10
theorem
for b1, b2 being non empty ManySortedSign holds
   b1,b2 are_equivalent
iff
   ex b3, b4 being Relation-like Function-like one-to-one set st
      b1,b2 are_equivalent_wrt b3,b4;

:: CIRCTRM1:th 30
theorem
for b1, b2, b3 being non empty ManySortedSign
      st b1,b2 are_equivalent & b2,b3 are_equivalent
   holds b1,b3 are_equivalent;

:: CIRCTRM1:prednot 3 => CIRCTRM1:pred 3
definition
  let a1, a2 be non empty ManySortedSign;
  let a3 be Relation-like Function-like set;
  pred A3 preserves_inputs_of A1,A2 means
    a3 .: InputVertices a1 c= InputVertices a2;
end;

:: CIRCTRM1:dfs 11
definiens
  let a1, a2 be non empty ManySortedSign;
  let a3 be Relation-like Function-like set;
To prove
     a3 preserves_inputs_of a1,a2
it is sufficient to prove
  thus a3 .: InputVertices a1 c= InputVertices a2;

:: CIRCTRM1:def 11
theorem
for b1, b2 being non empty ManySortedSign
for b3 being Relation-like Function-like set holds
      b3 preserves_inputs_of b1,b2
   iff
      b3 .: InputVertices b1 c= InputVertices b2;

:: CIRCTRM1:th 31
theorem
for b1, b2 being non empty ManySortedSign
for b3, b4 being Relation-like Function-like set
   st b3,b4 form_morphism_between b1,b2
for b5 being Element of the carrier of b1 holds
   b3 . b5 is Element of the carrier of b2;

:: CIRCTRM1:th 32
theorem
for b1, b2 being non empty non void ManySortedSign
for b3, b4 being Relation-like Function-like set
   st b3,b4 form_morphism_between b1,b2
for b5 being Element of the OperSymbols of b1 holds
   b4 . b5 is Element of the OperSymbols of b2;

:: CIRCTRM1:th 33
theorem
for b1, b2 being non empty ManySortedSign
for b3, b4 being Relation-like Function-like set
      st b3,b4 form_morphism_between b1,b2
   holds b3 .: InnerVertices b1 c= InnerVertices b2;

:: CIRCTRM1:th 34
theorem
for b1, b2 being non empty non void Circuit-like ManySortedSign
for b3, b4 being Relation-like Function-like set
   st b3,b4 form_morphism_between b1,b2
for b5 being Element of the carrier of b1
   st b5 in InnerVertices b1
for b6 being Element of the carrier of b2
      st b6 = b3 . b5
   holds action_at b6 = b4 . action_at b5;

:: CIRCTRM1:prednot 4 => CIRCTRM1:pred 4
definition
  let a1, a2 be non empty ManySortedSign;
  let a3, a4 be Relation-like Function-like set;
  let a5 be non-empty MSAlgebra over a1;
  let a6 be non-empty MSAlgebra over a2;
  pred A3,A4 form_embedding_of A5,A6 means
    a3 is one-to-one & a4 is one-to-one & a3,a4 form_morphism_between a1,a2 & the Sorts of a5 = a3 * the Sorts of a6 & the Charact of a5 = a4 * the Charact of a6;
end;

:: CIRCTRM1:dfs 12
definiens
  let a1, a2 be non empty ManySortedSign;
  let a3, a4 be Relation-like Function-like set;
  let a5 be non-empty MSAlgebra over a1;
  let a6 be non-empty MSAlgebra over a2;
To prove
     a3,a4 form_embedding_of a5,a6
it is sufficient to prove
  thus a3 is one-to-one & a4 is one-to-one & a3,a4 form_morphism_between a1,a2 & the Sorts of a5 = a3 * the Sorts of a6 & the Charact of a5 = a4 * the Charact of a6;

:: CIRCTRM1:def 12
theorem
for b1, b2 being non empty ManySortedSign
for b3, b4 being Relation-like Function-like set
for b5 being non-empty MSAlgebra over b1
for b6 being non-empty MSAlgebra over b2 holds
      b3,b4 form_embedding_of b5,b6
   iff
      b3 is one-to-one & b4 is one-to-one & b3,b4 form_morphism_between b1,b2 & the Sorts of b5 = b3 * the Sorts of b6 & the Charact of b5 = b4 * the Charact of b6;

:: CIRCTRM1:th 35
theorem
for b1 being non empty ManySortedSign
for b2 being non-empty MSAlgebra over b1 holds
   id the carrier of b1,id the OperSymbols of b1 form_embedding_of b2,b2;

:: CIRCTRM1:th 36
theorem
for b1, b2, b3 being non empty ManySortedSign
for b4, b5, b6, b7 being Relation-like Function-like set
for b8 being non-empty MSAlgebra over b1
for b9 being non-empty MSAlgebra over b2
for b10 being non-empty MSAlgebra over b3
      st b4,b5 form_embedding_of b8,b9 & b6,b7 form_embedding_of b9,b10
   holds b4 * b6,b5 * b7 form_embedding_of b8,b10;

:: CIRCTRM1:prednot 5 => CIRCTRM1:pred 5
definition
  let a1, a2 be non empty ManySortedSign;
  let a3, a4 be Relation-like Function-like set;
  let a5 be non-empty MSAlgebra over a1;
  let a6 be non-empty MSAlgebra over a2;
  pred A5,A6 are_similar_wrt A3,A4 means
    a3,a4 form_embedding_of a5,a6 & a3 ",a4 " form_embedding_of a6,a5;
end;

:: CIRCTRM1:dfs 13
definiens
  let a1, a2 be non empty ManySortedSign;
  let a3, a4 be Relation-like Function-like set;
  let a5 be non-empty MSAlgebra over a1;
  let a6 be non-empty MSAlgebra over a2;
To prove
     a5,a6 are_similar_wrt a3,a4
it is sufficient to prove
  thus a3,a4 form_embedding_of a5,a6 & a3 ",a4 " form_embedding_of a6,a5;

:: CIRCTRM1:def 13
theorem
for b1, b2 being non empty ManySortedSign
for b3, b4 being Relation-like Function-like set
for b5 being non-empty MSAlgebra over b1
for b6 being non-empty MSAlgebra over b2 holds
      b5,b6 are_similar_wrt b3,b4
   iff
      b3,b4 form_embedding_of b5,b6 & b3 ",b4 " form_embedding_of b6,b5;

:: CIRCTRM1:th 37
theorem
for b1, b2 being non empty ManySortedSign
for b3, b4 being Relation-like Function-like set
for b5 being non-empty MSAlgebra over b1
for b6 being non-empty MSAlgebra over b2
      st b5,b6 are_similar_wrt b3,b4
   holds b1,b2 are_equivalent_wrt b3,b4;

:: CIRCTRM1:th 38
theorem
for b1, b2 being non empty ManySortedSign
for b3, b4 being Relation-like Function-like set
for b5 being non-empty MSAlgebra over b1
for b6 being non-empty MSAlgebra over b2 holds
      b5,b6 are_similar_wrt b3,b4
   iff
      b1,b2 are_equivalent_wrt b3,b4 & the Sorts of b5 = b3 * the Sorts of b6 & the Charact of b5 = b4 * the Charact of b6;

:: CIRCTRM1:th 39
theorem
for b1 being non empty ManySortedSign
for b2 being non-empty MSAlgebra over b1 holds
   b2,b2 are_similar_wrt id the carrier of b1,id the OperSymbols of b1;

:: CIRCTRM1:th 40
theorem
for b1, b2 being non empty ManySortedSign
for b3, b4 being Relation-like Function-like set
for b5 being non-empty MSAlgebra over b1
for b6 being non-empty MSAlgebra over b2
      st b5,b6 are_similar_wrt b3,b4
   holds b6,b5 are_similar_wrt b3 ",b4 ";

:: CIRCTRM1:th 41
theorem
for b1, b2, b3 being non empty ManySortedSign
for b4, b5, b6, b7 being Relation-like Function-like set
for b8 being non-empty MSAlgebra over b1
for b9 being non-empty MSAlgebra over b2
for b10 being non-empty MSAlgebra over b3
      st b8,b9 are_similar_wrt b4,b5 & b9,b10 are_similar_wrt b6,b7
   holds b8,b10 are_similar_wrt b4 * b6,b5 * b7;

:: CIRCTRM1:prednot 6 => CIRCTRM1:pred 6
definition
  let a1, a2 be non empty ManySortedSign;
  let a3 be non-empty MSAlgebra over a1;
  let a4 be non-empty MSAlgebra over a2;
  pred A3,A4 are_similar means
    ex b1, b2 being Relation-like Function-like set st
       a3,a4 are_similar_wrt b1,b2;
end;

:: CIRCTRM1:dfs 14
definiens
  let a1, a2 be non empty ManySortedSign;
  let a3 be non-empty MSAlgebra over a1;
  let a4 be non-empty MSAlgebra over a2;
To prove
     a3,a4 are_similar
it is sufficient to prove
  thus ex b1, b2 being Relation-like Function-like set st
       a3,a4 are_similar_wrt b1,b2;

:: CIRCTRM1:def 14
theorem
for b1, b2 being non empty ManySortedSign
for b3 being non-empty MSAlgebra over b1
for b4 being non-empty MSAlgebra over b2 holds
      b3,b4 are_similar
   iff
      ex b5, b6 being Relation-like Function-like set st
         b3,b4 are_similar_wrt b5,b6;

:: CIRCTRM1:th 42
theorem
for b1, b2 being non empty non void Circuit-like ManySortedSign
for b3, b4 being Relation-like Function-like set
for b5 being non-empty locally-finite MSAlgebra over b1
for b6 being non-empty locally-finite MSAlgebra over b2
      st b3,b4 form_embedding_of b5,b6
   holds proj1 b3 = the carrier of b1 & proj2 b3 c= the carrier of b2 & proj1 b4 = the OperSymbols of b1 & proj2 b4 c= the OperSymbols of b2;

:: CIRCTRM1:th 43
theorem
for b1, b2 being non empty non void Circuit-like ManySortedSign
for b3, b4 being Relation-like Function-like set
for b5 being non-empty locally-finite MSAlgebra over b1
for b6 being non-empty locally-finite MSAlgebra over b2
   st b3,b4 form_embedding_of b5,b6
for b7 being Element of the OperSymbols of b1
for b8 being Element of the OperSymbols of b2
      st b8 = b4 . b7
   holds Den(b8,b6) = Den(b7,b5);

:: CIRCTRM1:th 44
theorem
for b1, b2 being non empty non void Circuit-like ManySortedSign
for b3, b4 being Relation-like Function-like set
for b5 being non-empty locally-finite MSAlgebra over b1
for b6 being non-empty locally-finite MSAlgebra over b2
   st b3,b4 form_embedding_of b5,b6
for b7 being Element of the OperSymbols of b1
for b8 being Element of the OperSymbols of b2
   st b8 = b4 . b7
for b9 being Element of product the Sorts of b5
for b10 being Element of product the Sorts of b6
      st b9 = b3 * b10
   holds b8 depends_on_in b10 = b7 depends_on_in b9;

:: CIRCTRM1:th 45
theorem
for b1, b2 being non empty non void Circuit-like ManySortedSign
for b3, b4 being Relation-like Function-like set
for b5 being non-empty locally-finite MSAlgebra over b1
for b6 being non-empty locally-finite MSAlgebra over b2
   st b3,b4 form_embedding_of b5,b6
for b7 being Element of product the Sorts of b6 holds
   b3 * b7 is Element of product the Sorts of b5;

:: CIRCTRM1:th 46
theorem
for b1, b2 being non empty non void Circuit-like ManySortedSign
for b3, b4 being Relation-like Function-like set
for b5 being non-empty locally-finite MSAlgebra over b2
for b6 being non-empty locally-finite MSAlgebra over b1
   st b3,b4 form_embedding_of b5,b6
for b7 being Element of product the Sorts of b6
for b8 being Element of product the Sorts of b5
      st b8 = b3 * b7 &
         (for b9 being Element of the carrier of b2
               st b9 in InputVertices b2
            holds b7 is_stable_at b3 . b9)
   holds Following b8 = b3 * Following b7;

:: CIRCTRM1:th 47
theorem
for b1, b2 being non empty non void Circuit-like ManySortedSign
for b3, b4 being Relation-like Function-like set
for b5 being non-empty locally-finite MSAlgebra over b1
for b6 being non-empty locally-finite MSAlgebra over b2
   st b3,b4 form_embedding_of b5,b6 & b3 preserves_inputs_of b1,b2
for b7 being Element of product the Sorts of b6
for b8 being Element of product the Sorts of b5
      st b8 = b3 * b7
   holds Following b8 = b3 * Following b7;

:: CIRCTRM1:th 48
theorem
for b1, b2 being non empty non void Circuit-like ManySortedSign
for b3, b4 being Relation-like Function-like set
for b5 being non-empty locally-finite MSAlgebra over b1
for b6 being non-empty locally-finite MSAlgebra over b2
   st b3,b4 form_embedding_of b5,b6 & b3 preserves_inputs_of b1,b2
for b7 being Element of product the Sorts of b6
for b8 being Element of product the Sorts of b5
   st b8 = b3 * b7
for b9 being Element of NAT holds
   Following(b8,b9) = b3 * Following(b7,b9);

:: CIRCTRM1:th 49
theorem
for b1, b2 being non empty non void Circuit-like ManySortedSign
for b3, b4 being Relation-like Function-like set
for b5 being non-empty locally-finite MSAlgebra over b1
for b6 being non-empty locally-finite MSAlgebra over b2
   st b3,b4 form_embedding_of b5,b6 & b3 preserves_inputs_of b1,b2
for b7 being Element of product the Sorts of b6
for b8 being Element of product the Sorts of b5
      st b8 = b3 * b7 & b7 is stable(b2, b6)
   holds b8 is stable(b1, b5);

:: CIRCTRM1:th 50
theorem
for b1, b2 being non empty non void Circuit-like ManySortedSign
for b3, b4 being Relation-like Function-like set
for b5 being non-empty locally-finite MSAlgebra over b1
for b6 being non-empty locally-finite MSAlgebra over b2
   st b3,b4 form_embedding_of b5,b6 & b3 preserves_inputs_of b1,b2
for b7 being Element of product the Sorts of b6
for b8 being Element of product the Sorts of b5
   st b8 = b3 * b7
for b9 being Element of the carrier of b1 holds
      b8 is_stable_at b9
   iff
      b7 is_stable_at b3 . b9;

:: CIRCTRM1:th 51
theorem
for b1, b2 being non empty non void Circuit-like ManySortedSign
for b3, b4 being Relation-like Function-like set
for b5 being non-empty locally-finite MSAlgebra over b1
for b6 being non-empty locally-finite MSAlgebra over b2
   st b5,b6 are_similar_wrt b3,b4
for b7 being Element of product the Sorts of b6 holds
   b3 * b7 is Element of product the Sorts of b5;

:: CIRCTRM1:th 52
theorem
for b1, b2 being non empty non void Circuit-like ManySortedSign
for b3, b4 being Relation-like Function-like set
for b5 being non-empty locally-finite MSAlgebra over b1
for b6 being non-empty locally-finite MSAlgebra over b2
   st b5,b6 are_similar_wrt b3,b4
for b7 being Element of product the Sorts of b5
for b8 being Element of product the Sorts of b6 holds
      b7 = b3 * b8
   iff
      b8 = b3 " * b7;

:: CIRCTRM1:th 53
theorem
for b1, b2 being non empty non void Circuit-like ManySortedSign
for b3, b4 being Relation-like Function-like set
for b5 being non-empty locally-finite MSAlgebra over b1
for b6 being non-empty locally-finite MSAlgebra over b2
      st b5,b6 are_similar_wrt b3,b4
   holds b3 .: InputVertices b1 = InputVertices b2 & b3 .: InnerVertices b1 = InnerVertices b2;

:: CIRCTRM1:th 54
theorem
for b1, b2 being non empty non void Circuit-like ManySortedSign
for b3, b4 being Relation-like Function-like set
for b5 being non-empty locally-finite MSAlgebra over b1
for b6 being non-empty locally-finite MSAlgebra over b2
      st b5,b6 are_similar_wrt b3,b4
   holds b3 preserves_inputs_of b1,b2;

:: CIRCTRM1:th 55
theorem
for b1, b2 being non empty non void Circuit-like ManySortedSign
for b3, b4 being Relation-like Function-like set
for b5 being non-empty locally-finite MSAlgebra over b1
for b6 being non-empty locally-finite MSAlgebra over b2
   st b5,b6 are_similar_wrt b3,b4
for b7 being Element of product the Sorts of b5
for b8 being Element of product the Sorts of b6
      st b7 = b3 * b8
   holds Following b7 = b3 * Following b8;

:: CIRCTRM1:th 56
theorem
for b1, b2 being non empty non void Circuit-like ManySortedSign
for b3, b4 being Relation-like Function-like set
for b5 being non-empty locally-finite MSAlgebra over b1
for b6 being non-empty locally-finite MSAlgebra over b2
   st b5,b6 are_similar_wrt b3,b4
for b7 being Element of product the Sorts of b5
for b8 being Element of product the Sorts of b6
   st b7 = b3 * b8
for b9 being Element of NAT holds
   Following(b7,b9) = b3 * Following(b8,b9);

:: CIRCTRM1:th 57
theorem
for b1, b2 being non empty non void Circuit-like ManySortedSign
for b3, b4 being Relation-like Function-like set
for b5 being non-empty locally-finite MSAlgebra over b1
for b6 being non-empty locally-finite MSAlgebra over b2
   st b5,b6 are_similar_wrt b3,b4
for b7 being Element of product the Sorts of b5
for b8 being Element of product the Sorts of b6
      st b7 = b3 * b8
   holds    b7 is stable(b1, b5)
   iff
      b8 is stable(b2, b6);

:: CIRCTRM1:th 58
theorem
for b1, b2 being non empty non void Circuit-like ManySortedSign
for b3, b4 being Relation-like Function-like set
for b5 being non-empty locally-finite MSAlgebra over b2
for b6 being non-empty locally-finite MSAlgebra over b1
   st b5,b6 are_similar_wrt b3,b4
for b7 being Element of product the Sorts of b5
for b8 being Element of product the Sorts of b6
   st b7 = b3 * b8
for b9 being Element of the carrier of b2 holds
      b7 is_stable_at b9
   iff
      b8 is_stable_at b3 . b9;

:: CIRCTRM1:prednot 7 => CIRCTRM1:pred 7
definition
  let a1 be non empty non void ManySortedSign;
  let a2 be non-empty MSAlgebra over a1;
  let a3 be non-empty ManySortedSet of the carrier of a1;
  let a4 be non empty Element of bool (a1 -Terms a3);
  let a5 be non empty non void Circuit-like ManySortedSign;
  let a6 be non-empty locally-finite MSAlgebra over a5;
  pred A6 calculates A4,A2 means
    ex b1, b2 being Relation-like Function-like set st
       b1,b2 form_embedding_of a4 -Circuit a2,a6 & b1 preserves_inputs_of a4 -CircuitStr,a5;
end;

:: CIRCTRM1:dfs 15
definiens
  let a1 be non empty non void ManySortedSign;
  let a2 be non-empty MSAlgebra over a1;
  let a3 be non-empty ManySortedSet of the carrier of a1;
  let a4 be non empty Element of bool (a1 -Terms a3);
  let a5 be non empty non void Circuit-like ManySortedSign;
  let a6 be non-empty locally-finite MSAlgebra over a5;
To prove
     a6 calculates a4,a2
it is sufficient to prove
  thus ex b1, b2 being Relation-like Function-like set st
       b1,b2 form_embedding_of a4 -Circuit a2,a6 & b1 preserves_inputs_of a4 -CircuitStr,a5;

:: CIRCTRM1:def 15
theorem
for b1 being non empty non void ManySortedSign
for b2 being non-empty MSAlgebra over b1
for b3 being non-empty ManySortedSet of the carrier of b1
for b4 being non empty Element of bool (b1 -Terms b3)
for b5 being non empty non void Circuit-like ManySortedSign
for b6 being non-empty locally-finite MSAlgebra over b5 holds
      b6 calculates b4,b2
   iff
      ex b7, b8 being Relation-like Function-like set st
         b7,b8 form_embedding_of b4 -Circuit b2,b6 & b7 preserves_inputs_of b4 -CircuitStr,b5;

:: CIRCTRM1:prednot 8 => CIRCTRM1:pred 8
definition
  let a1 be non empty non void ManySortedSign;
  let a2 be non-empty MSAlgebra over a1;
  let a3 be non-empty ManySortedSet of the carrier of a1;
  let a4 be non empty Element of bool (a1 -Terms a3);
  let a5 be non empty non void Circuit-like ManySortedSign;
  let a6 be non-empty locally-finite MSAlgebra over a5;
  pred A4,A2 specifies A6 means
    a6,a4 -Circuit a2 are_similar;
end;

:: CIRCTRM1:dfs 16
definiens
  let a1 be non empty non void ManySortedSign;
  let a2 be non-empty MSAlgebra over a1;
  let a3 be non-empty ManySortedSet of the carrier of a1;
  let a4 be non empty Element of bool (a1 -Terms a3);
  let a5 be non empty non void Circuit-like ManySortedSign;
  let a6 be non-empty locally-finite MSAlgebra over a5;
To prove
     a4,a2 specifies a6
it is sufficient to prove
  thus a6,a4 -Circuit a2 are_similar;

:: CIRCTRM1:def 16
theorem
for b1 being non empty non void ManySortedSign
for b2 being non-empty MSAlgebra over b1
for b3 being non-empty ManySortedSet of the carrier of b1
for b4 being non empty Element of bool (b1 -Terms b3)
for b5 being non empty non void Circuit-like ManySortedSign
for b6 being non-empty locally-finite MSAlgebra over b5 holds
      b4,b2 specifies b6
   iff
      b6,b4 -Circuit b2 are_similar;

:: CIRCTRM1:modenot 2 => CIRCTRM1:mode 2
definition
  let a1 be non empty non void ManySortedSign;
  let a2 be non-empty ManySortedSet of the carrier of a1;
  let a3 be non-empty MSAlgebra over a1;
  let a4 be non empty Element of bool (a1 -Terms a2);
  let a5 be non empty non void Circuit-like ManySortedSign;
  let a6 be non-empty locally-finite MSAlgebra over a5;
  assume a6 calculates a4,a3;
  mode SortMap of A4,A3,A6 -> Relation-like Function-like one-to-one set means
    it preserves_inputs_of a4 -CircuitStr,a5 &
     (ex b1 being Relation-like Function-like set st
        it,b1 form_embedding_of a4 -Circuit a3,a6);
end;

:: CIRCTRM1:dfs 17
definiens
  let a1 be non empty non void ManySortedSign;
  let a2 be non-empty ManySortedSet of the carrier of a1;
  let a3 be non-empty MSAlgebra over a1;
  let a4 be non empty Element of bool (a1 -Terms a2);
  let a5 be non empty non void Circuit-like ManySortedSign;
  let a6 be non-empty locally-finite MSAlgebra over a5;
  let a7 be Relation-like Function-like one-to-one set;
To prove
     a7 is SortMap of a4,a3,a6
it is sufficient to prove
thus a6 calculates a4,a3;
  thus a7 preserves_inputs_of a4 -CircuitStr,a5 &
     (ex b1 being Relation-like Function-like set st
        a7,b1 form_embedding_of a4 -Circuit a3,a6);

:: CIRCTRM1:def 17
theorem
for b1 being non empty non void ManySortedSign
for b2 being non-empty ManySortedSet of the carrier of b1
for b3 being non-empty MSAlgebra over b1
for b4 being non empty Element of bool (b1 -Terms b2)
for b5 being non empty non void Circuit-like ManySortedSign
for b6 being non-empty locally-finite MSAlgebra over b5
   st b6 calculates b4,b3
for b7 being Relation-like Function-like one-to-one set holds
      b7 is SortMap of b4,b3,b6
   iff
      b7 preserves_inputs_of b4 -CircuitStr,b5 &
       (ex b8 being Relation-like Function-like set st
          b7,b8 form_embedding_of b4 -Circuit b3,b6);

:: CIRCTRM1:modenot 3 => CIRCTRM1:mode 3
definition
  let a1 be non empty non void ManySortedSign;
  let a2 be non-empty ManySortedSet of the carrier of a1;
  let a3 be non-empty MSAlgebra over a1;
  let a4 be non empty Element of bool (a1 -Terms a2);
  let a5 be non empty non void Circuit-like ManySortedSign;
  let a6 be non-empty locally-finite MSAlgebra over a5;
  let a7 be SortMap of a4,a3,a6;
  assume a6 calculates a4,a3;
  mode OperMap of A4,A3,A6,A7 -> Relation-like Function-like one-to-one set means
    a7,it form_embedding_of a4 -Circuit a3,a6;
end;

:: CIRCTRM1:dfs 18
definiens
  let a1 be non empty non void ManySortedSign;
  let a2 be non-empty ManySortedSet of the carrier of a1;
  let a3 be non-empty MSAlgebra over a1;
  let a4 be non empty Element of bool (a1 -Terms a2);
  let a5 be non empty non void Circuit-like ManySortedSign;
  let a6 be non-empty locally-finite MSAlgebra over a5;
  let a7 be SortMap of a4,a3,a6;
  let a8 be Relation-like Function-like one-to-one set;
To prove
     a8 is OperMap of a4,a3,a6,a7
it is sufficient to prove
thus a6 calculates a4,a3;
  thus a7,a8 form_embedding_of a4 -Circuit a3,a6;

:: CIRCTRM1:def 18
theorem
for b1 being non empty non void ManySortedSign
for b2 being non-empty ManySortedSet of the carrier of b1
for b3 being non-empty MSAlgebra over b1
for b4 being non empty Element of bool (b1 -Terms b2)
for b5 being non empty non void Circuit-like ManySortedSign
for b6 being non-empty locally-finite MSAlgebra over b5
   st b6 calculates b4,b3
for b7 being SortMap of b4,b3,b6
for b8 being Relation-like Function-like one-to-one set holds
      b8 is OperMap of b4,b3,b6,b7
   iff
      b7,b8 form_embedding_of b4 -Circuit b3,b6;

:: CIRCTRM1:th 59
theorem
for b1 being non empty non void ManySortedSign
for b2 being non-empty locally-finite MSAlgebra over b1
for b3 being Variables of b2
for b4 being SetWithCompoundTerm of b1,b3
for b5 being non empty non void Circuit-like ManySortedSign
for b6 being non-empty locally-finite MSAlgebra over b5
      st b4,b2 specifies b6
   holds b6 calculates b4,b2;

:: CIRCTRM1:th 60
theorem
for b1 being non empty non void ManySortedSign
for b2 being non-empty locally-finite MSAlgebra over b1
for b3 being Variables of b2
for b4 being SetWithCompoundTerm of b1,b3
for b5 being non empty non void Circuit-like ManySortedSign
for b6 being non-empty locally-finite MSAlgebra over b5
   st b6 calculates b4,b2
for b7 being SortMap of b4,b2,b6
for b8 being Element of b1 -Terms b3
   st b8 in Subtrees b4
for b9 being Element of product the Sorts of b6 holds
   Following(b9,1 + height proj1 b8) is_stable_at b7 . b8 &
    (for b10 being Element of product the Sorts of b4 -Circuit b2
       st b10 = b7 * b9
    for b11 being CompatibleValuation of b10 holds
       (Following(b9,1 + height proj1 b8)) . (b7 . b8) = b8 @(b11,b2));

:: CIRCTRM1:th 61
theorem
for b1 being non empty non void ManySortedSign
for b2 being non-empty locally-finite MSAlgebra over b1
for b3 being Variables of b2
for b4 being SetWithCompoundTerm of b1,b3
for b5 being non empty non void Circuit-like ManySortedSign
for b6 being non-empty locally-finite MSAlgebra over b5
   st b6 calculates b4,b2
for b7 being Element of b1 -Terms b3
      st b7 in Subtrees b4
   holds ex b8 being Element of the carrier of b5 st
      for b9 being Element of product the Sorts of b6 holds
         Following(b9,1 + height proj1 b7) is_stable_at b8 &
          (ex b10 being SortMap of b4,b2,b6 st
             for b11 being Element of product the Sorts of b4 -Circuit b2
                st b11 = b10 * b9
             for b12 being CompatibleValuation of b11 holds
                (Following(b9,1 + height proj1 b7)) . b8 = b7 @(b12,b2));

:: CIRCTRM1:th 62
theorem
for b1 being non empty non void ManySortedSign
for b2 being non-empty locally-finite MSAlgebra over b1
for b3 being Variables of b2
for b4 being SetWithCompoundTerm of b1,b3
for b5 being non empty non void Circuit-like ManySortedSign
for b6 being non-empty locally-finite MSAlgebra over b5
   st b4,b2 specifies b6
for b7 being SortMap of b4,b2,b6
for b8 being Element of product the Sorts of b6
for b9 being Element of b1 -Terms b3
      st b9 in Subtrees b4
   holds Following(b8,1 + height proj1 b9) is_stable_at b7 . b9 &
    (for b10 being Element of product the Sorts of b4 -Circuit b2
       st b10 = b7 * b8
    for b11 being CompatibleValuation of b10 holds
       (Following(b8,1 + height proj1 b9)) . (b7 . b9) = b9 @(b11,b2));

:: CIRCTRM1:th 63
theorem
for b1 being non empty non void ManySortedSign
for b2 being non-empty locally-finite MSAlgebra over b1
for b3 being Variables of b2
for b4 being SetWithCompoundTerm of b1,b3
for b5 being non empty non void Circuit-like ManySortedSign
for b6 being non-empty locally-finite MSAlgebra over b5
   st b4,b2 specifies b6
for b7 being Element of b1 -Terms b3
      st b7 in Subtrees b4
   holds ex b8 being Element of the carrier of b5 st
      for b9 being Element of product the Sorts of b6 holds
         Following(b9,1 + height proj1 b7) is_stable_at b8 &
          (ex b10 being SortMap of b4,b2,b6 st
             for b11 being Element of product the Sorts of b4 -Circuit b2
                st b11 = b10 * b9
             for b12 being CompatibleValuation of b11 holds
                (Following(b9,1 + height proj1 b7)) . b8 = b7 @(b12,b2));