trees_3.miz
    
    begin
    
    reserve x,y,z for
    object, 
    
X,Y for
    set, 
    
i,k,n for
    Nat, 
    
p,q,r,s for
    FinSequence, 
    
w for
    FinSequence of 
    NAT , 
    
f for
    Function;
    
    
    
    
    
    Lm1: 1 
    <= n & n 
    <= ( 
    len p) implies ((p 
    ^ q) 
    . n) 
    = (p 
    . n) 
    
    proof
    
      assume that
    
      
    
    A1: 1 
    <= n and 
    
      
    
    A2: n 
    <= ( 
    len p); 
    
      n
    in ( 
    dom p) by 
    A1,
    A2,
    FINSEQ_3: 25;
    
      hence thesis by
    FINSEQ_1:def 7;
    
    end;
    
    begin
    
    definition
    
      :: 
    
    TREES_3:def1
    
      func
    
    Trees -> 
    set means 
    
      :
    
    Def1: x 
    in it iff x is 
    Tree;
    
      existence
    
      proof
    
        set X = { T where T be
    Subset of ( 
    NAT  
    * ) : T is 
    Tree };
    
        take X;
    
        let x;
    
        thus x
    in X implies x is 
    Tree
    
        proof
    
          assume x
    in X; 
    
          then ex T be
    Subset of ( 
    NAT  
    * ) st x 
    = T & T is 
    Tree;
    
          hence thesis;
    
        end;
    
        assume x is
    Tree;
    
        then
    
        reconsider T = x as
    Tree;
    
        T is
    Subset of ( 
    NAT  
    * ) by 
    TREES_1:def 3;
    
        hence thesis;
    
      end;
    
      uniqueness
    
      proof
    
        defpred
    
    X[
    object] means $1 is
    Tree;
    
        let T1,T2 be
    set such that 
    
        
    
    A1: x 
    in T1 iff 
    X[x] and
    
        
    
    A2: x 
    in T2 iff 
    X[x];
    
        thus thesis from
    XBOOLE_0:sch 2(
    A1,
    A2);
    
      end;
    
    end
    
    registration
    
      cluster 
    Trees -> non 
    empty;
    
      coherence
    
      proof
    
        set T = the
    Tree;
    
        T
    in  
    Trees by 
    Def1;
    
        hence thesis;
    
      end;
    
    end
    
    definition
    
      :: 
    
    TREES_3:def2
    
      func
    
    FinTrees -> 
    Subset of 
    Trees means 
    
      :
    
    Def2: x 
    in it iff x is 
    finite  
    Tree;
    
      existence
    
      proof
    
        set X = { T where T be
    Element of 
    Trees : T is 
    finite  
    Tree };
    
        X
    c=  
    Trees  
    
        proof
    
          let x be
    object;
    
          assume x
    in X; 
    
          then ex T be
    Element of 
    Trees st x 
    = T & T is 
    finite  
    Tree;
    
          hence thesis;
    
        end;
    
        then
    
        reconsider X as
    Subset of 
    Trees ; 
    
        take X;
    
        let x;
    
        thus x
    in X implies x is 
    finite  
    Tree
    
        proof
    
          assume x
    in X; 
    
          then ex T be
    Element of 
    Trees st x 
    = T & T is 
    finite  
    Tree;
    
          hence thesis;
    
        end;
    
        assume x is
    finite  
    Tree;
    
        then
    
        reconsider T = x as
    finite  
    Tree;
    
        T
    in  
    Trees by 
    Def1;
    
        hence thesis;
    
      end;
    
      uniqueness
    
      proof
    
        defpred
    
    X[
    object] means $1 is
    finite  
    Tree;
    
        let T1,T2 be
    Subset of 
    Trees such that 
    
        
    
    A1: x 
    in T1 iff 
    X[x] and
    
        
    
    A2: x 
    in T2 iff 
    X[x];
    
        thus thesis from
    XBOOLE_0:sch 2(
    A1,
    A2);
    
      end;
    
    end
    
    registration
    
      cluster 
    FinTrees -> non 
    empty;
    
      coherence
    
      proof
    
        set T = the
    finite  
    Tree;
    
        T
    in  
    FinTrees by 
    Def2;
    
        hence thesis;
    
      end;
    
    end
    
    definition
    
      let IT be
    set;
    
      :: 
    
    TREES_3:def3
    
      attr IT is
    
    constituted-Trees means 
    
      :
    
    Def3: for x st x 
    in IT holds x is 
    Tree;
    
      :: 
    
    TREES_3:def4
    
      attr IT is
    
    constituted-FinTrees means 
    
      :
    
    Def4: for x st x 
    in IT holds x is 
    finite  
    Tree;
    
      :: 
    
    TREES_3:def5
    
      attr IT is
    
    constituted-DTrees means 
    
      :
    
    Def5: for x st x 
    in IT holds x is 
    DecoratedTree;
    
    end
    
    theorem :: 
    
    TREES_3:1
    
    X is
    constituted-Trees iff X 
    c=  
    Trees  
    
    proof
    
      thus X is
    constituted-Trees implies X 
    c=  
    Trees  
    
      proof
    
        assume
    
        
    
    A1: for x st x 
    in X holds x is 
    Tree;
    
        let x be
    object;
    
        assume x
    in X; 
    
        then x is
    Tree by 
    A1;
    
        hence thesis by
    Def1;
    
      end;
    
      assume
    
      
    
    A2: X 
    c=  
    Trees ; 
    
      let x;
    
      assume x
    in X; 
    
      hence thesis by
    A2,
    Def1;
    
    end;
    
    theorem :: 
    
    TREES_3:2
    
    X is
    constituted-FinTrees iff X 
    c=  
    FinTrees  
    
    proof
    
      thus X is
    constituted-FinTrees implies X 
    c=  
    FinTrees  
    
      proof
    
        assume
    
        
    
    A1: for x st x 
    in X holds x is 
    finite  
    Tree;
    
        let x be
    object;
    
        assume x
    in X; 
    
        then x is
    finite  
    Tree by 
    A1;
    
        hence thesis by
    Def2;
    
      end;
    
      assume
    
      
    
    A2: X 
    c=  
    FinTrees ; 
    
      let x;
    
      assume x
    in X; 
    
      hence thesis by
    A2,
    Def2;
    
    end;
    
    theorem :: 
    
    TREES_3:3
    
    
    
    
    
    Th3: X is 
    constituted-Trees & Y is 
    constituted-Trees iff (X 
    \/ Y) is 
    constituted-Trees
    
    proof
    
      thus X is
    constituted-Trees & Y is 
    constituted-Trees implies (X 
    \/ Y) is 
    constituted-Trees
    
      proof
    
        assume that
    
        
    
    A1: for x st x 
    in X holds x is 
    Tree and 
    
        
    
    A2: for x st x 
    in Y holds x is 
    Tree;
    
        let x;
    
        assume x
    in (X 
    \/ Y); 
    
        then x
    in X or x 
    in Y by 
    XBOOLE_0:def 3;
    
        hence thesis by
    A1,
    A2;
    
      end;
    
      assume
    
      
    
    A3: for x st x 
    in (X 
    \/ Y) holds x is 
    Tree;
    
      thus X is
    constituted-Trees
    
      proof
    
        let x;
    
        assume x
    in X; 
    
        then x
    in (X 
    \/ Y) by 
    XBOOLE_0:def 3;
    
        hence thesis by
    A3;
    
      end;
    
      let x;
    
      assume x
    in Y; 
    
      then x
    in (X 
    \/ Y) by 
    XBOOLE_0:def 3;
    
      hence thesis by
    A3;
    
    end;
    
    theorem :: 
    
    TREES_3:4
    
    X is
    constituted-Trees & Y is 
    constituted-Trees implies (X 
    \+\ Y) is 
    constituted-Trees
    
    proof
    
      assume that
    
      
    
    A1: for x st x 
    in X holds x is 
    Tree and 
    
      
    
    A2: for x st x 
    in Y holds x is 
    Tree;
    
      let x;
    
      assume x
    in (X 
    \+\ Y); 
    
      then not x
    in X iff x 
    in Y by 
    XBOOLE_0: 1;
    
      hence thesis by
    A1,
    A2;
    
    end;
    
    theorem :: 
    
    TREES_3:5
    
    X is
    constituted-Trees implies (X 
    /\ Y) is 
    constituted-Trees & (Y 
    /\ X) is 
    constituted-Trees & (X 
    \ Y) is 
    constituted-Trees
    
    proof
    
      assume
    
      
    
    A1: for x st x 
    in X holds x is 
    Tree;
    
      thus (X
    /\ Y) is 
    constituted-Trees
    
      proof
    
        let x;
    
        assume x
    in (X 
    /\ Y); 
    
        then x
    in X by 
    XBOOLE_0:def 4;
    
        hence thesis by
    A1;
    
      end;
    
      hence (Y
    /\ X) is 
    constituted-Trees;
    
      let x;
    
      assume x
    in (X 
    \ Y); 
    
      hence thesis by
    A1;
    
    end;
    
    theorem :: 
    
    TREES_3:6
    
    
    
    
    
    Th6: X is 
    constituted-FinTrees & Y is 
    constituted-FinTrees iff (X 
    \/ Y) is 
    constituted-FinTrees
    
    proof
    
      thus X is
    constituted-FinTrees & Y is 
    constituted-FinTrees implies (X 
    \/ Y) is 
    constituted-FinTrees
    
      proof
    
        assume that
    
        
    
    A1: for x st x 
    in X holds x is 
    finite  
    Tree and 
    
        
    
    A2: for x st x 
    in Y holds x is 
    finite  
    Tree;
    
        let x;
    
        assume x
    in (X 
    \/ Y); 
    
        then x
    in X or x 
    in Y by 
    XBOOLE_0:def 3;
    
        hence thesis by
    A1,
    A2;
    
      end;
    
      assume
    
      
    
    A3: for x st x 
    in (X 
    \/ Y) holds x is 
    finite  
    Tree;
    
      thus X is
    constituted-FinTrees
    
      proof
    
        let x;
    
        assume x
    in X; 
    
        then x
    in (X 
    \/ Y) by 
    XBOOLE_0:def 3;
    
        hence thesis by
    A3;
    
      end;
    
      let x;
    
      assume x
    in Y; 
    
      then x
    in (X 
    \/ Y) by 
    XBOOLE_0:def 3;
    
      hence thesis by
    A3;
    
    end;
    
    theorem :: 
    
    TREES_3:7
    
    X is
    constituted-FinTrees & Y is 
    constituted-FinTrees implies (X 
    \+\ Y) is 
    constituted-FinTrees
    
    proof
    
      assume that
    
      
    
    A1: for x st x 
    in X holds x is 
    finite  
    Tree and 
    
      
    
    A2: for x st x 
    in Y holds x is 
    finite  
    Tree;
    
      let x;
    
      assume x
    in (X 
    \+\ Y); 
    
      then not x
    in X iff x 
    in Y by 
    XBOOLE_0: 1;
    
      hence thesis by
    A1,
    A2;
    
    end;
    
    theorem :: 
    
    TREES_3:8
    
    X is
    constituted-FinTrees implies (X 
    /\ Y) is 
    constituted-FinTrees & (Y 
    /\ X) is 
    constituted-FinTrees & (X 
    \ Y) is 
    constituted-FinTrees
    
    proof
    
      assume
    
      
    
    A1: for x st x 
    in X holds x is 
    finite  
    Tree;
    
      thus (X
    /\ Y) is 
    constituted-FinTrees
    
      proof
    
        let x;
    
        assume x
    in (X 
    /\ Y); 
    
        then x
    in X by 
    XBOOLE_0:def 4;
    
        hence thesis by
    A1;
    
      end;
    
      hence (Y
    /\ X) is 
    constituted-FinTrees;
    
      let x;
    
      assume x
    in (X 
    \ Y); 
    
      hence thesis by
    A1;
    
    end;
    
    theorem :: 
    
    TREES_3:9
    
    
    
    
    
    Th9: X is 
    constituted-DTrees & Y is 
    constituted-DTrees iff (X 
    \/ Y) is 
    constituted-DTrees
    
    proof
    
      thus X is
    constituted-DTrees & Y is 
    constituted-DTrees implies (X 
    \/ Y) is 
    constituted-DTrees
    
      proof
    
        assume that
    
        
    
    A1: for x st x 
    in X holds x is 
    DecoratedTree and 
    
        
    
    A2: for x st x 
    in Y holds x is 
    DecoratedTree;
    
        let x;
    
        assume x
    in (X 
    \/ Y); 
    
        then x
    in X or x 
    in Y by 
    XBOOLE_0:def 3;
    
        hence thesis by
    A1,
    A2;
    
      end;
    
      assume
    
      
    
    A3: for x st x 
    in (X 
    \/ Y) holds x is 
    DecoratedTree;
    
      thus X is
    constituted-DTrees
    
      proof
    
        let x;
    
        assume x
    in X; 
    
        then x
    in (X 
    \/ Y) by 
    XBOOLE_0:def 3;
    
        hence thesis by
    A3;
    
      end;
    
      let x;
    
      assume x
    in Y; 
    
      then x
    in (X 
    \/ Y) by 
    XBOOLE_0:def 3;
    
      hence thesis by
    A3;
    
    end;
    
    theorem :: 
    
    TREES_3:10
    
    X is
    constituted-DTrees & Y is 
    constituted-DTrees implies (X 
    \+\ Y) is 
    constituted-DTrees
    
    proof
    
      assume that
    
      
    
    A1: for x st x 
    in X holds x is 
    DecoratedTree and 
    
      
    
    A2: for x st x 
    in Y holds x is 
    DecoratedTree;
    
      let x;
    
      assume x
    in (X 
    \+\ Y); 
    
      then not x
    in X iff x 
    in Y by 
    XBOOLE_0: 1;
    
      hence thesis by
    A1,
    A2;
    
    end;
    
    theorem :: 
    
    TREES_3:11
    
    X is
    constituted-DTrees implies (X 
    /\ Y) is 
    constituted-DTrees & (Y 
    /\ X) is 
    constituted-DTrees & (X 
    \ Y) is 
    constituted-DTrees
    
    proof
    
      assume
    
      
    
    A1: for x st x 
    in X holds x is 
    DecoratedTree;
    
      thus (X
    /\ Y) is 
    constituted-DTrees
    
      proof
    
        let x;
    
        assume x
    in (X 
    /\ Y); 
    
        then x
    in X by 
    XBOOLE_0:def 4;
    
        hence thesis by
    A1;
    
      end;
    
      hence (Y
    /\ X) is 
    constituted-DTrees;
    
      let x;
    
      assume x
    in (X 
    \ Y); 
    
      hence thesis by
    A1;
    
    end;
    
    registration
    
      cluster 
    empty -> 
    constituted-Trees
    constituted-FinTrees
    constituted-DTrees for 
    set;
    
      coherence ;
    
    end
    
    theorem :: 
    
    TREES_3:12
    
    
    
    
    
    Th12: 
    {x} is
    constituted-Trees iff x is 
    Tree
    
    proof
    
      thus
    {x} is
    constituted-Trees implies x is 
    Tree
    
      proof
    
        assume
    
        
    
    A1: for y st y 
    in  
    {x} holds y is
    Tree;
    
        x
    in  
    {x} by
    TARSKI:def 1;
    
        hence thesis by
    A1;
    
      end;
    
      assume
    
      
    
    A2: x is 
    Tree;
    
      let y;
    
      thus thesis by
    A2,
    TARSKI:def 1;
    
    end;
    
    theorem :: 
    
    TREES_3:13
    
    
    
    
    
    Th13: for x be 
    object holds 
    {x} is
    constituted-FinTrees iff x is 
    finite  
    Tree
    
    proof
    
      let x be
    object;
    
      thus
    {x} is
    constituted-FinTrees implies x is 
    finite  
    Tree
    
      proof
    
        assume
    
        
    
    A1: for y st y 
    in  
    {x} holds y is
    finite  
    Tree;
    
        x
    in  
    {x} by
    TARSKI:def 1;
    
        hence thesis by
    A1;
    
      end;
    
      assume
    
      
    
    A2: x is 
    finite  
    Tree;
    
      let y;
    
      thus thesis by
    A2,
    TARSKI:def 1;
    
    end;
    
    theorem :: 
    
    TREES_3:14
    
    
    
    
    
    Th14: 
    {x} is
    constituted-DTrees iff x is 
    DecoratedTree
    
    proof
    
      thus
    {x} is
    constituted-DTrees implies x is 
    DecoratedTree
    
      proof
    
        assume
    
        
    
    A1: for y st y 
    in  
    {x} holds y is
    DecoratedTree;
    
        x
    in  
    {x} by
    TARSKI:def 1;
    
        hence thesis by
    A1;
    
      end;
    
      assume
    
      
    
    A2: x is 
    DecoratedTree;
    
      let y;
    
      thus thesis by
    A2,
    TARSKI:def 1;
    
    end;
    
    theorem :: 
    
    TREES_3:15
    
    
    
    
    
    Th15: 
    {x, y} is
    constituted-Trees iff x is 
    Tree & y is 
    Tree
    
    proof
    
      thus
    {x, y} is
    constituted-Trees implies x is 
    Tree & y is 
    Tree
    
      proof
    
        assume
    
        
    
    A1: for z st z 
    in  
    {x, y} holds z is
    Tree;
    
        
    
        
    
    A2: x 
    in  
    {x, y} by
    TARSKI:def 2;
    
        y
    in  
    {x, y} by
    TARSKI:def 2;
    
        hence thesis by
    A1,
    A2;
    
      end;
    
      assume that
    
      
    
    A3: x is 
    Tree and 
    
      
    
    A4: y is 
    Tree;
    
      let z;
    
      thus thesis by
    A3,
    A4,
    TARSKI:def 2;
    
    end;
    
    theorem :: 
    
    TREES_3:16
    
    
    
    
    
    Th16: 
    {x, y} is
    constituted-FinTrees iff x is 
    finite  
    Tree & y is 
    finite  
    Tree
    
    proof
    
      thus
    {x, y} is
    constituted-FinTrees implies x is 
    finite  
    Tree & y is 
    finite  
    Tree
    
      proof
    
        assume
    
        
    
    A1: for z st z 
    in  
    {x, y} holds z is
    finite  
    Tree;
    
        
    
        
    
    A2: x 
    in  
    {x, y} by
    TARSKI:def 2;
    
        y
    in  
    {x, y} by
    TARSKI:def 2;
    
        hence thesis by
    A1,
    A2;
    
      end;
    
      assume that
    
      
    
    A3: x is 
    finite  
    Tree and 
    
      
    
    A4: y is 
    finite  
    Tree;
    
      let z;
    
      thus thesis by
    A3,
    A4,
    TARSKI:def 2;
    
    end;
    
    theorem :: 
    
    TREES_3:17
    
    
    
    
    
    Th17: 
    {x, y} is
    constituted-DTrees iff x is 
    DecoratedTree & y is 
    DecoratedTree
    
    proof
    
      thus
    {x, y} is
    constituted-DTrees implies x is 
    DecoratedTree & y is 
    DecoratedTree
    
      proof
    
        assume
    
        
    
    A1: for z st z 
    in  
    {x, y} holds z is
    DecoratedTree;
    
        
    
        
    
    A2: x 
    in  
    {x, y} by
    TARSKI:def 2;
    
        y
    in  
    {x, y} by
    TARSKI:def 2;
    
        hence thesis by
    A1,
    A2;
    
      end;
    
      assume that
    
      
    
    A3: x is 
    DecoratedTree and 
    
      
    
    A4: y is 
    DecoratedTree;
    
      let z;
    
      thus thesis by
    A3,
    A4,
    TARSKI:def 2;
    
    end;
    
    theorem :: 
    
    TREES_3:18
    
    X is
    constituted-Trees & Y 
    c= X implies Y is 
    constituted-Trees;
    
    theorem :: 
    
    TREES_3:19
    
    X is
    constituted-FinTrees & Y 
    c= X implies Y is 
    constituted-FinTrees;
    
    theorem :: 
    
    TREES_3:20
    
    X is
    constituted-DTrees & Y 
    c= X implies Y is 
    constituted-DTrees;
    
    registration
    
      cluster 
    finite
    constituted-Trees
    constituted-FinTrees non 
    empty for 
    set;
    
      existence
    
      proof
    
        set T = the
    finite  
    Tree;
    
        take
    {T};
    
        thus thesis by
    Th12,
    Th13;
    
      end;
    
      cluster 
    finite
    constituted-DTrees non 
    empty for 
    set;
    
      existence
    
      proof
    
        set T = the
    DecoratedTree;
    
        take
    {T};
    
        thus thesis by
    Th14;
    
      end;
    
    end
    
    registration
    
      cluster 
    constituted-FinTrees -> 
    constituted-Trees for 
    set;
    
      coherence ;
    
    end
    
    registration
    
      let X be
    constituted-Trees  
    set;
    
      cluster -> 
    constituted-Trees for 
    Subset of X; 
    
      coherence by
    Def3;
    
    end
    
    registration
    
      let X be
    constituted-FinTrees  
    set;
    
      cluster -> 
    constituted-FinTrees for 
    Subset of X; 
    
      coherence by
    Def4;
    
    end
    
    registration
    
      let X be
    constituted-DTrees  
    set;
    
      cluster -> 
    constituted-DTrees for 
    Subset of X; 
    
      coherence by
    Def5;
    
    end
    
    registration
    
      let D be
    constituted-Trees non 
    empty  
    set;
    
      cluster -> non 
    empty
    Tree-like for 
    Element of D; 
    
      coherence by
    Def3;
    
    end
    
    registration
    
      let D be
    constituted-FinTrees non 
    empty  
    set;
    
      cluster -> 
    finite for 
    Element of D; 
    
      coherence by
    Def4;
    
    end
    
    registration
    
      cluster 
    constituted-DTrees -> 
    functional for 
    set;
    
      coherence ;
    
    end
    
    registration
    
      let D be
    constituted-DTrees non 
    empty  
    set;
    
      cluster -> 
    DecoratedTree-like for 
    Element of D; 
    
      coherence by
    Def5;
    
    end
    
    registration
    
      cluster 
    Trees -> 
    constituted-Trees;
    
      coherence by
    Def1;
    
    end
    
    registration
    
      cluster 
    FinTrees -> 
    constituted-FinTrees;
    
      coherence by
    Def2;
    
    end
    
    registration
    
      cluster 
    constituted-FinTrees non 
    empty for 
    Subset of 
    Trees ; 
    
      existence
    
      proof
    
        take
    FinTrees ; 
    
        thus thesis;
    
      end;
    
    end
    
    definition
    
      let D be non
    empty  
    set;
    
      :: 
    
    TREES_3:def6
    
      mode
    
    DTree-set of D -> non 
    empty  
    set means 
    
      :
    
    Def6: for x st x 
    in it holds x is 
    DecoratedTree of D; 
    
      existence
    
      proof
    
        take
    {((
    elementary_tree  
    0 ) 
    --> the 
    Element of D)}; 
    
        thus thesis by
    TARSKI:def 1;
    
      end;
    
    end
    
    registration
    
      let D be non
    empty  
    set;
    
      cluster -> 
    constituted-DTrees for 
    DTree-set of D; 
    
      coherence by
    Def6;
    
    end
    
    registration
    
      let D be non
    empty  
    set;
    
      cluster 
    finite non 
    empty for 
    DTree-set of D; 
    
      existence
    
      proof
    
        set X =
    { the 
    DecoratedTree of D}; 
    
        X is
    constituted-DTrees by 
    TARSKI:def 1;
    
        then
    
        reconsider X as non
    empty
    constituted-DTrees  
    set;
    
        X is
    DTree-set of D 
    
        proof
    
          let x;
    
          thus thesis by
    TARSKI:def 1;
    
        end;
    
        then
    
        reconsider X as
    DTree-set of D; 
    
        take X;
    
        thus thesis;
    
      end;
    
    end
    
    registration
    
      let D be non
    empty  
    set, E be non 
    empty  
    DTree-set of D; 
    
      cluster -> D 
    -valued for 
    Element of E; 
    
      coherence by
    Def6;
    
    end
    
    definition
    
      let T be
    Tree, D be non 
    empty  
    set;
    
      :: original:
    Funcs
    
      redefine
    
      func
    
    Funcs (T,D) -> non 
    empty  
    DTree-set of D ; 
    
      coherence
    
      proof
    
        set F = (
    Funcs (T,D)); 
    
        F is
    constituted-DTrees
    
        proof
    
          let x;
    
          assume x
    in F; 
    
          then ex f be
    Function st (x 
    = f) & (( 
    dom f) 
    = T) & (( 
    rng f) 
    c= D) by 
    FUNCT_2:def 2;
    
          hence thesis by
    TREES_2:def 8;
    
        end;
    
        then
    
        reconsider F as non
    empty
    constituted-DTrees  
    set;
    
        F is
    DTree-set of D 
    
        proof
    
          let x;
    
          assume x
    in F; 
    
          then ex f be
    Function st (x 
    = f) & (( 
    dom f) 
    = T) & (( 
    rng f) 
    c= D) by 
    FUNCT_2:def 2;
    
          hence thesis by
    RELAT_1:def 19,
    TREES_2:def 8;
    
        end;
    
        then
    
        reconsider F as
    DTree-set of D; 
    
        set d = the
    Function of T, D; 
    
        
    
        
    
    A1: ( 
    dom d) 
    = T by 
    FUNCT_2:def 1;
    
        (
    rng d) 
    c= D; 
    
        then d
    in F by 
    A1,
    FUNCT_2:def 2;
    
        hence thesis;
    
      end;
    
    end
    
    registration
    
      let T be
    Tree, D be non 
    empty  
    set;
    
      cluster -> 
    DecoratedTree-like for 
    Function of T, D; 
    
      coherence by
    FUNCT_2:def 1;
    
    end
    
    definition
    
      let D be non
    empty  
    set;
    
      :: 
    
    TREES_3:def7
    
      func
    
    Trees (D) -> 
    DTree-set of D means 
    
      :
    
    Def7: for T be 
    DecoratedTree of D holds T 
    in it ; 
    
      existence
    
      proof
    
        set A = the set of all (
    Funcs (T,D)) where T be 
    Element of 
    Trees ; 
    
        set TT = (
    union A); 
    
        set f = ( the
    Element of 
    Trees  
    --> the 
    Element of D); 
    
        
    
        
    
    A1: f 
    in ( 
    Funcs ( the 
    Element of 
    Trees ,D)) by 
    FUNCT_2: 8;
    
        
    
        
    
    A2: ( 
    Funcs ( the 
    Element of 
    Trees ,D)) 
    in A; 
    
        TT is
    constituted-DTrees
    
        proof
    
          let x;
    
          assume x
    in TT; 
    
          then
    
          consider X such that
    
          
    
    A3: x 
    in X and 
    
          
    
    A4: X 
    in the set of all ( 
    Funcs (T,D)) where T be 
    Element of 
    Trees by 
    TARSKI:def 4;
    
          ex T be
    Element of 
    Trees st (X 
    = ( 
    Funcs (T,D))) by 
    A4;
    
          hence thesis by
    A3;
    
        end;
    
        then
    
        reconsider TT as non
    empty
    constituted-DTrees  
    set by 
    A2,
    A1,
    TARSKI:def 4;
    
        TT is
    DTree-set of D 
    
        proof
    
          let x;
    
          assume x
    in TT; 
    
          then
    
          consider X such that
    
          
    
    A5: x 
    in X and 
    
          
    
    A6: X 
    in the set of all ( 
    Funcs (T,D)) where T be 
    Element of 
    Trees by 
    TARSKI:def 4;
    
          ex T be
    Element of 
    Trees st (X 
    = ( 
    Funcs (T,D))) by 
    A6;
    
          hence thesis by
    A5;
    
        end;
    
        then
    
        reconsider TT as
    DTree-set of D; 
    
        take TT;
    
        let T be
    DecoratedTree of D; 
    
        reconsider t = (
    dom T) as 
    Element of 
    Trees by 
    Def1;
    
        (
    rng T) 
    c= D; 
    
        then
    
        
    
    A7: T 
    in ( 
    Funcs (t,D)) by 
    FUNCT_2:def 2;
    
        (
    Funcs (t,D)) 
    in the set of all ( 
    Funcs (W,D)) where W be 
    Element of 
    Trees ; 
    
        hence thesis by
    A7,
    TARSKI:def 4;
    
      end;
    
      uniqueness
    
      proof
    
        let T1,T2 be
    DTree-set of D such that 
    
        
    
    A8: for T be 
    DecoratedTree of D holds T 
    in T1 and 
    
        
    
    A9: for T be 
    DecoratedTree of D holds T 
    in T2; 
    
        thus T1
    c= T2 by 
    A9;
    
        let x be
    object;
    
        thus thesis by
    A8;
    
      end;
    
    end
    
    registration
    
      let D be non
    empty  
    set;
    
      cluster ( 
    Trees D) -> non 
    empty;
    
      coherence ;
    
    end
    
    definition
    
      let D be non
    empty  
    set;
    
      :: 
    
    TREES_3:def8
    
      func
    
    FinTrees (D) -> 
    DTree-set of D means 
    
      :
    
    Def8: for T be 
    DecoratedTree of D holds ( 
    dom T) is 
    finite iff T 
    in it ; 
    
      existence
    
      proof
    
        defpred
    
    X[
    object] means ex T be
    DecoratedTree of D st $1 
    = T & ( 
    dom T) is 
    finite;
    
        consider X such that
    
        
    
    A1: x 
    in X iff x 
    in ( 
    Trees D) & 
    X[x] from
    XBOOLE_0:sch 1;
    
        set T = the
    finite  
    DecoratedTree of D; 
    
        
    
        
    
    A2: ( 
    dom T) is 
    finite;
    
        T
    in ( 
    Trees D) by 
    Def7;
    
        then
    
        
    
    A3: X is non 
    empty by 
    A1,
    A2;
    
        now
    
          let x;
    
          assume x
    in X; 
    
          then x
    in ( 
    Trees D) by 
    A1;
    
          hence x is
    DecoratedTree of D; 
    
        end;
    
        then
    
        reconsider X as
    DTree-set of D by 
    A3,
    Def6;
    
        take X;
    
        let T be
    DecoratedTree of D; 
    
        T
    in ( 
    Trees D) by 
    Def7;
    
        hence (
    dom T) is 
    finite implies T 
    in X by 
    A1;
    
        assume T
    in X; 
    
        then ex t be
    DecoratedTree of D st T 
    = t & ( 
    dom t) is 
    finite by 
    A1;
    
        hence thesis;
    
      end;
    
      uniqueness
    
      proof
    
        let T1,T2 be
    DTree-set of D such that 
    
        
    
    A4: for T be 
    DecoratedTree of D holds ( 
    dom T) is 
    finite iff T 
    in T1 and 
    
        
    
    A5: for T be 
    DecoratedTree of D holds ( 
    dom T) is 
    finite iff T 
    in T2; 
    
        thus T1
    c= T2 
    
        proof
    
          let x be
    object;
    
          assume
    
          
    
    A6: x 
    in T1; 
    
          then
    
          reconsider T = x as
    DecoratedTree of D; 
    
          (
    dom T) is 
    finite by 
    A4,
    A6;
    
          hence thesis by
    A5;
    
        end;
    
        let x be
    object;
    
        assume
    
        
    
    A7: x 
    in T2; 
    
        then
    
        reconsider T = x as
    DecoratedTree of D; 
    
        (
    dom T) is 
    finite by 
    A5,
    A7;
    
        hence thesis by
    A4;
    
      end;
    
    end
    
    theorem :: 
    
    TREES_3:21
    
    for D be non
    empty  
    set holds ( 
    FinTrees D) 
    c= ( 
    Trees D) by 
    Def7;
    
    begin
    
    definition
    
      let IT be
    Function;
    
      :: 
    
    TREES_3:def9
    
      attr IT is
    
    Tree-yielding means 
    
      :
    
    Def9: ( 
    rng IT) is 
    constituted-Trees;
    
      :: 
    
    TREES_3:def10
    
      attr IT is
    
    FinTree-yielding means 
    
      :
    
    Def10: ( 
    rng IT) is 
    constituted-FinTrees;
    
      :: 
    
    TREES_3:def11
    
      attr IT is
    
    DTree-yielding means ( 
    rng IT) is 
    constituted-DTrees;
    
    end
    
    registration
    
      cluster 
    empty -> 
    Tree-yielding
    FinTree-yielding
    DTree-yielding for 
    Function;
    
      coherence ;
    
    end
    
    theorem :: 
    
    TREES_3:22
    
    
    
    
    
    Th22: f is 
    Tree-yielding iff for x st x 
    in ( 
    dom f) holds (f 
    . x) is 
    Tree
    
    proof
    
      thus f is
    Tree-yielding implies for x st x 
    in ( 
    dom f) holds (f 
    . x) is 
    Tree
    
      proof
    
        assume
    
        
    
    A1: for x st x 
    in ( 
    rng f) holds x is 
    Tree;
    
        let x;
    
        assume x
    in ( 
    dom f); 
    
        then (f
    . x) 
    in ( 
    rng f) by 
    FUNCT_1:def 3;
    
        hence thesis by
    A1;
    
      end;
    
      assume
    
      
    
    A2: for x st x 
    in ( 
    dom f) holds (f 
    . x) is 
    Tree;
    
      let x;
    
      assume x
    in ( 
    rng f); 
    
      then ex y be
    object st y 
    in ( 
    dom f) & x 
    = (f 
    . y) by 
    FUNCT_1:def 3;
    
      hence thesis by
    A2;
    
    end;
    
    theorem :: 
    
    TREES_3:23
    
    f is
    FinTree-yielding iff for x st x 
    in ( 
    dom f) holds (f 
    . x) is 
    finite  
    Tree
    
    proof
    
      thus f is
    FinTree-yielding implies for x st x 
    in ( 
    dom f) holds (f 
    . x) is 
    finite  
    Tree
    
      proof
    
        assume
    
        
    
    A1: for x st x 
    in ( 
    rng f) holds x is 
    finite  
    Tree;
    
        let x;
    
        assume x
    in ( 
    dom f); 
    
        then (f
    . x) 
    in ( 
    rng f) by 
    FUNCT_1:def 3;
    
        hence thesis by
    A1;
    
      end;
    
      assume
    
      
    
    A2: for x st x 
    in ( 
    dom f) holds (f 
    . x) is 
    finite  
    Tree;
    
      let x;
    
      assume x
    in ( 
    rng f); 
    
      then ex y be
    object st y 
    in ( 
    dom f) & x 
    = (f 
    . y) by 
    FUNCT_1:def 3;
    
      hence thesis by
    A2;
    
    end;
    
    theorem :: 
    
    TREES_3:24
    
    
    
    
    
    Th24: f is 
    DTree-yielding iff for x st x 
    in ( 
    dom f) holds (f 
    . x) is 
    DecoratedTree
    
    proof
    
      thus f is
    DTree-yielding implies for x st x 
    in ( 
    dom f) holds (f 
    . x) is 
    DecoratedTree
    
      proof
    
        assume
    
        
    
    A1: for x st x 
    in ( 
    rng f) holds x is 
    DecoratedTree;
    
        let x;
    
        assume x
    in ( 
    dom f); 
    
        then (f
    . x) 
    in ( 
    rng f) by 
    FUNCT_1:def 3;
    
        hence thesis by
    A1;
    
      end;
    
      assume
    
      
    
    A2: for x st x 
    in ( 
    dom f) holds (f 
    . x) is 
    DecoratedTree;
    
      let x;
    
      assume x
    in ( 
    rng f); 
    
      then ex y be
    object st y 
    in ( 
    dom f) & x 
    = (f 
    . y) by 
    FUNCT_1:def 3;
    
      hence thesis by
    A2;
    
    end;
    
    theorem :: 
    
    TREES_3:25
    
    
    
    
    
    Th25: p is 
    Tree-yielding & q is 
    Tree-yielding iff (p 
    ^ q) is 
    Tree-yielding
    
    proof
    
      
    
      
    
    A1: ( 
    rng (p 
    ^ q)) 
    = (( 
    rng p) 
    \/ ( 
    rng q)) by 
    FINSEQ_1: 31;
    
      thus p is
    Tree-yielding & q is 
    Tree-yielding implies (p 
    ^ q) is 
    Tree-yielding by 
    A1,
    Th3;
    
      assume
    
      
    
    A2: ( 
    rng (p 
    ^ q)) is 
    constituted-Trees;
    
      hence (
    rng p) is 
    constituted-Trees by 
    A1,
    Th3;
    
      thus (
    rng q) is 
    constituted-Trees by 
    A1,
    A2,
    Th3;
    
    end;
    
    theorem :: 
    
    TREES_3:26
    
    
    
    
    
    Th26: p is 
    FinTree-yielding & q is 
    FinTree-yielding iff (p 
    ^ q) is 
    FinTree-yielding
    
    proof
    
      
    
      
    
    A1: ( 
    rng (p 
    ^ q)) 
    = (( 
    rng p) 
    \/ ( 
    rng q)) by 
    FINSEQ_1: 31;
    
      thus p is
    FinTree-yielding & q is 
    FinTree-yielding implies (p 
    ^ q) is 
    FinTree-yielding by 
    A1,
    Th6;
    
      assume
    
      
    
    A2: ( 
    rng (p 
    ^ q)) is 
    constituted-FinTrees;
    
      hence (
    rng p) is 
    constituted-FinTrees by 
    A1,
    Th6;
    
      thus (
    rng q) is 
    constituted-FinTrees by 
    A1,
    A2,
    Th6;
    
    end;
    
    theorem :: 
    
    TREES_3:27
    
    
    
    
    
    Th27: p is 
    DTree-yielding & q is 
    DTree-yielding iff (p 
    ^ q) is 
    DTree-yielding
    
    proof
    
      
    
      
    
    A1: ( 
    rng (p 
    ^ q)) 
    = (( 
    rng p) 
    \/ ( 
    rng q)) by 
    FINSEQ_1: 31;
    
      thus p is
    DTree-yielding & q is 
    DTree-yielding implies (p 
    ^ q) is 
    DTree-yielding by 
    A1,
    Th9;
    
      assume
    
      
    
    A2: ( 
    rng (p 
    ^ q)) is 
    constituted-DTrees;
    
      hence (
    rng p) is 
    constituted-DTrees by 
    A1,
    Th9;
    
      thus (
    rng q) is 
    constituted-DTrees by 
    A1,
    A2,
    Th9;
    
    end;
    
    theorem :: 
    
    TREES_3:28
    
    
    
    
    
    Th28: 
    <*x*> is
    Tree-yielding iff x is 
    Tree
    
    proof
    
      
    
      
    
    A1: x is 
    Tree iff 
    {x} is
    constituted-Trees by 
    Th12;
    
      (
    rng  
    <*x*>)
    =  
    {x} by
    FINSEQ_1: 39;
    
      hence thesis by
    A1;
    
    end;
    
    theorem :: 
    
    TREES_3:29
    
    
    
    
    
    Th29: for x be 
    object holds 
    <*x*> is
    FinTree-yielding iff x is 
    finite  
    Tree
    
    proof
    
      let x be
    object;
    
      
    
      
    
    A1: x is 
    finite  
    Tree iff 
    {x} is
    constituted-FinTrees by 
    Th13;
    
      (
    rng  
    <*x*>)
    =  
    {x} by
    FINSEQ_1: 39;
    
      hence thesis by
    A1;
    
    end;
    
    theorem :: 
    
    TREES_3:30
    
    
    
    
    
    Th30: 
    <*x*> is
    DTree-yielding iff x is 
    DecoratedTree
    
    proof
    
      
    
      
    
    A1: x is 
    DecoratedTree iff 
    {x} is
    constituted-DTrees by 
    Th14;
    
      (
    rng  
    <*x*>)
    =  
    {x} by
    FINSEQ_1: 39;
    
      hence thesis by
    A1;
    
    end;
    
    theorem :: 
    
    TREES_3:31
    
    
    
    
    
    Th31: 
    <*x, y*> is
    Tree-yielding iff x is 
    Tree & y is 
    Tree
    
    proof
    
      
    
      
    
    A1: x is 
    Tree & y is 
    Tree iff 
    {x, y} is
    constituted-Trees by 
    Th15;
    
      (
    rng  
    <*x, y*>)
    =  
    {x, y} by
    FINSEQ_2: 127;
    
      hence thesis by
    A1;
    
    end;
    
    theorem :: 
    
    TREES_3:32
    
    
    
    
    
    Th32: 
    <*x, y*> is
    FinTree-yielding iff x is 
    finite  
    Tree & y is 
    finite  
    Tree
    
    proof
    
      
    
      
    
    A1: x is 
    finite  
    Tree & y is 
    finite  
    Tree iff 
    {x, y} is
    constituted-FinTrees by 
    Th16;
    
      (
    rng  
    <*x, y*>)
    =  
    {x, y} by
    FINSEQ_2: 127;
    
      hence thesis by
    A1;
    
    end;
    
    theorem :: 
    
    TREES_3:33
    
    
    
    
    
    Th33: 
    <*x, y*> is
    DTree-yielding iff x is 
    DecoratedTree & y is 
    DecoratedTree
    
    proof
    
      
    
      
    
    A1: x is 
    DecoratedTree & y is 
    DecoratedTree iff 
    {x, y} is
    constituted-DTrees by 
    Th17;
    
      (
    rng  
    <*x, y*>)
    =  
    {x, y} by
    FINSEQ_2: 127;
    
      hence thesis by
    A1;
    
    end;
    
    theorem :: 
    
    TREES_3:34
    
    
    
    
    
    Th34: i 
    <>  
    0 implies ((i 
    |-> x) is 
    Tree-yielding iff x is 
    Tree)
    
    proof
    
      assume
    
      
    
    A1: i 
    <>  
    0 ; 
    
      (i
    |-> x) 
    = (( 
    Seg i) 
    --> x) by 
    FINSEQ_2:def 2;
    
      then (
    rng (i 
    |-> x)) 
    =  
    {x} by
    A1,
    FUNCOP_1: 8;
    
      then x is
    Tree iff ( 
    rng (i 
    |-> x)) is 
    constituted-Trees by 
    Th12;
    
      hence thesis;
    
    end;
    
    theorem :: 
    
    TREES_3:35
    
    
    
    
    
    Th35: i 
    <>  
    0 implies ((i 
    |-> x) is 
    FinTree-yielding iff x is 
    finite  
    Tree)
    
    proof
    
      assume
    
      
    
    A1: i 
    <>  
    0 ; 
    
      (i
    |-> x) 
    = (( 
    Seg i) 
    --> x) by 
    FINSEQ_2:def 2;
    
      then (
    rng (i 
    |-> x)) 
    =  
    {x} by
    A1,
    FUNCOP_1: 8;
    
      then x is
    finite  
    Tree iff ( 
    rng (i 
    |-> x)) is 
    constituted-FinTrees by 
    Th13;
    
      hence thesis;
    
    end;
    
    theorem :: 
    
    TREES_3:36
    
    
    
    
    
    Th36: i 
    <>  
    0 implies ((i 
    |-> x) is 
    DTree-yielding iff x is 
    DecoratedTree)
    
    proof
    
      assume
    
      
    
    A1: i 
    <>  
    0 ; 
    
      (i
    |-> x) 
    = (( 
    Seg i) 
    --> x) by 
    FINSEQ_2:def 2;
    
      then (
    rng (i 
    |-> x)) 
    =  
    {x} by
    A1,
    FUNCOP_1: 8;
    
      then x is
    DecoratedTree iff ( 
    rng (i 
    |-> x)) is 
    constituted-DTrees by 
    Th14;
    
      hence thesis;
    
    end;
    
    registration
    
      cluster 
    Tree-yielding
    FinTree-yielding non 
    empty for 
    FinSequence;
    
      existence
    
      proof
    
        set T = the
    finite  
    Tree;
    
        take
    <*T*>;
    
        thus thesis by
    Th28,
    Th29;
    
      end;
    
      cluster 
    DTree-yielding non 
    empty for 
    FinSequence;
    
      existence
    
      proof
    
        set T = the
    DecoratedTree;
    
        take
    <*T*>;
    
        thus thesis by
    Th30;
    
      end;
    
    end
    
    registration
    
      cluster 
    Tree-yielding
    FinTree-yielding non 
    empty for 
    Function;
    
      existence
    
      proof
    
        set p = the
    Tree-yielding
    FinTree-yielding non 
    empty  
    FinSequence;
    
        take p;
    
        thus thesis;
    
      end;
    
      cluster 
    DTree-yielding non 
    empty for 
    Function;
    
      existence
    
      proof
    
        set p = the
    DTree-yielding non 
    empty  
    FinSequence;
    
        take p;
    
        thus thesis;
    
      end;
    
    end
    
    registration
    
      cluster 
    FinTree-yielding -> 
    Tree-yielding for 
    Function;
    
      coherence ;
    
    end
    
    registration
    
      let D be
    constituted-Trees non 
    empty  
    set;
    
      cluster -> 
    Tree-yielding for 
    FinSequence of D; 
    
      coherence
    
      proof
    
        let p be
    FinSequence of D; 
    
        let x;
    
        (
    rng p) 
    c= D; 
    
        hence thesis;
    
      end;
    
    end
    
    registration
    
      let p,q be
    Tree-yielding  
    FinSequence;
    
      cluster (p 
    ^ q) -> 
    Tree-yielding;
    
      coherence by
    Th25;
    
    end
    
    registration
    
      let D be
    constituted-FinTrees non 
    empty  
    set;
    
      cluster -> 
    FinTree-yielding for 
    FinSequence of D; 
    
      coherence
    
      proof
    
        let p be
    FinSequence of D; 
    
        let x;
    
        (
    rng p) 
    c= D; 
    
        hence thesis;
    
      end;
    
    end
    
    registration
    
      let p,q be
    FinTree-yielding  
    FinSequence;
    
      cluster (p 
    ^ q) -> 
    FinTree-yielding;
    
      coherence by
    Th26;
    
    end
    
    registration
    
      let D be
    constituted-DTrees non 
    empty  
    set;
    
      cluster -> 
    DTree-yielding for 
    FinSequence of D; 
    
      coherence
    
      proof
    
        let p be
    FinSequence of D; 
    
        let x;
    
        (
    rng p) 
    c= D; 
    
        hence thesis;
    
      end;
    
    end
    
    registration
    
      let p,q be
    DTree-yielding  
    FinSequence;
    
      cluster (p 
    ^ q) -> 
    DTree-yielding;
    
      coherence by
    Th27;
    
    end
    
    registration
    
      let T be
    Tree;
    
      cluster 
    <*T*> ->
    Tree-yielding non 
    empty;
    
      coherence by
    Th28;
    
      let S be
    Tree;
    
      cluster 
    <*T, S*> ->
    Tree-yielding non 
    empty;
    
      coherence by
    Th31;
    
    end
    
    registration
    
      let n be
    Nat, T be 
    Tree;
    
      cluster (n 
    |-> T) -> 
    Tree-yielding;
    
      coherence
    
      proof
    
        (
    0  
    |-> T) 
    =  
    {} ; 
    
        hence thesis by
    Th34;
    
      end;
    
    end
    
    registration
    
      let T be
    finite  
    Tree;
    
      cluster 
    <*T*> ->
    FinTree-yielding;
    
      coherence by
    Th29;
    
      let S be
    finite  
    Tree;
    
      cluster 
    <*T, S*> ->
    FinTree-yielding;
    
      coherence by
    Th32;
    
    end
    
    registration
    
      let n be
    Nat, T be 
    finite  
    Tree;
    
      cluster (n 
    |-> T) -> 
    FinTree-yielding;
    
      coherence
    
      proof
    
        (
    0  
    |-> T) 
    =  
    {} ; 
    
        hence thesis by
    Th35;
    
      end;
    
    end
    
    registration
    
      let T be
    DecoratedTree;
    
      cluster 
    <*T*> ->
    DTree-yielding non 
    empty;
    
      coherence by
    Th30;
    
      let S be
    DecoratedTree;
    
      cluster 
    <*T, S*> ->
    DTree-yielding non 
    empty;
    
      coherence by
    Th33;
    
    end
    
    registration
    
      let n be
    Nat, T be 
    DecoratedTree;
    
      cluster (n 
    |-> T) -> 
    DTree-yielding;
    
      coherence
    
      proof
    
        (
    0  
    |-> T) 
    =  
    {} ; 
    
        hence thesis by
    Th36;
    
      end;
    
    end
    
    registration
    
      cluster 
    DTree-yielding -> 
    Function-yielding for 
    Function;
    
      coherence
    
      proof
    
        let f be
    Function;
    
        assume
    
        
    
    A1: ( 
    rng f) is 
    constituted-DTrees;
    
        let x be
    object;
    
        assume x
    in ( 
    dom f); 
    
        then (f
    . x) 
    in ( 
    rng f) by 
    FUNCT_1: 3;
    
        then (f
    . x) is 
    DecoratedTree by 
    A1;
    
        hence (f
    . x) is 
    Function;
    
      end;
    
    end
    
    theorem :: 
    
    TREES_3:37
    
    
    
    
    
    Th37: for f be 
    DTree-yielding  
    Function holds ( 
    dom ( 
    doms f)) 
    = ( 
    dom f) & ( 
    doms f) is 
    Tree-yielding
    
    proof
    
      let f be
    DTree-yielding  
    Function;
    
      
    
      
    
    A1: ( 
    dom ( 
    doms f)) 
    = ( 
    dom f) by 
    FUNCT_6:def 2;
    
      hence (
    dom ( 
    doms f)) 
    c= ( 
    dom f); 
    
      thus (
    dom f) 
    c= ( 
    dom ( 
    doms f)) by 
    A1;
    
      now
    
        let x;
    
        assume x
    in ( 
    dom ( 
    doms f)); 
    
        then
    
        
    
    A2: x 
    in ( 
    dom f) by 
    A1;
    
        then
    
        reconsider g = (f
    . x) as 
    DecoratedTree by 
    Th24;
    
        ((
    doms f) 
    . x) 
    = ( 
    dom g) by 
    A2,
    FUNCT_6: 22;
    
        hence ((
    doms f) 
    . x) is 
    Tree;
    
      end;
    
      hence thesis by
    Th22;
    
    end;
    
    registration
    
      let p be
    DTree-yielding  
    FinSequence;
    
      cluster ( 
    doms p) -> 
    Tree-yielding
    FinSequence-like;
    
      coherence
    
      proof
    
        
    
        
    
    A1: ( 
    dom ( 
    doms p)) 
    = ( 
    dom p) by 
    Th37;
    
        (
    Seg ( 
    len p)) 
    = ( 
    dom p) by 
    FINSEQ_1:def 3;
    
        hence thesis by
    A1,
    Th37,
    FINSEQ_1:def 2;
    
      end;
    
    end
    
    theorem :: 
    
    TREES_3:38
    
    for p be
    DTree-yielding  
    FinSequence holds ( 
    len ( 
    doms p)) 
    = ( 
    len p) 
    
    proof
    
      let p be
    DTree-yielding  
    FinSequence;
    
      
    
      
    
    A1: ( 
    dom p) 
    = ( 
    dom ( 
    doms p)) by 
    Th37;
    
      (
    Seg ( 
    len p)) 
    = ( 
    dom p) by 
    FINSEQ_1:def 3;
    
      hence thesis by
    A1,
    FINSEQ_1:def 3;
    
    end;
    
    
    
    
    
    Lm2: for D be non 
    empty  
    set, T be 
    DecoratedTree of D holds T is 
    Function of ( 
    dom T), D 
    
    proof
    
      let D be non
    empty  
    set, T be 
    DecoratedTree of D; 
    
      (
    rng T) 
    c= D; 
    
      hence thesis by
    FUNCT_2:def 1,
    RELSET_1: 4;
    
    end;
    
    begin
    
    definition
    
      let D,E be non
    empty  
    set;
    
      mode
    
    DecoratedTree of D,E is 
    DecoratedTree of 
    [:D, E:];
    
      mode
    
    DTree-set of D,E is 
    DTree-set of 
    [:D, E:];
    
    end
    
    registration
    
      let T1,T2 be
    DecoratedTree;
    
      cluster 
    <:T1, T2:> ->
    DecoratedTree-like;
    
      coherence
    
      proof
    
        (
    dom  
    <:T1, T2:>)
    = (( 
    dom T1) 
    /\ ( 
    dom T2)) by 
    FUNCT_3:def 7;
    
        hence thesis;
    
      end;
    
    end
    
    registration
    
      let D1,D2 be non
    empty  
    set;
    
      let T1 be
    DecoratedTree of D1; 
    
      let T2 be
    DecoratedTree of D2; 
    
      cluster 
    <:T1, T2:> ->
    [:D1, D2:]
    -valued;
    
      coherence
    
      proof
    
        
    
        
    
    A1: ( 
    rng  
    <:T1, T2:>)
    c=  
    [:(
    rng T1), ( 
    rng T2):] by 
    FUNCT_3: 51;
    
        
    [:(
    rng T1), ( 
    rng T2):] 
    c=  
    [:D1, D2:] by
    ZFMISC_1: 96;
    
        then (
    rng  
    <:T1, T2:>)
    c=  
    [:D1, D2:] by
    A1;
    
        hence thesis by
    RELAT_1:def 19;
    
      end;
    
    end
    
    registration
    
      let D,E be non
    empty  
    set;
    
      let T be
    DecoratedTree of D; 
    
      let f be
    Function of D, E; 
    
      cluster (f 
    * T) -> 
    DecoratedTree-like;
    
      coherence
    
      proof
    
        reconsider g = T as
    Function of ( 
    dom T), D by 
    Lm2;
    
        reconsider fg = (f
    * g) as 
    Function of ( 
    dom T), E; 
    
        (
    rng fg) 
    c= E; 
    
        hence thesis;
    
      end;
    
    end
    
    definition
    
      let D1,D2 be non
    empty  
    set;
    
      :: original:
    pr1
    
      redefine
    
      func
    
    pr1 (D1,D2) -> 
    Function of 
    [:D1, D2:], D1 ;
    
      coherence
    
      proof
    
        thus (
    pr1 (D1,D2)) is 
    Function of 
    [:D1, D2:], D1;
    
      end;
    
      :: original:
    pr2
    
      redefine
    
      func
    
    pr2 (D1,D2) -> 
    Function of 
    [:D1, D2:], D2 ;
    
      coherence
    
      proof
    
        thus (
    pr2 (D1,D2)) is 
    Function of 
    [:D1, D2:], D2;
    
      end;
    
    end
    
    definition
    
      let D1,D2 be non
    empty  
    set, T be 
    DecoratedTree of D1, D2; 
    
      :: 
    
    TREES_3:def12
    
      func T
    
    `1 -> 
    DecoratedTree of D1 equals (( 
    pr1 (D1,D2)) 
    * T); 
    
      correctness ;
    
      :: 
    
    TREES_3:def13
    
      func T
    
    `2 -> 
    DecoratedTree of D2 equals (( 
    pr2 (D1,D2)) 
    * T); 
    
      correctness ;
    
    end
    
    theorem :: 
    
    TREES_3:39
    
    
    
    
    
    Th39: for D1,D2 be non 
    empty  
    set, T be 
    DecoratedTree of D1, D2, t be 
    Element of ( 
    dom T) holds ((T 
    . t) 
    `1 ) 
    = ((T 
    `1 ) 
    . t) & ((T 
    `2 ) 
    . t) 
    = ((T 
    . t) 
    `2 ) 
    
    proof
    
      let D1,D2 be non
    empty  
    set, T be 
    DecoratedTree of D1, D2; 
    
      let t be
    Element of ( 
    dom T); 
    
      
    
      
    
    A1: ( 
    dom ( 
    pr1 (D1,D2))) 
    =  
    [:D1, D2:] by
    FUNCT_2:def 1;
    
      
    
      
    
    A2: ( 
    dom ( 
    pr2 (D1,D2))) 
    =  
    [:D1, D2:] by
    FUNCT_2:def 1;
    
      
    
      
    
    A3: ( 
    rng T) 
    c=  
    [:D1, D2:];
    
      then
    
      
    
    A4: ( 
    dom (T 
    `1 )) 
    = ( 
    dom T) by 
    A1,
    RELAT_1: 27;
    
      
    
      
    
    A5: ( 
    dom (T 
    `2 )) 
    = ( 
    dom T) by 
    A2,
    A3,
    RELAT_1: 27;
    
      
    
      
    
    A6: (T 
    . t) 
    =  
    [((T
    . t) 
    `1 ), ((T 
    . t) 
    `2 )] by 
    MCART_1: 21;
    
      then
    
      
    
    A7: ((T 
    `1 ) 
    . t) 
    = (( 
    pr1 (D1,D2)) 
    . (((T 
    . t) 
    `1 ),((T 
    . t) 
    `2 ))) by 
    A4,
    FUNCT_1: 12;
    
      ((T
    `2 ) 
    . t) 
    = (( 
    pr2 (D1,D2)) 
    . (((T 
    . t) 
    `1 ),((T 
    . t) 
    `2 ))) by 
    A5,
    A6,
    FUNCT_1: 12;
    
      hence thesis by
    A7,
    FUNCT_3:def 4,
    FUNCT_3:def 5;
    
    end;
    
    theorem :: 
    
    TREES_3:40
    
    for D1,D2 be non
    empty  
    set, T be 
    DecoratedTree of D1, D2 holds 
    <:(T
    `1 ), (T 
    `2 ):> 
    = T 
    
    proof
    
      let D1,D2 be non
    empty  
    set, T be 
    DecoratedTree of D1, D2; 
    
      
    
      
    
    A1: ( 
    dom ( 
    pr1 (D1,D2))) 
    =  
    [:D1, D2:] by
    FUNCT_2:def 1;
    
      
    
      
    
    A2: ( 
    dom ( 
    pr2 (D1,D2))) 
    =  
    [:D1, D2:] by
    FUNCT_2:def 1;
    
      
    
      
    
    A3: ( 
    rng T) 
    c=  
    [:D1, D2:];
    
      then
    
      
    
    A4: ( 
    dom (T 
    `1 )) 
    = ( 
    dom T) by 
    A1,
    RELAT_1: 27;
    
      
    
      
    
    A5: ( 
    dom (T 
    `2 )) 
    = ( 
    dom T) by 
    A2,
    A3,
    RELAT_1: 27;
    
      then
    
      
    
    A6: ( 
    dom  
    <:(T
    `1 ), (T 
    `2 ):>) 
    = ( 
    dom T) by 
    A4,
    FUNCT_3: 50;
    
      now
    
        let x be
    object;
    
        assume x
    in ( 
    dom T); 
    
        then
    
        reconsider t = x as
    Element of ( 
    dom T); 
    
        
    
        thus (
    <:(T
    `1 ), (T 
    `2 ):> 
    . x) 
    =  
    [((T
    `1 ) 
    . t), ((T 
    `2 ) 
    . t)] by 
    A4,
    A5,
    FUNCT_3: 49
    
        .=
    [((T
    . t) 
    `1 ), ((T 
    `2 ) 
    . t)] by 
    Th39
    
        .=
    [((T
    . t) 
    `1 ), ((T 
    . t) 
    `2 )] by 
    Th39
    
        .= (T
    . x) by 
    MCART_1: 21;
    
      end;
    
      hence thesis by
    A6;
    
    end;
    
    registration
    
      let T be
    finite  
    Tree;
    
      cluster ( 
    Leaves T) -> 
    finite non 
    empty;
    
      coherence
    
      proof
    
        
    
        
    
    A1: T 
    <>  
    {} ; 
    
        defpred
    
    X[
    object, 
    object] means ex t1,t2 be
    Element of T st $1 
    = t1 & $2 
    = t2 & t2 
    is_a_prefix_of t1; 
    
        
    
        
    
    A2: for x, y st 
    X[x, y] &
    X[y, x] holds x
    = y by 
    XBOOLE_0:def 10;
    
        
    
        
    
    A3: for x, y, z st 
    X[x, y] &
    X[y, z] holds
    X[x, z] by
    XBOOLE_1: 1;
    
        consider x such that
    
        
    
    A4: x 
    in T & for y st y 
    in T & y 
    <> x holds not 
    X[y, x] from
    CARD_2:sch 1(
    A1,
    A2,
    A3);
    
        reconsider x as
    Element of T by 
    A4;
    
        now
    
          let p be
    FinSequence of 
    NAT ; 
    
          assume p
    in T; 
    
          then
    
          reconsider t1 = p as
    Element of T; 
    
          thus not x
    is_a_proper_prefix_of p 
    
          proof
    
            assume x
    is_a_prefix_of p; 
    
            then x
    = t1 by 
    A4;
    
            hence thesis;
    
          end;
    
        end;
    
        hence thesis by
    TREES_1:def 5;
    
      end;
    
    end
    
    definition
    
      let T be
    Tree, S be non 
    empty  
    Subset of T; 
    
      :: original:
    Element
    
      redefine
    
      mode
    
    Element of S -> 
    Element of T ; 
    
      coherence
    
      proof
    
        let t be
    Element of S; 
    
        thus thesis;
    
      end;
    
    end
    
    definition
    
      let T be
    finite  
    Tree;
    
      :: original:
    Leaf
    
      redefine
    
      mode
    
    Leaf of T -> 
    Element of ( 
    Leaves T) ; 
    
      coherence by
    TREES_1:def 7;
    
    end
    
    definition
    
      let T be
    finite  
    Tree;
    
      :: 
    
    TREES_3:def14
    
      mode
    
    T-Substitution of T -> 
    Tree means 
    
      :
    
    Def14: for t be 
    Element of it holds t 
    in T or ex l be 
    Leaf of T st l 
    is_a_proper_prefix_of t; 
    
      existence
    
      proof
    
        take T;
    
        thus thesis;
    
      end;
    
    end
    
    definition
    
      let T be
    finite  
    Tree, t be 
    Leaf of T, S be 
    Tree;
    
      :: original:
    with-replacement
    
      redefine
    
      func T
    
    with-replacement (t,S) -> 
    T-Substitution of T ; 
    
      coherence
    
      proof
    
        let s be
    Element of (T 
    with-replacement (t,S)); 
    
        assume
    
        
    
    A1: not s 
    in T; 
    
        then
    
        consider t1 be
    FinSequence of 
    NAT such that t1 
    in S and 
    
        
    
    A2: s 
    = (t 
    ^ t1) by 
    TREES_1:def 9;
    
        take t;
    
        (t
    ^  
    {} ) 
    = t by 
    FINSEQ_1: 34;
    
        then t1
    <>  
    {} by 
    A1,
    A2;
    
        hence thesis by
    A2,
    TREES_1: 10;
    
      end;
    
    end
    
    registration
    
      let T be
    finite  
    Tree;
    
      cluster 
    finite for 
    T-Substitution of T; 
    
      existence
    
      proof
    
        for t be
    Element of T holds t 
    in T or ex l be 
    Leaf of T st l 
    is_a_proper_prefix_of t; 
    
        then T is
    T-Substitution of T by 
    Def14;
    
        hence thesis;
    
      end;
    
    end
    
    definition
    
      let n;
    
      mode
    
    T-Substitution of n is 
    T-Substitution of ( 
    elementary_tree n); 
    
    end
    
    theorem :: 
    
    TREES_3:41
    
    for T be
    Tree holds T is 
    T-Substitution of 
    0  
    
    proof
    
      let T be
    Tree;
    
      let t be
    Element of T; 
    
      assume
    
      
    
    A1: not t 
    in ( 
    elementary_tree  
    0 ); 
    
      set l = the
    Leaf of ( 
    elementary_tree  
    0 ); 
    
      take l;
    
      
    
      
    
    A2: l 
    =  
    {} by 
    TARSKI:def 1,
    TREES_1: 29;
    
      
    
      
    
    A3: t 
    <>  
    {} by 
    A1,
    TARSKI:def 1,
    TREES_1: 29;
    
      
    {}  
    is_a_prefix_of t; 
    
      hence thesis by
    A2,
    A3;
    
    end;
    
    theorem :: 
    
    TREES_3:42
    
    for T1,T2 be
    Tree st (T1 
    -level 1) 
    c= (T2 
    -level 1) & for n be 
    Element of 
    NAT st 
    <*n*>
    in T1 holds (T1 
    |  
    <*n*>)
    = (T2 
    |  
    <*n*>) holds T1
    c= T2 
    
    proof
    
      let T1,T2 be
    Tree;
    
      assume that
    
      
    
    A1: (T1 
    -level 1) 
    c= (T2 
    -level 1) and 
    
      
    
    A2: for n be 
    Element of 
    NAT st 
    <*n*>
    in T1 holds (T1 
    |  
    <*n*>)
    = (T2 
    |  
    <*n*>);
    
      let x be
    object;
    
      assume x
    in T1; 
    
      then
    
      reconsider t = x as
    Element of T1; 
    
      now
    
        assume t
    <>  
    {} ; 
    
        then
    
        consider p be
    FinSequence of 
    NAT , n be 
    Element of 
    NAT such that 
    
        
    
    A3: t 
    = ( 
    <*n*>
    ^ p) by 
    FINSEQ_2: 130;
    
        
    
        
    
    A4: ( 
    len  
    <*n*>)
    = 1 by 
    FINSEQ_1: 39;
    
        reconsider n as
    Element of 
    NAT ; 
    
        reconsider q =
    <*n*> as
    Element of T1 by 
    A3,
    TREES_1: 21;
    
        
    
        
    
    A5: q 
    in (T1 
    -level 1) by 
    A4;
    
        then
    
        
    
    A6: q 
    in (T2 
    -level 1) by 
    A1;
    
        
    
        
    
    A7: p 
    in (T1 
    | q) by 
    A3,
    TREES_1:def 6;
    
        (T1
    |  
    <*n*>)
    = (T2 
    |  
    <*n*>) by
    A2,
    A5;
    
        hence t
    in T2 by 
    A3,
    A6,
    A7,
    TREES_1:def 6;
    
      end;
    
      hence thesis by
    TREES_1: 22;
    
    end;
    
    
    
    
    
    Lm3: n 
    < ( 
    len p) implies (n 
    + 1) 
    in ( 
    dom p) & (p 
    . (n 
    + 1)) 
    in ( 
    rng p) 
    
    proof
    
      assume
    
      
    
    A1: n 
    < ( 
    len p); 
    
      
    
      
    
    A2: (n 
    + 1) 
    >= ( 
    0  
    + 1) by 
    NAT_1: 13;
    
      (n
    + 1) 
    <= ( 
    len p) by 
    A1,
    NAT_1: 13;
    
      then (n
    + 1) 
    in ( 
    dom p) by 
    A2,
    FINSEQ_3: 25;
    
      hence thesis by
    FUNCT_1:def 3;
    
    end;
    
    begin
    
    theorem :: 
    
    TREES_3:43
    
    for T,T9 be
    Tree, p be 
    FinSequence of 
    NAT st p 
    in ( 
    Leaves T) holds T 
    c= (T 
    with-replacement (p,T9)) 
    
    proof
    
      let T,T9 be
    Tree, p be 
    FinSequence of 
    NAT such that 
    
      
    
    A1: p 
    in ( 
    Leaves T); 
    
      let x be
    object;
    
      assume x
    in T; 
    
      then
    
      reconsider t = x as
    Element of T; 
    
       not p
    is_a_proper_prefix_of t by 
    A1,
    TREES_1:def 5;
    
      hence thesis by
    A1,
    TREES_1:def 9;
    
    end;
    
    theorem :: 
    
    TREES_3:44
    
    for T,T9 be
    DecoratedTree, p be 
    Element of ( 
    dom T) holds ((T 
    with-replacement (p,T9)) 
    . p) 
    = (T9 
    .  
    {} ) 
    
    proof
    
      let T,T9 be
    DecoratedTree, p be 
    Element of ( 
    dom T); 
    
      p
    in (( 
    dom T) 
    with-replacement (p,( 
    dom T9))) by 
    TREES_1:def 9;
    
      then
    
      
    
    A1: ex r be 
    FinSequence of 
    NAT st (r 
    in ( 
    dom T9)) & (p 
    = (p 
    ^ r)) & (((T 
    with-replacement (p,T9)) 
    . p) 
    = (T9 
    . r)) by 
    TREES_2:def 11;
    
      p
    = (p 
    ^  
    {} ) by 
    FINSEQ_1: 34;
    
      hence thesis by
    A1,
    FINSEQ_1: 33;
    
    end;
    
    theorem :: 
    
    TREES_3:45
    
    for T,T9 be
    DecoratedTree, p,q be 
    Element of ( 
    dom T) st not p 
    is_a_prefix_of q holds ((T 
    with-replacement (p,T9)) 
    . q) 
    = (T 
    . q) 
    
    proof
    
      let T,T9 be
    DecoratedTree, p,q be 
    Element of ( 
    dom T); 
    
      assume
    
      
    
    A1: not p 
    is_a_prefix_of q; 
    
      then
    
      
    
    A2: q 
    in (( 
    dom T) 
    with-replacement (p,( 
    dom T9))) by 
    TREES_2: 7;
    
       not ex r be
    FinSequence of 
    NAT st r 
    in ( 
    dom T9) & q 
    = (p 
    ^ r) & ((T 
    with-replacement (p,T9)) 
    . q) 
    = (T9 
    . r) by 
    A1,
    TREES_1: 1;
    
      hence thesis by
    A2,
    TREES_2:def 11;
    
    end;
    
    theorem :: 
    
    TREES_3:46
    
    for T,T9 be
    DecoratedTree, p be 
    Element of ( 
    dom T), q be 
    Element of ( 
    dom T9) holds ((T 
    with-replacement (p,T9)) 
    . (p 
    ^ q)) 
    = (T9 
    . q) 
    
    proof
    
      let T,T9 be
    DecoratedTree;
    
      let p be
    Element of ( 
    dom T), q be 
    Element of ( 
    dom T9); 
    
      
    
      
    
    A1: p 
    is_a_prefix_of (p 
    ^ q) by 
    TREES_1: 1;
    
      (p
    ^ q) 
    in (( 
    dom T) 
    with-replacement (p,( 
    dom T9))) by 
    TREES_1:def 9;
    
      then ex r be
    FinSequence of 
    NAT st (r 
    in ( 
    dom T9)) & ((p 
    ^ q) 
    = (p 
    ^ r)) & (((T 
    with-replacement (p,T9)) 
    . (p 
    ^ q)) 
    = (T9 
    . r)) by 
    A1,
    TREES_2:def 11;
    
      hence thesis by
    FINSEQ_1: 33;
    
    end;
    
    registration
    
      let T1,T2 be
    Tree;
    
      cluster (T1 
    \/ T2) -> non 
    empty
    Tree-like;
    
      coherence ;
    
    end
    
    theorem :: 
    
    TREES_3:47
    
    
    
    
    
    Th47: for T1,T2 be 
    Tree, p be 
    Element of (T1 
    \/ T2) holds (p 
    in T1 & p 
    in T2 implies ((T1 
    \/ T2) 
    | p) 
    = ((T1 
    | p) 
    \/ (T2 
    | p))) & ( not p 
    in T1 implies ((T1 
    \/ T2) 
    | p) 
    = (T2 
    | p)) & ( not p 
    in T2 implies ((T1 
    \/ T2) 
    | p) 
    = (T1 
    | p)) 
    
    proof
    
      let T1,T2 be
    Tree, p be 
    Element of (T1 
    \/ T2); 
    
      thus p
    in T1 & p 
    in T2 implies ((T1 
    \/ T2) 
    | p) 
    = ((T1 
    | p) 
    \/ (T2 
    | p)) 
    
      proof
    
        assume that
    
        
    
    A1: p 
    in T1 and 
    
        
    
    A2: p 
    in T2; 
    
        let q be
    FinSequence of 
    NAT ; 
    
        thus q
    in ((T1 
    \/ T2) 
    | p) implies q 
    in ((T1 
    | p) 
    \/ (T2 
    | p)) 
    
        proof
    
          assume q
    in ((T1 
    \/ T2) 
    | p); 
    
          then (p
    ^ q) 
    in (T1 
    \/ T2) by 
    TREES_1:def 6;
    
          then (p
    ^ q) 
    in T1 or (p 
    ^ q) 
    in T2 by 
    XBOOLE_0:def 3;
    
          then q
    in (T1 
    | p) or q 
    in (T2 
    | p) by 
    A1,
    A2,
    TREES_1:def 6;
    
          hence thesis by
    XBOOLE_0:def 3;
    
        end;
    
        assume q
    in ((T1 
    | p) 
    \/ (T2 
    | p)); 
    
        then q
    in (T1 
    | p) or q 
    in (T2 
    | p) by 
    XBOOLE_0:def 3;
    
        then (p
    ^ q) 
    in T1 or (p 
    ^ q) 
    in T2 by 
    A1,
    A2,
    TREES_1:def 6;
    
        then (p
    ^ q) 
    in (T1 
    \/ T2) by 
    XBOOLE_0:def 3;
    
        hence thesis by
    TREES_1:def 6;
    
      end;
    
      for T1,T2 be
    Tree, p be 
    Element of (T1 
    \/ T2) st not p 
    in T1 holds ((T1 
    \/ T2) 
    | p) 
    = (T2 
    | p) 
    
      proof
    
        let T1,T2 be
    Tree;
    
        let p be
    Element of (T1 
    \/ T2); 
    
        assume
    
        
    
    A3: not p 
    in T1; 
    
        then
    
        
    
    A4: p 
    in T2 by 
    XBOOLE_0:def 3;
    
        let q be
    FinSequence of 
    NAT ; 
    
        thus q
    in ((T1 
    \/ T2) 
    | p) implies q 
    in (T2 
    | p) 
    
        proof
    
          assume q
    in ((T1 
    \/ T2) 
    | p); 
    
          then (p
    ^ q) 
    in (T1 
    \/ T2) by 
    TREES_1:def 6;
    
          then (p
    ^ q) 
    in T1 or (p 
    ^ q) 
    in T2 by 
    XBOOLE_0:def 3;
    
          hence thesis by
    A3,
    A4,
    TREES_1: 21,
    TREES_1:def 6;
    
        end;
    
        assume q
    in (T2 
    | p); 
    
        then (p
    ^ q) 
    in T2 by 
    A4,
    TREES_1:def 6;
    
        then (p
    ^ q) 
    in (T1 
    \/ T2) by 
    XBOOLE_0:def 3;
    
        hence thesis by
    TREES_1:def 6;
    
      end;
    
      hence thesis;
    
    end;
    
    definition
    
      let p;
    
      :: 
    
    TREES_3:def15
    
      func
    
    tree p -> 
    Tree means 
    
      :
    
    Def15: x 
    in it iff x 
    =  
    {} or ex n, q st n 
    < ( 
    len p) & q 
    in (p 
    . (n 
    + 1)) & x 
    = ( 
    <*n*>
    ^ q); 
    
      existence
    
      proof
    
        defpred
    
    X[
    object] means ($1
    =  
    {} or ex n, q st n 
    < ( 
    len p) & q 
    in (p 
    . (n 
    + 1)) & $1 
    = ( 
    <*n*>
    ^ q)); 
    
        consider T be
    set such that 
    
        
    
    A2: for y be 
    object holds y 
    in T iff y 
    in ( 
    NAT  
    * ) & 
    X[y] from
    XBOOLE_0:sch 1;
    
        (
    <*>  
    NAT ) 
    in ( 
    NAT  
    * ) by 
    FINSEQ_1:def 11;
    
        then
    
        reconsider T as non
    empty  
    set by 
    A2;
    
        
    
        
    
    A3: ( 
    rng p) is 
    constituted-Trees by 
    A1;
    
        then
    
        
    
    A4: for n st n 
    < ( 
    len p) holds (p 
    . (n 
    + 1)) is 
    Tree by 
    Lm3;
    
        T is
    Tree-like
    
        proof
    
          thus T
    c= ( 
    NAT  
    * ) by 
    A2;
    
          thus w
    in T implies ( 
    ProperPrefixes w) 
    c= T 
    
          proof
    
            assume
    
            
    
    A5: w 
    in T; 
    
            now
    
              assume w
    <>  
    {} ; 
    
              then
    
              consider n, q such that
    
              
    
    A6: n 
    < ( 
    len p) and 
    
              
    
    A7: q 
    in (p 
    . (n 
    + 1)) and 
    
              
    
    A8: w 
    = ( 
    <*n*>
    ^ q) by 
    A2,
    A5;
    
              reconsider q as
    FinSequence of 
    NAT by 
    A8,
    FINSEQ_1: 36;
    
              thus thesis
    
              proof
    
                let x be
    object;
    
                assume x
    in ( 
    ProperPrefixes w); 
    
                then
    
                consider r such that
    
                
    
    A9: x 
    = r and 
    
                
    
    A10: r 
    is_a_proper_prefix_of w by 
    TREES_1:def 2;
    
                r
    is_a_prefix_of w by 
    A10;
    
                then
    
                consider k such that
    
                
    
    A11: r 
    = (w 
    | ( 
    Seg k)); 
    
                (
    rng r) 
    = (w 
    .: ( 
    Seg k)) by 
    A11,
    RELAT_1: 115;
    
                then
    
                reconsider r as
    FinSequence of 
    NAT by 
    FINSEQ_1:def 4;
    
                
    
                
    
    A12: r 
    in ( 
    NAT  
    * ) by 
    FINSEQ_1:def 11;
    
                now
    
                  assume r
    <>  
    {} ; 
    
                  then
    
                  consider r1 be
    FinSequence of 
    NAT , i be 
    Element of 
    NAT such that 
    
                  
    
    A13: r 
    = ( 
    <*i*>
    ^ r1) by 
    FINSEQ_2: 130;
    
                  
    
                  
    
    A14: ( 
    dom  
    <*i*>)
    = ( 
    Seg 1) by 
    FINSEQ_1: 38;
    
                  
    
                  
    
    A15: 1 
    in ( 
    Seg 1) by 
    FINSEQ_1: 2,
    TARSKI:def 1;
    
                  
    
                  
    
    A16: ( 
    Seg 1) 
    c= ( 
    dom r) by 
    A13,
    A14,
    FINSEQ_1: 26;
    
                  
    
                  
    
    A17: (r 
    . 1) 
    = i by 
    A13,
    FINSEQ_1: 41;
    
                  
    
                  
    
    A18: (w 
    . 1) 
    = n by 
    A8,
    FINSEQ_1: 41;
    
                  
    
                  
    
    A19: (r 
    . 1) 
    = (w 
    . 1) by 
    A11,
    A15,
    A16,
    FUNCT_1: 47;
    
                  then
    
                  
    
    A20: r1 
    is_a_proper_prefix_of q by 
    A8,
    A10,
    A13,
    A17,
    A18,
    TREES_1: 49;
    
                  
    
                  
    
    A21: (p 
    . (n 
    + 1)) is 
    Tree by 
    A4,
    A6;
    
                  r1
    is_a_prefix_of q by 
    A20;
    
                  then r1
    in (p 
    . (n 
    + 1)) by 
    A7,
    A21,
    TREES_1: 20;
    
                  hence thesis by
    A2,
    A6,
    A9,
    A12,
    A13,
    A17,
    A18,
    A19;
    
                end;
    
                hence thesis by
    A2,
    A9,
    A12;
    
              end;
    
            end;
    
            hence thesis by
    TREES_1: 15;
    
          end;
    
          let w, k, n such that
    
          
    
    A22: (w 
    ^  
    <*k*>)
    in T and 
    
          
    
    A23: n 
    <= k; 
    
          
    
    A24: 
    
          now
    
            assume
    
            
    
    A25: w 
    =  
    {} ; 
    
            then
    <*k*>
    in T by 
    A22,
    FINSEQ_1: 34;
    
            then
    
            consider m be
    Nat, q such that 
    
            
    
    A26: m 
    < ( 
    len p) and q 
    in (p 
    . (m 
    + 1)) and 
    
            
    
    A27: 
    <*k*>
    = ( 
    <*m*>
    ^ q) by 
    A2;
    
            
    
            
    
    A28: ( 
    <*k*>
    . 1) 
    = k by 
    FINSEQ_1:def 8;
    
            ((
    <*m*>
    ^ q) 
    . 1) 
    = m by 
    FINSEQ_1: 41;
    
            then
    
            
    
    A29: n 
    < ( 
    len p) by 
    A23,
    A26,
    A27,
    A28,
    XXREAL_0: 2;
    
            then (p
    . (n 
    + 1)) 
    in ( 
    rng p) by 
    Lm3;
    
            then
    
            
    
    A30: 
    {}  
    in (p 
    . (n 
    + 1)) by 
    A3,
    TREES_1: 22;
    
            
    
            
    
    A31: ( 
    <*n*>
    ^  
    {} ) 
    =  
    <*n*> by
    FINSEQ_1: 34;
    
            
    
            
    
    A32: ( 
    {}  
    ^  
    <*n*>)
    =  
    <*n*> by
    FINSEQ_1: 34;
    
            reconsider n as
    Element of 
    NAT by 
    ORDINAL1:def 12;
    
            
    <*n*>
    in ( 
    NAT  
    * ) by 
    FINSEQ_1:def 11;
    
            hence thesis by
    A2,
    A25,
    A29,
    A30,
    A31,
    A32;
    
          end;
    
          now
    
            assume w
    <>  
    {} ; 
    
            then
    
            consider q be
    FinSequence of 
    NAT , m be 
    Element of 
    NAT such that 
    
            
    
    A33: w 
    = ( 
    <*m*>
    ^ q) by 
    FINSEQ_2: 130;
    
            consider m9 be
    Nat, r such that 
    
            
    
    A34: m9 
    < ( 
    len p) and 
    
            
    
    A35: r 
    in (p 
    . (m9 
    + 1)) and 
    
            
    
    A36: (w 
    ^  
    <*k*>)
    = ( 
    <*m9*>
    ^ r) by 
    A2,
    A22;
    
            reconsider n as
    Element of 
    NAT by 
    ORDINAL1:def 12;
    
            
    
            
    
    A37: (w 
    ^  
    <*k*>)
    = ( 
    <*m*>
    ^ (q 
    ^  
    <*k*>)) by
    A33,
    FINSEQ_1: 32;
    
            
    
            
    
    A38: (w 
    ^  
    <*n*>)
    = ( 
    <*m*>
    ^ (q 
    ^  
    <*n*>)) by
    A33,
    FINSEQ_1: 32;
    
            
    
            
    
    A39: ((w 
    ^  
    <*k*>)
    . 1) 
    = m by 
    A37,
    FINSEQ_1: 41;
    
            
    
            
    
    A40: ((w 
    ^  
    <*k*>)
    . 1) 
    = m9 by 
    A36,
    FINSEQ_1: 41;
    
            
    
            
    
    A41: ( 
    <*m*>
    ^ (q 
    ^  
    <*n*>))
    in ( 
    NAT  
    * ) by 
    FINSEQ_1:def 11;
    
            
    
            
    
    A42: r 
    = (q 
    ^  
    <*k*>) by
    A36,
    A37,
    A39,
    A40,
    FINSEQ_1: 33;
    
            (p
    . (m 
    + 1)) 
    in ( 
    rng p) by 
    A34,
    A39,
    A40,
    Lm3;
    
            then (q
    ^  
    <*n*>)
    in (p 
    . (m 
    + 1)) by 
    A3,
    A23,
    A35,
    A39,
    A40,
    A42,
    TREES_1:def 3;
    
            hence thesis by
    A2,
    A34,
    A38,
    A39,
    A40,
    A41;
    
          end;
    
          hence thesis by
    A24;
    
        end;
    
        then
    
        reconsider T as
    Tree;
    
        take T;
    
        let x;
    
        thus x
    in T implies x 
    =  
    {} or ex n, q st n 
    < ( 
    len p) & q 
    in (p 
    . (n 
    + 1)) & x 
    = ( 
    <*n*>
    ^ q) by 
    A2;
    
        assume
    
        
    
    A43: x 
    =  
    {} or ex n, q st n 
    < ( 
    len p) & q 
    in (p 
    . (n 
    + 1)) & x 
    = ( 
    <*n*>
    ^ q); 
    
        
    
    A44: 
    
        now
    
          given n, q such that
    
          
    
    A45: n 
    < ( 
    len p) and 
    
          
    
    A46: q 
    in (p 
    . (n 
    + 1)) and 
    
          
    
    A47: x 
    = ( 
    <*n*>
    ^ q); 
    
          reconsider T1 = (p
    . (n 
    + 1)) as 
    Tree by 
    A4,
    A45;
    
          reconsider q as
    Element of T1 by 
    A46;
    
          reconsider n as
    Element of 
    NAT by 
    ORDINAL1:def 12;
    
          (
    <*n*>
    ^ q) 
    in ( 
    NAT  
    * ) by 
    FINSEQ_1:def 11;
    
          hence x
    in ( 
    NAT  
    * ) by 
    A47;
    
        end;
    
        
    {}  
    in ( 
    NAT  
    * ) by 
    FINSEQ_1: 49;
    
        hence thesis by
    A2,
    A43,
    A44;
    
      end;
    
      uniqueness
    
      proof
    
        defpred
    
    X[
    object] means $1
    =  
    {} or ex n, q st n 
    < ( 
    len p) & q 
    in (p 
    . (n 
    + 1)) & $1 
    = ( 
    <*n*>
    ^ q); 
    
        let T1,T2 be
    Tree such that 
    
        
    
    A48: x 
    in T1 iff 
    X[x] and
    
        
    
    A49: x 
    in T2 iff 
    X[x];
    
        thus thesis from
    XBOOLE_0:sch 2(
    A48,
    A49);
    
      end;
    
    end
    
    definition
    
      let T be
    Tree;
    
      :: 
    
    TREES_3:def16
    
      func
    
    ^ T -> 
    Tree equals ( 
    tree  
    <*T*>);
    
      correctness ;
    
    end
    
    definition
    
      let T1,T2 be
    Tree;
    
      :: 
    
    TREES_3:def17
    
      func
    
    tree (T1,T2) -> 
    Tree equals ( 
    tree  
    <*T1, T2*>);
    
      correctness ;
    
    end
    
    theorem :: 
    
    TREES_3:48
    
    p is
    Tree-yielding implies (( 
    <*n*>
    ^ q) 
    in ( 
    tree p) iff n 
    < ( 
    len p) & q 
    in (p 
    . (n 
    + 1))) 
    
    proof
    
      assume
    
      
    
    A1: p is 
    Tree-yielding;
    
      thus (
    <*n*>
    ^ q) 
    in ( 
    tree p) implies n 
    < ( 
    len p) & q 
    in (p 
    . (n 
    + 1)) 
    
      proof
    
        assume (
    <*n*>
    ^ q) 
    in ( 
    tree p); 
    
        then
    
        consider k, r such that
    
        
    
    A2: k 
    < ( 
    len p) and 
    
        
    
    A3: r 
    in (p 
    . (k 
    + 1)) and 
    
        
    
    A4: ( 
    <*n*>
    ^ q) 
    = ( 
    <*k*>
    ^ r) by 
    A1,
    Def15;
    
        
    
        
    
    A5: (( 
    <*n*>
    ^ q) 
    . 1) 
    = n by 
    FINSEQ_1: 41;
    
        ((
    <*k*>
    ^ r) 
    . 1) 
    = k by 
    FINSEQ_1: 41;
    
        hence thesis by
    A2,
    A3,
    A4,
    A5,
    FINSEQ_1: 33;
    
      end;
    
      thus thesis by
    A1,
    Def15;
    
    end;
    
    theorem :: 
    
    TREES_3:49
    
    
    
    
    
    Th49: p is 
    Tree-yielding implies (( 
    tree p) 
    -level 1) 
    = { 
    <*n*> : n
    < ( 
    len p) } & for n be 
    Element of 
    NAT st n 
    < ( 
    len p) holds (( 
    tree p) 
    |  
    <*n*>)
    = (p 
    . (n 
    + 1)) 
    
    proof
    
      set T = (
    tree p); 
    
      assume
    
      
    
    A1: p is 
    Tree-yielding;
    
      then
    
      
    
    A2: ( 
    rng p) is 
    constituted-Trees;
    
      thus (T
    -level 1) 
    = { 
    <*n*> : n
    < ( 
    len p) } 
    
      proof
    
        thus (T
    -level 1) 
    c= { 
    <*n*> : n
    < ( 
    len p) } 
    
        proof
    
          let x be
    object;
    
          assume x
    in (T 
    -level 1); 
    
          then
    
          consider t be
    Element of T such that 
    
          
    
    A3: x 
    = t and 
    
          
    
    A4: ( 
    len t) 
    = 1; 
    
          
    
          
    
    A5: t 
    =  
    <*(t
    . 1)*> by 
    A4,
    FINSEQ_1: 40;
    
          then
    
          consider n, q such that
    
          
    
    A6: n 
    < ( 
    len p) and q 
    in (p 
    . (n 
    + 1)) and 
    
          
    
    A7: t 
    = ( 
    <*n*>
    ^ q) by 
    A1,
    Def15;
    
          t
    =  
    <*n*> by
    A5,
    A7,
    FINSEQ_1: 88;
    
          hence thesis by
    A3,
    A6;
    
        end;
    
        let x be
    object;
    
        assume x
    in { 
    <*n*> : n
    < ( 
    len p) }; 
    
        then
    
        consider n such that
    
        
    
    A8: x 
    =  
    <*n*> and
    
        
    
    A9: n 
    < ( 
    len p); 
    
        (p
    . (n 
    + 1)) 
    in ( 
    rng p) by 
    A9,
    Lm3;
    
        then
    
        
    
    A10: 
    {}  
    in (p 
    . (n 
    + 1)) by 
    A2,
    TREES_1: 22;
    
        (
    <*n*>
    ^  
    {} ) 
    =  
    <*n*> by
    FINSEQ_1: 34;
    
        then
    
        reconsider t =
    <*n*> as
    Element of T by 
    A1,
    A9,
    A10,
    Def15;
    
        (
    len t) 
    = 1 by 
    FINSEQ_1: 39;
    
        hence thesis by
    A8;
    
      end;
    
      let n be
    Element of 
    NAT ; 
    
      assume
    
      
    
    A11: n 
    < ( 
    len p); 
    
      then (p
    . (n 
    + 1)) 
    in ( 
    rng p) by 
    Lm3;
    
      then
    
      reconsider S = (p
    . (n 
    + 1)) as 
    Tree by 
    A2;
    
      
    
      
    
    A12: 
    {}  
    in S by 
    TREES_1: 22;
    
      (
    <*n*>
    ^  
    {} ) 
    =  
    <*n*> by
    FINSEQ_1: 34;
    
      then
    
      
    
    A13: 
    <*n*>
    in T by 
    A1,
    A11,
    A12,
    Def15;
    
      (T
    |  
    <*n*>)
    = S 
    
      proof
    
        let r be
    FinSequence of 
    NAT ; 
    
        thus r
    in (T 
    |  
    <*n*>) implies r
    in S 
    
        proof
    
          assume r
    in (T 
    |  
    <*n*>);
    
          then (
    <*n*>
    ^ r) 
    in T by 
    A13,
    TREES_1:def 6;
    
          then
    
          consider m be
    Nat, q such that m 
    < ( 
    len p) and 
    
          
    
    A14: q 
    in (p 
    . (m 
    + 1)) and 
    
          
    
    A15: ( 
    <*n*>
    ^ r) 
    = ( 
    <*m*>
    ^ q) by 
    A1,
    Def15;
    
          
    
          
    
    A16: (( 
    <*n*>
    ^ r) 
    . 1) 
    = n by 
    FINSEQ_1: 41;
    
          ((
    <*m*>
    ^ q) 
    . 1) 
    = m by 
    FINSEQ_1: 41;
    
          hence thesis by
    A14,
    A15,
    A16,
    FINSEQ_1: 33;
    
        end;
    
        assume r
    in S; 
    
        then
    
        
    
    A17: ( 
    <*n*>
    ^ r) 
    in T by 
    A1,
    A11,
    Def15;
    
        then
    <*n*>
    in T by 
    TREES_1: 21;
    
        hence thesis by
    A17,
    TREES_1:def 6;
    
      end;
    
      hence thesis;
    
    end;
    
    theorem :: 
    
    TREES_3:50
    
    for p,q be
    Tree-yielding  
    FinSequence st ( 
    tree p) 
    = ( 
    tree q) holds p 
    = q 
    
    proof
    
      let p,q be
    Tree-yielding  
    FinSequence such that 
    
      
    
    A1: ( 
    tree p) 
    = ( 
    tree q); 
    
      
    
      
    
    A2: (( 
    tree p) 
    -level 1) 
    = { 
    <*n*> : n
    < ( 
    len p) } by 
    Th49;
    
      
    
      
    
    A3: (( 
    tree q) 
    -level 1) 
    = { 
    <*k*> : k
    < ( 
    len q) } by 
    Th49;
    
      
    
    A4: 
    
      now
    
        let n1,n2 be
    Element of 
    NAT ; 
    
        assume {
    <*i*> : i
    < n1 } 
    = { 
    <*k*> : k
    < n2 } & n1 
    < n2; 
    
        then
    <*n1*>
    in { 
    <*i*> : i
    < n1 }; 
    
        then
    
        
    
    A5: ex i st ( 
    <*n1*>
    =  
    <*i*>) & (i
    < n1); 
    
        (
    <*n1*>
    . 1) 
    = n1 by 
    FINSEQ_1: 40;
    
        hence contradiction by
    A5,
    FINSEQ_1: 40;
    
      end;
    
      then
    
      
    
    A6: not ( 
    len p) 
    < ( 
    len q) by 
    A1,
    A2,
    A3;
    
      
    
      
    
    A7: not ( 
    len p) 
    > ( 
    len q) by 
    A1,
    A2,
    A3,
    A4;
    
      then
    
      
    
    A8: ( 
    len p) 
    = ( 
    len q) by 
    A6,
    XXREAL_0: 1;
    
      now
    
        let i be
    Nat;
    
        assume that
    
        
    
    A9: i 
    >= 1 and 
    
        
    
    A10: i 
    <= ( 
    len p); 
    
        consider k be
    Nat such that 
    
        
    
    A11: i 
    = (1 
    + k) by 
    A9,
    NAT_1: 10;
    
        reconsider k as
    Element of 
    NAT by 
    ORDINAL1:def 12;
    
        
    
        
    
    A12: k 
    < ( 
    len p) by 
    A10,
    A11,
    NAT_1: 13;
    
        then (p
    . i) 
    = (( 
    tree p) 
    |  
    <*k*>) by
    A11,
    Th49;
    
        hence (p
    . i) 
    = (q 
    . i) by 
    A1,
    A8,
    A11,
    A12,
    Th49;
    
      end;
    
      hence thesis by
    A6,
    A7,
    FINSEQ_1: 14,
    XXREAL_0: 1;
    
    end;
    
    theorem :: 
    
    TREES_3:51
    
    
    
    
    
    Th51: for p1,p2 be 
    Tree-yielding  
    FinSequence, T be 
    Tree holds p 
    in T iff ( 
    <*(
    len p1)*> 
    ^ p) 
    in ( 
    tree ((p1 
    ^  
    <*T*>)
    ^ p2)) 
    
    proof
    
      let p1,p2 be
    Tree-yielding  
    FinSequence, T be 
    Tree;
    
      
    
      
    
    A1: ( 
    len ((p1 
    ^  
    <*T*>)
    ^ p2)) 
    = (( 
    len (p1 
    ^  
    <*T*>))
    + ( 
    len p2)) by 
    FINSEQ_1: 22;
    
      
    
      
    
    A2: ( 
    len (p1 
    ^  
    <*T*>))
    = (( 
    len p1) 
    + ( 
    len  
    <*T*>)) by
    FINSEQ_1: 22;
    
      
    
      
    
    A3: ( 
    len  
    <*T*>)
    = 1 by 
    FINSEQ_1: 40;
    
      
    
      
    
    A4: ((( 
    len p1) 
    + 1) 
    + ( 
    len p2)) 
    = ((( 
    len p1) 
    + ( 
    len p2)) 
    + 1); 
    
      (
    len p1) 
    <= (( 
    len p1) 
    + ( 
    len p2)) by 
    NAT_1: 11;
    
      then
    
      
    
    A5: ( 
    len p1) 
    < ( 
    len ((p1 
    ^  
    <*T*>)
    ^ p2)) by 
    A1,
    A2,
    A3,
    A4,
    NAT_1: 13;
    
      ((
    len p1) 
    + 1) 
    >= 1 by 
    NAT_1: 11;
    
      then ((
    len p1) 
    + 1) 
    in ( 
    dom (p1 
    ^  
    <*T*>)) by
    A2,
    A3,
    FINSEQ_3: 25;
    
      
    
      then
    
      
    
    A6: (((p1 
    ^  
    <*T*>)
    ^ p2) 
    . (( 
    len p1) 
    + 1)) 
    = ((p1 
    ^  
    <*T*>)
    . (( 
    len p1) 
    + 1)) by 
    FINSEQ_1:def 7
    
      .= T by
    FINSEQ_1: 42;
    
      hence p
    in T implies ( 
    <*(
    len p1)*> 
    ^ p) 
    in ( 
    tree ((p1 
    ^  
    <*T*>)
    ^ p2)) by 
    A5,
    Def15;
    
      assume (
    <*(
    len p1)*> 
    ^ p) 
    in ( 
    tree ((p1 
    ^  
    <*T*>)
    ^ p2)); 
    
      then
    
      consider n, q such that n
    < ( 
    len ((p1 
    ^  
    <*T*>)
    ^ p2)) and 
    
      
    
    A7: q 
    in (((p1 
    ^  
    <*T*>)
    ^ p2) 
    . (n 
    + 1)) and 
    
      
    
    A8: ( 
    <*(
    len p1)*> 
    ^ p) 
    = ( 
    <*n*>
    ^ q) by 
    Def15;
    
      
    
      
    
    A9: (( 
    <*(
    len p1)*> 
    ^ p) 
    . 1) 
    = ( 
    len p1) by 
    FINSEQ_1: 41;
    
      ((
    <*n*>
    ^ q) 
    . 1) 
    = n by 
    FINSEQ_1: 41;
    
      hence thesis by
    A6,
    A7,
    A8,
    A9,
    FINSEQ_1: 33;
    
    end;
    
    theorem :: 
    
    TREES_3:52
    
    
    
    
    
    Th52: ( 
    tree  
    {} ) 
    = ( 
    elementary_tree  
    0 ) 
    
    proof
    
      let p be
    FinSequence of 
    NAT ; 
    
      thus p
    in ( 
    tree  
    {} ) implies p 
    in ( 
    elementary_tree  
    0 ) 
    
      proof
    
        assume p
    in ( 
    tree  
    {} ); 
    
        then
    
        
    
    A1: p 
    =  
    {} or ex n, q st n 
    < ( 
    len  
    {} ) & q 
    in ( 
    {}  
    . (n 
    + 1)) & p 
    = ( 
    <*n*>
    ^ q) by 
    Def15;
    
        assume not thesis;
    
        hence contradiction by
    A1,
    TARSKI:def 1,
    TREES_1: 29;
    
      end;
    
      assume p
    in ( 
    elementary_tree  
    0 ); 
    
      then p
    =  
    {} by 
    TARSKI:def 1,
    TREES_1: 29;
    
      hence thesis by
    Def15;
    
    end;
    
    theorem :: 
    
    TREES_3:53
    
    
    
    
    
    Th53: p is 
    Tree-yielding implies ( 
    elementary_tree ( 
    len p)) 
    c= ( 
    tree p) 
    
    proof
    
      assume
    
      
    
    A1: p is 
    Tree-yielding;
    
      then
    
      
    
    A2: ( 
    rng p) is 
    constituted-Trees;
    
      let q be
    object;
    
      assume q
    in ( 
    elementary_tree ( 
    len p)); 
    
      then q
    in { 
    <*n*> : n
    < ( 
    len p) } or q 
    in  
    {
    {} } by 
    XBOOLE_0:def 3;
    
      then
    
      
    
    A3: (ex n st q 
    =  
    <*n*> & n
    < ( 
    len p)) or q 
    =  
    {} by 
    TARSKI:def 1;
    
      assume
    
      
    
    A4: not thesis; 
    
      then
    
      consider n such that
    
      
    
    A5: q 
    =  
    <*n*> and
    
      
    
    A6: n 
    < ( 
    len p) by 
    A3,
    TREES_1: 22;
    
      (p
    . (n 
    + 1)) 
    in ( 
    rng p) by 
    A6,
    Lm3;
    
      then
    
      reconsider t = (p
    . (n 
    + 1)) as 
    Tree by 
    A2;
    
      
    
      
    
    A7: 
    {}  
    in t by 
    TREES_1: 22;
    
      (
    <*n*>
    ^  
    {} ) 
    = q by 
    A5,
    FINSEQ_1: 34;
    
      hence thesis by
    A1,
    A4,
    A6,
    A7,
    Def15;
    
    end;
    
    theorem :: 
    
    TREES_3:54
    
    
    
    
    
    Th54: ( 
    elementary_tree i) 
    = ( 
    tree (i 
    |-> ( 
    elementary_tree  
    0 ))) 
    
    proof
    
      set p = (i
    |-> ( 
    elementary_tree  
    0 )); 
    
      let q be
    FinSequence of 
    NAT ; 
    
      
    
      
    
    A1: ( 
    len p) 
    = i by 
    CARD_1:def 7;
    
      then (
    elementary_tree i) 
    c= ( 
    tree p) by 
    Th53;
    
      hence q
    in ( 
    elementary_tree i) implies q 
    in ( 
    tree p); 
    
      assume q
    in ( 
    tree p); 
    
      then
    
      
    
    A2: q 
    =  
    {} or ex n, r st n 
    < ( 
    len p) & r 
    in (p 
    . (n 
    + 1)) & q 
    = ( 
    <*n*>
    ^ r) by 
    Def15;
    
      now
    
        given n, r such that
    
        
    
    A3: n 
    < ( 
    len p) and 
    
        
    
    A4: r 
    in (p 
    . (n 
    + 1)) and 
    
        
    
    A5: q 
    = ( 
    <*n*>
    ^ r); 
    
        p
    = (( 
    Seg i) 
    --> ( 
    elementary_tree  
    0 )) by 
    FINSEQ_2:def 2;
    
        then
    
        
    
    A6: ( 
    rng p) 
    c=  
    {(
    elementary_tree  
    0 )} by 
    FUNCOP_1: 13;
    
        (p
    . (n 
    + 1)) 
    in ( 
    rng p) by 
    A3,
    Lm3;
    
        then (p
    . (n 
    + 1)) 
    = ( 
    elementary_tree  
    0 ) by 
    A6,
    TARSKI:def 1;
    
        then r
    =  
    {} by 
    A4,
    TARSKI:def 1,
    TREES_1: 29;
    
        then q
    =  
    <*n*> by
    A5,
    FINSEQ_1: 34;
    
        hence thesis by
    A1,
    A3,
    TREES_1: 28;
    
      end;
    
      hence thesis by
    A2,
    TREES_1: 22;
    
    end;
    
    theorem :: 
    
    TREES_3:55
    
    
    
    
    
    Th55: for T be 
    Tree, p be 
    Tree-yielding  
    FinSequence holds ( 
    tree (p 
    ^  
    <*T*>))
    = ((( 
    tree p) 
    \/ ( 
    elementary_tree (( 
    len p) 
    + 1))) 
    with-replacement ( 
    <*(
    len p)*>,T)) 
    
    proof
    
      let T be
    Tree, p be 
    Tree-yielding  
    FinSequence;
    
      set W1 = (
    elementary_tree (( 
    len p) 
    + 1)), W2 = (( 
    tree p) 
    \/ W1), W = (W2 
    with-replacement ( 
    <*(
    len p)*>,T)); 
    
      (
    len  
    <*T*>)
    = 1 by 
    FINSEQ_1: 40;
    
      then
    
      
    
    A1: ( 
    len (p 
    ^  
    <*T*>))
    = (( 
    len p) 
    + 1) by 
    FINSEQ_1: 22;
    
      (
    len p) 
    < (( 
    len p) 
    + 1) by 
    NAT_1: 13;
    
      then
    <*(
    len p)*> 
    in W1 by 
    TREES_1: 28;
    
      then
    
      
    
    A2: 
    <*(
    len p)*> 
    in W2 by 
    XBOOLE_0:def 3;
    
      let q be
    FinSequence of 
    NAT ; 
    
      thus q
    in ( 
    tree (p 
    ^  
    <*T*>)) implies q
    in W 
    
      proof
    
        assume q
    in ( 
    tree (p 
    ^  
    <*T*>));
    
        then
    
        
    
    A3: q 
    =  
    {} or ex n, r st n 
    < ( 
    len (p 
    ^  
    <*T*>)) & r
    in ((p 
    ^  
    <*T*>)
    . (n 
    + 1)) & q 
    = ( 
    <*n*>
    ^ r) by 
    Def15;
    
        now
    
          given n, r such that
    
          
    
    A4: n 
    < ( 
    len (p 
    ^  
    <*T*>)) and
    
          
    
    A5: r 
    in ((p 
    ^  
    <*T*>)
    . (n 
    + 1)) and 
    
          
    
    A6: q 
    = ( 
    <*n*>
    ^ r); 
    
          reconsider r as
    FinSequence of 
    NAT by 
    A6,
    FINSEQ_1: 36;
    
          
    
          
    
    A7: n 
    <= ( 
    len p) by 
    A1,
    A4,
    NAT_1: 13;
    
          
    
    A8: 
    
          now
    
            assume
    
            
    
    A9: n 
    < ( 
    len p); 
    
            then (n
    + 1) 
    in ( 
    dom p) by 
    Lm3;
    
            then ((p
    ^  
    <*T*>)
    . (n 
    + 1)) 
    = (p 
    . (n 
    + 1)) by 
    FINSEQ_1:def 7;
    
            then q
    in ( 
    tree p) by 
    A5,
    A6,
    A9,
    Def15;
    
            then
    
            
    
    A10: q 
    in W2 by 
    XBOOLE_0:def 3;
    
             not
    <*(
    len p)*> 
    is_a_prefix_of ( 
    <*n*>
    ^ r) by 
    A9,
    TREES_1: 50;
    
            then not
    <*(
    len p)*> 
    is_a_proper_prefix_of ( 
    <*n*>
    ^ r); 
    
            hence thesis by
    A2,
    A6,
    A10,
    TREES_1:def 9;
    
          end;
    
          now
    
            assume
    
            
    
    A11: n 
    = ( 
    len p); 
    
            then
    
            
    
    A12: ((p 
    ^  
    <*T*>)
    . (n 
    + 1)) 
    = T by 
    FINSEQ_1: 42;
    
            r
    = r; 
    
            hence thesis by
    A2,
    A5,
    A6,
    A11,
    A12,
    TREES_1:def 9;
    
          end;
    
          hence thesis by
    A7,
    A8,
    XXREAL_0: 1;
    
        end;
    
        hence thesis by
    A3,
    TREES_1: 22;
    
      end;
    
      assume
    
      
    
    A13: q 
    in W; 
    
      assume
    
      
    
    A14: not thesis; 
    
      
    
    A15: 
    
      now
    
        given r be
    FinSequence of 
    NAT such that 
    
        
    
    A16: r 
    in T and 
    
        
    
    A17: q 
    = ( 
    <*(
    len p)*> 
    ^ r); 
    
        
    
        
    
    A18: ( 
    len p) 
    < (( 
    len p) 
    + 1) by 
    NAT_1: 13;
    
        ((p
    ^  
    <*T*>)
    . (( 
    len p) 
    + 1)) 
    = T by 
    FINSEQ_1: 42;
    
        hence thesis by
    A1,
    A14,
    A16,
    A17,
    A18,
    Def15;
    
      end;
    
      now
    
        assume q
    in W2; 
    
        then
    
        
    
    A19: q 
    in ( 
    tree p) or q 
    in W1 by 
    XBOOLE_0:def 3;
    
        
    
    A20: 
    
        now
    
          assume q
    in ( 
    tree p); 
    
          then q
    =  
    {} & 
    {}  
    in ( 
    tree (p 
    ^  
    <*T*>)) or ex n, r st n
    < ( 
    len p) & r 
    in (p 
    . (n 
    + 1)) & q 
    = ( 
    <*n*>
    ^ r) by 
    Def15;
    
          then
    
          consider n, r such that
    
          
    
    A21: n 
    < ( 
    len p) and 
    
          
    
    A22: r 
    in (p 
    . (n 
    + 1)) and 
    
          
    
    A23: q 
    = ( 
    <*n*>
    ^ r) by 
    A14;
    
          (n
    + 1) 
    in ( 
    dom p) by 
    A21,
    Lm3;
    
          then
    
          
    
    A24: (p 
    . (n 
    + 1)) 
    = ((p 
    ^  
    <*T*>)
    . (n 
    + 1)) by 
    FINSEQ_1:def 7;
    
          n
    < ( 
    len (p 
    ^  
    <*T*>)) by
    A1,
    A21,
    NAT_1: 13;
    
          hence thesis by
    A14,
    A22,
    A23,
    A24,
    Def15;
    
        end;
    
        now
    
          assume
    
          
    
    A25: not q 
    in ( 
    tree p); 
    
          then q
    =  
    {} or ex n st n 
    < (( 
    len p) 
    + 1) & q 
    =  
    <*n*> by
    A19,
    TREES_1: 30;
    
          then
    
          consider n such that
    
          
    
    A26: n 
    < (( 
    len p) 
    + 1) and 
    
          
    
    A27: q 
    =  
    <*n*> by
    A14,
    TREES_1: 22;
    
          
    
    A28: 
    
          now
    
            assume n
    < ( 
    len p); 
    
            then
    
            
    
    A29: (p 
    . (n 
    + 1)) 
    in ( 
    rng p) by 
    Lm3;
    
            (
    rng p) is 
    constituted-Trees by 
    Def9;
    
            hence
    {}  
    in (p 
    . (n 
    + 1)) by 
    A29,
    TREES_1: 22;
    
          end;
    
          
    
          
    
    A30: q 
    = ( 
    <*n*>
    ^  
    {} ) by 
    A27,
    FINSEQ_1: 34;
    
          then
    
          
    
    A31: n 
    >= ( 
    len p) by 
    A25,
    A28,
    Def15;
    
          n
    <= ( 
    len p) by 
    A26,
    NAT_1: 13;
    
          then
    
          
    
    A32: ( 
    len p) 
    = n by 
    A31,
    XXREAL_0: 1;
    
          
    
          
    
    A33: n 
    < (n 
    + 1) by 
    NAT_1: 13;
    
          
    
          
    
    A34: ((p 
    ^  
    <*T*>)
    . (( 
    len p) 
    + 1)) 
    = T by 
    FINSEQ_1: 42;
    
          
    {}  
    in T by 
    TREES_1: 22;
    
          hence thesis by
    A1,
    A14,
    A30,
    A32,
    A33,
    A34,
    Def15;
    
        end;
    
        hence thesis by
    A20;
    
      end;
    
      hence thesis by
    A2,
    A13,
    A15,
    TREES_1:def 9;
    
    end;
    
    theorem :: 
    
    TREES_3:56
    
    for p be
    Tree-yielding  
    FinSequence holds ( 
    tree (p 
    ^  
    <*(
    elementary_tree  
    0 )*>)) 
    = (( 
    tree p) 
    \/ ( 
    elementary_tree (( 
    len p) 
    + 1))) 
    
    proof
    
      let p be
    Tree-yielding  
    FinSequence;
    
      (
    len p) 
    < (( 
    len p) 
    + 1) by 
    NAT_1: 13;
    
      then
    
      
    
    A1: 
    <*(
    len p)*> 
    in ( 
    elementary_tree (( 
    len p) 
    + 1)) by 
    TREES_1: 28;
    
      then
    
      
    
    A2: 
    <*(
    len p)*> 
    in (( 
    tree p) 
    \/ ( 
    elementary_tree (( 
    len p) 
    + 1))) by 
    XBOOLE_0:def 3;
    
      
    {}  
    in (( 
    elementary_tree (( 
    len p) 
    + 1)) 
    |  
    <*(
    len p)*>) by 
    TREES_1: 22;
    
      then
    
      
    
    A3: ( 
    elementary_tree  
    0 ) 
    c= (( 
    elementary_tree (( 
    len p) 
    + 1)) 
    |  
    <*(
    len p)*>) by 
    TREES_1: 29,
    ZFMISC_1: 31;
    
      
    
      
    
    A4: (( 
    elementary_tree (( 
    len p) 
    + 1)) 
    |  
    <*(
    len p)*>) 
    c= ( 
    elementary_tree  
    0 ) 
    
      proof
    
        let x be
    object;
    
        assume x
    in (( 
    elementary_tree (( 
    len p) 
    + 1)) 
    |  
    <*(
    len p)*>); 
    
        then
    
        reconsider q = x as
    Element of (( 
    elementary_tree (( 
    len p) 
    + 1)) 
    |  
    <*(
    len p)*>); 
    
        (
    <*(
    len p)*> 
    ^ q) 
    in ( 
    elementary_tree (( 
    len p) 
    + 1)) by 
    A1,
    TREES_1:def 6;
    
        then
    
        consider n such that n
    < (( 
    len p) 
    + 1) and 
    
        
    
    A5: ( 
    <*(
    len p)*> 
    ^ q) 
    =  
    <*n*> by
    TREES_1: 30;
    
        
    
        
    
    A6: ( 
    len  
    <*n*>)
    = 1 by 
    FINSEQ_1: 40;
    
        (
    len  
    <*(
    len p)*>) 
    = 1 by 
    FINSEQ_1: 40;
    
        then (1
    + ( 
    len q)) 
    = (1 
    +  
    0 ) by 
    A5,
    A6,
    FINSEQ_1: 22;
    
        then x
    =  
    {} ; 
    
        hence thesis by
    TREES_1: 22;
    
      end;
    
      now
    
        let n, r;
    
        assume
    <*(
    len p)*> 
    = ( 
    <*n*>
    ^ r); 
    
        
    
        then n
    = ( 
    <*(
    len p)*> 
    . 1) by 
    FINSEQ_1: 41
    
        .= (
    len p) by 
    FINSEQ_1: 40;
    
        hence not n
    < ( 
    len p); 
    
      end;
    
      then not ex n, q st n
    < ( 
    len p) & q 
    in (p 
    . (n 
    + 1)) & 
    <*(
    len p)*> 
    = ( 
    <*n*>
    ^ q); 
    
      then not
    <*(
    len p)*> 
    in ( 
    tree p) by 
    Def15;
    
      
    
      then
    
      
    
    A7: ((( 
    tree p) 
    \/ ( 
    elementary_tree (( 
    len p) 
    + 1))) 
    |  
    <*(
    len p)*>) 
    = (( 
    elementary_tree (( 
    len p) 
    + 1)) 
    |  
    <*(
    len p)*>) by 
    A2,
    Th47
    
      .= (
    elementary_tree  
    0 ) by 
    A3,
    A4;
    
      
    
      thus (
    tree (p 
    ^  
    <*(
    elementary_tree  
    0 )*>)) 
    = ((( 
    tree p) 
    \/ ( 
    elementary_tree (( 
    len p) 
    + 1))) 
    with-replacement ( 
    <*(
    len p)*>,( 
    elementary_tree  
    0 ))) by 
    Th55
    
      .= ((
    tree p) 
    \/ ( 
    elementary_tree (( 
    len p) 
    + 1))) by 
    A2,
    A7,
    TREES_2: 6;
    
    end;
    
    theorem :: 
    
    TREES_3:57
    
    
    
    
    
    Th57: for p,q be 
    Tree-yielding  
    FinSequence holds for T1,T2 be 
    Tree holds ( 
    tree ((p 
    ^  
    <*T1*>)
    ^ q)) 
    = (( 
    tree ((p 
    ^  
    <*T2*>)
    ^ q)) 
    with-replacement ( 
    <*(
    len p)*>,T1)) 
    
    proof
    
      let p,q be
    Tree-yielding  
    FinSequence, T1,T2 be 
    Tree;
    
      set w1 = ((p
    ^  
    <*T1*>)
    ^ q), W1 = ( 
    tree w1), w2 = ((p 
    ^  
    <*T2*>)
    ^ q), W2 = ( 
    tree w2), W = (W2 
    with-replacement ( 
    <*(
    len p)*>,T1)); 
    
      
    
      
    
    A1: ( 
    len  
    <*T1*>)
    = 1 by 
    FINSEQ_1: 40;
    
      
    
      
    
    A2: ( 
    len  
    <*T2*>)
    = 1 by 
    FINSEQ_1: 40;
    
      
    
      
    
    A3: ( 
    len (p 
    ^  
    <*T1*>))
    = (( 
    len p) 
    + 1) by 
    A1,
    FINSEQ_1: 22;
    
      
    
      
    
    A4: ( 
    len w1) 
    = (( 
    len (p 
    ^  
    <*T1*>))
    + ( 
    len q)) by 
    FINSEQ_1: 22;
    
      
    
      
    
    A5: ( 
    len (p 
    ^  
    <*T2*>))
    = (( 
    len p) 
    + 1) by 
    A2,
    FINSEQ_1: 22;
    
      
    
      
    
    A6: ( 
    len w2) 
    = (( 
    len (p 
    ^  
    <*T2*>))
    + ( 
    len q)) by 
    FINSEQ_1: 22;
    
      ((
    len p) 
    + 1) 
    <= ((( 
    len p) 
    + 1) 
    + ( 
    len q)) by 
    NAT_1: 11;
    
      then
    
      
    
    A7: ( 
    len p) 
    < ((( 
    len p) 
    + 1) 
    + ( 
    len q)) by 
    NAT_1: 13;
    
      then
    
      
    
    A8: (w2 
    . (( 
    len p) 
    + 1)) 
    in ( 
    rng w2) by 
    A5,
    A6,
    Lm3;
    
      (
    rng w2) is 
    constituted-Trees by 
    Def9;
    
      then
    
      
    
    A9: 
    {}  
    in (w2 
    . (( 
    len p) 
    + 1)) by 
    A8,
    TREES_1: 22;
    
      (
    <*(
    len p)*> 
    ^  
    {} ) 
    =  
    <*(
    len p)*> by 
    FINSEQ_1: 34;
    
      then
    
      
    
    A10: 
    <*(
    len p)*> 
    in W2 by 
    A5,
    A6,
    A7,
    A9,
    Def15;
    
      let r be
    FinSequence of 
    NAT ; 
    
      thus r
    in W1 implies r 
    in W 
    
      proof
    
        assume r
    in W1; 
    
        then
    
        
    
    A11: r 
    =  
    {} or ex n, s st n 
    < ( 
    len w1) & s 
    in (w1 
    . (n 
    + 1)) & r 
    = ( 
    <*n*>
    ^ s) by 
    Def15;
    
        now
    
          given n, s such that
    
          
    
    A12: n 
    < ( 
    len w1) and 
    
          
    
    A13: s 
    in (w1 
    . (n 
    + 1)) and 
    
          
    
    A14: r 
    = ( 
    <*n*>
    ^ s); 
    
          reconsider s as
    FinSequence of 
    NAT by 
    A14,
    FINSEQ_1: 36;
    
          
    
          
    
    A15: n 
    <= ( 
    len p) or n 
    >= (( 
    len p) 
    + 1) by 
    NAT_1: 13;
    
          
    
    A16: 
    
          now
    
            assume
    
            
    
    A17: n 
    < ( 
    len p); 
    
            then
    
            
    
    A18: (n 
    + 1) 
    in ( 
    dom p) by 
    Lm3;
    
            
    
            
    
    A19: ( 
    dom p) 
    c= ( 
    dom (p 
    ^  
    <*T2*>)) by
    FINSEQ_1: 26;
    
            
    
            
    
    A20: ( 
    dom p) 
    c= ( 
    dom (p 
    ^  
    <*T1*>)) by
    FINSEQ_1: 26;
    
            
    
            
    
    A21: ((p 
    ^  
    <*T2*>)
    . (n 
    + 1)) 
    = (p 
    . (n 
    + 1)) by 
    A18,
    FINSEQ_1:def 7;
    
            
    
            
    
    A22: ((p 
    ^  
    <*T1*>)
    . (n 
    + 1)) 
    = (p 
    . (n 
    + 1)) by 
    A18,
    FINSEQ_1:def 7;
    
            
    
            
    
    A23: (w2 
    . (n 
    + 1)) 
    = (p 
    . (n 
    + 1)) by 
    A18,
    A19,
    A21,
    FINSEQ_1:def 7;
    
            (w1
    . (n 
    + 1)) 
    = (p 
    . (n 
    + 1)) by 
    A18,
    A20,
    A22,
    FINSEQ_1:def 7;
    
            then
    
            
    
    A24: r 
    in W2 by 
    A3,
    A4,
    A5,
    A6,
    A12,
    A13,
    A14,
    A23,
    Def15;
    
             not
    <*(
    len p)*> 
    is_a_prefix_of ( 
    <*n*>
    ^ s) by 
    A17,
    TREES_1: 50;
    
            then not
    <*(
    len p)*> 
    is_a_proper_prefix_of ( 
    <*n*>
    ^ s); 
    
            hence thesis by
    A10,
    A14,
    A24,
    TREES_1:def 9;
    
          end;
    
          
    
    A25: 
    
          now
    
            assume
    
            
    
    A26: n 
    = ( 
    len p); 
    
            then
    
            
    
    A27: ((p 
    ^  
    <*T1*>)
    . (n 
    + 1)) 
    = T1 by 
    FINSEQ_1: 42;
    
            n
    < (( 
    len p) 
    + 1) by 
    A26,
    NAT_1: 13;
    
            then (n
    + 1) 
    in ( 
    dom (p 
    ^  
    <*T1*>)) by
    A3,
    Lm3;
    
            then
    
            
    
    A28: (w1 
    . (n 
    + 1)) 
    = T1 by 
    A27,
    FINSEQ_1:def 7;
    
            s
    = s; 
    
            hence thesis by
    A10,
    A13,
    A14,
    A26,
    A28,
    TREES_1:def 9;
    
          end;
    
          now
    
            assume that
    
            
    
    A29: n 
    >= (( 
    len p) 
    + 1) and 
    
            
    
    A30: n 
    < ((( 
    len p) 
    + 1) 
    + ( 
    len q)); 
    
            
    
            
    
    A31: (n 
    + 1) 
    >= ((( 
    len p) 
    + 1) 
    + 1) by 
    A29,
    XREAL_1: 7;
    
            
    
            
    
    A32: (n 
    + 1) 
    <= ((( 
    len p) 
    + 1) 
    + ( 
    len q)) by 
    A30,
    NAT_1: 13;
    
            then
    
            
    
    A33: (w1 
    . (n 
    + 1)) 
    = (q 
    . ((n 
    + 1) 
    - (( 
    len p) 
    + 1))) by 
    A3,
    A31,
    FINSEQ_1: 23;
    
            (w2
    . (n 
    + 1)) 
    = (q 
    . ((n 
    + 1) 
    - (( 
    len p) 
    + 1))) by 
    A5,
    A31,
    A32,
    FINSEQ_1: 23;
    
            then
    
            
    
    A34: r 
    in W2 by 
    A3,
    A4,
    A5,
    A6,
    A12,
    A13,
    A14,
    A33,
    Def15;
    
            (
    len p) 
    <> n by 
    A29,
    NAT_1: 13;
    
            then not
    <*(
    len p)*> 
    is_a_prefix_of ( 
    <*n*>
    ^ s) by 
    TREES_1: 50;
    
            then not
    <*(
    len p)*> 
    is_a_proper_prefix_of ( 
    <*n*>
    ^ s); 
    
            hence thesis by
    A10,
    A14,
    A34,
    TREES_1:def 9;
    
          end;
    
          hence thesis by
    A3,
    A12,
    A15,
    A16,
    A25,
    FINSEQ_1: 22,
    XXREAL_0: 1;
    
        end;
    
        hence thesis by
    A11,
    TREES_1: 22;
    
      end;
    
      assume r
    in W; 
    
      then
    
      
    
    A35: r 
    in W2 & not 
    <*(
    len p)*> 
    is_a_proper_prefix_of r or ex s be 
    FinSequence of 
    NAT st s 
    in T1 & r 
    = ( 
    <*(
    len p)*> 
    ^ s) by 
    A10,
    TREES_1:def 9;
    
      assume
    
      
    
    A36: not r 
    in W1; 
    
      then
    
      
    
    A37: r 
    <>  
    {} by 
    Def15;
    
      
    
      
    
    A38: ((p 
    ^  
    <*T1*>)
    . (( 
    len p) 
    + 1)) 
    = T1 by 
    FINSEQ_1: 42;
    
      
    
      
    
    A39: ( 
    len p) 
    < (( 
    len p) 
    + 1) by 
    NAT_1: 13;
    
      ((
    len p) 
    + 1) 
    <= ((( 
    len p) 
    + 1) 
    + ( 
    len q)) by 
    NAT_1: 11;
    
      then
    
      
    
    A40: ( 
    len p) 
    < ( 
    len w2) by 
    A5,
    A6,
    NAT_1: 13;
    
      ((
    len p) 
    + 1) 
    in ( 
    dom (p 
    ^  
    <*T1*>)) by
    A3,
    A39,
    Lm3;
    
      then
    
      
    
    A41: (w1 
    . (( 
    len p) 
    + 1)) 
    = T1 by 
    A38,
    FINSEQ_1:def 7;
    
      then
    
      consider n, s such that
    
      
    
    A42: n 
    < ( 
    len w2) and 
    
      
    
    A43: s 
    in (w2 
    . (n 
    + 1)) and 
    
      
    
    A44: r 
    = ( 
    <*n*>
    ^ s) by 
    A3,
    A4,
    A5,
    A6,
    A35,
    A36,
    A37,
    A40,
    Def15;
    
      reconsider s as
    FinSequence of 
    NAT by 
    A44,
    FINSEQ_1: 36;
    
      
    
      
    
    A45: n 
    = ( 
    len p) implies s 
    =  
    {} by 
    A3,
    A4,
    A5,
    A6,
    A35,
    A36,
    A41,
    A42,
    A44,
    Def15,
    TREES_1: 10;
    
      
    {}  
    in T1 by 
    TREES_1: 22;
    
      then n
    <> ( 
    len p) by 
    A3,
    A4,
    A5,
    A6,
    A36,
    A41,
    A42,
    A44,
    A45,
    Def15;
    
      then n
    < ( 
    len p) or n 
    > ( 
    len p) & 1 
    <= 1 by 
    XXREAL_0: 1;
    
      then 1
    <= (1 
    + n) & (1 
    + n) 
    = (n 
    + 1) & (n 
    + 1) 
    <= ( 
    len p) & w1 
    = (p 
    ^ ( 
    <*T1*>
    ^ q)) & w2 
    = (p 
    ^ ( 
    <*T2*>
    ^ q)) or (( 
    len p) 
    + 1) 
    < (n 
    + 1) & (n 
    + 1) 
    <= ( 
    len w1) by 
    A3,
    A4,
    A5,
    A6,
    A42,
    FINSEQ_1: 32,
    NAT_1: 11,
    NAT_1: 13,
    XREAL_1: 6;
    
      then (w1
    . (n 
    + 1)) 
    = (p 
    . (n 
    + 1)) & (w2 
    . (n 
    + 1)) 
    = (p 
    . (n 
    + 1)) or (w1 
    . (n 
    + 1)) 
    = (q 
    . ((n 
    + 1) 
    - (( 
    len p) 
    + 1))) & (w2 
    . (n 
    + 1)) 
    = (q 
    . ((n 
    + 1) 
    - (( 
    len p) 
    + 1))) by 
    A3,
    A4,
    A5,
    A6,
    Lm1,
    FINSEQ_1: 24;
    
      hence contradiction by
    A3,
    A4,
    A5,
    A6,
    A36,
    A42,
    A43,
    A44,
    Def15;
    
    end;
    
    definition
    
      let n be
    Nat;
    
      :: original:
    <*
    
      redefine
    
      func
    
    <*n*> ->
    FinSequence of 
    NAT ; 
    
      coherence
    
      proof
    
        reconsider n as
    Element of 
    NAT by 
    ORDINAL1:def 12;
    
        
    <*n*> is
    FinSequence of 
    NAT ; 
    
        hence thesis;
    
      end;
    
    end
    
    theorem :: 
    
    TREES_3:58
    
    for T be
    Tree holds ( 
    ^ T) 
    = (( 
    elementary_tree 1) 
    with-replacement ( 
    <*
    0 *>,T)) 
    
    proof
    
      let T be
    Tree;
    
      let p be
    FinSequence of 
    NAT ; 
    
      
    
      
    
    A1: ( 
    <*T*>
    . 1) 
    = T by 
    FINSEQ_1: 40;
    
      
    
      
    
    A2: ( 
    len  
    <*T*>)
    = 1 by 
    FINSEQ_1: 40;
    
      
    
      
    
    A3: ( 
    0  
    + 1) 
    = 1; 
    
      
    
      
    
    A4: 
    {}  
    in T by 
    TREES_1: 22;
    
      
    
      
    
    A5: 
    <*
    0 *> 
    in ( 
    elementary_tree 1) by 
    TARSKI:def 2,
    TREES_1: 51;
    
      thus p
    in ( 
    ^ T) implies p 
    in (( 
    elementary_tree 1) 
    with-replacement ( 
    <*
    0 *>,T)) 
    
      proof
    
        assume
    
        
    
    A6: p 
    in ( 
    ^ T); 
    
        now
    
          assume p
    <>  
    {} ; 
    
          then
    
          consider n, q such that
    
          
    
    A7: n 
    < ( 
    len  
    <*T*>) and
    
          
    
    A8: q 
    in ( 
    <*T*>
    . (n 
    + 1)) and 
    
          
    
    A9: p 
    = ( 
    <*n*>
    ^ q) by 
    A6,
    Def15;
    
          reconsider q as
    FinSequence of 
    NAT by 
    A9,
    FINSEQ_1: 36;
    
          
    
          
    
    A10: n 
    =  
    0 by 
    A2,
    A3,
    A7,
    NAT_1: 13;
    
          p
    = ( 
    <*n*>
    ^ q) by 
    A9;
    
          hence thesis by
    A1,
    A5,
    A8,
    A10,
    TREES_1:def 9;
    
        end;
    
        hence thesis by
    TREES_1: 22;
    
      end;
    
      assume p
    in (( 
    elementary_tree 1) 
    with-replacement ( 
    <*
    0 *>,T)); 
    
      then
    
      
    
    A11: p 
    in ( 
    elementary_tree 1) & not 
    <*
    0 *> 
    is_a_proper_prefix_of p or ex r be 
    FinSequence of 
    NAT st r 
    in T & p 
    = ( 
    <*
    0 *> 
    ^ r) by 
    A5,
    TREES_1:def 9;
    
      now
    
        assume p
    in ( 
    elementary_tree 1); 
    
        then p
    =  
    {} or p 
    =  
    <*
    0 *> & (p 
    ^  
    {} ) 
    = p by 
    FINSEQ_1: 34,
    TARSKI:def 2,
    TREES_1: 51;
    
        hence thesis by
    A1,
    A2,
    A3,
    A4,
    Def15;
    
      end;
    
      hence thesis by
    A1,
    A2,
    A3,
    A11,
    Def15;
    
    end;
    
    theorem :: 
    
    TREES_3:59
    
    for T1,T2 be
    Tree holds ( 
    tree (T1,T2)) 
    = ((( 
    elementary_tree 2) 
    with-replacement ( 
    <*
    0 *>,T1)) 
    with-replacement ( 
    <*1*>,T2))
    
    proof
    
      let T1,T2 be
    Tree;
    
      let p be
    FinSequence of 
    NAT ; 
    
      
    
      
    
    A1: ( 
    <*T1, T2*>
    . 1) 
    = T1 by 
    FINSEQ_1: 44;
    
      
    
      
    
    A2: ( 
    <*T1, T2*>
    . 2) 
    = T2 by 
    FINSEQ_1: 44;
    
      
    
      
    
    A3: ( 
    len  
    <*T1, T2*>)
    = 2 by 
    FINSEQ_1: 44;
    
      
    
      
    
    A4: (1 
    + 1) 
    = 2; 
    
      
    
      
    
    A5: ( 
    0  
    + 1) 
    = 1; 
    
      
    
      
    
    A6: 
    {}  
    in T1 by 
    TREES_1: 22;
    
      
    
      
    
    A7: 
    {}  
    in T2 by 
    TREES_1: 22;
    
      
    
      
    
    A8: 
    <*
    0 *> 
    in ( 
    elementary_tree 2) by 
    ENUMSET1:def 1,
    TREES_1: 53;
    
      
    
      
    
    A9: 
    <*1*>
    in ( 
    elementary_tree 2) by 
    ENUMSET1:def 1,
    TREES_1: 53;
    
       not
    <*
    0 *> 
    is_a_proper_prefix_of  
    <*1*> by
    TREES_1: 52;
    
      then
    
      
    
    A10: 
    <*1*>
    in (( 
    elementary_tree 2) 
    with-replacement ( 
    <*
    0 *>,T1)) by 
    A8,
    A9,
    TREES_1:def 9;
    
      thus p
    in ( 
    tree (T1,T2)) implies p 
    in ((( 
    elementary_tree 2) 
    with-replacement ( 
    <*
    0 *>,T1)) 
    with-replacement ( 
    <*1*>,T2))
    
      proof
    
        assume
    
        
    
    A11: p 
    in ( 
    tree (T1,T2)); 
    
        now
    
          assume p
    <>  
    {} ; 
    
          then
    
          consider n, q such that
    
          
    
    A12: n 
    < ( 
    len  
    <*T1, T2*>) and
    
          
    
    A13: q 
    in ( 
    <*T1, T2*>
    . (n 
    + 1)) and 
    
          
    
    A14: p 
    = ( 
    <*n*>
    ^ q) by 
    A11,
    Def15;
    
          reconsider q as
    FinSequence of 
    NAT by 
    A14,
    FINSEQ_1: 36;
    
          
    
          
    
    A15: not 
    <*1*>
    is_a_prefix_of ( 
    <*
    0 *> 
    ^ q) by 
    TREES_1: 50;
    
          reconsider n as
    Element of 
    NAT by 
    ORDINAL1:def 12;
    
          
    
    A16: 
    
          now
    
            assume
    
            
    
    A17: n 
    =  
    0 ; 
    
            then
    
            
    
    A18: not 
    <*1*>
    is_a_proper_prefix_of ( 
    <*n*>
    ^ q) by 
    A15;
    
            (
    <*n*>
    ^ q) 
    in (( 
    elementary_tree 2) 
    with-replacement ( 
    <*
    0 *>,T1)) by 
    A1,
    A8,
    A13,
    A17,
    TREES_1:def 9;
    
            hence thesis by
    A10,
    A14,
    A18,
    TREES_1:def 9;
    
          end;
    
          n
    <= ( 
    0  
    + 1) by 
    A3,
    A4,
    A12,
    NAT_1: 13;
    
          then n
    = 1 & (n 
    = 1 implies ( 
    <*n*>
    ^ q) 
    in ((( 
    elementary_tree 2) 
    with-replacement ( 
    <*
    0 *>,T1)) 
    with-replacement ( 
    <*1*>,T2))) or n
    >=  
    0 & n 
    <=  
    0 by 
    A2,
    A10,
    A13,
    NAT_1: 8,
    TREES_1:def 9;
    
          hence thesis by
    A14,
    A16;
    
        end;
    
        hence thesis by
    TREES_1: 22;
    
      end;
    
      assume p
    in ((( 
    elementary_tree 2) 
    with-replacement ( 
    <*
    0 *>,T1)) 
    with-replacement ( 
    <*1*>,T2));
    
      then
    
      
    
    A19: p 
    in (( 
    elementary_tree 2) 
    with-replacement ( 
    <*
    0 *>,T1)) & not 
    <*1*>
    is_a_proper_prefix_of p or ex r be 
    FinSequence of 
    NAT st r 
    in T2 & p 
    = ( 
    <*1*>
    ^ r) by 
    A10,
    TREES_1:def 9;
    
      now
    
        assume p
    in (( 
    elementary_tree 2) 
    with-replacement ( 
    <*
    0 *>,T1)); 
    
        then
    
        
    
    A20: p 
    in ( 
    elementary_tree 2) & not 
    <*
    0 *> 
    is_a_proper_prefix_of p or ex r be 
    FinSequence of 
    NAT st r 
    in T1 & p 
    = ( 
    <*
    0 *> 
    ^ r) by 
    A8,
    TREES_1:def 9;
    
        now
    
          assume p
    in ( 
    elementary_tree 2); 
    
          then
    
          
    
    A21: p 
    =  
    {} or p 
    =  
    <*
    0 *> or p 
    =  
    <*1*> by
    ENUMSET1:def 1,
    TREES_1: 53;
    
          (p
    ^  
    {} ) 
    = p by 
    FINSEQ_1: 34;
    
          hence thesis by
    A1,
    A2,
    A3,
    A4,
    A5,
    A6,
    A7,
    A21,
    Def15;
    
        end;
    
        hence thesis by
    A1,
    A3,
    A5,
    A20,
    Def15;
    
      end;
    
      hence thesis by
    A2,
    A3,
    A4,
    A19,
    Def15;
    
    end;
    
    registration
    
      let p be
    FinTree-yielding  
    FinSequence;
    
      cluster ( 
    tree p) -> 
    finite;
    
      coherence
    
      proof
    
        defpred
    
    X[
    set] means for p be
    FinTree-yielding  
    FinSequence st ( 
    len p) 
    = $1 holds ( 
    tree p) is 
    finite  
    Tree;
    
        
    
        
    
    A1: 
    X[
    0 ] 
    
        proof
    
          let p be
    FinTree-yielding  
    FinSequence;
    
          assume (
    len p) 
    =  
    0 ; 
    
          then p
    =  
    {} ; 
    
          hence thesis by
    Th52;
    
        end;
    
        
    
        
    
    A2: 
    X[n] implies
    X[(n
    + 1)] 
    
        proof
    
          assume
    
          
    
    A3: for p be 
    FinTree-yielding  
    FinSequence st ( 
    len p) 
    = n holds ( 
    tree p) is 
    finite  
    Tree;
    
          let p be
    FinTree-yielding  
    FinSequence such that 
    
          
    
    A4: ( 
    len p) 
    = (n 
    + 1); 
    
          p
    <>  
    {} by 
    A4;
    
          then
    
          consider q be
    FinSequence, x be 
    object such that 
    
          
    
    A5: p 
    = (q 
    ^  
    <*x*>) by
    FINSEQ_1: 46;
    
          reconsider q as
    FinTree-yielding  
    FinSequence by 
    A5,
    Th26;
    
          (
    len  
    <*x*>)
    = 1 by 
    FINSEQ_1: 40;
    
          then
    
          
    
    A6: ( 
    len p) 
    = (( 
    len q) 
    + 1) by 
    A5,
    FINSEQ_1: 22;
    
          then (
    tree q) is 
    finite by 
    A3,
    A4;
    
          then
    
          reconsider W = ((
    tree q) 
    \/ ( 
    elementary_tree (n 
    + 1))) as 
    finite  
    Tree;
    
          
    <*x*> is
    FinTree-yielding by 
    A5,
    Th26;
    
          then
    
          reconsider x as
    finite  
    Tree by 
    Th29;
    
          n
    < (n 
    + 1) by 
    NAT_1: 13;
    
          then
    <*n*>
    in ( 
    elementary_tree (n 
    + 1)) by 
    TREES_1: 28;
    
          then
    
          reconsider r =
    <*n*> as
    Element of W by 
    XBOOLE_0:def 3;
    
          (
    tree p) 
    = (W 
    with-replacement (r,x)) by 
    A4,
    A5,
    A6,
    Th55;
    
          hence thesis;
    
        end;
    
        
    X[n] from
    NAT_1:sch 2(
    A1,
    A2);
    
        then (
    len p) 
    = ( 
    len p) implies thesis; 
    
        hence thesis;
    
      end;
    
    end
    
    registration
    
      let T be
    finite  
    Tree;
    
      cluster ( 
    ^ T) -> 
    finite;
    
      coherence ;
    
    end
    
    registration
    
      let T1,T2 be
    finite  
    Tree;
    
      cluster ( 
    tree (T1,T2)) -> 
    finite;
    
      coherence ;
    
    end
    
    theorem :: 
    
    TREES_3:60
    
    
    
    
    
    Th60: for T be 
    Tree, x be 
    object holds x 
    in ( 
    ^ T) iff x 
    =  
    {} or ex p st p 
    in T & x 
    = ( 
    <*
    0 *> 
    ^ p) 
    
    proof
    
      let T be
    Tree;
    
      let x;
    
      set p =
    <*T*>;
    
      
    
      
    
    A1: ( 
    len p) 
    = 1 by 
    FINSEQ_1: 40;
    
      
    
      
    
    A2: (p 
    . 1) 
    = T by 
    FINSEQ_1: 40;
    
      thus x
    in ( 
    ^ T) & x 
    <>  
    {} implies ex p st p 
    in T & x 
    = ( 
    <*
    0 *> 
    ^ p) 
    
      proof
    
        assume that
    
        
    
    A3: x 
    in ( 
    ^ T) and 
    
        
    
    A4: x 
    <>  
    {} ; 
    
        consider n, q such that
    
        
    
    A5: n 
    < ( 
    len p) and 
    
        
    
    A6: q 
    in (p 
    . (n 
    + 1)) and 
    
        
    
    A7: x 
    = ( 
    <*n*>
    ^ q) by 
    A3,
    A4,
    Def15;
    
        (
    0  
    + 1) 
    = 1; 
    
        then n
    =  
    0 by 
    A1,
    A5,
    NAT_1: 13;
    
        hence thesis by
    A2,
    A6,
    A7;
    
      end;
    
      
    0  
    < ( 
    0  
    + 1); 
    
      hence thesis by
    A1,
    A2,
    Def15;
    
    end;
    
    theorem :: 
    
    TREES_3:61
    
    
    
    
    
    Th61: for T be 
    Tree, p be 
    FinSequence holds p 
    in T iff ( 
    <*
    0 *> 
    ^ p) 
    in ( 
    ^ T) 
    
    proof
    
      let T be
    Tree, p be 
    FinSequence;
    
      thus p
    in T implies ( 
    <*
    0 *> 
    ^ p) 
    in ( 
    ^ T) by 
    Th60;
    
      assume (
    <*
    0 *> 
    ^ p) 
    in ( 
    ^ T); 
    
      then
    
      consider n, q such that n
    < ( 
    len  
    <*T*>) and
    
      
    
    A1: q 
    in ( 
    <*T*>
    . (n 
    + 1)) and 
    
      
    
    A2: ( 
    <*
    0 *> 
    ^ p) 
    = ( 
    <*n*>
    ^ q) by 
    Def15;
    
      
    
      
    
    A3: (( 
    <*
    0 *> 
    ^ p) 
    . 1) 
    =  
    0 by 
    FINSEQ_1: 41;
    
      
    
      
    
    A4: (( 
    <*n*>
    ^ q) 
    . 1) 
    = n by 
    FINSEQ_1: 41;
    
      then p
    = q by 
    A2,
    A3,
    FINSEQ_1: 33;
    
      hence thesis by
    A1,
    A2,
    A3,
    A4,
    FINSEQ_1: 40;
    
    end;
    
    theorem :: 
    
    TREES_3:62
    
    for T be
    Tree holds ( 
    elementary_tree 1) 
    c= ( 
    ^ T) 
    
    proof
    
      let T be
    Tree;
    
      let x be
    object;
    
      assume x
    in ( 
    elementary_tree 1); 
    
      then
    
      reconsider p = x as
    Element of ( 
    elementary_tree 1); 
    
      p
    =  
    {} or p 
    =  
    <*
    0 *> & 
    {}  
    in T & ( 
    <*
    0 *> 
    ^  
    {} ) 
    =  
    <*
    0 *> by 
    FINSEQ_1: 34,
    TARSKI:def 2,
    TREES_1: 22,
    TREES_1: 51;
    
      hence thesis by
    Th60;
    
    end;
    
    theorem :: 
    
    TREES_3:63
    
    for T1,T2 be
    Tree st T1 
    c= T2 holds ( 
    ^ T1) 
    c= ( 
    ^ T2) 
    
    proof
    
      let T1,T2 be
    Tree such that 
    
      
    
    A1: T1 
    c= T2; 
    
      let x be
    object;
    
      assume x
    in ( 
    ^ T1); 
    
      then
    
      reconsider p = x as
    Element of ( 
    ^ T1); 
    
      p
    =  
    {} or ex q st q 
    in T1 & p 
    = ( 
    <*
    0 *> 
    ^ q) by 
    Th60;
    
      hence thesis by
    A1,
    Th60;
    
    end;
    
    theorem :: 
    
    TREES_3:64
    
    for T1,T2 be
    Tree st ( 
    ^ T1) 
    = ( 
    ^ T2) holds T1 
    = T2 
    
    proof
    
      let T1,T2 be
    Tree such that 
    
      
    
    A1: ( 
    ^ T1) 
    = ( 
    ^ T2); 
    
      let p be
    FinSequence of 
    NAT ; 
    
      p
    in T1 iff ( 
    <*
    0 *> 
    ^ p) 
    in ( 
    ^ T1) by 
    Th61;
    
      hence thesis by
    A1,
    Th61;
    
    end;
    
    theorem :: 
    
    TREES_3:65
    
    for T be
    Tree holds (( 
    ^ T) 
    |  
    <*
    0 *>) 
    = T 
    
    proof
    
      let T be
    Tree;
    
      set p =
    <*T*>;
    
      
    
      
    
    A1: ( 
    len p) 
    = 1 by 
    FINSEQ_1: 40;
    
      
    
      
    
    A2: (p 
    . 1) 
    = T by 
    FINSEQ_1: 40;
    
      (
    0  
    + 1) 
    = 1; 
    
      hence thesis by
    A1,
    A2,
    Th49;
    
    end;
    
    theorem :: 
    
    TREES_3:66
    
    for T1,T2 be
    Tree holds (( 
    ^ T1) 
    with-replacement ( 
    <*
    0 *>,T2)) 
    = ( 
    ^ T2) 
    
    proof
    
      let T1,T2 be
    Tree;
    
      
    
      
    
    A1: ( 
    len  
    {} ) 
    =  
    0 ; 
    
      
    
      
    
    A2: 
    <*T1*>
    = ( 
    {}  
    ^  
    <*T1*>) by
    FINSEQ_1: 34;
    
      
    
      
    
    A3: 
    <*T2*>
    = ( 
    {}  
    ^  
    <*T2*>) by
    FINSEQ_1: 34;
    
      
    
      
    
    A4: 
    <*T1*>
    = ( 
    <*T1*>
    ^  
    {} ) by 
    FINSEQ_1: 34;
    
      
    <*T2*>
    = ( 
    <*T2*>
    ^  
    {} ) by 
    FINSEQ_1: 34;
    
      hence thesis by
    A1,
    A2,
    A3,
    A4,
    Th57;
    
    end;
    
    theorem :: 
    
    TREES_3:67
    
    (
    ^ ( 
    elementary_tree  
    0 )) 
    = ( 
    elementary_tree 1) 
    
    proof
    
      set T = (
    elementary_tree  
    0 ); 
    
      
    
      thus (
    ^ T) 
    = ( 
    tree (1 
    |-> T)) by 
    FINSEQ_2: 59
    
      .= (
    elementary_tree 1) by 
    Th54;
    
    end;
    
    theorem :: 
    
    TREES_3:68
    
    
    
    
    
    Th68: for T1,T2 be 
    Tree, x be 
    object holds x 
    in ( 
    tree (T1,T2)) iff x 
    =  
    {} or ex p st p 
    in T1 & x 
    = ( 
    <*
    0 *> 
    ^ p) or p 
    in T2 & x 
    = ( 
    <*1*>
    ^ p) 
    
    proof
    
      let T1,T2 be
    Tree;
    
      let x;
    
      set p =
    <*T1, T2*>;
    
      
    
      
    
    A1: ( 
    len p) 
    = 2 by 
    FINSEQ_1: 44;
    
      
    
      
    
    A2: (p 
    . 1) 
    = T1 by 
    FINSEQ_1: 44;
    
      
    
      
    
    A3: (p 
    . 2) 
    = T2 by 
    FINSEQ_1: 44;
    
      thus x
    in ( 
    tree (T1,T2)) & x 
    <>  
    {} implies ex p st p 
    in T1 & x 
    = ( 
    <*
    0 *> 
    ^ p) or p 
    in T2 & x 
    = ( 
    <*1*>
    ^ p) 
    
      proof
    
        assume that
    
        
    
    A4: x 
    in ( 
    tree (T1,T2)) and 
    
        
    
    A5: x 
    <>  
    {} ; 
    
        consider n, q such that
    
        
    
    A6: n 
    < ( 
    len p) and 
    
        
    
    A7: q 
    in (p 
    . (n 
    + 1)) and 
    
        
    
    A8: x 
    = ( 
    <*n*>
    ^ q) by 
    A4,
    A5,
    Def15;
    
        (1
    + 1) 
    = 2; 
    
        then n
    <= 1 by 
    A1,
    A6,
    NAT_1: 13;
    
        then n
    = 1 or n 
    < ( 
    0  
    + 1) by 
    XXREAL_0: 1;
    
        then n
    = 1 or n 
    =  
    0 by 
    NAT_1: 13;
    
        hence thesis by
    A2,
    A3,
    A7,
    A8;
    
      end;
    
      now
    
        given q such that
    
        
    
    A9: q 
    in T1 & x 
    = ( 
    <*
    0 *> 
    ^ q) or q 
    in T2 & x 
    = ( 
    <*1*>
    ^ q); 
    
        x
    = ( 
    <*
    0 *> 
    ^ q) or x 
    <> ( 
    <*
    0 *> 
    ^ q); 
    
        then
    
        consider n such that
    
        
    
    A10: n 
    =  
    0 & x 
    = ( 
    <*
    0 *> 
    ^ q) or n 
    = 1 & x 
    <> ( 
    <*
    0 *> 
    ^ q); 
    
        take n, q;
    
        thus n
    < ( 
    len p) by 
    A1,
    A10;
    
        ((
    <*
    0 *> 
    ^ q) 
    . 1) 
    =  
    0 by 
    FINSEQ_1: 41;
    
        hence q
    in (p 
    . (n 
    + 1)) & x 
    = ( 
    <*n*>
    ^ q) by 
    A9,
    A10,
    FINSEQ_1: 41,
    FINSEQ_1: 44;
    
      end;
    
      hence thesis by
    Def15;
    
    end;
    
    theorem :: 
    
    TREES_3:69
    
    
    
    
    
    Th69: for T1,T2 be 
    Tree, p be 
    FinSequence holds p 
    in T1 iff ( 
    <*
    0 *> 
    ^ p) 
    in ( 
    tree (T1,T2)) 
    
    proof
    
      let T1,T2 be
    Tree;
    
      
    
      
    
    A1: 
    <*T1, T2*>
    = ( 
    <*T1*>
    ^  
    <*T2*>) by
    FINSEQ_1:def 9;
    
      
    
      
    
    A2: 
    <*T1*>
    = ( 
    {}  
    ^  
    <*T1*>) by
    FINSEQ_1: 34;
    
      (
    len  
    {} ) 
    =  
    0 ; 
    
      hence thesis by
    A1,
    A2,
    Th51;
    
    end;
    
    theorem :: 
    
    TREES_3:70
    
    
    
    
    
    Th70: for T1,T2 be 
    Tree, p be 
    FinSequence holds p 
    in T2 iff ( 
    <*1*>
    ^ p) 
    in ( 
    tree (T1,T2)) 
    
    proof
    
      let T1,T2 be
    Tree;
    
      
    
      
    
    A1: 
    <*T1, T2*>
    = ( 
    <*T1*>
    ^  
    <*T2*>) by
    FINSEQ_1:def 9;
    
      
    
      
    
    A2: ( 
    len  
    <*T1*>)
    = 1 by 
    FINSEQ_1: 40;
    
      
    <*T1, T2*>
    = ( 
    <*T1, T2*>
    ^  
    {} ) by 
    FINSEQ_1: 34;
    
      hence thesis by
    A1,
    A2,
    Th51;
    
    end;
    
    theorem :: 
    
    TREES_3:71
    
    for T1,T2 be
    Tree holds ( 
    elementary_tree 2) 
    c= ( 
    tree (T1,T2)) 
    
    proof
    
      let T1,T2 be
    Tree;
    
      let x be
    object;
    
      assume x
    in ( 
    elementary_tree 2); 
    
      then
    
      reconsider p = x as
    Element of ( 
    elementary_tree 2); 
    
      p
    =  
    {} or p 
    =  
    <*
    0 *> & 
    {}  
    in T1 & ( 
    <*
    0 *> 
    ^  
    {} ) 
    =  
    <*
    0 *> or p 
    =  
    <*1*> &
    {}  
    in T2 & ( 
    <*1*>
    ^  
    {} ) 
    =  
    <*1*> by
    ENUMSET1:def 1,
    FINSEQ_1: 34,
    TREES_1: 22,
    TREES_1: 53;
    
      hence thesis by
    Th68;
    
    end;
    
    theorem :: 
    
    TREES_3:72
    
    for T1,T2,W1,W2 be
    Tree st T1 
    c= W1 & T2 
    c= W2 holds ( 
    tree (T1,T2)) 
    c= ( 
    tree (W1,W2)) 
    
    proof
    
      let T1,T2,W1,W2 be
    Tree such that 
    
      
    
    A1: T1 
    c= W1 and 
    
      
    
    A2: T2 
    c= W2; 
    
      let x be
    object;
    
      assume x
    in ( 
    tree (T1,T2)); 
    
      then
    
      reconsider p = x as
    Element of ( 
    tree (T1,T2)); 
    
      p
    =  
    {} or ex q st q 
    in T1 & p 
    = ( 
    <*
    0 *> 
    ^ q) or q 
    in T2 & p 
    = ( 
    <*1*>
    ^ q) by 
    Th68;
    
      hence thesis by
    A1,
    A2,
    Th68;
    
    end;
    
    theorem :: 
    
    TREES_3:73
    
    for T1,T2,W1,W2 be
    Tree st ( 
    tree (T1,T2)) 
    = ( 
    tree (W1,W2)) holds T1 
    = W1 & T2 
    = W2 
    
    proof
    
      let T1,T2,W1,W2 be
    Tree such that 
    
      
    
    A1: ( 
    tree (T1,T2)) 
    = ( 
    tree (W1,W2)); 
    
      now
    
        let p;
    
        p
    in T1 iff ( 
    <*
    0 *> 
    ^ p) 
    in ( 
    tree (T1,T2)) by 
    Th69;
    
        hence p
    in T1 iff p 
    in W1 by 
    A1,
    Th69;
    
      end;
    
      hence for p be
    FinSequence of 
    NAT holds p 
    in T1 iff p 
    in W1; 
    
      let p be
    FinSequence of 
    NAT ; 
    
      p
    in T2 iff ( 
    <*1*>
    ^ p) 
    in ( 
    tree (T1,T2)) by 
    Th70;
    
      hence thesis by
    A1,
    Th70;
    
    end;
    
    theorem :: 
    
    TREES_3:74
    
    for T1,T2 be
    Tree holds (( 
    tree (T1,T2)) 
    |  
    <*
    0 *>) 
    = T1 & (( 
    tree (T1,T2)) 
    |  
    <*1*>)
    = T2 
    
    proof
    
      let T1,T2 be
    Tree;
    
      set p =
    <*T1, T2*>;
    
      
    
      
    
    A1: ( 
    len p) 
    = 2 by 
    FINSEQ_1: 44;
    
      
    
      
    
    A2: (p 
    . 1) 
    = T1 by 
    FINSEQ_1: 44;
    
      
    
      
    
    A3: (p 
    . 2) 
    = T2 by 
    FINSEQ_1: 44;
    
      
    
      
    
    A4: ( 
    0  
    + 1) 
    = 1; 
    
      (1
    + 1) 
    = 2; 
    
      hence thesis by
    A1,
    A2,
    A3,
    A4,
    Th49;
    
    end;
    
    theorem :: 
    
    TREES_3:75
    
    for T,T1,T2 be
    Tree holds (( 
    tree (T1,T2)) 
    with-replacement ( 
    <*
    0 *>,T)) 
    = ( 
    tree (T,T2)) & (( 
    tree (T1,T2)) 
    with-replacement ( 
    <*1*>,T))
    = ( 
    tree (T1,T)) 
    
    proof
    
      let T,T1,T2 be
    Tree;
    
      
    
      
    
    A1: ( 
    len  
    {} ) 
    =  
    0 ; 
    
      
    
      
    
    A2: 
    <*T1*>
    = ( 
    {}  
    ^  
    <*T1*>) by
    FINSEQ_1: 34;
    
      
    
      
    
    A3: 
    <*T*>
    = ( 
    {}  
    ^  
    <*T*>) by
    FINSEQ_1: 34;
    
      
    
      
    
    A4: ( 
    <*T1, T2*>
    ^  
    {} ) 
    =  
    <*T1, T2*> by
    FINSEQ_1: 34;
    
      
    
      
    
    A5: ( 
    <*T1, T*>
    ^  
    {} ) 
    =  
    <*T1, T*> by
    FINSEQ_1: 34;
    
      
    
      
    
    A6: ( 
    len  
    <*T1*>)
    = 1 by 
    FINSEQ_1: 40;
    
      
    
      
    
    A7: 
    <*T1, T2*>
    = ( 
    <*T1*>
    ^  
    <*T2*>) by
    FINSEQ_1:def 9;
    
      
    
      
    
    A8: 
    <*T1, T*>
    = ( 
    <*T1*>
    ^  
    <*T*>) by
    FINSEQ_1:def 9;
    
      
    <*T, T2*>
    = ( 
    <*T*>
    ^  
    <*T2*>) by
    FINSEQ_1:def 9;
    
      hence thesis by
    A1,
    A2,
    A3,
    A4,
    A5,
    A6,
    A7,
    A8,
    Th57;
    
    end;
    
    theorem :: 
    
    TREES_3:76
    
    (
    tree (( 
    elementary_tree  
    0 ),( 
    elementary_tree  
    0 ))) 
    = ( 
    elementary_tree 2) 
    
    proof
    
      set T = (
    elementary_tree  
    0 ); 
    
      
    
      thus (
    tree (T,T)) 
    = ( 
    tree (2 
    |-> T)) by 
    FINSEQ_2: 61
    
      .= (
    elementary_tree 2) by 
    Th54;
    
    end;
    
    reserve w for
    FinTree-yielding  
    FinSequence;
    
    theorem :: 
    
    TREES_3:77
    
    
    
    
    
    Th77: for w st for t be 
    finite  
    Tree st t 
    in ( 
    rng w) holds ( 
    height t) 
    <= n holds ( 
    height ( 
    tree w)) 
    <= (n 
    + 1) 
    
    proof
    
      let w such that
    
      
    
    A1: for t be 
    finite  
    Tree st t 
    in ( 
    rng w) holds ( 
    height t) 
    <= n; 
    
      consider p be
    FinSequence of 
    NAT such that 
    
      
    
    A2: p 
    in ( 
    tree w) and 
    
      
    
    A3: ( 
    len p) 
    = ( 
    height ( 
    tree w)) by 
    TREES_1:def 12;
    
      
    
      
    
    A4: p 
    =  
    {} & ( 
    len  
    {} ) 
    =  
    0 or ex n, q st n 
    < ( 
    len w) & q 
    in (w 
    . (n 
    + 1)) & p 
    = ( 
    <*n*>
    ^ q) by 
    A2,
    Def15;
    
      now
    
        given k, q such that
    
        
    
    A5: k 
    < ( 
    len w) and 
    
        
    
    A6: q 
    in (w 
    . (k 
    + 1)) and 
    
        
    
    A7: p 
    = ( 
    <*k*>
    ^ q); 
    
        
    
        
    
    A8: (w 
    . (k 
    + 1)) 
    in ( 
    rng w) by 
    A5,
    Lm3;
    
        (
    rng w) is 
    constituted-FinTrees by 
    Def10;
    
        then
    
        reconsider t = (w
    . (k 
    + 1)) as 
    finite  
    Tree by 
    A8;
    
        reconsider q as
    FinSequence of 
    NAT by 
    A7,
    FINSEQ_1: 36;
    
        
    
        
    
    A9: ( 
    len q) 
    <= ( 
    height t) by 
    A6,
    TREES_1:def 12;
    
        
    
        
    
    A10: ( 
    height t) 
    <= n by 
    A1,
    A5,
    Lm3;
    
        
    
        
    
    A11: ( 
    len  
    <*k*>)
    = 1 by 
    FINSEQ_1: 40;
    
        
    
        
    
    A12: ( 
    len q) 
    <= n by 
    A9,
    A10,
    XXREAL_0: 2;
    
        (
    len p) 
    = (1 
    + ( 
    len q)) by 
    A7,
    A11,
    FINSEQ_1: 22;
    
        hence thesis by
    A3,
    A12,
    XREAL_1: 7;
    
      end;
    
      hence thesis by
    A3,
    A4;
    
    end;
    
    theorem :: 
    
    TREES_3:78
    
    
    
    
    
    Th78: for t be 
    finite  
    Tree st t 
    in ( 
    rng w) holds ( 
    height ( 
    tree w)) 
    > ( 
    height t) 
    
    proof
    
      let t be
    finite  
    Tree;
    
      assume t
    in ( 
    rng w); 
    
      then
    
      consider x be
    object such that 
    
      
    
    A1: x 
    in ( 
    dom w) and 
    
      
    
    A2: t 
    = (w 
    . x) by 
    FUNCT_1:def 3;
    
      reconsider x as
    Element of 
    NAT by 
    A1;
    
      
    
      
    
    A3: 1 
    <= x by 
    A1,
    FINSEQ_3: 25;
    
      
    
      
    
    A4: ( 
    len w) 
    >= x by 
    A1,
    FINSEQ_3: 25;
    
      consider n be
    Nat such that 
    
      
    
    A5: x 
    = (1 
    + n) by 
    A3,
    NAT_1: 10;
    
      reconsider n as
    Element of 
    NAT by 
    ORDINAL1:def 12;
    
      
    
      
    
    A6: n 
    < ( 
    len w) by 
    A4,
    A5,
    NAT_1: 13;
    
      
    
      
    
    A7: 
    {}  
    in t by 
    TREES_1: 22;
    
      
    
      
    
    A8: ( 
    <*n*>
    ^  
    {} ) 
    =  
    <*n*> by
    FINSEQ_1: 34;
    
      
    
      
    
    A9: t 
    = (( 
    tree w) 
    |  
    <*n*>) by
    A2,
    A5,
    A6,
    Th49;
    
      
    <*n*>
    in ( 
    tree w) by 
    A2,
    A5,
    A6,
    A7,
    A8,
    Def15;
    
      hence thesis by
    A9,
    TREES_1: 48;
    
    end;
    
    theorem :: 
    
    TREES_3:79
    
    
    
    
    
    Th79: for t be 
    finite  
    Tree st t 
    in ( 
    rng w) & for t9 be 
    finite  
    Tree st t9 
    in ( 
    rng w) holds ( 
    height t9) 
    <= ( 
    height t) holds ( 
    height ( 
    tree w)) 
    = (( 
    height t) 
    + 1) 
    
    proof
    
      let t be
    finite  
    Tree such that 
    
      
    
    A1: t 
    in ( 
    rng w) and 
    
      
    
    A2: for t9 be 
    finite  
    Tree st t9 
    in ( 
    rng w) holds ( 
    height t9) 
    <= ( 
    height t); 
    
      
    
      
    
    A3: ( 
    height ( 
    tree w)) 
    > ( 
    height t) by 
    A1,
    Th78;
    
      
    
      
    
    A4: ( 
    height ( 
    tree w)) 
    <= (( 
    height t) 
    + 1) by 
    A2,
    Th77;
    
      (
    height ( 
    tree w)) 
    >= (( 
    height t) 
    + 1) by 
    A3,
    NAT_1: 13;
    
      hence thesis by
    A4,
    XXREAL_0: 1;
    
    end;
    
    theorem :: 
    
    TREES_3:80
    
    for T be
    finite  
    Tree holds ( 
    height ( 
    ^ T)) 
    = (( 
    height T) 
    + 1) 
    
    proof
    
      let T be
    finite  
    Tree;
    
      set m = (
    height T); 
    
      
    
      
    
    A1: ( 
    rng  
    <*T*>)
    =  
    {T} by
    FINSEQ_1: 38;
    
      
    
      
    
    A2: T 
    in  
    {T} by
    TARSKI:def 1;
    
      for t be
    finite  
    Tree st t 
    in ( 
    rng  
    <*T*>) holds (
    height t) 
    <= m by 
    A1,
    TARSKI:def 1;
    
      hence thesis by
    A1,
    A2,
    Th79;
    
    end;
    
    theorem :: 
    
    TREES_3:81
    
    for T1,T2 be
    finite  
    Tree holds ( 
    height ( 
    tree (T1,T2))) 
    = (( 
    max (( 
    height T1),( 
    height T2))) 
    + 1) 
    
    proof
    
      let T1,T2 be
    finite  
    Tree;
    
      set m = (
    max (( 
    height T1),( 
    height T2))); 
    
      
    
      
    
    A1: ( 
    rng  
    <*T1, T2*>)
    =  
    {T1, T2} by
    FINSEQ_2: 127;
    
      
    
      
    
    A2: T1 
    in  
    {T1, T2} by
    TARSKI:def 2;
    
      
    
      
    
    A3: T2 
    in  
    {T1, T2} by
    TARSKI:def 2;
    
      
    
      
    
    A4: m 
    = ( 
    height T1) or m 
    = ( 
    height T2) by 
    XXREAL_0:def 10;
    
      now
    
        let t be
    finite  
    Tree;
    
        assume t
    in ( 
    rng  
    <*T1, T2*>);
    
        then t
    = T1 or t 
    = T2 by 
    A1,
    TARSKI:def 2;
    
        hence (
    height t) 
    <= m by 
    XXREAL_0: 25;
    
      end;
    
      hence thesis by
    A1,
    A2,
    A3,
    A4,
    Th79;
    
    end;
    
    begin
    
    registration
    
      let D be non
    empty  
    set, t be 
    Element of ( 
    FinTrees D); 
    
      cluster ( 
    dom t) -> 
    finite;
    
      coherence by
    Def8;
    
    end
    
    definition
    
      let p be
    FinSequence;
    
      defpred
    
    P[
    Nat, 
    object] means ex T be
    DecoratedTree st T 
    = (p 
    . $1) & $2 
    = (T 
    .  
    {} ); 
    
      :: 
    
    TREES_3:def18
    
      func
    
    roots p -> 
    FinSequence means ( 
    dom it ) 
    = ( 
    dom p) & for i be 
    Element of 
    NAT st i 
    in ( 
    dom p) holds ex T be 
    DecoratedTree st T 
    = (p 
    . i) & (it 
    . i) 
    = (T 
    .  
    {} ); 
    
      existence
    
      proof
    
        
    
        
    
    A2: ( 
    Seg ( 
    len p)) 
    = ( 
    dom p) by 
    FINSEQ_1:def 3;
    
        
    
        
    
    A3: for k be 
    Nat st k 
    in ( 
    Seg ( 
    len p)) holds ex x be 
    object st 
    P[k, x]
    
        proof
    
          let k be
    Nat;
    
          assume k
    in ( 
    Seg ( 
    len p)); 
    
          then
    
          
    
    A4: (p 
    . k) 
    in ( 
    rng p) by 
    A2,
    FUNCT_1:def 3;
    
          (
    rng p) is 
    constituted-DTrees by 
    A1;
    
          then
    
          reconsider T = (p
    . k) as 
    DecoratedTree by 
    A4;
    
          take (T
    .  
    {} ), T; 
    
          thus thesis;
    
        end;
    
        consider q be
    FinSequence such that 
    
        
    
    A5: ( 
    dom q) 
    = ( 
    Seg ( 
    len p)) & for k be 
    Nat st k 
    in ( 
    Seg ( 
    len p)) holds 
    P[k, (q
    . k)] from 
    FINSEQ_1:sch 1(
    A3);
    
        take q;
    
        thus (
    dom q) 
    = ( 
    dom p) by 
    A5,
    FINSEQ_1:def 3;
    
        thus thesis by
    A2,
    A5;
    
      end;
    
      uniqueness
    
      proof
    
        let x1,x2 be
    FinSequence such that 
    
        
    
    A6: ( 
    dom x1) 
    = ( 
    dom p) and 
    
        
    
    A7: for i be 
    Element of 
    NAT st i 
    in ( 
    dom p) holds 
    P[i, (x1
    . i)] and 
    
        
    
    A8: ( 
    dom x2) 
    = ( 
    dom p) and 
    
        
    
    A9: for i be 
    Element of 
    NAT st i 
    in ( 
    dom p) holds 
    P[i, (x2
    . i)]; 
    
        now
    
          let k be
    Nat;
    
          assume
    
          
    
    A10: k 
    in ( 
    dom p); 
    
          then
    
          
    
    A11: 
    P[k, (x1
    . k)] by 
    A7;
    
          
    P[k, (x2
    . k)] by 
    A9,
    A10;
    
          hence (x1
    . k) 
    = (x2 
    . k) by 
    A11;
    
        end;
    
        hence thesis by
    A6,
    A8;
    
      end;
    
    end