:: Full Trees
:: by Robert Milewski
::
:: Received February 25, 1998
:: Copyright (c) 1998-2019 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, FINSEQ_1, ORDINAL4, XBOOLE_0, SUBSET_1, RELAT_1,
BINTREE1, TREES_1, MARGREL1, TARSKI, ORDINAL1, CARD_1, ARYTM_3, PARTFUN1,
FUNCT_1, XBOOLEAN, TREES_2, FINSEQ_2, TREES_4, ZFMISC_1, FUNCOP_1,
MCART_1, FINSEQ_5, NAT_1, BINARITH, CAT_1, XXREAL_0, EUCLID, FINSET_1,
POWER, ARYTM_1, BINARI_3, INT_1, ABIAN, BINTREE2, XCMPLX_0;
notations TARSKI, XBOOLE_0, ZFMISC_1, SUBSET_1, CARD_1, ORDINAL1, NUMBERS,
XCMPLX_0, XTUPLE_0, MCART_1, NAT_1, NAT_D, ABIAN, SERIES_1, RELAT_1,
MARGREL1, DOMAIN_1, FUNCT_1, PARTFUN1, FUNCT_2, BINOP_1, FINSET_1,
FUNCOP_1, FINSEQ_1, FINSEQ_2, FINSEQ_5, BINARITH, BINARI_3, TREES_1,
TREES_2, TREES_4, BINTREE1, EUCLID, XXREAL_0;
constructors WELLORD2, DOMAIN_1, NAT_D, FINSEQOP, SERIES_1, BINARITH,
FINSEQ_5, TREES_9, ABIAN, EUCLID, BINTREE1, BINARI_3, RELSET_1, XTUPLE_0,
BINOP_1, PRE_POLY;
registrations XBOOLE_0, SUBSET_1, ORDINAL1, RELSET_1, FINSET_1, XXREAL_0,
XREAL_0, NAT_1, FINSEQ_1, MARGREL1, TREES_2, TREES_9, BINTREE1, FINSEQ_2,
INT_1, XTUPLE_0, CARD_1;
requirements REAL, NUMERALS, BOOLE, SUBSET, ARITHM;
definitions TARSKI, XBOOLE_0;
equalities EUCLID, FINSEQ_2, MARGREL1, XBOOLEAN, BINOP_1;
expansions TARSKI, XBOOLE_0;
theorems TARSKI, MCART_1, NAT_1, NAT_2, WELLORD2, ZFMISC_1, FUNCT_1, FUNCT_2,
CARD_1, CARD_2, POWER, FUNCOP_1, FINSEQ_1, FINSEQ_2, FINSEQ_4, FINSEQ_5,
FINSEQ_6, BINARI_3, TREES_1, TREES_2, BINTREE1, XBOOLE_0, XBOOLE_1,
XREAL_1, NAT_D, PARTFUN1, XXREAL_0, XREAL_0, TREES_9, RELSET_1;
schemes FUNCT_2, NAT_1, FINSEQ_2, TREES_2, FUNCT_1;
begin :: Trees and Binary Trees
Lm1: for D being set, p, q being FinSequence of D holds p^q is FinSequence of
D;
Lm2: for D being non empty set, x being Element of D holds <*x*> is
FinSequence of D;
theorem Th1:
for D be set for p be FinSequence for n be Nat holds p
in D* implies p|Seg n in D*
proof
let D be set;
let p be FinSequence;
let n be Nat;
assume p in D*;
then p is FinSequence of D by FINSEQ_1:def 11;
then p|Seg n is FinSequence of D by FINSEQ_1:18;
hence thesis by FINSEQ_1:def 11;
end;
theorem Th2:
for T be binary Tree for t be Element of T holds t is FinSequence of BOOLEAN
proof
let T be binary Tree;
let t be Element of T;
defpred P[FinSequence] means $1 is Element of T implies rng $1 c= BOOLEAN;
A1: for p be FinSequence of NAT
for x be Element of NAT st P[p] holds P[p^<*x*>]
proof
let p be FinSequence of NAT;
let x be Element of NAT;
assume
A2: P[p];
assume
A3: p^<*x*> is Element of T;
then reconsider p1 = p as Element of T by TREES_1:21;
p^<*x*> in { p^<*n*> where n is Nat : p^<*n*> in T } by A3;
then
A4: p^<*x*> in succ p1 by TREES_2:def 5;
then not p in Leaves T by BINTREE1:3;
then succ p1 = { p^<* 0 *>, p^<*1*> } by BINTREE1:def 2;
then p^<*x*> = p^<* 0 *> or p^<*x*> = p^<*1*> by A4,TARSKI:def 2;
then x = 0 or x = 1 by FINSEQ_2:17;
then
A5: x in {0,1} by TARSKI:def 2;
A6: {x} c= BOOLEAN
by A5,TARSKI:def 1;
rng <*x*> = {x} by FINSEQ_1:38;
then (rng p) \/ (rng <*x*>) c= BOOLEAN by A2,A3,A6,TREES_1:21,XBOOLE_1:8;
hence thesis by FINSEQ_1:31;
end;
A7: P[<*>NAT] by XBOOLE_1:2;
for p be FinSequence of NAT holds P[p] from FINSEQ_2:sch 2(A7,A1);
then rng t c= BOOLEAN;
hence thesis by FINSEQ_1:def 4;
end;
definition
let T be binary Tree;
redefine mode Element of T -> FinSequence of BOOLEAN;
coherence by Th2;
end;
theorem Th3:
for T be Tree st T = {0,1}* holds T is binary
proof
let T be Tree;
assume
A1: T = {0,1}*;
now
let t be Element of T;
assume not t in Leaves T;
{ t^<*n*> where n is Nat : t^<*n*> in T } = { t^<* 0 *>, t^
<* 1 *> }
proof
thus {t^<*n*> where n is Nat : t^<*n*> in T} c= { t^<* 0 *>,
t^<* 1 *> }
proof
let x be object;
assume x in { t^<*n*> where n is Nat : t^<*n*> in T };
then consider n be Nat such that
A2: x = t^<*n*> and
A3: t^<*n*> in T;
reconsider tn = t^<*n*> as FinSequence of ({0,1} qua set) by A1,A3,
FINSEQ_1:def 11;
len t + 1 in Seg (len t + 1) by FINSEQ_1:4;
then len t + 1 in Seg len tn by FINSEQ_2:16;
then len t + 1 in dom tn by FINSEQ_1:def 3;
then tn/.(len t + 1) = (t^<*n*>).(len t + 1) by PARTFUN1:def 6
.= n by FINSEQ_1:42;
then n = 0 or n = 1 by TARSKI:def 2;
hence thesis by A2,TARSKI:def 2;
end;
let x be object;
A4: t is FinSequence of {0,1} by A1,FINSEQ_1:def 11;
rng <* 1 *> c= {0,1}
proof
let z be object;
assume z in rng <* 1 *>;
then z in {1} by FINSEQ_1:38;
then z = 1 by TARSKI:def 1;
hence thesis by TARSKI:def 2;
end;
then <* 1 *> is FinSequence of {0,1} by FINSEQ_1:def 4;
then t^<* 1 *> is FinSequence of {0,1} by A4,Lm1;
then
A5: t^<* 1 *> in T by A1,FINSEQ_1:def 11;
assume x in { t^<* 0 *>, t^<* 1 *> };
then
A6: x = t^<* 0 *> or x = t^<* 1 *> by TARSKI:def 2;
rng <* 0 *> c= {0,1}
proof
let z be object;
assume z in rng <* 0 *>;
then z in {0} by FINSEQ_1:38;
then z = 0 by TARSKI:def 1;
hence thesis by TARSKI:def 2;
end;
then <* 0 *> is FinSequence of {0,1} by FINSEQ_1:def 4;
then t^<* 0 *> is FinSequence of {0,1} by A4,Lm1;
then t^<* 0 *> in T by A1,FINSEQ_1:def 11;
hence thesis by A5,A6;
end;
hence succ t = { t^<* 0 *>, t^<* 1 *> } by TREES_2:def 5;
end;
hence thesis by BINTREE1:def 2;
end;
theorem Th4:
for T be Tree st T = {0,1}* holds Leaves T = {}
proof
A1: {0} c= BOOLEAN
proof
let z be object;
assume z in {0};
then z = FALSE by TARSKI:def 1;
hence thesis;
end;
let T be Tree;
assume
A2: T = {0,1}*;
assume Leaves T <> {};
then consider x be object such that
A3: x in Leaves T by XBOOLE_0:def 1;
reconsider x1 = x as Element of T by A3;
T is binary by A2,Th3;
then
A4: x1 is FinSequence of BOOLEAN by Th2;
then reconsider x1 = x as FinSequence of NAT;
set y1 = x1 ^ <* 0 *>;
0 in {0} by TARSKI:def 1;
then <* 0 *> is FinSequence of BOOLEAN by A1,Lm2;
then y1 is FinSequence of BOOLEAN by A4,Lm1;
then
A5: y1 in T by A2,FINSEQ_1:def 11;
x1 is_a_proper_prefix_of y1 by TREES_1:8;
hence contradiction by A3,A5,TREES_1:def 5;
end;
theorem
for T be binary Tree for n be Nat for t be Element of T st
t in T-level n holds t is Element of n-tuples_on BOOLEAN
proof
let T be binary Tree;
let n be Nat;
let t be Element of T;
assume t in T-level n;
then t in { w where w is Element of T : len w = n } by TREES_2:def 6;
then ex t2 be Element of T st t2 = t & len t2 = n;
hence thesis by FINSEQ_2:92;
end;
theorem
for T be Tree st for t be Element of T holds succ t = { t^<* 0 *>, t^
<* 1 *> } holds Leaves T = {}
proof
let T be Tree;
assume
A1: for t be Element of T holds succ t = { t^<* 0 *>, t^<* 1 *> };
assume Leaves T <> {};
then consider x be object such that
A2: x in Leaves T by XBOOLE_0:def 1;
reconsider t = x as Element of T by A2;
succ t = { t^<* 0 *>, t^<* 1 *> } by A1;
hence contradiction by A2,BINTREE1:3;
end;
theorem Th7:
for T be Tree st for t be Element of T holds succ t = { t^<* 0 *>
, t^<* 1 *> } holds T is binary
proof
let T be Tree;
assume for t be Element of T holds succ t = { t^<* 0 *>, t^<* 1 *> };
then
for t be Element of T st not t in Leaves T holds succ t = { t^<* 0 *>, t
^<* 1 *> };
hence thesis by BINTREE1:def 2;
end;
theorem Th8:
for T be Tree holds T = {0,1}* iff for t be Element of T holds
succ t = { t^<* 0 *>, t^<* 1 *> }
proof
let T be Tree;
thus T = {0,1}* implies for t be Element of T holds succ t = { t^<* 0 *>, t^
<* 1 *> }
proof
assume
A1: T = {0,1}*;
let t be Element of T;
T is binary & not t in Leaves T by A1,Th3,Th4;
hence thesis by BINTREE1:def 2;
end;
assume
A2: for t be Element of T holds succ t = { t^<* 0 *>, t^<* 1 *> };
thus T = {0,1}*
proof
thus T c= {0,1}*
proof
let x be object;
assume
A3: x in T;
T is binary by A2,Th7;
then x is FinSequence of {0,1} by A3,Th2;
hence thesis by FINSEQ_1:def 11;
end;
defpred P[FinSequence] means $1 in T;
let x be object;
assume x in {0,1}*;
then
A4: x is FinSequence of {0,1} by FINSEQ_1:def 11;
A5: for p be FinSequence of {0,1} for n be Element of {0,1} st P[p] holds
P[p^<*n*>]
proof
let p be FinSequence of {0,1};
let n be Element of {0,1};
A6: n = 0 or n = 1 by TARSKI:def 2;
assume p in T;
then reconsider p1 = p as Element of T;
succ p1 = { p1^<* 0 *>, p1^<* 1 *> } by A2;
then p^<*n*> in succ p1 by A6,TARSKI:def 2;
hence thesis;
end;
A7: P[<*> {0,1}] by TREES_1:22;
for p be FinSequence of {0,1} holds P[p] from FINSEQ_2:sch 2(A7, A5);
hence thesis by A4;
end;
end;
scheme
DecoratedBinTreeEx {A() -> non empty set, a() -> Element of A(),
P[object,object,object]}:
ex D be binary DecoratedTree of A() st dom D = {0,1}* & D.{} = a() & for
x be Node of D holds P[D.x,D.(x ^ <* 0 *>),D.(x ^ <*1*>)]
provided
A1: for a be Element of A() ex b,c be Element of A() st P[a,b,c]
proof
defpred Q[object,object] means
ex b,c be Element of A() st P[$1,b,c] & $2 = [b,c];
A2: for e be object st e in A() ex u be object st u in [:A(),A():] & Q[e,u]
proof
let e be object;
assume e in A();
then consider b,c be Element of A() such that
A3: P[e,b,c] by A1;
take u = [b,c];
thus u in [:A(),A():];
thus thesis by A3;
end;
consider f be Function such that
A4: dom f = A() and
A5: rng f c= [:A(),A():] and
A6: for e be object st e in A() holds Q[e,f.e] from FUNCT_1:sch 6(A2);
deffunc F(object) = IFEQ($1`2,0,(f.($1`1))`1,(f.($1`1))`2);
A7: for x be object st x in [:A(),NAT:] holds F(x) in A()
proof
let x be object;
assume x in [:A(),NAT:];
then x`1 in A() by MCART_1:10;
then
A8: f.(x`1) in rng f by A4,FUNCT_1:def 3;
then
A9: (f.(x`1))`2 in A() by A5,MCART_1:10;
A10: (f.(x`1))`1 in A() by A5,A8,MCART_1:10;
now
per cases;
suppose
x`2 = 0;
hence thesis by A10,FUNCOP_1:def 8;
end;
suppose
x`2 <> 0;
hence thesis by A9,FUNCOP_1:def 8;
end;
end;
hence thesis;
end;
consider F be Function of [:A(),NAT:],A() such that
A11: for x be object st x in [:A(),NAT:] holds F.x = F(x) from FUNCT_2:sch
2 ( A7);
deffunc F(set) = 2;
consider D be DecoratedTree of A() such that
A12: D.{} = a() and
A13: for d be Element of dom D holds succ d = { d^<*k*> where k is
Nat : k < F(D.d) } & for n be Nat st n < F(D.d) holds D.(
d^<*n*>) = F.(D.d,n) from TREES_2:sch 9;
now
let t be Element of dom D;
assume not t in Leaves dom D;
{ t^<*k*> where k is Nat : k < 2 } = { t^<* 0 *>, t^<* 1 *> }
proof
thus { t^<*k*> where k is Nat : k < 2 } c= { t^<* 0 *>, t^<*
1 *> }
proof
let v be object;
assume v in { t^<*k*> where k is Nat : k < 2 };
then consider k be Nat such that
A14: v = t^<*k*> and
A15: k < 2;
k = 0 or k = 1 by A15,NAT_1:23;
hence thesis by A14,TARSKI:def 2;
end;
let v be object;
assume v in { t^<* 0 *>, t^<* 1 *> };
then v = t^<* 0 *> or v = t^<* 1 *> by TARSKI:def 2;
hence thesis;
end;
hence succ t = { t^<* 0 *>, t^<* 1 *> } by A13;
end;
then dom D is binary by BINTREE1:def 2;
then reconsider D as binary DecoratedTree of A() by BINTREE1:def 3;
take D;
now
let t be Element of dom D;
{ t^<*k*> where k is Nat : k < 2 } = { t^<* 0 *>, t^<* 1 *> }
proof
thus { t^<*k*> where k is Nat : k < 2 } c= { t^<* 0 *>, t^<*
1 *> }
proof
let v be object;
assume v in { t^<*k*> where k is Nat : k < 2 };
then consider k be Nat such that
A16: v = t^<*k*> and
A17: k < 2;
k = 0 or k = 1 by A17,NAT_1:23;
hence thesis by A16,TARSKI:def 2;
end;
let v be object;
assume v in { t^<* 0 *>, t^<* 1 *> };
then v = t^<* 0 *> or v = t^<* 1 *> by TARSKI:def 2;
hence thesis;
end;
hence succ t = { t^<* 0 *>, t^<* 1 *> } by A13;
end;
hence dom D = {0,1}* by Th8;
thus D.{} = a() by A12;
let x be Node of D;
for e be set st e in A() holds P[e,F.(e,0),F.(e,1)]
proof
let e be set;
assume
A18: e in A();
then consider b,c be Element of A() such that
A19: P[e,b,c] and
A20: f.e = [b,c] by A6;
[e,1] in [:A(),NAT:] by A18,ZFMISC_1:87;
then
A21: F.[e,1] = IFEQ([e,1]`2,0,(f.([e,1]`1))`1,(f.([e,1]`1))`2) by A11
.= (f.([e,1]`1))`2 by FUNCOP_1:def 8
.= (f.e)`2
.= c by A20;
[e,0] in [:A(),NAT:] by A18,ZFMISC_1:87;
then F.[e,0] = IFEQ([e,0]`2,0,(f.([e,0]`1))`1,(f.([e,0]`1))`2) by A11
.= (f.([e,0]`1))`1 by FUNCOP_1:def 8
.= (f.e)`1
.= b by A20;
hence thesis by A19,A21;
end;
then P[D.x,F.(D.x,0),F.(D.x,1)];
then P[D.x,D.(x ^ <* 0 *>),F.(D.x,1)] by A13;
hence thesis by A13;
end;
scheme
DecoratedBinTreeEx1 {A() -> non empty set, a() -> Element of A(),
P,Q[object,object]}:
ex D be binary DecoratedTree of A() st dom D = {0,1}* & D.{} = a
() & for x be Node of D holds P[D.x,D.(x ^ <* 0 *>)] & Q[D.x,D.(x ^ <*1*>)]
provided
A1: for a be Element of A() ex b be Element of A() st P[a,b] and
A2: for a be Element of A() ex b be Element of A() st Q[a,b]
proof
deffunc F(set) = 2;
defpred P1[object,object] means
( $1`2 = 0 implies P[$1`1,$2] ) & ( $1`2 = 1
implies Q[$1`1,$2] );
A3: for e be object st e in [:A(),NAT:] ex u be object st u in A() & P1[e,u]
proof
let e be object;
assume e in [:A(),NAT:];
then reconsider e1 = e`1 as Element of A() by MCART_1:10;
consider u1 be Element of A() such that
A4: P[e1,u1] by A1;
consider u2 be Element of A() such that
A5: Q[e1,u2] by A2;
take u = IFEQ(e`2,0,u1,u2);
thus u in A();
thus e`2 = 0 implies P[e`1,u] by A4,FUNCOP_1:def 8;
thus thesis by A5,FUNCOP_1:def 8;
end;
consider F be Function such that
A6: dom F = [:A(),NAT:] & rng F c= A() and
A7: for e be object st e in [:A(),NAT:] holds P1[e,F.e] from FUNCT_1:sch 6
(A3 );
reconsider F as Function of [:A(),NAT:],A() by A6,FUNCT_2:2;
consider D be DecoratedTree of A() such that
A8: D.{} = a() and
A9: for d be Element of dom D holds succ d = { d^<*k*> where k is
Nat : k < F(D.d) } & for n be Nat st n < F(D.d) holds D.(
d^<*n*>) = F.(D.d,n) from TREES_2:sch 9;
now
let t be Element of dom D;
assume not t in Leaves dom D;
{ t^<*k*> where k is Nat : k < 2 } = { t^<* 0 *>, t^<* 1 *> }
proof
thus { t^<*k*> where k is Nat : k < 2 } c= { t^<* 0 *>, t^<*
1 *> }
proof
let v be object;
assume v in { t^<*k*> where k is Nat : k < 2 };
then consider k be Nat such that
A10: v = t^<*k*> and
A11: k < 2;
k = 0 or k = 1 by A11,NAT_1:23;
hence thesis by A10,TARSKI:def 2;
end;
let v be object;
assume v in { t^<* 0 *>, t^<* 1 *> };
then v = t^<* 0 *> or v = t^<* 1 *> by TARSKI:def 2;
hence thesis;
end;
hence succ t = { t^<* 0 *>, t^<* 1 *> } by A9;
end;
then dom D is binary by BINTREE1:def 2;
then reconsider D as binary DecoratedTree of A() by BINTREE1:def 3;
take D;
now
let t be Element of dom D;
{ t^<*k*> where k is Nat : k < 2 } = { t^<* 0 *>, t^<* 1 *> }
proof
thus { t^<*k*> where k is Nat : k < 2 } c= { t^<* 0 *>, t^<*
1 *> }
proof
let v be object;
assume v in { t^<*k*> where k is Nat : k < 2 };
then consider k be Nat such that
A12: v = t^<*k*> and
A13: k < 2;
k = 0 or k = 1 by A13,NAT_1:23;
hence thesis by A12,TARSKI:def 2;
end;
let v be object;
assume v in { t^<* 0 *>, t^<* 1 *> };
then v = t^<* 0 *> or v = t^<* 1 *> by TARSKI:def 2;
hence thesis;
end;
hence succ t = { t^<* 0 *>, t^<* 1 *> } by A9;
end;
hence dom D = {0,1}* by Th8;
thus D.{} = a() by A8;
let x be Node of D;
[D.x,0]`2 = 0;
then P[[D.x,0]`1,F.[D.x,0]] by A7;
then P[D.x,F.(D.x,0)];
hence P[D.x,D.(x ^ <* 0 *>)] by A9;
[D.x,1]`2 = 1;
then Q[[D.x,1]`1,F.[D.x,1]] by A7;
then Q[D.x,F.(D.x,1)];
hence thesis by A9;
end;
Lm3: for D be non empty set for f be FinSequence of D holds Rev f is
FinSequence of D;
definition
let T be binary Tree;
let n be non zero Nat;
func NumberOnLevel(n,T) -> Function of T-level n,NAT means
:Def1:
for t be Element of T st t in T-level n
for F be Element of n-tuples_on BOOLEAN st F = Rev t holds
it.t = (Absval F) + 1;
existence
proof
defpred P[object,object] means
ex t be Element of T st t = $1 & for F be Tuple
of n,BOOLEAN st F = Rev t holds $2 = (Absval F) + 1;
A1: for e be object st e in T-level n ex u be object st u in NAT & P[e,u]
proof
let e be object;
assume e in T-level n;
then e in { w where w is Element of T : len w = n } by TREES_2:def 6;
then consider t be Element of T such that
A2: t = e and
A3: len t = n;
len Rev t = n by A3,FINSEQ_5:def 3;
then reconsider F1 = Rev t
as Element of n-tuples_on BOOLEAN by FINSEQ_2:92;
take u = (Absval F1) + 1;
thus u in NAT;
take t;
thus t = e by A2;
let F be Tuple of n, BOOLEAN;
assume F = Rev t;
hence thesis;
end;
consider f be Function such that
A4: dom f = T-level n & rng f c= NAT and
A5: for e be object st e in T-level n holds P[e,f.e] from FUNCT_1:sch 6(
A1);
reconsider f as Function of T-level n,NAT by A4,FUNCT_2:2;
take f;
let t be Element of T;
assume t in T-level n;
then
A6: ex t1 be Element of T st t1 = t & for F be Tuple of n, BOOLEAN st F =
Rev t1 holds f.t = (Absval F) + 1 by A5;
let F be Element of n-tuples_on BOOLEAN;
assume F = Rev t;
hence thesis by A6;
end;
uniqueness
proof
let f1,f2 be Function of T-level n,NAT such that
A7: for t be Element of T st t in T-level n
for F be Element of n-tuples_on BOOLEAN
st F = Rev t holds f1.t = (Absval F) + 1 and
A8: for t be Element of T st t in T-level n
for F be Element of n-tuples_on BOOLEAN
st F = Rev t holds f2.t = (Absval F) + 1;
now
let x be object;
assume
A9: x in T-level n;
then x in { w where w is Element of T : len w = n } by TREES_2:def 6;
then consider t be Element of T such that
A10: t = x and
A11: len t = n;
len Rev t = n by A11,FINSEQ_5:def 3;
then reconsider F = Rev t
as Element of n-tuples_on BOOLEAN by FINSEQ_2:92;
thus f1.x = (Absval F) + 1 by A7,A9,A10
.= f2.x by A8,A9,A10;
end;
hence f1 = f2 by FUNCT_2:12;
end;
end;
registration
let T be binary Tree;
let n be non zero Nat;
cluster NumberOnLevel(n,T) -> one-to-one;
coherence
proof
now
let x1,x2 be object;
assume that
A1: x1 in dom NumberOnLevel(n,T) and
A2: x2 in dom NumberOnLevel(n,T) and
A3: NumberOnLevel(n,T).x1 = NumberOnLevel(n,T).x2;
A4: x1 in T-level n by A1,FUNCT_2:def 1;
then x1 in { w where w is Element of T : len w = n } by TREES_2:def 6;
then consider t1 be Element of T such that
A5: t1 = x1 and
A6: len t1 = n;
A7: x2 in T-level n by A2,FUNCT_2:def 1;
then x2 in { w where w is Element of T : len w = n } by TREES_2:def 6;
then consider t2 be Element of T such that
A8: t2 = x2 and
A9: len t2 = n;
len Rev t2 = n by A9,FINSEQ_5:def 3;
then reconsider F2 = Rev t2
as Element of n-tuples_on BOOLEAN by FINSEQ_2:92;
len Rev t1 = n by A6,FINSEQ_5:def 3;
then reconsider F1 = Rev t1
as Element of n-tuples_on BOOLEAN by FINSEQ_2:92;
(Absval F1) + 1 = NumberOnLevel(n,T).x1 by A4,A5,Def1
.= (Absval F2) + 1 by A3,A7,A8,Def1;
hence x1 = x2 by A5,A8,BINARI_3:2,3;
end;
hence thesis by FUNCT_1:def 4;
end;
end;
begin :: Full Trees
definition
let T be Tree;
attr T is full means
:Def2:
T = {0,1}*;
end;
theorem Th9:
{0,1}* is Tree
proof
set X = {0,1}*;
A1: now
let p be FinSequence of NAT;
assume
A2: p in X;
thus ProperPrefixes p c= X
proof
let y be object;
assume y in ProperPrefixes p;
then consider q be FinSequence such that
A3: y = q and
A4: q is_a_proper_prefix_of p by TREES_1:def 2;
q is_a_prefix_of p by A4;
then ex n be Nat st q = p|Seg n by TREES_1:def 1;
hence thesis by A2,A3,Th1;
end;
end;
A5: now
let p be FinSequence of NAT, k,n be Nat;
assume that
A6: p^<*k*> in X and
A7: n <= k;
A8: p^<*k*> is FinSequence of {0,1} by A6,FINSEQ_1:def 11;
then reconsider kk = <*k*> as FinSequence of {0,1} by FINSEQ_1:36;
1 in Seg 1 by FINSEQ_1:3;
then 1 in dom <*k*> by FINSEQ_1:38;
then kk.1 in {0,1} by FINSEQ_2:11;
then
A9: k in {0,1} by FINSEQ_1:40;
now
per cases by A9,TARSKI:def 2;
suppose
k = 0;
hence n = 0 or n = 1 by A7;
end;
suppose
A10: k = 1;
n = 1 or n = 0
proof
assume n <> 1;
then n < 0 + 1 by A7,A10,XXREAL_0:1;
hence thesis by NAT_1:13;
end;
hence n = 0 or n = 1;
end;
end;
then n in {0,1} by TARSKI:def 2;
then
A11: <*n*> is FinSequence of {0,1} by Lm2;
p is FinSequence of {0,1} by A8,FINSEQ_1:36;
then p^<*n*> is FinSequence of {0,1} by A11,Lm1;
hence p^<*n*> in X by FINSEQ_1:def 11;
end;
X c= NAT* by FINSEQ_1:62;
hence thesis by A1,A5,TREES_1:def 3;
end;
theorem Th10:
for T be Tree st T = {0,1}* for n be Nat holds 0*n in T-level n
proof
let T be Tree;
assume
A1: T = {0,1}*;
let n be Nat;
len (0*n) = n & 0*n in T by A1,BINARI_3:4,CARD_1:def 7;
then 0*n in { w where w is Element of T : len w = n };
hence thesis by TREES_2:def 6;
end;
theorem Th11:
for T be Tree st T = {0,1}* for n be non zero Nat
for y be Element of n-tuples_on BOOLEAN holds y in T-level n
proof
let T be Tree;
assume
A1: T = {0,1}*;
let n be non zero Nat;
let y be Element of n-tuples_on BOOLEAN;
y in { w where w is Element of T : len w = n } by A1;
hence thesis by TREES_2:def 6;
end;
registration
let T be binary Tree;
let n be Nat;
cluster T-level n -> finite;
coherence by TREES_9:46;
end;
registration
cluster full -> binary for Tree;
coherence by Th3;
end;
registration
cluster full for Tree;
existence by Th9,Def2;
end;
theorem Th12:
for T be full Tree for n be non zero Nat holds Seg (2 to_power
n) c= rng NumberOnLevel(n,T)
proof
let T be full Tree;
let n be non zero Nat;
let y be object;
assume y in Seg (2 to_power n);
then y in { k where k is Nat : 1 <= k & k <= 2 to_power n } by FINSEQ_1:def 1
;
then consider k be Nat such that
A1: k = y and
A2: 1 <= k and
A3: k <= 2 to_power n;
A4: k - 1 >= 1 - 1 by A2,XREAL_1:9;
set t = Rev (n-BinarySequence (k-'1));
A5: len t = len (n-BinarySequence (k-'1)) by FINSEQ_5:def 3
.= n by CARD_1:def 7;
then len Rev t = n by FINSEQ_5:def 3;
then reconsider F = Rev t as Element of n-tuples_on BOOLEAN by FINSEQ_2:92;
T = {0,1}* by Def2;
then t in T by FINSEQ_1:def 11;
then t in { w where w is Element of T : len w = n } by A5;
then
A6: t in T-level n by TREES_2:def 6;
then
A7: t in dom NumberOnLevel(n,T) by FUNCT_2:def 1;
k < 2 to_power n + 1 by A3,NAT_1:13;
then k - 1 < 2 to_power n by XREAL_1:19;
then
A8: k-'1 < 2 to_power n by A4,XREAL_0:def 2;
NumberOnLevel(n,T).t = (Absval F) + 1 by A6,Def1
.= (Absval (n-BinarySequence (k-'1))) + 1
.= k -' 1 + 1 by A8,BINARI_3:35
.= k - 1 + 1 by A4,XREAL_0:def 2
.= y by A1;
hence thesis by A7,FUNCT_1:def 3;
end;
definition
let T be full Tree;
let n be non zero Nat;
func FinSeqLevel(n,T) -> FinSequence of T-level n equals
NumberOnLevel(n,T)";
coherence
proof
reconsider k=n as non zero Nat;
T = {0,1}* by Def2;
then
A1: T-level n is non empty by Th10;
for y be object holds y in Seg (2 to_power n) iff
ex x be object st x in dom
NumberOnLevel(k,T) & y = NumberOnLevel(k,T).x
proof
let y be object;
thus y in Seg (2 to_power n) implies ex x be object st x in dom
NumberOnLevel(k,T) & y = NumberOnLevel(k,T).x
proof
assume
A2: y in Seg (2 to_power n);
take (NumberOnLevel(n,T)").y;
Seg (2 to_power n) c= rng NumberOnLevel(n,T) by Th12;
hence thesis by A2,FUNCT_1:32;
end;
given x be object such that
A3: x in dom NumberOnLevel(k,T) and
A4: y = NumberOnLevel(k,T).x;
A5: x in T-level n by A3,FUNCT_2:def 1;
then x in { t where t is Element of T : len t = n } by TREES_2:def 6;
then consider t be Element of T such that
A6: t = x and
A7: len t = n;
len Rev t = n by A7,FINSEQ_5:def 3;
then reconsider F = Rev t
as Element of n-tuples_on BOOLEAN by FINSEQ_2:92;
Absval F < 2 to_power n by BINARI_3:1;
then
A8: 1 <= (Absval F) + 1 & (Absval F) + 1 <= 2 to_power n by NAT_1:11,13;
y = (Absval F) + 1 by A4,A5,A6,Def1;
hence thesis by A8,FINSEQ_1:1;
end;
then rng NumberOnLevel(n,T) = Seg (2 to_power n) by FUNCT_1:def 3;
then
A9: dom (NumberOnLevel(k,T)") = Seg (2 to_power n) by FUNCT_1:33;
rng (NumberOnLevel(k,T)") = dom NumberOnLevel(k,T) by FUNCT_1:33
.= T-level n by FUNCT_2:def 1;
then NumberOnLevel(n,T)" is Function of Seg (2 to_power n), T-level n by A9
,FUNCT_2:2;
hence thesis by A1,FINSEQ_2:25;
end;
end;
registration
let T be full Tree;
let n be non zero Nat;
cluster FinSeqLevel(n,T) -> one-to-one;
coherence by FUNCT_1:40;
end;
theorem Th13:
for T be full Tree for n be non zero Nat holds
NumberOnLevel(n,T).(0*n) = 1
proof
let T be full Tree;
let n be non zero Nat;
A1: len Rev (0*n) = len 0*n by FINSEQ_5:def 3
.= n by CARD_1:def 7;
A2: T = {0,1}* by Def2;
then 0*n is Element of T by BINARI_3:4;
then Rev (0*n) is FinSequence of BOOLEAN by Lm3;
then reconsider F = Rev (0*n) as
Element of n-tuples_on BOOLEAN by A1,FINSEQ_2:92;
0*n in T-level n by A2,Th10;
hence NumberOnLevel(n,T).(0*n) = (Absval F) + 1 by Def1
.= 0 + 1 by BINARI_3:6,8
.= 1;
end;
theorem Th14:
for T be full Tree for n be non zero Nat for y be
Element of n-tuples_on BOOLEAN st y = 0*n
holds NumberOnLevel(n,T).'not' y = 2 to_power n
proof
let T be full Tree;
let n be non zero Nat;
let y be Element of n-tuples_on BOOLEAN;
assume
A1: y = 0*n;
then
A2: Rev 'not' y = 'not' y by BINARI_3:9;
len Rev 'not' y = len 'not' y by FINSEQ_5:def 3
.= n by CARD_1:def 7;
then reconsider F = Rev 'not' y as
Element of n-tuples_on BOOLEAN by FINSEQ_2:92;
reconsider ny = 'not' y as
Element of n-tuples_on BOOLEAN by FINSEQ_2:131;
T = {0,1}* by Def2;
then ny in T-level n by Th11;
hence NumberOnLevel(n,T).'not' y = (Absval F) + 1 by Def1
.= 2 to_power n - 1 + 1 by A1,A2,BINARI_3:7
.= 2 to_power n;
end;
theorem Th15:
for T be full Tree for n be non zero Nat holds
FinSeqLevel(n,T).1 = 0*n
proof
let T be full Tree;
let n be non zero Nat;
T = {0,1}* by Def2;
then 0*n in T-level n by Th10;
then
A1: 0*n in dom NumberOnLevel(n,T) by FUNCT_2:def 1;
1 = NumberOnLevel(n,T).(0*n) by Th13;
hence thesis by A1,FUNCT_1:32;
end;
theorem Th16:
for T be full Tree for n be non zero Nat for y be
Element of n-tuples_on BOOLEAN
st y = 0*n holds FinSeqLevel(n,T).(2 to_power n) = 'not' y
proof
let T be full Tree;
let n be non zero Nat;
let y be Element of n-tuples_on BOOLEAN;
reconsider ny = 'not' y as
Element of n-tuples_on BOOLEAN by FINSEQ_2:131;
T = {0,1}* by Def2;
then ny in T-level n by Th11;
then
A1: 'not' y in dom NumberOnLevel(n,T) by FUNCT_2:def 1;
assume y = 0*n;
then 2 to_power n = NumberOnLevel(n,T).'not' y by Th14;
hence thesis by A1,FUNCT_1:32;
end;
theorem Th17:
for T be full Tree for n be non zero Nat for i be
Nat st i in Seg (2 to_power n) holds FinSeqLevel(n,T).i = Rev (n
-BinarySequence (i-'1))
proof
let T be full Tree;
let n be non zero Nat;
let i be Nat;
reconsider nB = n-BinarySequence (i-'1) as Element of n-tuples_on BOOLEAN
by FINSEQ_2:131;
assume
A1: i in Seg (2 to_power n);
then
A2: 1 <= i by FINSEQ_1:1;
i <= 2 to_power n by A1,FINSEQ_1:1;
then i < 2 to_power n + 1 by NAT_1:13;
then i - 1 < 2 to_power n by XREAL_1:19;
then i-'1 < 2 to_power n by A2,XREAL_1:233;
then
A3: (Absval nB) + 1 = i-'1 + 1 by BINARI_3:35
.= i - 1 + 1 by A2,XREAL_1:233
.= i;
A4: len Rev nB = len nB by FINSEQ_5:def 3
.= n by CARD_1:def 7;
then reconsider RnB = Rev nB as
Element of n-tuples_on BOOLEAN by FINSEQ_2:92;
RnB in {0,1}* by FINSEQ_1:def 11;
then RnB is Element of T by Def2;
then RnB in { t where t is Element of T : len t = n } by A4;
then
A5: RnB in T-level n by TREES_2:def 6;
nB = Rev RnB;
then
A6: NumberOnLevel(n,T).RnB = (Absval nB) + 1 by A5,Def1;
RnB in dom NumberOnLevel(n,T) by A5,FUNCT_2:def 1;
hence thesis by A6,A3,FUNCT_1:32;
end;
theorem Th18:
for T be full Tree for n be Nat holds card (T-level n
) = 2 to_power n
proof
let T be full Tree;
defpred R[Nat] means card (T-level $1) = 2 to_power $1;
A1: T = {0,1}* by Def2;
A2: for n be Nat st R[n] holds R[n+1]
proof
defpred P[set,set] means ex p be FinSequence st p = $1 & $2 = p^<* 0 *>;
let n be Nat;
set Tn10 = { p where p is Element of T : len p = n+1 & p.(n+1) = 0 };
set Tn11 = { p where p is Element of T : len p = n+1 & p.(n+1) = 1 };
A3: (0*(n+1)).(n+1) = 0 by FINSEQ_1:4,FUNCOP_1:7;
len 0*(n+1) = n+1 & 0*(n+1) in T by A1,BINARI_3:4,CARD_1:def 7;
then
A4: 0*(n+1) in Tn10 by A3;
A5: Tn11 c= T-level (n+1)
proof
let x be object;
assume x in Tn11;
then consider p be Element of T such that
A6: p = x and
A7: len p = n+1 and
p.(n+1) = 1;
p in { w where w is Element of T : len w = n+1 } by A7;
hence thesis by A6,TREES_2:def 6;
end;
rng <*1*> c= {0,1}
proof
let z be object;
assume z in rng <*1*>;
then z in {1} by FINSEQ_1:38;
then z = 1 by TARSKI:def 1;
hence thesis by TARSKI:def 2;
end;
then
A8: <*1*> is FinSequence of {0,1} by FINSEQ_1:def 4;
defpred P1[set,set] means ex p be FinSequence st p = $1 & $2 = p^<* 1 *>;
A9: Tn10 c= T-level (n+1)
proof
let x be object;
assume x in Tn10;
then consider p be Element of T such that
A10: p = x and
A11: len p = n+1 and
p.(n+1) = 0;
p in { w where w is Element of T : len w = n+1 } by A11;
hence thesis by A10,TREES_2:def 6;
end;
0*n in {0,1}* by BINARI_3:4;
then 0*n is FinSequence of {0,1} by FINSEQ_1:def 11;
then 0*n^<*1*> is FinSequence of {0,1} by A8,Lm1;
then
A12: 0*n^<*1*> in T by A1,FINSEQ_1:def 11;
reconsider Tn = T-level n as finite non empty set by A1,Th10;
assume
A13: card (T-level n) = 2 to_power n;
len 0*n = n by CARD_1:def 7;
then
A14: (0*n^<*1*>).(n+1) = 1 by FINSEQ_1:42;
len (0*n^<*1*>) = len 0*n + 1 by FINSEQ_2:16
.= n+1 by CARD_1:def 7;
then 0*n^<*1*> in Tn11 by A12,A14;
then reconsider Tn10,Tn11 as non empty finite set by A4,A9,A5;
A15: Tn10 \/ Tn11 c= T-level (n+1) by A9,A5,XBOOLE_1:8;
A16: for x be Element of Tn ex y be Element of Tn11 st P1[x,y]
proof
let x be Element of Tn;
x in T-level n;
then x in { w where w is Element of T : len w = n } by TREES_2:def 6;
then consider p be Element of T such that
A17: p = x and
A18: len p = n;
set y = p^<*1*>;
p^<*1*> is FinSequence of {0,1} by A8,Lm1;
then
A19: y in T by A1,FINSEQ_1:def 11;
len y = n+1 & y.(n+1) = 1 by A18,FINSEQ_1:42,FINSEQ_2:16;
then y in { t where t is Element of T : len t = n+1 & t.(n+1) = 1 } by
A19;
then reconsider y as Element of Tn11;
take y,p;
thus thesis by A17;
end;
consider f1 be Function of Tn,Tn11 such that
A20: for x be Element of Tn holds P1[x,f1.x] from FUNCT_2:sch 3(A16);
now
let y be object;
assume y in Tn11;
then consider t be Element of T such that
A21: t = y and
A22: len t = n+1 and
A23: t.(n+1) = 1;
consider p be FinSequence of BOOLEAN, d be Element of BOOLEAN such that
A24: t = p^<*d*> by A22,FINSEQ_2:19;
reconsider x = p as object;
take x;
A25: len p + 1 = n+1 by A22,A24,FINSEQ_2:16;
p in T by A1,FINSEQ_1:def 11;
then
A26: p in { w where w is Element of T : len w = n } by A25;
hence x in Tn by TREES_2:def 6;
reconsider x9 = x as Element of Tn by A26,TREES_2:def 6;
ex q be FinSequence st q = x9 & f1.x9 = q^<*1*> by A20;
hence y = f1.x by A21,A23,A24,A25,FINSEQ_1:42;
end;
then
A27: rng f1 = Tn11 by FUNCT_2:10;
A28: for x be Element of Tn ex y be Element of Tn10 st P[x,y]
proof
let x be Element of Tn;
x in T-level n;
then x in { w where w is Element of T : len w = n } by TREES_2:def 6;
then consider p be Element of T such that
A29: p = x and
A30: len p = n;
set y = p^<* 0 *>;
rng <* 0 *> c= {0,1}
proof
let z be object;
assume z in rng <* 0 *>;
then z in {0} by FINSEQ_1:38;
then z = 0 by TARSKI:def 1;
hence thesis by TARSKI:def 2;
end;
then <* 0 *> is FinSequence of {0,1} by FINSEQ_1:def 4;
then p^<* 0 *> is FinSequence of {0,1} by Lm1;
then
A31: y in T by A1,FINSEQ_1:def 11;
len y = n+1 & y.(n+1) = 0 by A30,FINSEQ_1:42,FINSEQ_2:16;
then y in { t where t is Element of T : len t = n+1 & t.(n+1) = 0 } by
A31;
then reconsider y as Element of Tn10;
take y,p;
thus thesis by A29;
end;
consider f0 be Function of Tn,Tn10 such that
A32: for x be Element of Tn holds P[x,f0.x] from FUNCT_2:sch 3(A28);
now
let x1,x2 be object;
assume that
A33: x1 in dom f1 & x2 in dom f1 and
A34: f1.x1 = f1.x2;
reconsider x19= x1, x29= x2 as Element of Tn by A33,FUNCT_2:def 1;
(ex p1 be FinSequence st p1 = x19 & f1.x19 = p1^<*1*> )& ex p2 be
FinSequence st p2 = x29 & f1.x29 = p2^<*1*> by A20;
hence x1 = x2 by A34,FINSEQ_2:17;
end;
then Tn c= dom f1 & f1 is one-to-one by FUNCT_1:def 4,FUNCT_2:def 1;
then Tn,f1.:Tn are_equipotent by CARD_1:33;
then
A35: Tn,rng f1 are_equipotent by RELSET_1:22;
A36: T-level (n+1) c= Tn10 \/ Tn11
proof
let x be object;
assume x in T-level (n+1);
then x in { w where w is Element of T : len w = n+1 } by TREES_2:def 6;
then consider p be Element of T such that
A37: p = x and
A38: len p = n+1;
x in Tn10 or x in Tn11
proof
n+1 in Seg (n+1) by FINSEQ_1:4;
then n+1 in dom p by A38,FINSEQ_1:def 3;
then p.(n+1) in BOOLEAN by FINSEQ_2:11;
then
A39: p.(n+1) = 0 or p.(n+1) = 1 by TARSKI:def 2;
assume not x in Tn10;
hence thesis by A37,A38,A39;
end;
hence thesis by XBOOLE_0:def 3;
end;
now
let y be object;
assume y in Tn10;
then consider t be Element of T such that
A40: t = y and
A41: len t = n+1 and
A42: t.(n+1) = 0;
consider p be FinSequence of BOOLEAN, d be Element of BOOLEAN such that
A43: t = p^<*d*> by A41,FINSEQ_2:19;
reconsider x = p as object;
take x;
A44: len p + 1 = n+1 by A41,A43,FINSEQ_2:16;
p in T by A1,FINSEQ_1:def 11;
then
A45: p in { w where w is Element of T : len w = n } by A44;
hence x in Tn by TREES_2:def 6;
reconsider x9 = x as Element of Tn by A45,TREES_2:def 6;
ex q be FinSequence st q = x9 & f0.x9 = q^<* 0 *> by A32;
hence y = f0.x by A40,A42,A43,A44,FINSEQ_1:42;
end;
then
A46: rng f0 = Tn10 by FUNCT_2:10;
now
let x1,x2 be object;
assume that
A47: x1 in dom f0 & x2 in dom f0 and
A48: f0.x1 = f0.x2;
reconsider x19= x1, x29= x2 as Element of Tn by A47,FUNCT_2:def 1;
(ex p1 be FinSequence st p1 = x19 & f0.x19 = p1^<* 0 *> )& ex p2 be
FinSequence st p2 = x29 & f0.x29 = p2^<* 0 *> by A32;
hence x1 = x2 by A48,FINSEQ_2:17;
end;
then Tn c= dom f0 & f0 is one-to-one by FUNCT_1:def 4,FUNCT_2:def 1;
then Tn,f0.:Tn are_equipotent by CARD_1:33;
then Tn,rng f0 are_equipotent by RELSET_1:22;
then
A49: card Tn = card Tn10 by A46,CARD_1:5;
A50: Tn10 misses Tn11
proof
assume Tn10 /\ Tn11 <> {};
then consider x be object such that
A51: x in Tn10 /\ Tn11 by XBOOLE_0:def 1;
x in Tn11 by A51,XBOOLE_0:def 4;
then
A52: ex p2 be Element of T st p2 = x & len p2 = n+1 & p2.(n+ 1) = 1;
x in Tn10 by A51,XBOOLE_0:def 4;
then ex p1 be Element of T st p1 = x & len p1 = n+1 & p1.(n+ 1) = 0;
hence contradiction by A52;
end;
thus 2 to_power (n+1) = 2 to_power n * 2 to_power 1 by POWER:27
.= 2 * 2 to_power n by POWER:25
.= card Tn + card Tn by A13
.= card Tn10 + card Tn11 by A49,A35,A27,CARD_1:5
.= card (Tn10 \/ Tn11) by A50,CARD_2:40
.= card (T-level (n+1)) by A15,A36,XBOOLE_0:def 10;
end;
card (T-level 0) = card {{}} by TREES_9:44
.= 1 by CARD_1:30
.= 2 to_power 0 by POWER:24;
then
A53: R[0];
thus for n be Nat holds R[n] from NAT_1:sch 2(A53,A2);
end;
theorem Th19:
for T be full Tree for n be non zero Nat holds len
FinSeqLevel(n,T) = 2 to_power n
proof
let T be full Tree;
let n be non zero Nat;
rng FinSeqLevel(n,T) = dom NumberOnLevel(n,T) by FUNCT_1:33
.= T-level n by FUNCT_2:def 1;
then
A1: dom FinSeqLevel(n,T),T-level n are_equipotent by WELLORD2:def 4;
card Seg len FinSeqLevel(n,T) = card dom FinSeqLevel(n,T) by FINSEQ_1:def 3
.= card (T-level n) by A1,CARD_1:5
.= 2 to_power n by Th18;
hence thesis by FINSEQ_1:57;
end;
theorem Th20:
for T be full Tree for n be non zero Nat holds dom
FinSeqLevel(n,T) = Seg (2 to_power n)
proof
let T be full Tree;
let n be non zero Nat;
thus dom FinSeqLevel(n,T) = Seg len FinSeqLevel(n,T) by FINSEQ_1:def 3
.= Seg (2 to_power n) by Th19;
end;
theorem
for T be full Tree for n be non zero Nat holds rng
FinSeqLevel(n,T) = T-level n
proof
let T be full Tree;
let n be non zero Nat;
reconsider Tln = T-level n as finite set;
T = {0,1}* by Def2;
then T-level n is non empty by Th10;
then reconsider
p = FinSeqLevel(n,T) as Function of dom FinSeqLevel(n,T), T-level
n by FINSEQ_2:26;
reconsider dp = dom p as finite set;
card dp = card Seg (2 to_power n) by Th20
.= 2 to_power n by FINSEQ_1:57
.= card Tln by Th18;
hence thesis by FINSEQ_4:63;
end;
theorem
for T be full Tree holds FinSeqLevel(1,T).1 = <* 0 *>
proof
let T be full Tree;
thus FinSeqLevel(1,T).1 = 0*1 by Th15
.= <* 0 *> by FINSEQ_2:59;
end;
theorem
for T be full Tree holds FinSeqLevel(1,T).2 = <* 1 *>
proof
let T be full Tree;
A1: 0*1 = <* FALSE *> by FINSEQ_2:59;
reconsider t =<* FALSE *> as Element of 1-tuples_on BOOLEAN
by FINSEQ_2:131;
thus FinSeqLevel(1,T).2 = FinSeqLevel(1,T).(2 to_power 1) by POWER:25
.= 'not' t by A1,Th16
.= <* 1 *> by BINARI_3:14;
end;
theorem
for T be full Tree for n,i be non zero Nat st i <= 2
to_power (n+1) for F be Element of n-tuples_on BOOLEAN
st F = FinSeqLevel(n,T).((i+1) div 2
) holds FinSeqLevel(n+1,T).i = F^<*(i+1) mod 2*>
proof
let T be full Tree;
let n,i be non zero Nat;
assume
A1: i <= 2 to_power (n+1);
A2: now
per cases;
suppose
i-'1 is odd;
then
A3: i-'1 mod 2 = 1 by NAT_2:22;
then i-'1 + (1+1)*1 mod 2 = 1 by NAT_D:21;
then i-'1 + 1 + 1 mod 2 = 1;
hence (i+1) mod 2 = (i-'1) mod 2 by A3,NAT_1:14,XREAL_1:235;
end;
suppose
i-'1 is even;
then
A4: i-'1 mod 2 = 0 by NAT_2:21;
then i-'1 + (1 + 1)*1 mod 2 = 0 by NAT_D:21;
then i-'1 + 1 + 1 mod 2 = 0;
hence (i+1) mod 2 = (i-'1) mod 2 by A4,NAT_1:14,XREAL_1:235;
end;
end;
let F be Element of n-tuples_on BOOLEAN;
assume
A5: F = FinSeqLevel(n,T).((i+1) div 2);
A6: 1 <= i by NAT_1:14;
then 1 + 1 <= i + 1 by XREAL_1:6;
then
A7: 1 <= (i+1) div 2 by NAT_2:13;
2 to_power (n+1) = (2 to_power n) * (2 to_power 1) by POWER:27
.= 2 * (2 to_power n) by POWER:25;
then (i+1) div 2 <= 2 to_power n by A1,NAT_2:25;
then
A8: (i+1) div 2 in Seg (2 to_power n) by A7,FINSEQ_1:1;
i + 1 >= 1 + 1 by A6,XREAL_1:6;
then
A9: 1 <= (i + 1) div 2 by NAT_2:13;
A10: (i-'1) div 2 = (i-'1) div 2 + 1 - 1
.= (i-'1 + (1 + 1)) div 2 - 1 by NAT_2:14
.= ((i-'1 + 1 + 1) div 2) - 1
.= ((i + 1) div 2) - 1 by NAT_1:14,XREAL_1:235
.= ((i + 1) div 2) -' 1 by A9,XREAL_1:233;
i in Seg (2 to_power (n+1)) by A1,A6,FINSEQ_1:1;
hence FinSeqLevel(n+1,T).i = Rev ((n+1)-BinarySequence (i-'1)) by Th17
.= Rev (<*(i-'1) mod 2*> ^ (n-BinarySequence ((i-'1) div 2))) by
BINARI_3:34
.= (Rev (n-BinarySequence (((i+1) div 2)-'1)))^<*(i+1) mod 2*> by A2,A10,
FINSEQ_6:24
.= F^<*(i+1) mod 2*> by A5,A8,Th17;
end;