:: Joining of Decorated Trees
:: by Grzegorz Bancerek
::
:: Received October 8, 1993
:: Copyright (c) 1993-2016 Association of Mizar Users
:: (Stowarzyszenie Uzytkownikow Mizara, Bialystok, Poland).
:: This code can be distributed under the GNU General Public Licence
:: version 3.0 or later, or the Creative Commons Attribution-ShareAlike
:: License version 3.0 or later, subject to the binding interpretation
:: detailed in file COPYING.interpretation.
:: See COPYING.GPL and COPYING.CC-BY-SA for the full text of these
:: licenses, or see http://www.gnu.org/licenses/gpl.html and
:: http://creativecommons.org/licenses/by-sa/3.0/.
environ
vocabularies NUMBERS, TREES_2, SUBSET_1, RELAT_1, FINSEQ_1, FUNCT_1, TARSKI,
TREES_1, XXREAL_0, ARYTM_3, CARD_1, FUNCOP_1, XBOOLE_0, TREES_3,
ZFMISC_1, NAT_1, FINSEQ_2, TREES_A, ORDINAL4, FUNCT_6, FINSEQ_4, MCART_1,
PARTFUN1, TREES_4;
notations TARSKI, XBOOLE_0, ZFMISC_1, SUBSET_1, ORDINAL1, NUMBERS, XCMPLX_0,
NAT_1, RELAT_1, FUNCT_1, DOMAIN_1, FUNCOP_1, FUNCT_3, FINSEQ_1, FINSEQ_2,
TREES_1, TREES_2, FUNCT_6, TREES_3, XXREAL_0;
constructors BINOP_1, DOMAIN_1, XXREAL_0, XREAL_0, NAT_1, FUNCT_5, FINSEQ_2,
FUNCT_6, TREES_3, RELSET_1, NUMBERS;
registrations XBOOLE_0, SUBSET_1, RELAT_1, FUNCT_1, ORDINAL1, XREAL_0,
FINSEQ_1, TREES_2, TREES_3, CARD_1, FINSEQ_2, FUNCOP_1, TREES_1,
XTUPLE_0;
requirements NUMERALS, REAL, BOOLE, SUBSET, ARITHM;
definitions TARSKI, FINSEQ_1, TREES_1, TREES_2;
equalities FINSEQ_1, TREES_2, FINSEQ_2, FUNCT_6;
expansions TARSKI, FINSEQ_1;
theorems TARSKI, ZFMISC_1, FINSEQ_1, NAT_1, FUNCT_1, FUNCT_2, FUNCOP_1,
FUNCT_6, FINSEQ_2, FINSEQ_3, TREES_1, TREES_2, TREES_3, RELAT_1,
XBOOLE_0, XBOOLE_1, XREAL_1, XXREAL_0, FUNCT_5, ORDINAL1, CARD_1;
schemes CLASSES1, FINSEQ_1, XBOOLE_0;
begin :: Joining of decorated trees
definition
let T be DecoratedTree;
mode Node of T is Element of dom T;
end;
reserve x, y, z for object,
i, j, n for Nat,
p, q, r for FinSequence,
v for FinSequence of NAT;
Lm1: now
let x be set, y;
let p be FinSequence of x;
assume y in dom p or y in dom p;
then A1: p.y in rng p by FUNCT_1:def 3;
rng p c= x by FINSEQ_1:def 4;
hence p.y in x by A1;
end;
definition
let T1, T2 be DecoratedTree;
redefine pred T1 = T2 means
dom T1 = dom T2 & for p being Node of T1 holds T1.p = T2.p;
compatibility
proof
(for p being Node of T1 holds T1.p = T2.p) & dom T1 = dom T2 implies
for x being object st x in dom T1 holds T1.x = T2.x;
hence thesis by FUNCT_1:2;
end;
end;
theorem Th1:
for i,j being Nat
st elementary_tree i c= elementary_tree j holds i <= j
proof
let i,j be Nat;
assume that
A1: elementary_tree i c= elementary_tree j and
A2: i > j;
reconsider j as Element of NAT by ORDINAL1:def 12;
<*j*> in elementary_tree i by A2,TREES_1:28;
then A3: ex n being Nat st n < j & <*j*> = <*n*> by A1,TREES_1:30;
<*j*>.1 = j by FINSEQ_1:40;
hence thesis by A3,FINSEQ_1:40;
end;
theorem Th2:
for i,j being Nat
st elementary_tree i = elementary_tree j holds i = j
proof
let i,j be Nat;
assume elementary_tree i = elementary_tree j;
then i <= j & i >= j by Th1;
hence thesis by XXREAL_0:1;
end;
Lm2: n < len p implies n+1 in dom p & p.(n+1) in rng p
proof
assume
A1: n < len p;
n >= 0 by NAT_1:2;
then A2: n+1 >= 0+1 by XREAL_1:7;
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;
Lm3: now
let n; let x be set;
let p be FinSequence of x;
assume n < len p;
then A1: p.(n+1) in rng p by Lm2;
rng p c= x by FINSEQ_1:def 4;
hence p.(n+1) in x by A1;
end;
definition
let x be object;
func root-tree x -> DecoratedTree equals
(elementary_tree 0) --> x;
correctness;
end;
definition
let D be non empty set, d be Element of D;
redefine func root-tree d -> Element of FinTrees D;
coherence
proof
dom ((elementary_tree 0) --> d) = elementary_tree 0 by FUNCOP_1:13;
hence thesis by TREES_3:def 8;
end;
end;
theorem Th3:
dom root-tree x = elementary_tree 0 & (root-tree x).{} = x
proof
{} in elementary_tree 0 by TARSKI:def 1,TREES_1:29;
hence thesis by FUNCOP_1:7,13;
end;
theorem
root-tree x = root-tree y implies x = y
proof
(root-tree x).{} = x by Th3;
hence thesis by Th3;
end;
theorem Th5:
for T being DecoratedTree st dom T = elementary_tree 0 holds
T = root-tree (T.{})
proof
let T be DecoratedTree;
assume
A1: dom T = elementary_tree 0;
then for x being object st x in dom T holds T.x = T.{}
by TARSKI:def 1,TREES_1:29;
hence thesis by A1,FUNCOP_1:11;
end;
theorem
root-tree x = {[{},x]}
proof
thus root-tree x = [:{{}},{x}:] by FUNCOP_1:def 2,TREES_1:29
.= {[{},x]} by ZFMISC_1:29;
end;
definition
let x;
let p be FinSequence;
func x-flat_tree(p) -> DecoratedTree means
:
Def3: dom it = elementary_tree len p & it.{} = x &
for n st n < len p holds it.<*n*> = p.(n+1);
existence
proof
defpred X[object,object] means
$1 = {} & $2 = x or ex n st $1 = <*n*> & $2 = p.(n+1);
A1: for z being object st z in elementary_tree len p
ex y being object st X[z,y]
proof
let z be object;
assume z in elementary_tree len p;
then reconsider z as Element of elementary_tree len p;
reconsider z as FinSequence of NAT;
A2: z = {} or ex n st n < len p & z = <*n*> by TREES_1:30;
now
given n such that
A3: z = <*n*> and n < len p;
take y = p.(n+1),n;
thus z = <*n*> & y = p.(n+1) by A3;
end;
hence thesis by A2;
end;
consider f being Function such that
A4: dom f = elementary_tree len p & for y being object st y in
elementary_tree len p holds X[y,f.y] from CLASSES1:sch 1(A1);
reconsider f as DecoratedTree by A4,TREES_2:def 8;
take f;
thus dom f = elementary_tree len p by A4;
{} in dom f & for n st {} = <*n*> holds f.{} <> p.(n+1) by TREES_1:22;
hence f.{} = x by A4;
let n;
assume n < len p;
then <*n*> in dom f by A4,TREES_1:28;
then consider k being Nat such that
A5: <*n*> = <*k*> and
A6: f.<*n*> = p.(k+1) by A4;
k = <*n*>.1 by A5,FINSEQ_1:40
.= n by FINSEQ_1:40;
hence thesis by A6;
end;
uniqueness
proof
let T1, T2 be DecoratedTree such that
A7: dom T1 = elementary_tree len p and
A8: T1.{} = x and
A9: for n st n < len p holds T1.<*n*> = p.(n+1) and
A10: dom T2 = elementary_tree len p and
A11: T2.{} = x and
A12: for n st n < len p holds T2.<*n*> = p.(n+1);
now
let x be object;
assume x in elementary_tree len p;
then reconsider x9 = x as Element of elementary_tree len p;
A13: x9 = {} or ex n st n < len p & x9 = <*n*> by TREES_1:30;
now
given n such that
A14: n < len p & x = <*n*>;
thus T1.x = p.(n+1) by A9,A14
.= T2.x by A12,A14;
end;
hence T1.x = T2.x by A8,A11,A13;
end;
hence thesis by A7,A10;
end;
end;
theorem
x-flat_tree p = y-flat_tree q implies x = y & p = q
proof
assume
A1: x-flat_tree p = y-flat_tree q;
(x-flat_tree p).{} = x by Def3;
hence x = y by A1,Def3;
A2: dom (x-flat_tree p) = elementary_tree len p & dom (y-flat_tree q) =
elementary_tree len q by Def3;
then A3: len p = len q by A1,Th2;
now
let i be Nat;
assume that
A4: i >= 1 and
A5: i <= len p;
consider n be Nat such that
A6: i = 1+n by A4,NAT_1:10;
A7: n in NAT & n < len p by A5,A6,NAT_1:13,ORDINAL1:def 12;
then p.i = (x-flat_tree p).<*n*> by A6,Def3;
hence p.i = q.i by A1,A3,A6,A7,Def3;
end;
hence thesis by A1,A2,Th2;
end;
theorem Th8:
for j being Element of NAT st j < i
holds (elementary_tree i)|<*j*> = elementary_tree 0
proof let j be Element of NAT;
set p = i |-> elementary_tree 0, T = tree(p);
assume
A1: j < i;
then A2: 1+j >= 1 & j+1 <= i by NAT_1:11,13;
len p = i by CARD_1:def 7;
then A3: elementary_tree i = T & T|<*j*> = p.(j+1) by A1,TREES_3:49,54;
j+1 in Seg i by A2;
hence thesis by A3,FUNCOP_1:7;
end;
theorem Th9:
for i being Element of NAT st i < len p
holds (x-flat_tree p)|<*i*> = root-tree (p.(i+1))
proof let i be Element of NAT;
reconsider t = {} as Element of (dom (x-flat_tree p))|<*i*> by TREES_1:22;
assume
A1: i < len p;
then A2: (x-flat_tree p).<*i*> = p.(i+1) by Def3;
A3: dom (x-flat_tree p) = elementary_tree len p by Def3;
(elementary_tree len p)|<*i*> = elementary_tree 0 by A1,Th8;
then
A4: dom ((x-flat_tree p)|<*i*>) = elementary_tree 0 by A3,TREES_2:def 10;
<*
i*>^t = <*i*> & ((x-flat_tree p)|<*i*>).t = (x-flat_tree p).(<*i*>^t) by
FINSEQ_1:34,TREES_2:def 10;
hence thesis by A2,A4,Th5;
end;
definition
let x be object, p such that
A1: p is DTree-yielding;
func x-tree(p) -> DecoratedTree means
: Def4:
( ex q being DTree-yielding FinSequence st p = q & dom it = tree(doms q)) &
it.{} = x &
for n being Nat st n < len p holds it|<*n*> = p.(n+1);
existence
proof
reconsider pp=p as Function-yielding FinSequence by A1;
A2: dom doms pp = dom p by A1,TREES_3:37;
reconsider q = doms pp as Tree-yielding FinSequence by A1;
defpred X[object,object] means $1 = {} & $2 = x or $1 <> {} &
ex n,r st $1 = <*n*>^r & $2 = p..(n+1,r);
A3: for y being object st y in tree(q) ex z being object st X[y,z]
proof
let y be object;
assume y in tree(q);
then reconsider s = y as Element of tree(q);
now
assume y <> {};
then consider w being (FinSequence of NAT),
n being Element of NAT such that
A4: s = <*n*>^w by FINSEQ_2:130;
reconsider w as FinSequence;
take z = p..(n+1,w);
thus y = {} & z = x or y <> {} &
ex n,r st y = <*n*>^r & z = p..(n+1,r) by A4;
end;
hence thesis;
end;
consider T being Function such that
A5: dom T = tree(q) & for y being object st y in tree(q) holds X[y,T.y]
from CLASSES1:sch 1(A3);
reconsider T as DecoratedTree by A5,TREES_2:def 8;
take T;
thus ex q being DTree-yielding FinSequence st p = q & dom T = tree(doms q)
by A1,A5;
{} in tree(q) by TREES_1:22;
hence T.{} = x by A5;
A6: len p = len q by A2,FINSEQ_3:29;
let n be Nat;
assume
A7: n < len p;
then A8: n+1 in dom p by Lm2;
then reconsider t = p.(n+1) as DecoratedTree by A1,TREES_3:24;
reconsider nn=n as Element of NAT by ORDINAL1:def 12;
A9: dom t = q.(n+1) by A8,FUNCT_6:22;
A10: dom t = q.(n+1) by A8,FUNCT_6:22
.= (dom T)|<*nn*> by A5,A6,A7,TREES_3:49;
A11: (dom T)|<*n*> = dom (T|<*n*>) by TREES_2:def 10;
now
let r be FinSequence of NAT;
assume
A12: r in dom t;
then <*n*>^r in dom T by A5,A6,A7,A9,TREES_3:def 15;
then consider m being Nat, s being FinSequence such that
A13: <*n*>^r = <*m*>^s and
A14: T.(<*n*>^r) = p..(m+1,s) by A5;
A15: (<*n*>^r).1 = n & (<*m*>^s).1 = m by FINSEQ_1:41;
then m+1 in dom p & r = s by A7,A13,Lm2,FINSEQ_1:33;
then p..(m+1,s) = t.r by A12,A13,A15,FUNCT_5:38;
hence (T|<*n*>).r = t.r by A10,A12,A14,TREES_2:def 10;
end;
hence thesis by A10,A11,TREES_2:31;
end;
uniqueness
proof
let T1, T2 be DecoratedTree;
given q1 being DTree-yielding FinSequence such that
A16: p = q1 and
A17: dom T1 = tree(doms q1);
assume that
A18: T1.{} = x and
A19: for n being Nat st n < len p holds T1|<*n*> = p.(n+1);
given q2 being DTree-yielding FinSequence such that
A20: p = q2 & dom T2 = tree(doms q2);
assume that
A21: T2.{} = x and
A22: for n being Nat st n < len p holds T2|<*n*> = p.(n+1);
now
let q be FinSequence of NAT;
assume
A23: q in dom T1;
now
assume q <> {};
then consider s being FinSequence of NAT,
n being Element of NAT such that
A24: q = <*n*>^s by FINSEQ_2:130;
A25: <*n*> in dom T1 by A23,A24,TREES_1:21;
A26: n < len doms q1 by A17,A23,A24,TREES_3:48;
len doms q1 = len p by A16,TREES_3:38;
then A27: T1|<*n*> = p.(n+1) & T2|<*n*> = p.(n+1) by A19,A22,A26;
A28: s in (dom T1)|<*n*> by A23,A24,A25,TREES_1:def 6;
then T1.q = (T1|<*n*>).s by A24,TREES_2:def 10;
hence T1.q = T2.q by A16,A17,A20,A24,A27,A28,TREES_2:def 10;
end;
hence T1.q = T2.q by A18,A21;
end;
hence thesis by A16,A17,A20;
end;
end;
definition
let x be object;
let T be DecoratedTree;
func x-tree T -> DecoratedTree equals
x-tree <*T*>;
correctness;
end;
definition
let x be object;
let T1, T2 be DecoratedTree;
func x-tree (T1,T2) -> DecoratedTree equals
x-tree <*T1,T2*>;
correctness;
end;
theorem Th10:
for p being DTree-yielding FinSequence holds dom (x-tree(p)) = tree(doms p)
proof
let p be DTree-yielding FinSequence;
ex q being DTree-yielding FinSequence st
p = q & dom (x-tree(p)) = tree(doms q) by Def4;
hence thesis;
end;
theorem Th11:
for p being DTree-yielding FinSequence holds
y in dom (x-tree(p)) iff y = {} or
ex i being Nat, T being DecoratedTree, q being Node of T st
i < len p & T = p.(i+1) & y = <*i*>^q
proof
let p be DTree-yielding FinSequence;
A1: dom (x-tree p) = tree(doms p) by Th10;
A2: now
given i,q such that
A3: i < len doms p and
A4: q in (doms p).(i+1) and
A5: y = <*i*>^q;
len doms p = len p by TREES_3:38;
then A6: i+1 in dom p by A3,Lm2;
then reconsider T = p.(i+1) as DecoratedTree by TREES_3:24;
take i, T;
reconsider q as Node of T by A4,A6,FUNCT_6:22;
take q;
thus i < len p & T = p.(i+1) & y = <*i*>^q by A3,A5,TREES_3:38;
end;
now
given i being Nat, T being DecoratedTree, q being Node of T
such that
A7: i < len p and
A8: T = p.(i+1) and
A9: y = <*i*>^q;
reconsider q as FinSequence;
take i, q;
i+1 in dom p by A7,Lm2;
then (doms p).(i+1) = dom T by A8,FUNCT_6:22;
hence i < len doms p & q in (doms p).(i+1) & y = <*i*>^q by A7,A9,
TREES_3:38;
end;
hence thesis by A1,A2,TREES_3:def 15;
end;
theorem Th12:
for p being DTree-yielding FinSequence for i being Nat,
T being DecoratedTree, q being Node of T st i < len p &
T = p.(i+1) holds (x-tree p).(<*i*>^q) = T.q
proof
let p be DTree-yielding FinSequence, n be Nat,
T be DecoratedTree;
let q be Node of T;
assume
A1: n < len p & T = p.(n+1);
reconsider n as Element of NAT by ORDINAL1:def 12;
A2: <*n*>^q in dom (x-tree(p)) by Th11,A1;
then <*n*> in dom (x-tree(p)) by TREES_1:21;
then q in (dom (x-tree p))|<*n*> by A2,TREES_1:def 6;
then ((x-tree(p))|<*n*>).q = (x-tree(p)).(<*n*>^q) by TREES_2:def 10;
hence thesis by A1,Def4;
end;
theorem
for T being DecoratedTree holds dom (x-tree T) = ^dom T
proof
let T be DecoratedTree;
dom (x-tree <*T*>) = tree(doms <*T*>) & doms <*T*> = <*dom T*> by Th10,
FINSEQ_3:132;
hence thesis by TREES_3:def 16;
end;
theorem
for T1, T2 being DecoratedTree holds
dom (x-tree (T1,T2)) = tree(dom T1, dom T2)
proof
let T1, T2 be DecoratedTree;
dom
(x-tree <*T1,T2*>) = tree(doms <*T1,T2*>) & doms <*T1,T2*> = <*dom T1,
dom T2*> by Th10,FINSEQ_3:133;
hence thesis by TREES_3:def 17;
end;
theorem
for p,q being DTree-yielding FinSequence st x-tree p = y-tree q holds
x = y & p = q
proof
let p,q be DTree-yielding FinSequence;
assume
A1: x-tree p = y-tree q;
(x-tree p).{} = x by Def4;
hence x = y by A1,Def4;
dom (x-tree p) = tree(doms p) & dom (y-tree q) = tree(doms q) by Th10;
then A2: doms p = doms q by A1,TREES_3:50;
dom p = dom doms p & dom doms q = dom q by TREES_3:37;
then A3: len p = len q by A2,FINSEQ_3:29;
now
let i be Nat;
assume that
A4: i >= 1 and
A5: i <= len p;
consider n be Nat such that
A6: i = 1+n by A4,NAT_1:10;
reconsider n as Element of NAT by ORDINAL1:def 12;
A7: n < len p by A5,A6,NAT_1:13;
then p.i = (x-tree p)|<*n*> by A6,Def4;
hence p.i = q.i by A1,A3,A6,A7,Def4;
end;
hence thesis by A3;
end;
theorem
root-tree x = y-flat_tree p implies x = y & p = {}
proof
assume
A1: root-tree x = y-flat_tree p;
thus x = (root-tree x).{} by Th3
.= y by A1,Def3;
dom (y-flat_tree p) = elementary_tree len p by Def3;
hence thesis by A1,Th2,Th3;
end;
theorem
root-tree x = y-tree p & p is DTree-yielding implies x = y & p = {}
proof
assume that
A1: root-tree x = y-tree p and
A2: p is DTree-yielding;
reconsider p9 = p as DTree-yielding FinSequence by A2;
thus x = (root-tree x).{} by Th3
.= y by A1,A2,Def4;
dom (y-tree p) = tree(doms p9) by Th10;
then A3: doms p9 = {} by A1,Th3,TREES_3:50,52;
dom doms p9 = dom p by TREES_3:37;
hence thesis by A3;
end;
theorem
x-flat_tree p = y-tree q & q is DTree-yielding implies x = y &
len p = len q & for i st i in dom p holds q.i = root-tree (p.i)
proof
assume that
A1: x-flat_tree p = y-tree q and
A2: q is DTree-yielding;
reconsider q9 = q as DTree-yielding FinSequence by A2;
thus x = (x-flat_tree p).{} by Def3
.= y by A1,A2,Def4;
tree((len p)|->elementary_tree 0) = elementary_tree len p by TREES_3:54
.= dom (x-flat_tree p) by Def3
.= tree(doms q9) by A1,Th10;
then A3: (len p)|->elementary_tree 0 = doms q9 by TREES_3:50;
len doms q9 = len q by TREES_3:38;
thus
then A4: len p = len q by A3,CARD_1:def 7;
let i;
assume
A5: i in dom p;
then A6: i >= 1 by FINSEQ_3:25;
A7: i <= len p by A5,FINSEQ_3:25;
consider n being Nat such that
A8: i = 1+n by A6,NAT_1:10;
reconsider n as Element of NAT by ORDINAL1:def 12;
A9: n < len p by A7,A8,NAT_1:13;
then (x-flat_tree p)|<*n*> = root-tree (p.i) by A8,Th9;
hence thesis by A1,A2,A4,A8,A9,Def4;
end;
theorem
for p being DTree-yielding FinSequence, n being Nat,
q being FinSequence st <*n*>^q in dom (x-tree(p)) holds
(x-tree(p)).(<*n*>^q) = p..(n+1,q)
proof
let p be DTree-yielding FinSequence, n be Nat, q be FinSequence;
assume
A1: <*n*>^q in dom (x-tree(p));
then <*n*>^q is Node of (x-tree(p));
then reconsider q9 = q as FinSequence of NAT by FINSEQ_1:36;
reconsider n as Element of NAT by ORDINAL1:def 12;
A2: <*n*> in dom (x-tree p) by A1,TREES_1:21;
A3: <*n*>^q in tree(doms p) by A1,Th10;
A4: len doms p = len p by TREES_3:38;
A5: q9 in (dom (x-tree p))|<*n*> by A1,A2,TREES_1:def 6;
A6: n < len p by A3,A4,TREES_3:48;
A7: dom
((x-tree p)|<*n*>) = (dom (x-tree p))|<*n*> & ((x-tree(p))|<*n*>).q9 = (
x-tree(p)).(<*n*>^q) by A5,TREES_2:def 10;
n+1 in dom p & p.(n+1) = (x-tree(p))|<*n*> by A6,Def4,Lm2;
hence thesis by A5,A7,FUNCT_5:38;
end;
theorem
x-flat_tree({}) = root-tree x & x-tree({}) = root-tree x
proof
len {} = 0;
then A1: dom (x-flat_tree {}) = elementary_tree 0 by Def3;
now
let y be object;
assume y in elementary_tree 0;
then y = {} by TARSKI:def 1,TREES_1:29;
hence (x-flat_tree {}).y = x by Def3;
end;
hence x-flat_tree({}) = root-tree x by A1,FUNCOP_1:11;
reconsider e = {} as DTree-yielding FinSequence;
A2: dom (x-tree {}) = tree(doms e) by Th10
.= elementary_tree 0 by FUNCT_6:23,TREES_3:52;
now
let y be object;
assume y in elementary_tree 0;
then y = {} by TARSKI:def 1,TREES_1:29;
hence (x-tree e).y = x by Def4;
end;
hence thesis by A2,FUNCOP_1:11;
end;
theorem
x-flat_tree(<*y*>) =
((elementary_tree 1) --> x) with-replacement (<*0*>, root-tree y)
proof
set T = ((elementary_tree 1) --> x) with-replacement (<*0*>, root-tree y);
A1: dom (x-flat_tree <*y*>) = elementary_tree len <*y*> by Def3
.= elementary_tree 1 by FINSEQ_1:40;
A2: dom root-tree y = elementary_tree 0 by FUNCOP_1:13;
A3: dom ((elementary_tree 1) --> x) = elementary_tree 1 & <*0*> in
elementary_tree 1 by FUNCOP_1:13,TARSKI:def 2,TREES_1:51;
then A4: dom T = elementary_tree 1 with-replacement (<*0*>, elementary_tree 0 )
by A2,TREES_2:def 11
.= elementary_tree 1 by TREES_3:58,67;
now
let z be object;
assume z in elementary_tree 1;
then A5: z = {} or z = <*0*> by TARSKI:def 2,TREES_1:51;
A6: {} in elementary_tree 1 by TARSKI:def 2,TREES_1:51;
A7: not <*0*> is_a_prefix_of {};
A8: len <*y*> = 1 by FINSEQ_1:40;
A9: <*y*>.1 = y & (x-flat_tree <*y*>).{} = x by Def3,FINSEQ_1:40;
A10: T.{} = ((elementary_tree 1) --> x).{} by A3,A6,A7,TREES_3:45;
A11: (x-flat_tree <*y*>).<*0*> = <*y*>.(0+1) by A8,Def3;
T.<*0*> = (root-tree y).{} by A3,TREES_3:44;
hence
T.z = (x-flat_tree <*y*>).z by A5,A6,A9,A10,A11,Th3,FUNCOP_1:7;
end;
hence thesis by A1,A4;
end;
theorem
for T being DecoratedTree holds
x-tree(<*T*>) = ((elementary_tree 1) --> x) with-replacement (<*0*>, T)
proof
let T be DecoratedTree;
set D = ((elementary_tree 1) --> x) with-replacement (<*0*>, T);
set W = elementary_tree 1 with-replacement(<*0*>,dom T);
A1: dom (x-tree <*T*>) = tree(doms <*T*>) by Th10
.= tree(<*dom T*>) by FINSEQ_3:132
.= ^dom T by TREES_3:def 16
.= W by TREES_3:58;
A2: dom ((elementary_tree 1) --> x) = elementary_tree 1 by FUNCOP_1:13;
reconsider t1 = {}, t2 = <*0*> as Element of elementary_tree 1
by TARSKI:def 2,TREES_1:51;
t2 = t2;
then A3: dom D = W by A2,TREES_2:def 11;
A4: {} in dom T by TREES_1:22;
now
let y be object;
assume y in W;
then reconsider q = y as Element of W;
q
in elementary_tree 1 or ex v st v in dom T & q = t2^v by TREES_1:def 9;
then A5: q = {} or q = t2 & t2 = t2^t1 or
ex v st v in dom T & q = <*0*>^v by FINSEQ_1:34,TARSKI:def 2,TREES_1:51;
not t2 is_a_prefix_of t1;
then A6: D.{} = ((elementary_tree 1)-->x).t1 by A2,TREES_3:45
.= x by FUNCOP_1:7
.= (x-tree <*T*>).{} by Def4;
now
given r being FinSequence of NAT such that
A7: r in dom T and
A8: q = <*0*>^r;
reconsider r as Node of T by A7;
q = t2^r by A8;
then A9: D.q = T.r by A2,TREES_3:46;
len <*T*> = 1 & <*T*>.(0+1) = T by FINSEQ_1:40;
then A10: (x-tree <*T*>)|t2 = T by Def4;
W|t2 = dom T by TREES_1:33;
hence D.q = (x-tree <*T*>).q by A1,A8,A9,A10,TREES_2:def 10;
end;
hence D.y = (x-tree <*T*>).y by A4,A5,A6;
end;
hence thesis by A1,A3;
end;
registration
let D be non empty set, d be Element of D, p be FinSequence of D;
cluster d-flat_tree(p) -> D-valued;
coherence
proof
set T = d-flat_tree(p);
rng T c= D
proof
let x be object;
assume x in rng T;
then consider y being object such that
A1: y in dom T and
A2: x = T.y by FUNCT_1:def 3;
reconsider y as Node of T by A1;
A3: dom T = elementary_tree len p by Def3;
A4: T.{} = d by Def3;
now
assume y <> {};
then consider n such that
A5: n < len p & y = <*n*> by A3,TREES_1:30;
A6: T.y = p.(n+1) & p.(n+1) in rng p by A5,Def3,Lm2;
rng p c= D by FINSEQ_1:def 4;
hence thesis by A2,A6;
end;
hence thesis by A2,A4;
end;
hence thesis by RELAT_1:def 19;
end;
end;
registration
let D be non empty set, F be non empty DTree-set of D;
let d be Element of D, p be FinSequence of F;
cluster d-tree(p) -> D-valued;
coherence
proof
set T = d-tree(p);
rng T c= D
proof
let x be object;
assume x in rng T;
then consider y being object such that
A1: y in dom T and
A2: x = T.y by FUNCT_1:def 3;
reconsider y as Node of T by A1;
A3: tree(doms p)-level 1 = {<*n*>: n < len doms p} by TREES_3:49;
A4: T.{} = d by Def4;
A5: tree(doms p) = dom T & len doms p = len p by Th10,TREES_3:38;
now
assume y <> {};
then consider q being FinSequence of NAT,
n being Element of NAT such that
A6: y = <*n*>^q by FINSEQ_2:130;
A7: <*n*> in dom T by A6,TREES_1:21;
A8: len <*n*> = 1 by FINSEQ_1:40;
A9: q in (dom T)|<*n*> by A6,A7,TREES_1:def 6;
A10: <*n*> in (dom T)-level 1 by A7,A8;
A11: dom (T|<*n*>) = (dom T)|<*n*> by TREES_2:def 10;
consider i such that
A12: <*n*> = <*i*> & i < len p by A3,A5,A10;
A13: <*n*>.1 = n & <*i*>.1 = i by FINSEQ_1:40;
then A14: T|<*n*> = p.(n+1) by A12,Def4;
A15: p.(n+1) in rng p by A12,A13,Lm2;
rng p c= F by FINSEQ_1:def 4;
then reconsider t = p.(n+1) as Element of F by A15;
A16: t.q = x by A2,A6,A9,A14,TREES_2:def 10;
A17: t.q in rng t by A9,A11,A14,FUNCT_1:def 3;
rng t c= D by RELAT_1:def 19;
hence thesis by A16,A17;
end;
hence thesis by A2,A4;
end;
hence thesis by RELAT_1:def 19;
end;
end;
registration
let D be non empty set, d be Element of D, T be DecoratedTree of D;
cluster d-tree T -> D-valued;
coherence
proof
reconsider T as Element of Trees D by TREES_3:def 7;
reconsider t = <*T*> as Element of (Trees D)* by FINSEQ_1:def 11;
d-tree T = d-tree t;
hence thesis;
end;
end;
registration
let D be non empty set, d be Element of D, T1, T2 be DecoratedTree of D;
cluster d-tree(T1, T2) -> D-valued;
coherence
proof
reconsider T1, T2 as Element of Trees D by TREES_3:def 7;
<*T1,T2*> = <*T1 qua Element of Trees D qua non empty set*>^
<*T2 qua Element of Trees D qua non empty set*>;
then
reconsider t = <*T1,T2*> as Element of (Trees D)* by FINSEQ_1:def 11;
d-tree(T1, T2) = d-tree t;
hence thesis;
end;
end;
definition
let D be non empty set;
let p be FinSequence of FinTrees D;
redefine func doms p -> FinSequence of FinTrees;
coherence
proof
A1: dom doms p = dom p by TREES_3:37;
A2: rng p c= FinTrees D by FINSEQ_1:def 4;
thus doms p is FinSequence of FinTrees
proof
let x be object;
assume x in rng doms p;
then consider y being object such that
A3: y in dom p and
A4: x = (doms p).y by A1,FUNCT_1:def 3;
reconsider T = p.y as DecoratedTree by A3,TREES_3:24;
T in rng p by A3,FUNCT_1:def 3;
then dom T in FinTrees by A2,TREES_3:def 2;
hence thesis by A3,A4,FUNCT_6:22;
end;
end;
end;
definition
let D be non empty set;
let d be Element of D, p be FinSequence of FinTrees D;
redefine func d-tree p -> Element of FinTrees D;
coherence
proof
dom (d-tree p) = tree(doms p) by Th10;
hence thesis by TREES_3:def 8;
end;
end;
definition
let D be non empty set, x be Subset of D;
redefine mode FinSequence of x -> FinSequence of D;
coherence
proof
let p be FinSequence of x;
rng p c= x by FINSEQ_1:def 4;
hence rng p c= D by XBOOLE_1:1;
end;
end;
registration
let D be non empty constituted-DTrees set;
let X be Subset of D;
cluster -> DTree-yielding for FinSequence of X;
coherence;
end;
begin :: Expanding of decoreted tree by substitution
scheme ExpandTree{T1() -> Tree, T2() -> Tree, P[set]}: ex T being Tree st
for p holds p in T iff p in T1() or
ex q being Element of T1(), r being Element of T2() st P[q] & p = q^r
proof
defpred X[object] means $1 in T1() or
ex q being Element of T1(), r being Element of T2() st P[q] & $1 = q^r;
consider T being set such that
A1: for x being object holds x in T iff x in NAT* & X[x] from XBOOLE_0:sch 1;
set t = the Element of T1();
t in NAT* by FINSEQ_1:def 11;
then reconsider T as non empty set by A1;
T is Tree-like
proof
thus T c= NAT*
by A1;
thus
for p being FinSequence of NAT st p in T holds ProperPrefixes p c= T
proof
let p be FinSequence of NAT such that
A2: p in T;
let x be object;
assume x in ProperPrefixes p;
then consider q such that
A3: x = q and
A4: q is_a_proper_prefix_of p by TREES_1:def 2;
assume
A5: not thesis;
q is_a_prefix_of p by A4,XBOOLE_0:def 8;
then consider r such that
A6: p = q^r by TREES_1:1;
reconsider q,r as FinSequence of NAT by A6,FINSEQ_1:36;
q^r in T1() & q in NAT* & (q^r in T1() implies q in T1()) or
ex q being Element of T1(), r being Element of T2() st P[q] & p = q^r
by A1,A2,A6,FINSEQ_1:def 11,TREES_1:21;
then consider q9 being Element of T1(), r9 being Element of T2() such
that
A7: P[q9] and
A8: q^r = q9^r9 by A1,A3,A5,A6;
now
assume len q <= len q9;
then ex s being FinSequence st q^s = q9 by A8,FINSEQ_1:47;
then A9: q in T1() by TREES_1:21;
q in NAT* by FINSEQ_1:def 11;
hence contradiction by A1,A3,A5,A9;
end;
then consider s being FinSequence such that
A10: q9^s = q by A8,FINSEQ_1:47;
reconsider s as FinSequence of NAT by A10,FINSEQ_1:36;
q9^r9 = q9^(s^r) by A8,A10,FINSEQ_1:32;
then s^r = r9 by FINSEQ_1:33;
then q in NAT* & s is Element of T2() by FINSEQ_1:def 11,TREES_1:21;
hence thesis by A1,A3,A5,A7,A10;
end;
let p be FinSequence of NAT, k,n be Nat;
assume that
A11: p^<*k*> in T and
A12: n <= k;
A13: now
assume p^<*k*> in T1();
then A14: p^<*n*> in T1() by A12,TREES_1:def 3;
reconsider n as Element of NAT by ORDINAL1:def 12;
p^<*n*> in NAT* by FINSEQ_1:def 11;
hence thesis by A1,A14;
end;
now
assume
A15: not p^<*k*> in T1();
then consider q being Element of T1(), r being Element of T2() such that
A16: P[q] and
A17: p^<*k*> = q^r by A1,A11;
q^{} = q by FINSEQ_1:34;
then r <> {} by A15,A17;
then consider w being FinSequence, z such that
A18: r = w^<*z*> by FINSEQ_1:46;
reconsider w as FinSequence of NAT by A18,FINSEQ_1:36;
A19: p^<*k*> = q^w^<*z*> by A17,A18,FINSEQ_1:32;
A20: (
p^<*k*>).(len p+1) = k & (q^w^<*z*>).(len(q^w)+1) = z by FINSEQ_1:42;
A21: len <*k*> = 1 & len <*z*> = 1 by FINSEQ_1:40;
A22: len
(p^<*k*>) = len p+len <*k*> & len (q^w^<*z*>) = len (q^w)+len <*z*> by
FINSEQ_1:22;
then A23: p = q^w by A19,A20,A21,FINSEQ_1:33;
A24: w^<*n*> in T2() by A12,A18,A19,A20,A21,A22,TREES_1:def 3;
A25: p^<*n*> = q^(w^<*n*>) by A23,FINSEQ_1:32;
reconsider n as Element of NAT by ORDINAL1:def 12;
p^<*n*> in NAT* by FINSEQ_1:def 11;
hence thesis by A1,A16,A24,A25;
end;
hence thesis by A13;
end;
then reconsider T as Tree;
take T;
let p;
p is Element of T1() or
(ex q being Element of T1(), r being Element of T2() st P[q] & p = q^r)
implies p in NAT* by FINSEQ_1:def 11;
hence thesis by A1;
end;
definition
let T,T9 be DecoratedTree;
let x be set;
func (T,x) <- T9 -> DecoratedTree means
:
Def7: (for p holds p in dom it iff p in dom T or
ex q being Node of T, r being Node of T9 st
q in Leaves dom T & T.q = x & p = q^r) & (for p being Node of T st
not p in Leaves dom T or T.p <> x holds it.p = T.p) &
for p being Node of T, q being Node of T9 st
p in Leaves dom T & T.p = x holds it.(p^q) = T9.q;
existence
proof
defpred X[set] means $1 in Leaves dom T & T.$1 = x;
consider W being Tree such that
A1: p in W iff p in dom T or ex q being Node of T, r being Node of T9 st
X[q] & p = q^r from ExpandTree;
defpred X[object,object] means
$1 is Node of T & (not $1 in Leaves dom T or T.$1 <> x) & $2 = T.$1 or
ex p being Node of T, q being Node of T9 st
$1 = p^q & p in Leaves dom T & T.p = x & $2 = T9.q;
A2: for z being object st z in W ex y being object st X[z,y]
proof
let z be object;
assume z in W;
then reconsider w = z as Element of W;
A3: now
given q being Node of T, r being Node of T9 such that
A4: q in Leaves dom T & T.q = x & w = q^r;
take y = T9.r, q, r;
thus z = q^r & q in Leaves dom T & T.q = x & y = T9.r by A4;
end;
now
assume
A5: not ex q being Node of T, r being Node of T9 st
q in Leaves dom T & T.q = x & w = q^r;
take y = T.z;
thus z is Node of T by A1,A5;
reconsider w as Node of T by A1,A5;
reconsider e = {} as Node of T9 by TREES_1:22;
w^e = w by FINSEQ_1:34;
hence (not z in Leaves dom T or T.z <> x) & y = T.z by A5;
end;
hence thesis by A3;
end;
consider f being Function such that
A6: dom f = W &
for z being object st z in W holds X[z,f.z] from CLASSES1:sch 1(A2);
reconsider f as DecoratedTree by A6,TREES_2:def 8;
take f;
thus p in dom f iff p in dom T or
ex q being Node of T, r being Node of T9 st
q in Leaves dom T & T.q = x & p = q^r by A1,A6;
thus for p being Node of T st not p in Leaves dom T or T.p <> x holds
f.p = T.p
proof
let p be Node of T;
assume
A7: not p in Leaves dom T or T.p <> x;
A8: p in W by A1;
now
given p9 being Node of T, q being Node of T9 such that
A9: p = p9^q and
A10: p9 in Leaves dom T and
A11: T.p9 = x and f.p = T9.q;
p9
is_a_prefix_of p & not p9 is_a_proper_prefix_of p by A9,A10,TREES_1:1,def 5;
hence contradiction by A7,A10,A11,XBOOLE_0:def 8;
end;
hence thesis by A6,A8;
end;
let p be Node of T, q be Node of T9;
assume that
A12: p in Leaves dom T and
A13: T.p = x;
A14: p^q in W by A1,A12,A13;
now
assume p^q is Node of T;
then A15: not p is_a_proper_prefix_of p^q by A12,TREES_1:def 5;
p is_a_prefix_of p^q by TREES_1:1;
hence p = p^q by A15,XBOOLE_0:def 8;
end;
then consider p9 being Node of T, q9 being Node of T9 such that
A16: p^q = p9^q9 and
A17: p9 in Leaves dom T and T.p9 = x and
A18: f.(p^q) = T9.q9 by A6,A12,A13,A14;
now
let p,p9,q,q9 be FinSequence of NAT, T be Tree;
assume that
A19: p^q = p9^q9 and
A20: p in Leaves T & p9 in Leaves T and
A21: p <> p9;
now
assume len p <= len p9;
then ex r st p^r = p9 by A19,FINSEQ_1:47;
then p is_a_prefix_of p9 by TREES_1:1;
then p is_a_proper_prefix_of p9 by A21,XBOOLE_0:def 8;
hence contradiction by A20,TREES_1:def 5;
end;
then ex r st p9^r = p by A19,FINSEQ_1:47;
then p9 is_a_prefix_of p by TREES_1:1;
then p9 is_a_proper_prefix_of p by A21,XBOOLE_0:def 8;
hence contradiction by A20,TREES_1:def 5;
end;
then p = p9 by A12,A16,A17;
hence thesis by A16,A18,FINSEQ_1:33;
end;
uniqueness
proof
let T1, T2 be DecoratedTree such that
A22: p in dom T1 iff p in dom T or ex q being Node of T, r being Node of T9 st
q in Leaves dom T & T.q = x & p = q^r and
A23: for p being Node of T st
not p in Leaves dom T or T.p <> x holds T1.p = T.p and
A24: for p being Node of T, q being Node of T9 st
p in Leaves dom T & T.p = x holds T1.(p^q) = T9.q and
A25: p in dom T2 iff p in dom T or ex q being Node of T, r being Node of T9 st
q in Leaves dom T & T.q = x & p = q^r and
A26: for p being Node of T st
not p in Leaves dom T or T.p <> x holds T2.p = T.p and
A27: for p being Node of T, q being Node of T9 st
p in Leaves dom T & T.p = x holds T2.(p^q) = T9.q;
A28: dom T1 = dom T2
proof
let p be FinSequence of NAT;
p in dom T1 iff p in dom T or ex q being Node of T, r being Node of T9
st q in Leaves dom T & T.q = x & p = q^r by A22;
hence thesis by A25;
end;
reconsider p9 = {} as Node of T9 by TREES_1:22;
now
let y be object;
assume y in dom T1;
then reconsider p = y as Node of T1;
per cases by A22;
suppose
p in dom T;
then reconsider p as Node of T;
hereby per cases;
suppose
A29: p in Leaves dom T & T.p = x;
then A30: T1.(p^p9) = T9.p9 by A24;
p^p9 = p by FINSEQ_1:34;
hence T1.y = T2.y by A27,A29,A30;
end;
suppose
A31: not p in Leaves dom T or T.p <> x;
then T1.p = T.p by A23;
hence T1.y = T2.y by A26,A31;
end;
end;
end;
suppose
ex q being Node of T, r being Node of T9 st q in Leaves dom T &
T.q = x & p = q^r;
then consider q being Node of T, r being Node of T9 such that
A32: q in Leaves dom T & T.q = x & p = q^r;
thus T1.y = T9.r by A24,A32
.= T2.y by A27,A32;
end;
end;
hence thesis by A28;
end;
end;
registration
let D be non empty set;
let T,T9 be DecoratedTree of D;
let x be set;
cluster (T,x) <- T9 -> D-valued;
coherence
proof
rng ((T,x)<-T9) c= D
proof
let y be object;
assume y in rng ((T,x)<-T9);
then consider z being object such that
A1: z in dom ((T,x)<-T9) and
A2: y = ((T,x)<-T9).z by FUNCT_1:def 3;
reconsider z as Node of (T,x)<-T9 by A1;
reconsider p9 = {} as Node of T9 by TREES_1:22;
per cases by Def7;
suppose
z in dom T;
then reconsider p = z as Node of T;
hereby per cases;
suppose
p in Leaves dom T & T.p = x;
then A3: ((T,x)<-T9).(p^p9) = T9.p9 by Def7;
p^p9 = p by FINSEQ_1:34;
hence thesis by A2,A3;
end;
suppose
not p in Leaves dom T or T.p <> x;
then ((T,x)<-T9).p = T.p by Def7;
hence thesis by A2;
end;
end;
end;
suppose
ex q being Node of T, r being Node of T9 st q in Leaves dom T &
T.q = x & z = q^r;
then consider q being Node of T, r being Node of T9 such that
A4: q in Leaves dom T & T.q = x & z = q^r;
((T,x)<-T9).z = T9.r by A4,Def7;
hence thesis by A2;
end;
end;
hence thesis by RELAT_1:def 19;
end;
end;
reserve T,T9 for DecoratedTree,
x,y for set;
theorem
not x in rng T or not x in Leaves T implies (T,x) <- T9 = T
proof
A1: Leaves T c= rng T by RELAT_1:111;
assume not x in rng T or not x in Leaves T;
then A2: not x in Leaves T by A1;
thus
A3: dom ((T,x) <- T9) = dom T
proof
let p be FinSequence of NAT;
p in dom (T,x) <- T9 iff p in dom T or
ex q being Node of T, r being Node of T9 st
q in Leaves dom T & T.q = x & p = q^r by Def7;
hence thesis by A2,FUNCT_1:def 6;
end;
let p be Node of (T,x) <- T9;
reconsider p9 = p as Node of T by A3;
p9 in Leaves dom T implies T.p9 in Leaves T by FUNCT_1:def 6;
hence thesis by A2,Def7;
end;
begin :: Double decoreted trees
reserve D1, D2 for non empty set,
T for DecoratedTree of D1,D2,
d1 for Element of D1,
d2 for Element of D2,
F for non empty DTree-set of D1,D2,
F1 for non empty (DTree-set of D1),
F2 for non empty DTree-set of D2;
theorem Th24:
for D1, D2, T holds dom T`1 = dom T & dom T`2 = dom T
proof
let D1, D2, T;
A1: T`1 = pr1(D1,D2)*T & T`2 = pr2(D1,D2)*T by TREES_3:def 12,def 13;
A2: rng T c= [:D1,D2:] & dom pr1(D1,D2) = [:D1,D2:] by FUNCT_2:def 1
,RELAT_1:def 19;
dom pr2(D1,D2) = [:D1,D2:] by FUNCT_2:def 1;
hence thesis by A1,A2,RELAT_1:27;
end;
theorem Th25:
(root-tree [d1,d2])`1 = root-tree d1 & (root-tree [d1,d2])`2 = root-tree d2
proof reconsider r = {} as Node of root-tree [d1,d2] by TREES_1:22;
A1: dom (root-tree [d1,d2])`1 = dom root-tree [d1,d2] by Th24;
A2: dom (root-tree [d1,d2])`2 = dom root-tree [d1,d2] by Th24;
A3: (root-tree [d1,d2]).r = [d1,d2] by Th3;
A4: [d1,d2]`1 = d1;
A5: [d1,d2]`2 = d2;
thus (root-tree [d1,d2])`1 = root-tree ((root-tree [d1,d2])`1.r) by A1,Th3
,Th5
.= root-tree d1 by A3,A4,TREES_3:39;
thus (root-tree [d1,d2])`2 = root-tree ((root-tree [d1,d2])`2.r) by A2,Th3
,Th5
.= root-tree d2 by A3,A5,TREES_3:39;
end;
theorem
<:root-tree x, root-tree y:> = root-tree [x,y]
proof reconsider x9 = x as Element of {x} by TARSKI:def 1;
reconsider y9 = y as Element of {y} by TARSKI:def 1;
(root-tree [x9,y9])`1 = root-tree x & (root-tree [x9,y9])`2 = root-tree y
by Th25;
hence thesis by TREES_3:40;
end;
theorem Th27:
for D1,D2, d1,d2, F,F1
for p being FinSequence of F, p1 being FinSequence of F1 st dom p1 = dom p &
for i st i in dom p for T st T = p.i holds p1.i = T`1
holds ([d1,d2]-tree p)`1 = d1-tree p1
proof
let D1,D2, d1,d2, F,F1;
let p be FinSequence of F, p1 be FinSequence of F1 such that
A1: dom p1 = dom p and
A2: for i st i in dom p for T st T = p.i holds p1.i = T`1;
set W = [d1,d2]-tree p, W1 = d1-tree p1;
A3: len doms p = len p by TREES_3:38;
A4: len doms p1 = len p1 by TREES_3:38;
A5: len p = len p1 by A1,FINSEQ_3:29;
then A6: dom doms p = dom doms p1 by A3,A4,FINSEQ_3:29;
A7: dom doms p = dom p by A3,FINSEQ_3:29;
now
let i be Nat;
assume
A8: i in dom p;
then reconsider T = p.i as Element of F by Lm1;
A9: p1.i = T`1 by A2,A8;
A10: (doms p).i = dom T by A8,FUNCT_6:22;
(doms p1).i = dom T`1 by A1,A8,A9,FUNCT_6:22;
hence (doms p).i = (doms p1).i by A10,Th24;
end;
then A11: doms p = doms p1 by A6,A7,FINSEQ_1:13;
dom W`1 = dom W by Th24
.= tree(doms p) by Th10;
hence dom W`1 = dom W1 by A11,Th10;
let x be Node of W`1;
reconsider a = x as Node of W by Th24;
A12: W`1.x = (W.a)`1 by TREES_3:39;
per cases;
suppose
x = {};
then W.x = [d1,d2] & W1.x = d1 by Def4;
hence thesis by A12;
end;
suppose
x <> {};
then consider n being Nat, T being DecoratedTree,
q being Node of T such that
A13: n < len p and
A14: T = p.(n+1) and
A15: a = <*n*>^q by Th11;
reconsider T as Element of F by A13,A14,Lm3;
reconsider q as Node of T`1 by Th24;
A16: p1.(n+1) = T`1 by A2,A13,A14,Lm2;
A17: W.a = T.q by A13,A14,A15,Th12;
W1.a = T`1.q by A5,A13,A15,A16,Th12;
hence thesis by A12,A17,TREES_3:39;
end;
end;
theorem Th28:
for D1,D2, d1,d2, F,F2
for p being FinSequence of F, p2 being FinSequence of F2 st dom p2 = dom p &
for i st i in dom p for T st T = p.i holds p2.i = T`2
holds ([d1,d2]-tree p)`2 = d2-tree p2
proof
let D1,D2, d1,d2, F,F2;
let p be FinSequence of F, p2 be FinSequence of F2 such that
A1: dom p2 = dom p and
A2: for i st i in dom p for T st T = p.i holds p2.i = T`2;
set W = [d1,d2]-tree p, W2 = d2-tree p2;
A3: len doms p = len p by TREES_3:38;
A4: len doms p2 = len p2 by TREES_3:38;
A5: len p = len p2 by A1,FINSEQ_3:29;
then A6: dom doms p = dom doms p2 by A3,A4,FINSEQ_3:29;
A7: dom doms p = dom p by A3,FINSEQ_3:29;
now
let i be Nat;
assume
A8: i in dom p;
then reconsider T = p.i as Element of F by Lm1;
A9: p2.i = T`2 by A2,A8;
A10: (doms p).i = dom T by A8,FUNCT_6:22;
(doms p2).i = dom T`2 by A1,A8,A9,FUNCT_6:22;
hence (doms p).i = (doms p2).i by A10,Th24;
end;
then A11: doms p = doms p2 by A6,A7,FINSEQ_1:13;
dom W`2 = dom W by Th24
.= tree(doms p) by Th10;
hence dom W`2 = dom W2 by A11,Th10;
let x be Node of W`2;
reconsider a = x as Node of W by Th24;
A12: W`2.x = (W.a)`2 by TREES_3:39;
per cases;
suppose
x = {};
then W.x = [d1,d2] & W2.x = d2 by Def4;
hence thesis by A12;
end;
suppose
x <> {};
then consider n being Nat, T being DecoratedTree,
q being Node of T such that
A13: n < len p and
A14: T = p.(n+1) and
A15: a = <*n*>^q by Th11;
reconsider T as Element of F by A13,A14,Lm3;
reconsider q as Node of T`2 by Th24;
A16: p2.(n+1) = T`2 by A2,A13,A14,Lm2;
A17: W.a = T.q by A13,A14,A15,Th12;
W2.a = T`2.q by A5,A13,A15,A16,Th12;
hence thesis by A12,A17,TREES_3:39;
end;
end;
theorem Th29:
for D1,D2, d1,d2, F for p being FinSequence of F
ex p1 being FinSequence of Trees D1 st dom p1 = dom p &
(for i st i in dom p ex T being Element of F st T = p.i & p1.i = T`1) &
([d1,d2]-tree p)`1 = d1-tree p1
proof
let D1,D2, d1,d2, F;
let p be FinSequence of F;
A1: Seg len p = dom p by FINSEQ_1:def 3;
defpred X[set,set] means ex T being Element of F st T = p.$1 & $2 = T`1;
A2: for i be Nat st i in Seg len p ex x being Element of Trees D1 st X[i,x]
proof
let i be Nat;
assume i in Seg len p;
then reconsider T = p.i as Element of F by A1,Lm1;
reconsider y = T`1 as Element of Trees D1 by TREES_3:def 7;
take y, T;
thus thesis;
end;
consider p1 being FinSequence of Trees D1 such that
A3: dom p1 = Seg len p & for i be Nat st i in Seg len p holds X[i,p1.i]
from FINSEQ_1:sch 5(A2);
take p1;
thus
A4: dom p1 = dom p by A3,FINSEQ_1:def 3;
hence for i st i in dom p
ex T being Element of F st T = p.i & p1.i = T`1 by A3;
now
let i;
assume i in dom p;
then ex T being Element of F st T = p.i & p1.i = T`1 by A3,A4;
hence for T st T = p.i holds p1.i = T`1;
end;
hence thesis by A4,Th27;
end;
theorem Th30:
for D1,D2, d1,d2, F for p being FinSequence of F
ex p2 being FinSequence of Trees D2 st dom p2 = dom p &
(for i st i in dom p ex T being Element of F st T = p.i & p2.i = T`2) &
([d1,d2]-tree p)`2 = d2-tree p2
proof
let D1,D2, d1,d2, F;
let p be FinSequence of F;
A1: Seg len p = dom p by FINSEQ_1:def 3;
defpred X[Nat,set] means ex T being Element of F st T = p.$1 & $2 = T`2;
A2: for i be Nat st i in Seg len p ex x being Element of Trees D2 st X[i,x]
proof
let i be Nat;
assume i in Seg len p;
then reconsider T = p.i as Element of F by A1,Lm1;
reconsider y = T`2 as Element of Trees D2 by TREES_3:def 7;
take y, T;
thus thesis;
end;
consider p2 being FinSequence of Trees D2 such that
A3: dom p2 = Seg len p & for i be Nat st i in Seg len p holds X[i,p2.i]
from FINSEQ_1:sch 5(A2);
take p2;
thus
A4: dom p2 = dom p by A3,FINSEQ_1:def 3;
hence for i st i in dom p
ex T being Element of F st T = p.i & p2.i = T`2 by A3;
now
let i;
assume i in dom p;
then ex T being Element of F st T = p.i & p2.i = T`2 by A3,A4;
hence for T st T = p.i holds p2.i = T`2;
end;
hence thesis by A4,Th28;
end;
theorem
for D1,D2, d1,d2 for p being FinSequence of FinTrees [:D1,D2:]
ex p1 being FinSequence of FinTrees D1 st dom p1 = dom p &
(for i st i in dom p ex T being Element of FinTrees [:D1,D2:] st
T = p.i & p1.i = T`1) & ([d1,d2]-tree p)`1 = d1-tree p1
proof
let D1,D2, d1,d2;
let p be FinSequence of FinTrees [:D1,D2:];
consider p1 being FinSequence of Trees D1 such that
A1: dom
p1 = dom p & for i st i in dom p ex T being Element of FinTrees [:D1,D2
:] st T = p.i & p1.i = T`1 and
A2: ([d1,d2]-tree p)`1 = d1-tree p1 by Th29;
rng p1 c= FinTrees D1
proof
let x be object;
assume x in rng p1;
then consider y being object such that
A3: y in dom p1 and
A4: x = p1.y by FUNCT_1:def 3;
reconsider y as Nat by A3;
consider T being Element of FinTrees [:D1,D2:] such that
T = p.y and
A5: p1.y = T`1 by A1,A3;
dom T`1 = dom T by Th24;
hence thesis by A4,A5,TREES_3:def 8;
end;
then p1 is FinSequence of FinTrees D1 by FINSEQ_1:def 4;
hence thesis by A1,A2;
end;
theorem
for D1,D2, d1,d2 for p being FinSequence of FinTrees [:D1,D2:]
ex p2 being FinSequence of FinTrees D2 st dom p2 = dom p &
(for i st i in dom p ex T being Element of FinTrees [:D1,D2:] st
T = p.i & p2.i = T`2) & ([d1,d2]-tree p)`2 = d2-tree p2
proof
let D1,D2, d1,d2;
let p be FinSequence of FinTrees [:D1,D2:];
consider p2 being FinSequence of Trees D2 such that
A1: dom
p2 = dom p & for i st i in dom p ex T being Element of FinTrees [:D1,D2
:] st T = p.i & p2.i = T`2 and
A2: ([d1,d2]-tree p)`2 = d2-tree p2 by Th30;
rng p2 c= FinTrees D2
proof
let x be object;
assume x in rng p2;
then consider y being object such that
A3: y in dom p2 and
A4: x = p2.y by FUNCT_1:def 3;
reconsider y as Nat by A3;
consider T being Element of FinTrees [:D1,D2:] such that
T = p.y and
A5: p2.y = T`2 by A1,A3;
dom T`2 = dom T by Th24;
hence thesis by A4,A5,TREES_3:def 8;
end;
then p2 is FinSequence of FinTrees D2 by FINSEQ_1:def 4;
hence thesis by A1,A2;
end;