Article TREES_A, MML version 4.99.1005

:: TREES_A:th 1
theorem
for b1, b2, b3, b4 being Relation-like Function-like FinSequence-like set
      st b1 ^ b2 = b4 ^ b3
   holds b1,b4 are_c=-comparable;

:: TREES_A:funcnot 1 => TREES_A:func 1
definition
  let a1, a2 be non empty Tree-like set;
  let a3 be AntiChain_of_Prefixes of a1;
  assume a3 <> {};
  func tree(A1,A3,A2) -> non empty Tree-like set means
    for b1 being FinSequence of NAT holds
          b1 in it
       iff
          ((b1 in a1 implies ex b2 being FinSequence of NAT st
             b2 in a3 & b2 c< b1) implies ex b2, b3 being FinSequence of NAT st
             b2 in a3 & b3 in a2 & b1 = b2 ^ b3);
end;

:: TREES_A:def 1
theorem
for b1, b2 being non empty Tree-like set
for b3 being AntiChain_of_Prefixes of b1
   st b3 <> {}
for b4 being non empty Tree-like set holds
      b4 = tree(b1,b3,b2)
   iff
      for b5 being FinSequence of NAT holds
            b5 in b4
         iff
            ((b5 in b1 implies ex b6 being FinSequence of NAT st
               b6 in b3 & b6 c< b5) implies ex b6, b7 being FinSequence of NAT st
               b6 in b3 & b7 in b2 & b5 = b6 ^ b7);

:: TREES_A:th 2
theorem
for b1, b2 being non empty Tree-like set
for b3 being AntiChain_of_Prefixes of b1
      st b3 <> {}
   holds tree(b1,b3,b2) = {b4 where b4 is Element of b1: for b5 being FinSequence of NAT
         st b5 in b3
      holds not b5 c< b4} \/ {b4 ^ b5 where b4 is Element of b1, b5 is Element of b2: b4 in b3};

:: TREES_A:th 3
theorem
for b1 being non empty Tree-like set
for b2 being AntiChain_of_Prefixes of b1 holds
   {b3 where b3 is Element of b1: for b4 being FinSequence of NAT
         st b4 in b2
      holds not b4 c= b3} c= {b3 where b3 is Element of b1: for b4 being FinSequence of NAT
         st b4 in b2
      holds not b4 c< b3};

:: TREES_A:th 4
theorem
for b1 being non empty Tree-like set
for b2 being AntiChain_of_Prefixes of b1 holds
   b2 c= {b3 where b3 is Element of b1: for b4 being FinSequence of NAT
         st b4 in b2
      holds not b4 c< b3};

:: TREES_A:th 5
theorem
for b1 being non empty Tree-like set
for b2 being AntiChain_of_Prefixes of b1 holds
   {b3 where b3 is Element of b1: for b4 being FinSequence of NAT
         st b4 in b2
      holds not b4 c< b3} \ {b3 where b3 is Element of b1: for b4 being FinSequence of NAT
         st b4 in b2
      holds not b4 c= b3} = b2;

:: TREES_A:th 6
theorem
for b1, b2 being non empty Tree-like set
for b3 being AntiChain_of_Prefixes of b1 holds
   b3 c= {b4 ^ b5 where b4 is Element of b1, b5 is Element of b2: b4 in b3};

:: TREES_A:th 7
theorem
for b1, b2 being non empty Tree-like set
for b3 being AntiChain_of_Prefixes of b1
      st b3 <> {}
   holds tree(b1,b3,b2) = {b4 where b4 is Element of b1: for b5 being FinSequence of NAT
         st b5 in b3
      holds not b5 c= b4} \/ {b4 ^ b5 where b4 is Element of b1, b5 is Element of b2: b4 in b3};

:: TREES_A:th 9
theorem
for b1, b2 being non empty Tree-like set
for b3 being AntiChain_of_Prefixes of b2
for b4 being FinSequence of NAT
      st b4 in b3
   holds b1 = (tree(b2,b3,b1)) | b4;

:: TREES_A:exreg 1
registration
  let a1 be non empty Tree-like set;
  cluster non empty AntiChain_of_Prefixes-like AntiChain_of_Prefixes of a1;
end;

:: TREES_A:funcnot 2 => TREES_A:func 2
definition
  let a1 be non empty Tree-like set;
  let a2 be Element of a1;
  redefine func {a2} -> AntiChain_of_Prefixes of a1;
end;

:: TREES_A:th 10
theorem
for b1, b2 being non empty Tree-like set
for b3 being Element of b1 holds
   tree(b1,{b3},b2) = b1 with-replacement(b3,b2);

:: TREES_A:funcnot 3 => TREES_A:func 3
definition
  let a1 be Relation-like Function-like DecoratedTree-like set;
  let a2 be AntiChain_of_Prefixes of proj1 a1;
  let a3 be Relation-like Function-like DecoratedTree-like set;
  assume a2 <> {};
  func tree(A1,A2,A3) -> Relation-like Function-like DecoratedTree-like set means
    proj1 it = tree(proj1 a1,a2,proj1 a3) &
     (for b1 being FinSequence of NAT
           st b1 in tree(proj1 a1,a2,proj1 a3) &
              (ex b2 being FinSequence of NAT st
                 b2 in a2 &
                  (not b2 c= b1 implies it . b1 <> a1 . b1))
        holds ex b2, b3 being FinSequence of NAT st
           b2 in a2 & b3 in proj1 a3 & b1 = b2 ^ b3 & it . b1 = a3 . b3);
end;

:: TREES_A:def 2
theorem
for b1 being Relation-like Function-like DecoratedTree-like set
for b2 being AntiChain_of_Prefixes of proj1 b1
for b3 being Relation-like Function-like DecoratedTree-like set
   st b2 <> {}
for b4 being Relation-like Function-like DecoratedTree-like set holds
      b4 = tree(b1,b2,b3)
   iff
      proj1 b4 = tree(proj1 b1,b2,proj1 b3) &
       (for b5 being FinSequence of NAT
             st b5 in tree(proj1 b1,b2,proj1 b3) &
                (ex b6 being FinSequence of NAT st
                   b6 in b2 &
                    (not b6 c= b5 implies b4 . b5 <> b1 . b5))
          holds ex b6, b7 being FinSequence of NAT st
             b6 in b2 & b7 in proj1 b3 & b5 = b6 ^ b7 & b4 . b5 = b3 . b7);

:: TREES_A:th 13
theorem
for b1, b2 being Relation-like Function-like DecoratedTree-like set
for b3 being AntiChain_of_Prefixes of proj1 b1
   st b3 <> {}
for b4 being FinSequence of NAT
      st b4 in proj1 tree(b1,b3,b2) &
         (ex b5 being FinSequence of NAT st
            b5 in b3 &
             (not b5 c= b4 implies (tree(b1,b3,b2)) . b4 <> b1 . b4))
   holds ex b5, b6 being FinSequence of NAT st
      b5 in b3 & b6 in proj1 b2 & b4 = b5 ^ b6 & (tree(b1,b3,b2)) . b4 = b2 . b6;

:: TREES_A:th 14
theorem
for b1 being FinSequence of NAT
for b2, b3 being Relation-like Function-like DecoratedTree-like set
   st b1 in proj1 b2
for b4 being FinSequence of NAT
      st b4 in proj1 (b2 with-replacement(b1,b3)) &
         (not b1 c= b4 implies (b2 with-replacement(b1,b3)) . b4 <> b2 . b4)
   holds ex b5 being FinSequence of NAT st
      b5 in proj1 b3 & b4 = b1 ^ b5 & (b2 with-replacement(b1,b3)) . b4 = b3 . b5;

:: TREES_A:th 15
theorem
for b1, b2 being Relation-like Function-like DecoratedTree-like set
for b3 being AntiChain_of_Prefixes of proj1 b1
   st b3 <> {}
for b4 being FinSequence of NAT
      st b4 in proj1 tree(b1,b3,b2) &
         b4 in {b5 where b5 is Element of proj1 b1: for b6 being FinSequence of NAT
               st b6 in b3
            holds not b6 c= b5}
   holds (tree(b1,b3,b2)) . b4 = b1 . b4;

:: TREES_A:th 16
theorem
for b1 being FinSequence of NAT
for b2, b3 being Relation-like Function-like DecoratedTree-like set
   st b1 in proj1 b2
for b4 being FinSequence of NAT
      st b4 in proj1 (b2 with-replacement(b1,b3)) & b4 in {b5 where b5 is Element of proj1 b2: not b1 c= b5}
   holds (b2 with-replacement(b1,b3)) . b4 = b2 . b4;

:: TREES_A:th 17
theorem
for b1, b2 being Relation-like Function-like DecoratedTree-like set
for b3 being AntiChain_of_Prefixes of proj1 b1
for b4 being FinSequence of NAT
      st b4 in proj1 tree(b1,b3,b2) &
         b4 in {b5 ^ b6 where b5 is Element of proj1 b1, b6 is Element of proj1 b2: b5 in b3}
   holds ex b5 being Element of proj1 b1 st
      ex b6 being Element of proj1 b2 st
         b4 = b5 ^ b6 & b5 in b3 & (tree(b1,b3,b2)) . b4 = b2 . b6;

:: TREES_A:th 18
theorem
for b1 being FinSequence of NAT
for b2, b3 being Relation-like Function-like DecoratedTree-like set
   st b1 in proj1 b2
for b4 being FinSequence of NAT
      st b4 in proj1 (b2 with-replacement(b1,b3)) &
         b4 in {b1 ^ b5 where b5 is Element of proj1 b3: b5 = b5}
   holds ex b5 being Element of proj1 b3 st
      b4 = b1 ^ b5 & (b2 with-replacement(b1,b3)) . b4 = b3 . b5;

:: TREES_A:th 19
theorem
for b1, b2 being Relation-like Function-like DecoratedTree-like set
for b3 being Element of proj1 b1 holds
   tree(b1,{b3},b2) = b1 with-replacement(b3,b2);

:: TREES_A:funcnot 4 => TREES_A:func 4
definition
  let a1 be non empty set;
  let a2 be Function-like DecoratedTree-like ParametrizedSubset of a1;
  let a3 be AntiChain_of_Prefixes of proj1 a2;
  let a4 be Function-like DecoratedTree-like ParametrizedSubset of a1;
  assume a3 <> {};
  func tree(A2,A3,A4) -> Function-like DecoratedTree-like ParametrizedSubset of a1 equals
    tree(a2,a3,a4);
end;

:: TREES_A:def 3
theorem
for b1 being non empty set
for b2 being Function-like DecoratedTree-like ParametrizedSubset of b1
for b3 being AntiChain_of_Prefixes of proj1 b2
for b4 being Function-like DecoratedTree-like ParametrizedSubset of b1
      st b3 <> {}
   holds tree(b2,b3,b4) = tree(b2,b3,b4);