Built with Alectryon, running Coq+SerAPI v8.13.0+0.13.0. Bubbles () indicate interactive fragments: hover for details, tap to reveal contents. Use Ctrl+↑ Ctrl+↓ to navigate, Ctrl+πŸ–±οΈ to focus. On Mac, use ⌘ instead of Ctrl.
Notation "[ rel _ _ | _ ]" was already used in scope fun_scope. [notation-overridden,parsing]
Notation "[ rel _ _ : _ | _ ]" was already used in scope fun_scope. [notation-overridden,parsing]
Notation "[ rel _ _ in _ & _ | _ ]" was already used in scope fun_scope. [notation-overridden,parsing]
Notation "[ rel _ _ in _ & _ ]" was already used in scope fun_scope. [notation-overridden,parsing]
Notation "[ rel _ _ in _ | _ ]" was already used in scope fun_scope. [notation-overridden,parsing]
Notation "[ rel _ _ in _ ]" was already used in scope fun_scope. [notation-overridden,parsing]
Notation "_ + _" was already used in scope nat_scope. [notation-overridden,parsing]
Notation "_ - _" was already used in scope nat_scope. [notation-overridden,parsing]
Notation "_ <= _" was already used in scope nat_scope. [notation-overridden,parsing]
Notation "_ < _" was already used in scope nat_scope. [notation-overridden,parsing]
Notation "_ >= _" was already used in scope nat_scope. [notation-overridden,parsing]
Notation "_ > _" was already used in scope nat_scope. [notation-overridden,parsing]
Notation "_ <= _ <= _" was already used in scope nat_scope. [notation-overridden,parsing]
Notation "_ < _ <= _" was already used in scope nat_scope. [notation-overridden,parsing]
Notation "_ <= _ < _" was already used in scope nat_scope. [notation-overridden,parsing]
Notation "_ < _ < _" was already used in scope nat_scope. [notation-overridden,parsing]
Notation "_ * _" was already used in scope nat_scope. [notation-overridden,parsing]
From hanoi Require Import extra gdist ghanoi ghanoi4 triangular phi rhanoi3 psi. Set Implicit Arguments. Unset Strict Implicit. (******************************************************************************) (* *) (* This file proves the formula that gives the distance between two perfect *) (* configurations. It follows the proof given by Thierry Bousch in *) (* La quatrième tour de Hanoı̈ *) (* *) (******************************************************************************) Section Hanoi4. Local Notation "c1 `-->_r c2" := (rmove c1 c2) (format "c1 `-->_r c2", at level 60). Local Notation "c1 `-->*_r c2" := (connect rmove c1 c2) (format "c1 `-->*_r c2", at level 60).
n:nat
p1, p2:peg 4

`d[`c[p1 , n], `c[p2 , n]]_rmove <= Ο•(n)
2
56
p1Dp2:p1 != p2

`d[`c[p1], `c[p2]]_rmove <= Ο•(n)
IH:forall m : nat, m < 0 -> forall p1 p2 : peg 4, p1 != p2 -> `d[`c[p1], `c[p2]]_rmove <= Ο•(m)
6d

`d[`c[p1], `c[p2]]_rmove <= Ο•(0)
IH:forall m : nat, m < 1 -> forall p1 p2 : peg 4, p1 != p2 -> `d[`c[p1], `c[p2]]_rmove <= Ο•(m)
6d
`d[`c[p1], `c[p2]]_rmove <= Ο•(1)
5
IH:forall m : nat, m < n.+2 -> forall p1 p2 : peg 4, p1 != p2 -> `d[`c[p1], `c[p2]]_rmove <= Ο•(m)
6d
`d[`c[p1], `c[p2]]_rmove <= Ο•(n.+2)
10
12
`c[p1] = `c[p2]
15
17
19
1a
24
17
`d[`c[p1], `c[p2]]_rmove <= size [:: `c[p2 , 1]]
26
17
(`c[p1] `-->_r `c[p2]) && true
26
17
rrel (n:=4) (`c[p1] ldisk) (`c[p2] ldisk)
17
forall d2 : 'I_1, ldisk != d2 -> `c[p1] d2 = `c[p2] d2
17
on_top (q:=4) (n:=1) ldisk `c[p1]
17
on_top (q:=4) (n:=1) ldisk `c[p2]
1a
31
17
36
37391a
3d
17
38
391a
42
17
3a
26
1b
1d
51c6d
p3:=`p[p1, p2]:peg 4

1d
51c6d50
k:=gmin n.+2:nat

1d
51c6d5055
k1:=k.-1.+1:nat

1d
51c6d50555a
kP:0 < k

1d
51c6d50555a5f
k1Lm2:k1 < n.+2

1d
51c6d50555a5f64
k1Lm2S:k1 <= n.+2

1d
51c6d50555a5f6469
k2:=n.+2 - k1:nat

1d
51c6d50555a5f64696e
c1:=cliftrn (q:=4) k2 (n:=k1) p1 `c[p1]:configuration 4 (k2 + k1)

`d[c1, `c[p2]]_rmove <= Ο•(n.+2)
51c6d50555a5f64696e73
c4:=cliftrn (q:=4) k2 (n:=k1) p2 `c[p2]:configuration 4 (k2 + k1)

`d[c1, c4]_rmove <= Ο•(n.+2)
51c6d50555a5f64696e7379
c2:=cliftrn (q:=4) k2 (n:=k1) p1 `c[p3] : configuration 4 (k2 + k1):configuration 4 (k2 + k1)

7a
51c6d50555a5f64696e73797f
c3:=cliftrn (q:=4) k2 (n:=k1) p2 `c[p3] : configuration 4 (k2 + k1):configuration 4 (k2 + k1)

7a
83
`d[c1, c4]_rmove <= `d[c1, c2]_rmove + ?Goal
83
`d[c1, c2]_rmove + ?Goal <= Ο•(n.+2)
83
`d[c1, c2]_rmove + `d[c2, c4]_rmove <= Ο•(n.+2)
83
`d[c1, c2]_rmove + `d[c2, c4]_rmove <= Ο•(k) + (Ο•(k) + (2 ^ (n.+2 - k)).-1)
83
`d[c1, c2]_rmove <= Ο•(k)
83
`d[c2, c4]_rmove <= Ο•(k) + (2 ^ (n.+2 - k)).-1
83
`d[c1, c2]_rmove <= ?Goal0
83
?Goal0 <= Ο•(k)
99
83
connect (move (q:=4) (rrel (n:=4))) `c[p1] `c[p3]
83
`d[`c[p1], `c[p3]]_(move (q:=4) (rrel (n:=4))) <= Ο•(k)
99
83
a8
98
83
`d[`c[p1], `c[p3]]_(move (q:=4) (rrel (n:=4))) <= Ο•(k.-1.+1)
98
56d50555a5f64696e73797f84

p1 != p3
98
83
9a
83
`d[c2, c4]_rmove <= `d[c2, c3]_rmove + ?Goal
83
`d[c2, c3]_rmove + ?Goal <= Ο•(k) + (2 ^ (n.+2 - k)).-1
83
`d[c2, c3]_rmove + `d[c3, c4]_rmove <= Ο•(k) + (2 ^ (n.+2 - k)).-1
83
`d[c3, c4]_rmove + `d[c2, c3]_rmove <= Ο•(k) + (2 ^ (n.+2 - k)).-1
83
`d[c3, c4]_rmove <= Ο•(k)
83
`d[c2, c3]_rmove <= (2 ^ (n.+2 - k)).-1
83
`d[c3, c4]_rmove <= ?Goal0
a0cc
83
connect (move (q:=4) (rrel (n:=4))) `c[p3] `c[p2]
83
`d[`c[p3], `c[p2]]_(move (q:=4) (rrel (n:=4))) <= Ο•(k)
cc
83
d9
cb
83
`d[`c[p3], `c[p2]]_(move (q:=4) (rrel (n:=4))) <= Ο•(k.-1.+1)
cb
b3
p3 != p2
cb
83
cd
51c650555a5f64696e73797f84

p1 != p2 -> `d[cliftrn (q:=4) k2 (n:=k1) p1 `c[p3], cliftrn (q:=4) k2 (n:=k1) p2 `c[p3]]_rmove <= (2 ^ (n.+2 - k)).-1
51c650555a5f64696e73797f84
p2':'I_4.-1
p2'E:unlift `p[p1, lift `p[p1, p2] p2'] (lift `p[p1, p2] p2') = Some p2'

p1 != lift `p[p1, p2] p2' -> `d[cliftrn (q:=4) k2 (n:=k1) p1 `c[p3], cliftrn (q:=4) k2 (n:=k1) (lift `p[p1, p2] p2') `c[p3]]_rmove <= (2 ^ (n.+2 - k)).-1
f0
p1 != lift p3 p2' -> `d[cliftrn (q:=4) k2 (n:=k1) p1 `c[p3], cliftrn (q:=4) k2 (n:=k1) (lift p3 p2') `c[p3]]_rmove <= (2 ^ (n.+2 - k)).-1
51c650555a5f64696e73797f84f1f2
p1':'I_4.-1
p1'E:unlift `p[lift `p[p1, p2] p1', p2] (lift `p[p1, p2] p1') = Some p1'

lift `p[p1, p2] p1' != lift p3 p2' -> `d[cliftrn (q:=4) k2 (n:=k1) (lift `p[p1, p2] p1') `c[p3], cliftrn (q:=4) k2 (n:=k1) (lift p3 p2') `c[p3]]_rmove <= (2 ^ (n.+2 - k)).-1
51c650555a5f64696e73797f84f1f2fcfd
p1Dp2:lift `p[p1, p2] p1' != lift p3 p2'

`d[cliftrn (q:=4) k2 (n:=k1) (lift `p[p1, p2] p1') `c[p3], cliftrn (q:=4) k2 (n:=k1) (lift p3 p2') `c[p3]]_rmove <= (2 ^ (n.+2 - k)).-1
51c650555a5f64696e73797f84f1f2fcfd103
p1'Dp2':p1' != p2'

104
108
1 = (p1' != p2')
108
`d[cliftrn (q:=4) k2 (n:=k1) (lift `p[p1, p2] p1') `c[p3], cliftrn (q:=4) k2 (n:=k1) (lift p3 p2') `c[p3]]_rmove <= (2 ^ (n.+2 - k)).-1 * (p1' != p2')
108
`d[cliftrn (q:=4) k2 (n:=k1) (lift `p[p1, p2] p1') `c[p3], cliftrn (q:=4) k2 (n:=k1) (lift p3 p2') `c[p3]]_rmove <= (2 ^ (n.+2 - k)).-1 * (p1' != p2')
108
`d[cliftln (q:=4) (m:=k2) k1 p3 (plift (n:=k2) (q:=3) p3 `c[p1']), cliftln (q:=4) (m:=k2) k1 p3 (plift (n:=k2) (q:=3) p3 `c[p2'])]_rmove <= `d[`c[p1'], `c[p2']]_rmove
116
51c650555a5f64696e73797f84f1f2fcfd103109
i, j:disk 3

rrel (n:=3) i j = rrel (n:=4) (lift p3 i) (lift p3 j)
108
connect (move (q:=3) (rrel (n:=3))) `c[p1'] `c[p2']
108
122
by apply: move_connect. Qed. Notation " `cut[ a , b ] " := (ccut a b). Notation " `tuc[ a , b ] " := (ctuc a b). Notation " `dup[ a , b ] " := (rm_rep a b). (* This is theorem 2.9 *)
5
u, v:configuration 4 n
p0, p2, p3:peg 4

[/\ p3 != p2, p3 != p0 & p2 != p0] -> codom v \subset [:: p2; p3] -> psi (s2f (n:=n) [set i | u i == p0]) <= `d[u, v]_rmove
127
512a12b
pH:[/\ p3 != p2, p3 != p0 & p2 != p0]

codom v \subset [:: p2; p3] -> psi (s2f (n:=n) [set i | u i == p0]) <= `d[u, v]_rmove
IH:forall m : nat, m < 0 -> forall (u v : configuration 4 m) (p0 p2 p3 : peg 4), [/\ p3 != p2, p3 != p0 & p2 != p0] -> codom v \subset [:: p2; p3] -> psi (s2f (n:=m) [set i | u i == p0]) <= `d[u, v]_rmove
u, v:configuration 4 0
12b
p3Dp2:p3 != p2
p3Dp0:p3 != p0
p2Dp0:p2 != p0
cH:codom v \subset [:: p2; p3]

psi (s2f (n:=0) [set i | u i == p0]) <= `d[u, v]_rmove
5
IH:forall m : nat, m < n.+1 -> forall (u v : configuration 4 m) (p0 p2 p3 : peg 4), [/\ p3 != p2, p3 != p0 & p2 != p0] -> codom v \subset [:: p2; p3] -> psi (s2f (n:=m) [set i | u i == p0]) <= `d[u, v]_rmove
u, v:configuration 4 n.+1
12b13a13b13c13d
psi (s2f (n:=n.+1) [set i | u i == p0]) <= `d[u, v]_rmove
13813912b13a13b13c13d
E:=[set i | u i == p0]:{set ordinal_finType 0}

psi (s2f (n:=0) E) <= `d[u, v]_rmove
13f
148
E = set0
13f
141
144
514214312b13a13b13c13d
E:=[set i | u i == p0]:{set ordinal_finType n.+1}

psi (s2f (n:=n.+1) E) <= `d[u, v]_rmove
514214312b13a13b13c13d156
N:=ldisk : disk n.+1:disk n.+1

157
514214312b13a13b13c13d15615c
NniE:N \notin E

157
514214312b13a13b13c13d15615c
NiE:N \in E
157
160
E = E :\ N
160
psi (s2f (n:=n.+1) (E :\ N)) <= `d[u, v]_rmove
163
514214312b13a13b13c13d15615c
i:ordinal_finType n.+1

u N != p0 -> (u i == p0) = (i != N) && (u i == p0)
16a
160
16c
162
160
psi (s2f (n:=n) [set i | ↓[u] i == p0]) <= `d[u, v]_rmove
162
160
psi (s2f (n:=n) [set i | ↓[u] i == p0]) <= `d[↓[u], ↓[v]]_(move (q:=4) (rrel (n:=4)))
162
164
157
514214312b13a13b13c13d15615c165
uN0:u N = p0

157
(* maybe I should do a wlog *)
514214312b13a13b13c13d15615c165185
np2:=v N : peg 4:peg 4

157
514214312b13a13b13c13d15615c16518518a
vN2:v N = np2

157
514214312b13a13b13c13d15615c16518518a18f
np3:=(if np2 == p2 then p3 else p2) : peg 4:peg 4

157
193
np2 != p0
514214312b13a13b13c13d15615c16518518a18f194
np2Dp0:np2 != p0
157
193
(v N \in codom v -> v N \in [:: p2; p3]) -> np2 != p0
199
19b
157
19b
np3 != p0 /\ np3 != np2
514214312b13a13b13c13d15615c16518518a18f19419c
np3Dp0:np3 != p0
np3Dp2:np3 != np2
157
19b
np2 != p2 -> p2 != p0 /\ p2 != np2
1a8
1aa
157
1aa
codom v \subset [:: np2; np3]
514214312b13a13b13c15615c16518518a18f19419c1ab1ac
cH:codom v \subset [:: np2; np3]
157
514214312b13a13b13c13d15615c16518518a18f19419c1ab1ac
i:ordinal_finType 4

(i == p2) || (i == p3) -> (i == v N) || (i == (if v N == p2 then p3 else p2))
1b8
1bf
(i == p2) || (i == p3) -> (i == p2) || (i == (if p2 == p2 then p3 else p2))
1bf
(i == p2) || (i == p3) -> (i == p3) || (i == (if p3 == p2 then p3 else p2))
1b9
1bf
1c8
1b8
1ba
157
1ba
u != v
514214312b13a13b13c15615c16518518a18f19419c1ab1ac1bb
uDv:u != v
157
1d5
157
514214312b13a13b13c15615c16518518a18f19419c1ab1ac1bb1d6
g:seq (finfun_finType (ordinal_finType n.+1) (ordinal_finType 4))
gHuv:gpath rmove u v g

157
1dd
v \in g
514214312b13a13b13c15615c16518518a18f19419c1ab1ac1bb1d61de1df
vIg:v \in g
157
1e6
157
514214312b13a13b13c15615c16518518a18f19419c1ab1ac1bb1d61de1df1e7
E':=[set i | [exists c, (c \in u :: g) && (c i == np3)]] :&: E:{set ordinal_finType n.+1}

157
514214312b13a13b13c15615c16518518a18f19419c1ab1ac1bb1d61de1df1e71ef
Ez:E' == set0

157
514214312b13a13b13c15615c16518518a18f19419c1ab1ac1bb1d61de1df1e71ef
EnZ:E' != set0
157
514214312b13a13b13c15615c16518518a18f19419c1ab1ac1bb1d61de1df1e71ef1f4
P:=[set~ np3]:{set ordinal_finType 4}

157
1f5
1fc
all (cvalid (n:=n.+1) E (k:=4) P) (u :: g)
514214312b13a13b13c15615c16518518a18f19419c1ab1ac1bb1d61de1df1e71ef1f41fd
aH:all (cvalid (n:=n.+1) E (k:=4) P) (u :: g)
157
1f6
514214312b13a13b13c15615c16518518a18f19419c1ab1ac1bb1d61de1df1e71ef1f41fd
c:finfun_eqType (ordinal_finType n.+1) (ordinal_eqType 4)
cIg:c \in u :: g
i:'I_n.+1
iIE:i \in E

c i \in P
202
514214312b13a13b13c15615c16518518a18f19419c1ab1ac1bb1d61de1df1e71ef1f41fd20a20b20c20d
ciP3:c i = np3

False
202
212
(i \in E') = (i \in set0) -> False
202
212
i \in E'
202
212
[exists c, (c \in u :: g) && (c i == np3)]
202
204
157
1f5
514214312b13a13b13c15615c16518518a18f19419c1ab1ac1bb1d61de1df1e71ef1f41fd205
p0Isp:p0 \in P

157
1f5
514214312b13a13b13c15615c16518518a18f19419c1ab1ac1bb1d61de1df1e71ef1f41fd205228
pg1, pg2:ordinal_finType 4

pg1 \in P -> pg2 \in P -> rrel (n:=4) pg1 pg2 -> rrel (n:=#|[eta P]|) (enum_rank_in (T:=ordinal_finType 4) (x0:=p0) (A:=P) p0Isp pg1) (enum_rank_in (T:=ordinal_finType 4) (x0:=p0) (A:=P) p0Isp pg2)
514214312b13a13b13c15615c16518518a18f19419c1ab1ac1bb1d61de1df1e71ef1f41fd205228
F:forall pg1 pg2 : ordinal_finType 4, pg1 \in P -> pg2 \in P -> rrel (n:=4) pg1 pg2 -> rrel (n:=#|[eta P]|) (enum_rank_in (T:=ordinal_finType 4) (x0:=p0) (A:=P) p0Isp pg1) (enum_rank_in (T:=ordinal_finType 4) (x0:=p0) (A:=P) p0Isp pg2)
157
1f6
514214312b13a13b13c15615c16518518a18f19419c1ab1ac1bb1d61de1df1e71ef1f41fd20522822d
pg1Dp3:pg1 != np3
pg2Dpg3:pg2 != np3
pg1Dpg2:pg1 != pg2

enum_rank_in (T:=ordinal_finType 4) (x0:=p0) (A:=P) p0Isp pg1 != enum_rank_in (T:=ordinal_finType 4) (x0:=p0) (A:=P) p0Isp pg2
22f
514214312b13a13b13c15615c16518518a18f19419c1ab1ac1bb1d61de1df1e71ef1f41fd20522822d237238

(pg1 \in P -> pg2 \in P -> pg1 = pg2) -> pg1 = pg2
22f
231
157
1f5
231
psi (s2f (n:=n.+1) E) <= `d[cset2 (n:=n.+1) E (k:=4) (sp:=P) (p0:=p0) p0Isp u, cset2 (n:=n.+1) E (k:=4) (sp:=P) (p0:=p0) p0Isp v]_ (move (q:=#|P|) (rrel (n:=#|[eta P]|)))
1f5
231
cset2 (n:=n.+1) E (k:=4) (sp:=P) (p0:=p0) p0Isp u = `c[enum_rank_in (T:=ordinal_finType 4) (x0:=p0) (A:=P) p0Isp p0]
231
psi (s2f (n:=n.+1) E) <= `d[`c[enum_rank_in (T:=ordinal_finType 4) (x0:=p0) (A:=P) p0Isp p0], cset2 (n:=n.+1) E (k:=4) (sp:=P) (p0:=p0) p0Isp v]_ (move (q:=#|P|) (rrel (n:=#|[eta P]|)))
1f6
514214312b13a13b13c15615c16518518a18f19419c1ab1ac1bb1d61de1df1e71ef1f41fd205228232
i:ordinal_finType #|E|

cset2 (n:=n.+1) E (k:=4) (sp:=P) (p0:=p0) p0Isp u i = `c[enum_rank_in (T:=ordinal_finType 4) (x0:=p0) (A:=P) p0Isp p0] i
24b
251
u (enum_val i) = p0
24b
231
psi (s2f (n:=n.+1) E) <= `d[`c[enum_rank_in (T:=ordinal_finType 4) (x0:=p0) (A:=P) p0Isp p0], cset2 (n:=n.+1) E (k:=4) (sp:=P) (p0:=p0) p0Isp v]_ (move (q:=#|P|) (rrel (n:=#|[eta P]|)))
1f5
231
cset2 (n:=n.+1) E (k:=4) (sp:=P) (p0:=p0) p0Isp v = `c[enum_rank_in (T:=ordinal_finType 4) (x0:=p0) (A:=P) p0Isp np2]
231
psi (s2f (n:=n.+1) E) <= `d[`c[enum_rank_in (T:=ordinal_finType 4) (x0:=p0) (A:=P) p0Isp p0], `c[ enum_rank_in (T:=ordinal_finType 4) (x0:=p0) (A:=P) p0Isp np2]]_(move (q:=#|P|) (rrel (n:=#|[eta P]|)))
1f6
251
cset2 (n:=n.+1) E (k:=4) (sp:=P) (p0:=p0) p0Isp v i = `c[enum_rank_in (T:=ordinal_finType 4) (x0:=p0) (A:=P) p0Isp np2] i
260
251
v (enum_val i) = np2
260
251
(v (enum_val i) == np2) || (v (enum_val i) == np3) -> v (enum_val i) = np2
260
251
v (enum_val i) = np3 -> v (enum_val i) = np2
260
251
(enum_val i \in E') = (enum_val i \in set0) -> v (enum_val i) = np3 -> v (enum_val i) = np2
260
251
enum_val i \in E -> (enum_val i \in E') = (enum_val i \in set0) -> v (enum_val i) = np3 -> v (enum_val i) = np2
260
251
[forall x, ~~ ((x \in u :: g) && (x (enum_val i) == np3))] -> v (enum_val i) = np3 -> v (enum_val i) = np2
260
231
psi (s2f (n:=n.+1) E) <= `d[`c[enum_rank_in (T:=ordinal_finType 4) (x0:=p0) (A:=P) p0Isp p0], `c[enum_rank_in (T:=ordinal_finType 4) (x0:=p0) (A:=P) p0Isp np2]]_(move (q:=#|P|) (rrel (n:=#|[eta P]|)))
1f5
231
enum_rank_in (T:=ordinal_finType 4) (x0:=p0) (A:=P) p0Isp p0 != enum_rank_in (T:=ordinal_finType 4) (x0:=p0) (A:=P) p0Isp np2
231
enum_rank_in (T:=ordinal_finType 4) (x0:=p0) (A:=P) p0Isp p0 != enum_rank_in (T:=ordinal_finType 4) (x0:=p0) (A:=P) p0Isp np2 -> psi (s2f (n:=n.+1) E) <= `d[`c[enum_rank_in (T:=ordinal_finType 4) (x0:=p0) (A:=P) p0Isp p0], `c[ enum_rank_in (T:=ordinal_finType 4) (x0:=p0) (A:=P) p0Isp np2]]_(move (q:=#|P|) (rrel (n:=#|[eta P]|)))
1f6
231
(np2 \in P -> p0 \in P -> np2 = p0) -> False
287
514214312b13a13b13c15615c16518518a18f19419c1ab1ac1bb1d61de1df1e71ef1f41fd205228232
H:np2 = p0

214
287
231
enum_rank_in (T:=ordinal_finType 4) (x0:=p0) (A:=P) p0Isp p0 != enum_rank_in (T:=ordinal_finType 4) (x0:=p0) (A:=P) p0Isp np2 -> psi (s2f (n:=n.+1) E) <= `d[`c[enum_rank_in (T:=ordinal_finType 4) (x0:=p0) (A:=P) p0Isp p0], `c[enum_rank_in (T:=ordinal_finType 4) (x0:=p0) (A:=P) p0Isp np2]]_(move (q:=#|P|) (rrel (n:=#|[eta P]|)))
1f5
231
#|P| = 3
514214312b13a13b13c15615c16518518a18f19419c1ab1ac1bb1d61de1df1e71ef1f41fd205228232
U:#|P| = 3
289
1f6
231
#|[set np3]| + #|P| = #|ordinal_finType 4| -> #|P| = 3
29b
29d
296
1f5
29d
forall enum_rank_in enum_rank_in0 : ordinal_subType #|[eta P]|, enum_rank_in != enum_rank_in0 -> psi (s2f (n:=n.+1) E) <= `d[`c[enum_rank_in], `c[enum_rank_in0]]_(move (q:=#|P|) (rrel (n:=#|[eta P]|)))
1f5
514214312b13a13b13c15615c16518518a18f19419c1ab1ac1bb1d61de1df1e71ef1f41fd20522823229e
u1, v1:ordinal_subType 3
u1Dv1:u1 != v1

psi (s2f (n:=n.+1) E) <= `d[`c[u1], `c[v1]]_(move (q:=3) (rrel (n:=3)))
1f5
2ad
psi (s2f (n:=n.+1) E) <= (2 ^ #|` s2f (n:=n.+1) E|).-1
1f5
1f7
157
514214312b13a13b13c15615c16518518a18f19419c1ab1ac1bb1d61de1df1e71ef
EnZ:0 < #|E'|

157
514214312b13a13b13c15615c16518518a18f19419c1ab1ac1bb1d61de1df1e71ef2bc
T:'I_n.+1
TinE':T \in E'
Tmax:\max_(i in E') i = T

157
514214312b13a13b13c15615c16518518a18f19419c1ab1ac1bb1d61de1df1e71ef2bc2c12c2
Tmax:T = \max_(i in E') i

157
2c7
u T = p0
514214312b13a13b13c15615c16518518a18f19419c1ab1ac1bb1d61de1df1e71ef2bc2c12c22c8
uT0:u T = p0
157
2cf
157
514214312b13a13b13c15615c16518518a18f19419c1ab1ac1bb1d61de1df1e71ef2bc2c12c22c82d0
E'':=[set i in E | T < i]:{set ordinal_finType n.+1}

157
514214312b13a13b13c15615c16518518a18f19419c1ab1ac1bb1d61de1df1e71ef2bc2c12c22c82d02d8
K:=#|E''|:nat

157
514214312b13a13b13c15615c16518518a18f19419c1ab1ac1bb1d61de1df1e71ef2bc2c12c22c82d02d82dd20a171

c \in u :: g -> i \in E'' -> c i != np3
514214312b13a13b13c15615c16518518a18f19419c1ab1ac1bb1d61de1df1e71ef2bc2c12c22c82d02d82dd
memE'':forall (c : finfun_eqType (ordinal_finType n.+1) (ordinal_eqType 4)) (i : ordinal_finType n.+1), c \in u :: g -> i \in E'' -> c i != np3
157
514214312b13a13b13c15615c16518518a18f19419c1ab1ac1bb1d61de1df1e71ef2bc2c12c22c82d02d82dd20a171
cIug:c \in u :: g
20d

T < i -> c i != np3
2e3
514214312b13a13b13c15615c16518518a18f19419c1ab1ac1bb1d61de1df1e71ef2bc2c12c22c82d02d82dd20a1712eb20d
ciE:c i == np3

i <= \max_(i in E') i
2e3
2f0
220
2e3
2e5
157
514214312b13a13b13c15615c16518518a18f19419c1ab1ac1bb1d61de1df1e71ef2bc2c12c22c82d02d82dd2e6
ST1:=isO n.+1 T.+1:{set ordinal_finType n.+1}

157
514214312b13a13b13c15615c16518518a18f19419c1ab1ac1bb1d61de1df1e71ef2bc2c12c22c82d02d82dd2e62fd
cST1:#|ST1| = T.+1

157
(* This 3.2 *)
301
T + K <= n
514214312b13a13b13c15615c16518518a18f19419c1ab1ac1bb1d61de1df1e71ef2bc2c12c22c82d02d82dd2e62fd302
KTE:T + K <= n
157
301
T.+1 + K <= #|'I_n.+1|
307
301
#|ST1 :&: E''| = 0
301
T.+1 + K - #|ST1 :&: E''| <= #|'I_n.+1|
308
514214312b13a13b13c15615c16518518a18f19419c1ab1ac1bb1d61de1df1e71ef2bc2c12c22c82d02d82dd2e62fd302171

(i \in ST1 :&: E'') = (i \in set0)
313
319
i < T.+1 -> u i == p0 -> T < i -> False
313
301
315
307
309
157
514214312b13a13b13c15615c16518518a18f19419c1ab1ac1bb1d61de1df1e71ef2bc2c12c82d02d82dd2e62fd30230a

T \in E' -> psi (s2f (n:=n.+1) E) <= `d[u, v]_rmove
514214312b13a13b13c15615c16518518a18f19419c1ab1ac1bb1d61de1df1e71ef2bc2c12c82d02d82dd2e62fd30230a
c_p3:{ffun 'I_n.+1 -> 'I_4}

c_p3 \in u :: g -> c_p3 T == np3 -> u T == p0 -> psi (s2f (n:=n.+1) E) <= `d[u, v]_rmove
32d
c_p3 \in g -> c_p3 T == np3 -> u T == p0 -> psi (s2f (n:=n.+1) E) <= `d[u, v]_rmove
514214312b13a13b13c15615c16518518a18f19419c1ab1ac1bb1d61de1df1e71ef2bc2c12c82d02d82dd2e62fd30230a32e
c_p3Ig:c_p3 \in g
c_p3T3:c_p3 T = np3

157
337
~~ all [predC fun c : configuration 4 n.+1 => c T != p0] g
337
forall x : finfun_finType (ordinal_finType n.+1) (ordinal_finType 4) * seq (finfun_finType (ordinal_finType n.+1) (ordinal_finType 4)) * seq (finfun_finType (ordinal_finType n.+1) (ordinal_finType 4)), [/\ all [predC fun c : configuration 4 n.+1 => c T != p0] x.1.2, x.1.1 T != p0 & g = x.1.2 ++ x.1.1 :: x.2] -> psi (s2f (n:=n.+1) E) <= `d[u, v]_rmove
337
v T == p0 -> False
33e
337
v T \in [:: np2; np3] -> v T == p0 -> False
33e
337
forall x : finfun_finType (ordinal_finType n.+1) (ordinal_finType 4) * seq (finfun_finType (ordinal_finType n.+1) (ordinal_finType 4)) * seq (finfun_finType (ordinal_finType n.+1) (ordinal_finType 4)), [/\ all [predC fun c : configuration 4 n.+1 => c T != p0] x.1.2, x.1.1 T != p0 & g = x.1.2 ++ x.1.1 :: x.2] -> psi (s2f (n:=n.+1) E) <= `d[u, v]_rmove
514214312b13a13b13c15615c16518518a18f19419c1ab1ac1bb1d61de1df1e71ef2bc2c12c82d02d82dd2e62fd30230a32e338339
x0s:finfun_finType (ordinal_finType n.+1) (ordinal_finType 4)
x0sb, x0sa:seq (finfun_finType (ordinal_finType n.+1) (ordinal_finType 4))
x0sbP0:{in x0sb, forall x : finfun_eqType (ordinal_finType n.+1) (ordinal_eqType 4), [predC fun c : configuration 4 n.+1 => c T != p0] x}
x0TD0:x0s T != p0
gE:g = x0sb ++ x0s :: x0sa

157
514214312b13a13b13c15615c16518518a18f19419c1ab1ac1bb1d61de1df1e71ef2bc2c12c82d02d82dd2e62fd30230a32e338339351352353354355
x0:=last u x0sb:configuration 4 n.+1

157
514214312b13a13b13c15615c16518518a18f19419c1ab1ac1bb1d61de1df1e71ef2bc2c12c82d02d82dd2e62fd30230a32e33833935135235335435535a
gHux0:gpath rmove u x0 x0sb

157
514214312b13a13b13c15615c16518518a18f19419c1ab1ac1bb1d61de1df1e71ef2bc2c12c82d02d82dd2e62fd30230a32e33833935135235335435535a35f
gHx0v:gpath rmove x0 v (x0s :: x0sa)

157
514214312b13a13b13c15615c16518518a18f19419c1ab1ac1bb1d61de1df1e71ef2bc2c12c82d02d82dd2e62fd30230a32e33833935135235335435535a35f364
duvE:`d[u, v]_rmove = `d[u, x0]_rmove + `d[x0, v]_rmove

157
368
x0 T = p0
514214312b13a13b13c15615c16518518a18f19419c1ab1ac1bb1d61de1df1e71ef2bc2c12c82d02d82dd2e62fd30230a32e33833935135235335435535a35f364369
x0T0:x0 T = p0
157
368
[predC fun c : configuration 4 n.+1 => c T != p0] (last u x0sb) -> last u x0sb T = p0
36e
370
157
514214312b13a13b13c15615c16518518a18f19419c1ab1ac1bb1d61de1df1e71ef2bc2c12c82d02d82dd2e62fd30230a32e33833935135235335435535a35f364369371
x0TDx0sT:x0 T != x0s T

157
514214312b13a13b13c15615c16518518a18f19419c1ab1ac1bb1d61de1df1e71ef2bc2c12c82d02d82dd2e62fd30230a32e33833935135235335435535a35f36436937137d
x0sTD0:x0s T != p0

157
381
x0 `-->_r x0s
514214312b13a13b13c15615c16518518a18f19419c1ab1ac1bb1d61de1df1e71ef2bc2c12c82d02d82dd2e62fd30230a32e33833935135235335435535a35f36436937137d382
x0Mx0s:x0 `-->_r x0s
157
389
157
389
~~ all [predC fun c : configuration 4 n.+1 => c T == np3] (x0s :: x0sa)
389
forall x : finfun_finType (ordinal_finType n.+1) (ordinal_finType 4) * seq (finfun_finType (ordinal_finType n.+1) (ordinal_finType 4)) * seq (finfun_finType (ordinal_finType n.+1) (ordinal_finType 4)), [/\ all [predC fun c : configuration 4 n.+1 => c T == np3] x.1.2, x.1.1 T == np3 & x0s :: x0sa = x.1.2 ++ x.1.1 :: x.2] -> psi (s2f (n:=n.+1) E) <= `d[u, v]_rmove
389
c_p3 \in x0s :: x0sa
514214312b13a13b13c15615c16518518a18f19419c1ab1ac1bb1d61de1df1e71ef2bc2c12c82d02d82dd2e62fd30230a32e33833935135235335435535a35f36436937137d38238a
c_p3Ix0sa:c_p3 \in x0s :: x0sa
391
393
514214312b13a13b13c15615c16518518a18f19419c1ab1ac1bb1d61de1df1e71ef2bc2c12c82d02d82dd2e62fd30230a32e33935135235335435535a35f36436937137d38238a

[predC fun c : configuration 4 n.+1 => c T != p0] c_p3 -> c_p3 \in x0s :: x0sa
399
39b
391
392
39b
c_p3 T != np3 -> False
392
389
forall x : finfun_finType (ordinal_finType n.+1) (ordinal_finType 4) * seq (finfun_finType (ordinal_finType n.+1) (ordinal_finType 4)) * seq (finfun_finType (ordinal_finType n.+1) (ordinal_finType 4)), [/\ all [predC fun c : configuration 4 n.+1 => c T == np3] x.1.2, x.1.1 T == np3 & x0s :: x0sa = x.1.2 ++ x.1.1 :: x.2] -> psi (s2f (n:=n.+1) E) <= `d[u, v]_rmove
514214312b13a13b13c15615c16518518a18f19419c1ab1ac1bb1d61de1df1e71ef2bc2c12c82d02d82dd2e62fd30230a32e33833935135235335435535a35f36436937137d38238a
x3:finfun_finType (ordinal_finType n.+1) (ordinal_finType 4)
x3b, x3a:seq (finfun_finType (ordinal_finType n.+1) (ordinal_finType 4))
x3bP0:{in (x3, x3b, x3a).1.2, forall x : finfun_finType (ordinal_finType n.+1) (ordinal_finType 4), [predC fun c : configuration 4 n.+1 => c T == np3] x}
x3T3:(x3, x3b, x3a).1.1 T = np3
x0sx0saE:x0s :: x0sa = (x3, x3b, x3a).1.2 ++ (x3, x3b, x3a).1.1 :: (x3, x3b, x3a).2

157
514214312b13a13b13c15615c16518518a18f19419c1ab1ac1bb1d61de1df1e71ef2bc2c12c82d02d82dd2e62fd30230a32e33833935135235335435535a35f36436937137d38238a3b13b23b33b43b5
x3p:=last x0 x3b:configuration 4 n.+1

157
3b9
gpath rmove x0 (last x0 (rcons (x3, x3b, x3a).1.2 (x3, x3b, x3a).1.1)) (rcons (x3, x3b, x3a).1.2 (x3, x3b, x3a).1.1) -> psi (s2f (n:=n.+1) E) <= `d[u, v]_rmove
514214312b13a13b13c15615c16518518a18f19419c1ab1ac1bb1d61de1df1e71ef2bc2c12c82d02d82dd2e62fd30230a32e33833935135235335435535a35f36436937137d38238a3b13b23b33b43b53ba
gHx0x3:gpath rmove x0 (x3, x3b, x3a).1.1 (rcons (x3, x3b, x3a).1.2 (x3, x3b, x3a).1.1)

157
3c2
gpath rmove (last x0 (rcons (x3, x3b, x3a).1.2 (x3, x3b, x3a).1.1)) v (x3, x3b, x3a).2 -> psi (s2f (n:=n.+1) E) <= `d[u, v]_rmove
514214312b13a13b13c15615c16518518a18f19419c1ab1ac1bb1d61de1df1e71ef2bc2c12c82d02d82dd2e62fd30230a32e33833935135235335435535a35f36436937137d38238a3b13b23b33b43b53ba3c3
gHx3v:gpath rmove (x3, x3b, x3a).1.1 v (x3, x3b, x3a).2

157
3cb
`d[x0, v]_rmove = `d[x0, last x0 (rcons (x3, x3b, x3a).1.2 (x3, x3b, x3a).1.1)]_rmove + `d[last x0 (rcons (x3, x3b, x3a).1.2 (x3, x3b, x3a).1.1), v]_rmove -> psi (s2f (n:=n.+1) E) <= `d[u, v]_rmove
514214312b13a13b13c15615c16518518a18f19419c1ab1ac1bb1d61de1df1e71ef2bc2c12c82d02d82dd2e62fd30230a32e33833935135235335435535a35f36436937137d38238a3b13b23b33b43b53ba3c33cc
dx0vE:`d[x0, v]_rmove = `d[x0, (x3, x3b, x3a).1.1]_rmove + `d[(x3, x3b, x3a).1.1, v]_rmove

157
3d4
x3p T != np3
514214312b13a13b13c15615c16518518a18f19419c1ab1ac1bb1d61de1df1e71ef2bc2c12c82d02d82dd2e62fd30230a32e33833935135235335435535a35f36436937137d38238a3b13b23b33b43b53ba3c33cc3d5
x3pND3:x3p T != np3
157
3d4
x0 T != np3
3da
3dc
157
514214312b13a13b13c15615c16518518a18f19419c1ab1ac1bb1d61de1df1e71ef2bc2c12c82d02d82dd2e62fd30230a32e33833935135235335435535a35f36436937137d38238a3b13b23b33b43b53ba3c33cc3d53dd
x3pTDx3T:x3p T != x3 T

157
3e8
x3p `-->_r x3
514214312b13a13b13c15615c16518518a18f19419c1ab1ac1bb1d61de1df1e71ef2bc2c12c82d02d82dd2e62fd30230a32e33833935135235335435535a35f36436937137d38238a3b13b23b33b43b53ba3c33cc3d53dd3e9
x3pMx3:x3p `-->_r x3
157
3f0
157
3f0
~~ all [predC fun c : configuration 4 n.+1 => c N != p0] g
3f0
forall x : {ffun 'I_n.+1 -> 'I_4} * seq {ffun 'I_n.+1 -> 'I_4} * seq {ffun 'I_n.+1 -> 'I_4}, [/\ all [predC fun c : configuration 4 n.+1 => c N != p0] x.1.2, x.1.1 N != p0 & g = x.1.2 ++ x.1.1 :: x.2] -> psi (s2f (n:=n.+1) E) <= `d[u, v]_rmove
3f0
v N == p0 -> False
3f9
3f0
v N \in [:: np2; np3] -> v N == p0 -> False
3f9
3f0
3fb
514214312b13a13b13c15615c16518518a18f19419c1ab1ac1bb1d61de1df1e71ef2bc2c12c82d02d82dd2e62fd30230a32e33833935135235335435535a35f36436937137d38238a3b13b23b33b43b53ba3c33cc3d53dd3e93f1
z0s:{ffun 'I_n.+1 -> 'I_4}
z0sb, z0sa:seq {ffun 'I_n.+1 -> 'I_4}
z0sbP0:{in z0sb, forall x : finfun_eqType (ordinal_finType n.+1) (ordinal_eqType 4), [predC fun c : configuration 4 n.+1 => c N != p0] x}
z0sND0:z0s N != p0
gE':g = z0sb ++ z0s :: z0sa

157
514214312b13a13b13c15615c16518518a18f19419c1ab1ac1bb1d61de1df1e71ef2bc2c12c82d02d82dd2e62fd30230a32e33833935135235335435535a35f36436937137d38238a3b13b23b33b43b53ba3c33cc3d53dd3e93f140b40c40d40e40f
z0:=last u z0sb:configuration 4 n.+1

157
413
z0 N = p0
514214312b13a13b13c15615c16518518a18f19419c1ab1ac1bb1d61de1df1e71ef2bc2c12c82d02d82dd2e62fd30230a32e33833935135235335435535a35f36436937137d38238a3b13b23b33b43b53ba3c33cc3d53dd3e93f140b40c40d40e40f414
z0N0:z0 N = p0
157
413
[predC fun c : configuration 4 n.+1 => c N != p0] (last u z0sb) -> last u z0sb N = p0
419
41b
157
514214312b13a13b13c15615c16518518a18f19419c1ab1ac1bb1d61de1df1e71ef2bc2c12c82d02d82dd2e62fd30230a32e33833935135235335435535a35f36436937137d38238a3b13b23b33b43b53ba3c33cc3d53dd3e93f140b40c40d40e40f41441c
z0NDz0sN:z0 N != z0s N

157
427
z0 `-->_r z0s
514214312b13a13b13c15615c16518518a18f19419c1ab1ac1bb1d61de1df1e71ef2bc2c12c82d02d82dd2e62fd30230a32e33833935135235335435535a35f36436937137d38238a3b13b23b33b43b53ba3c33cc3d53dd3e93f140b40c40d40e40f41441c428
z0Mz0s:z0 `-->_r z0s
157
42f
157
514214312b13a13b13c15615c16518518a18f19419c1ab1ac1bb1d61de1df1e71ef2bc2c12c82d02d82dd2e62fd30230a32e33833935135235335435535a35f36436937137d38238a3b13b23b33b43b53ba3c33cc3d53dd3e93f140b40c40d40e40f41441c428430
gHuz0:gpath rmove u z0 z0sb

157
514214312b13a13b13c15615c16518518a18f19419c1ab1ac1bb1d61de1df1e71ef2bc2c12c82d02d82dd2e62fd30230a32e33833935135235335435535a35f36436937137d38238a3b13b23b33b43b53ba3c33cc3d53dd3e93f140b40c40d40e40f41441c428430438
gHz0v:gpath rmove z0 v (z0s :: z0sa)

157
514214312b13a13b13c15615c16518518a18f19419c1ab1ac1bb1d61de1df1e71ef2bc2c12c82d02d82dd2e62fd30230a32e33833935135235335435535a35f36436937137d38238a3b13b23b33b43b53ba3c33cc3d53dd3e93f140b40c40d40e40f41441c42843043843d
duvE1:`d[u, v]_rmove = `d[u, z0]_rmove + `d[z0, v]_rmove

157
441
~~ all [predC fun c : configuration 4 n.+1 => c N != np2] [:: z0, z0s & z0sa]
441
forall x : finfun_eqType (ordinal_finType n.+1) (ordinal_eqType 4) * seq (finfun_eqType (ordinal_finType n.+1) (ordinal_eqType 4)) * seq (finfun_eqType (ordinal_finType n.+1) (ordinal_eqType 4)), [/\ x.1.1 N != np2, all [predC fun c : configuration 4 n.+1 => c N != np2] x.2 & [:: z0, z0s & z0sa] = x.1.2 ++ x.1.1 :: x.2] -> psi (s2f (n:=n.+1) E) <= `d[u, v]_rmove
514214312b13a13b13c15615c16518518a18f19419c1ab1ac1bb1d61de1df1e71ef2bc2c12c82d02d82dd2e62fd30230a32e33833935135235335435535a35f36436937137d38238a3b13b23b33b43b53ba3c33cc3d53dd3e93f140b40c40d40e40f41441c42843043843d442
z0Iz0sz0sa:z0 \in [:: z0, z0s & z0sa]

446
447
44d
z0 N == np2 -> False
447
441
449
514214312b13a13b13c15615c16518518a18f19419c1ab1ac1bb1d61de1df1e71ef2bc2c12c82d02d82dd2e62fd30230a32e33833935135235335435535a35f36436937137d38238a3b13b23b33b43b53ba3c33cc3d53dd3e93f140b40c40d40e40f41441c42843043843d442
z2p:finfun_eqType (ordinal_finType n.+1) (ordinal_eqType 4)
z2b:seq (finfun_eqType (ordinal_finType n.+1) (ordinal_eqType 4))
z2pN2:z2p N != np2
z2aDp2:true
z0sz0saE:[:: z0, z0s & z0sa] = z2b ++ [:: z2p]

157
514214312b13a13b13c15615c16518518a18f19419c1ab1ac1bb1d61de1df1e71ef2bc2c12c82d02d82dd2e62fd30230a32e33833935135235335435535a35f36436937137d38238a3b13b23b33b43b53ba3c33cc3d53dd3e93f140b40c40d40e40f41441c42843043843d44245a45b
z2:finfun_eqType (ordinal_finType n.+1) (ordinal_eqType 4)
z2a:seq (finfun_eqType (ordinal_finType n.+1) (ordinal_eqType 4))
45c
z2aDp2:(z2 \notin (fun c : configuration 4 n.+1 => c N != np2)) && all [predC fun c : configuration 4 n.+1 => c N != np2] z2a
z0sz0saE:[:: z0, z0s & z0sa] = z2b ++ [:: z2p, z2 & z2a]
157
459
last z0 (z0s :: z0sa) = z2p
459
last z0 (z0s :: z0sa) = z2p -> psi (s2f (n:=n.+1) E) <= `d[u, v]_rmove
460
459
46c
45f
514214312b13a13b13c15615c16518518a18f19419c1ab1ac1bb1d61de1df1e71ef2bc2c12c82d02d82dd2e62fd30230a32e33833935135235335435535a35f36436937137d38238a3b13b23b33b43b53ba3c33cc3d53dd3e93f140b40c40d40e40f41441c42843043843d44245a45b45c45d45e
vEz2p:v = z2p

157
45f
461
157
514214312b13a13b13c15615c16518518a18f19419c1ab1ac1bb1d61de1df1e71ef2bc2c12c82d02d82dd2e62fd30230a32e33833935135235335435535a35f36436937137d38238a3b13b23b33b43b53ba3c33cc3d53dd3e93f140b40c40d40e40f41441c42843043843d44245a45b46246345c464465
z:finfun_eqType (ordinal_finType n.+1) (ordinal_eqType 4)

z \in z2 :: z2a -> z N = np2
514214312b13a13b13c15615c16518518a18f19419c1ab1ac1bb1d61de1df1e71ef2bc2c12c82d02d82dd2e62fd30230a32e33833935135235335435535a35f36436937137d38238a3b13b23b33b43b53ba3c33cc3d53dd3e93f140b40c40d40e40f41441c42843043843d44245a45b46246345c464465
z2aEp2:forall z : finfun_eqType (ordinal_finType n.+1) (ordinal_eqType 4), z \in z2 :: z2a -> z N = np2
157
514214312b13a13b13c15615c16518518a18f19419c1ab1ac1bb1d61de1df1e71ef2bc2c12c82d02d82dd2e62fd30230a32e33833935135235335435535a35f36436937137d38238a3b13b23b33b43b53ba3c33cc3d53dd3e93f140b40c40d40e40f41441c42843043843d44245a45b46246345c46547c
z2NEp2:z2 N = np2
z2aDp2:{in z2a, forall x : finfun_eqType (ordinal_finType n.+1) (ordinal_eqType 4), [predC fun c : configuration 4 n.+1 => c N != np2] x}

47d
47e
485
z \notin (fun c : configuration 4 n.+1 => c N != np2) -> z N = np2
47e
480
157
514214312b13a13b13c15615c16518518a18f19419c1ab1ac1bb1d61de1df1e71ef2bc2c12c82d02d82dd2e62fd30230a32e33833935135235335435535a35f36436937137d38238a3b13b23b33b43b53ba3c33cc3d53dd3e93f140b40c40d40e40f41441c42843043843d44245a45b46246345c464465481
z0Ez2p:z2b = [::] -> z0 = z2p

157
492
z0s :: z0sa = rcons (behead (rcons z2b z2p)) z2 ++ z2a
514214312b13a13b13c15615c16518518a18f19419c1ab1ac1bb1d61de1df1e71ef2bc2c12c82d02d82dd2e62fd30230a32e33833935135235335435535a35f36436937137d38238a3b13b23b33b43b53ba3c33cc3d53dd3e93f140b40c40d40e40f41441c42843043843d44245a45b46246345c464481493
z0sz0saE:z0s :: z0sa = rcons (behead (rcons z2b z2p)) z2 ++ z2a
157
514214312b13a13b13c15615c16518518a18f19419c1ab1ac1bb1d61de1df1e71ef2bc2c12c82d02d82dd2e62fd30230a32e33833935135235335435535a35f36436937137d38238a3b13b23b33b43b53ba3c33cc3d53dd3e93f140b40c40d40e40f41441c42843043843d44245a45b46246345c464481493
zz:finfun_eqType (ordinal_finType n.+1) (ordinal_eqType 4)
ll:seq (finfun_eqType (ordinal_finType n.+1) (ordinal_eqType 4))

ll ++ [:: z2p, z2 & z2a] = rcons (rcons ll z2p) z2 ++ z2a
498
49a
157
514214312b13a13b13c15615c16518518a18f19419c1ab1ac1bb1d61de1df1e71ef2bc2c12c82d02d82dd2e62fd30230a32e33833935135235335435535a35f36436937137d38238a3b13b23b33b43b53ba3c33cc3d53dd3e93f140b40c40d40e40f41441c42843043843d44245a45b46246345c46448149349b
gHz0z2:gpath rmove z0 z2 (rcons (behead (rcons z2b z2p)) z2)

157
514214312b13a13b13c15615c16518518a18f19419c1ab1ac1bb1d61de1df1e71ef2bc2c12c82d02d82dd2e62fd30230a32e33833935135235335435535a35f36436937137d38238a3b13b23b33b43b53ba3c33cc3d53dd3e93f140b40c40d40e40f41441c42843043843d44245a45b46246345c46448149349b4aa
gHz2v:gpath rmove z2 v z2a

157
514214312b13a13b13c15615c16518518a18f19419c1ab1ac1bb1d61de1df1e71ef2bc2c12c82d02d82dd2e62fd30230a32e33833935135235335435535a35f36436937137d38238a3b13b23b33b43b53ba3c33cc3d53dd3e93f140b40c40d40e40f41441c42843043843d44245a45b46246345c46448149349b4aa4af
dz0vE:`d[z0, v]_rmove = `d[z0, z2]_rmove + `d[z2, v]_rmove

157
4b3
z2 \in g
514214312b13a13b13c15615c16518518a18f19419c1ab1ac1bb1d61de1df1e71ef2bc2c12c82d02d82dd2e62fd30230a32e33833935135235335435535a35f36436937137d38238a3b13b23b33b43b53ba3c33cc3d53dd3e93f140b40c40d40e40f41441c42843043843d44245a45b46246345c46448149349b4aa4af4b4
z2Ig:z2 \in g
157
4bb
157
514214312b13a13b13c15615c16518518a18f19419c1ab1ac1bb1d61de1df1e71ef2bc2c12c82d02d82dd2e62fd30230a32e33833935135235335435535a35f36436937137d38238a3b13b23b33b43b53ba3c33cc3d53dd3e93f140b40c40d40e40f41441c42843043843d44245a45b46246345c46448149349b4aa4af4b44bc
z2N2:z2 N = np2

157
514214312b13a13b13c15615c16518518a18f19419c1ab1ac1bb1d61de1df1e71ef2bc2c12c82d02d82dd2e62fd30230a32e33833935135235335435535a35f36436937137d38238a3b13b23b33b43b53ba3c33cc3d53dd3e93f140b40c40d40e40f41441c42843043843d44245a45b46246345c46448149349b4aa4af4b44bc4c4
z2pNDz2N:z2p N != z2 N

157
4c8
z2p `-->_r z2
514214312b13a13b13c15615c16518518a18f19419c1ab1ac1bb1d61de1df1e71ef2bc2c12c82d02d82dd2e62fd30230a32e33833935135235335435535a35f36436937137d38238a3b13b23b33b43b53ba3c33cc3d53dd3e93f140b40c40d40e40f41441c42843043843d44245a45b46246345c46448149349b4aa4af4b44bc4c44c9
z2pMz2:z2p `-->_r z2
157
514214312b13a13b13c15615c16518518a18f19419c1ab1ac1bb1d61de1df1e71ef2bc2c12c82d02d82dd2e62fd30230a32e33833935135235335435535a35f36436937137d38238a3b13b23b33b43b53ba3c33cc3d53dd3e93f140b40c40d40e40f41441c42843043843d44245a45b46246345c46448149b4af4b44bc4c44c9
a:finfun_eqType (ordinal_finType n.+1) (ordinal_eqType 4)
l:seq (finfun_eqType (ordinal_finType n.+1) (ordinal_eqType 4))

gpath rmove z0 z2 (rcons (rcons l z2p) z2) -> z2p `-->_r z2
4ce
4d0
157
(* This is 3.3 *)
4d0
psi (s2f (n:=n.+1) (E :\ N)) <= `d[u, z0]_rmove
514214312b13a13b13c15615c16518518a18f19419c1ab1ac1bb1d61de1df1e71ef2bc2c12c82d02d82dd2e62fd30230a32e33833935135235335435535a35f36436937137d38238a3b13b23b33b43b53ba3c33cc3d53dd3e93f140b40c40d40e40f41441c42843043843d44245a45b46246345c46448149349b4aa4af4b44bc4c44c94d1
duz0_leq:psi (s2f (n:=n.+1) (E :\ N)) <= `d[u, z0]_rmove
157
4d0
psi (s2f (n:=n) [set i | ↓[u] i == p0]) <= `d[u, z0]_rmove
4e0
514214312b13a13b13c15615c16518518a18f19419c1ab1ac1bb1d61de1df1e71ef2bc2c12c82d02d82dd2e62fd30230a32e33833935135235335435535a35f36436937137d38238a3b13b23b33b43b53ba3c33cc3d53dd3e93f140b40c40d40e40f41441c42843043843d44245a45b46246345c46448149349b4aa4af4b44bc4c44c94d1
pp2, pp3:peg 4
H1:pp3 != pp2
H2:pp3 != p0
H3:pp3 != z0s N
H4:pp2 != p0
H5:pp2 != z0s N
H6:forall p : peg 4, [\/ p = z0s N, p = p0, p = pp2 | p = pp3]

4e7
4e0
4eb
codom ↓[z0] \subset [:: pp2; pp3]
514214312b13a13b13c15615c16518518a18f19419c1ab1ac1bb1d61de1df1e71ef2bc2c12c82d02d82dd2e62fd30230a32e33833935135235335435535a35f36436937137d38238a3b13b23b33b43b53ba3c33cc3d53dd3e93f140b40c40d40e40f41441c42843043843d44245a45b46246345c46448149349b4aa4af4b44bc4c44c94d14ec4ed4ee4ef4f04f14f2
cH1:codom ↓[z0] \subset [:: pp2; pp3]
4e7
4e1
514214312b13a13b13c15615c16518518a18f19419c1ab1ac1bb1d61de1df1e71ef2bc2c12c82d02d82dd2e62fd30230a32e33833935135235335435535a35f36436937137d38238a3b13b23b33b43b53ba3c33cc3d53dd3e93f140b40c40d40e40f41441c42843043843d44245a45b46246345c46448149349b4aa4af4b44bc4c44c94d14ec4ed4ee4ef4f04f14f21c0
j:ordinal_finType n

i = ↓[z0] j -> (i == pp2) || (i == pp3)
4f7
4fe
(z0 (trshift 1 j) == pp2) || (z0 (trshift 1 j) == pp3)
4f7
4fe
(pp2 == pp2) || (pp2 == pp3)
4fe
(pp3 == pp2) || (pp3 == pp3)
4fe
z0 (trshift 1 j) == z0s N -> (z0 (trshift 1 j) == pp2) || (z0 (trshift 1 j) == pp3)
4fe
z0 (trshift 1 j) == p0 -> (z0 (trshift 1 j) == pp2) || (z0 (trshift 1 j) == pp3)
4f84e1
506
4fe
50b
50c50e4f84e1
512
4fe
50d
50e4f84e1
517
4fe
50f
4f7
4f9
4e7
4e0
4f9
psi (s2f (n:=n) [set i | ↓[u] i == p0]) <= `d[↓[u], ↓[z0]]_(move (q:=4) (rrel (n:=4)))
4e0
4e2
157
(* This is 3.4 *)
514214312b13a13b13c15615c16518518a18f19419c1ab1ac1bb1d61de1df1e71ef2bc2c12c82d02d82dd2e62fd30230a32e33833935135235335435535a35f36436937137d38238a3b13b23b33b43b53ba3c33cc3d53dd3e93f140b40c40d40e40f41441c42843043843d44245a45b46246345c46448149349b4aa4af4b44bc4c44c94d14e3
ST:=isO n.+1 T:{set ordinal_finType n.+1}

157
514214312b13a13b13c15615c16518518a18f19419c1ab1ac1bb1d61de1df1e71ef2bc2c12c82d02d82dd2e62fd30230a32e33833935135235335435535a35f36436937137d38238a3b13b23b33b43b53ba3c33cc3d53dd3e93f140b40c40d40e40f41441c42843043843d44245a45b46246345c46448149349b4aa4af4b44bc4c44c94d14e352c
cST:#|ST| = T

157
530
psi (s2f (n:=n.+1) E `&` `[T]) <= `d[u, x0]_rmove
514214312b13a13b13c15615c16518518a18f19419c1ab1ac1bb1d61de1df1e71ef2bc2c12c82d02d82dd2e62fd30230a32e33833935135235335435535a35f36436937137d38238a3b13b23b33b43b53ba3c33cc3d53dd3e93f140b40c40d40e40f41441c42843043843d44245a45b46246345c46448149349b4aa4af4b44bc4c44c94d14e352c531
dux0_leq:psi (s2f (n:=n.+1) E `&` `[T]) <= `d[u, x0]_rmove
157
514214312b13a13b13c15615c16518518a18f19419c1ab1ac1bb1d61de1df1e71ef2bc2c12c82d02d82dd2e62fd30230a32e33833935135235335435535a35f36436937137d38238a3b13b23b33b43b53ba3c33cc3d53dd3e93f140b40c40d40e40f41441c42843043843d44245a45b46246345c46448149349b4aa4af4b44bc4c44c94d14e352c531
TLN:T <= n.+1

535
536
53d
psi (s2f (n:=n.+1) E `&` `[T]) <= `d[`cut[ TLN, u], `cut[ TLN, x0]]_(move (q:=4) (rrel (n:=4)))
536
53d
psi (s2f (n:=T) [set i | `cut[ TLN, u] i == p0]) <= `d[`cut[ TLN, u], `cut[ TLN, x0]]_(move (q:=4) (rrel (n:=4)))
536
514214312b13a13b13c15615c16518518a18f19419c1ab1ac1bb1d61de1df1e71ef2bc2c12c82d02d82dd2e62fd30230a32e33833935135235335435535a35f36436937137d38238a3b13b23b33b43b53ba3c33cc3d53dd3e93f140b40c40d40e40f41441c42843043843d44245a45b46246345c46448149349b4aa4af4b44bc4c44c94d14e352c53153e4ec4ed4ee
H3:pp3 != x0s T
4f0
H5:pp2 != x0s T
H6:forall p : peg 4, [\/ p = x0s T, p = p0, p = pp2 | p = pp3]

546
536
54a
codom `cut[ TLN, x0] \subset [:: pp2; pp3]
514214312b13a13b13c15615c16518518a18f19419c1ab1ac1bb1d61de1df1e71ef2bc2c12c82d02d82dd2e62fd30230a32e33833935135235335435535a35f36436937137d38238a3b13b23b33b43b53ba3c33cc3d53dd3e93f140b40c40d40e40f41441c42843043843d44245a45b46246345c46448149349b4aa4af4b44bc4c44c94d14e352c53153e4ec4ed4ee54b4f054c54d
cH1:codom `cut[ TLN, x0] \subset [:: pp2; pp3]
psi (s2f (n:=T) [set i | `cut[ TLN, u] i == p0]) <= `d[`cut[ TLN, u], `cut[ TLN, x0]]_ (move (q:=4) (rrel (n:=4)))
537
514214312b13a13b13c15615c16518518a18f19419c1ab1ac1bb1d61de1df1e71ef2bc2c12c82d02d82dd2e62fd30230a32e33833935135235335435535a35f36436937137d38238a3b13b23b33b43b53ba3c33cc3d53dd3e93f140b40c40d40e40f41441c42843043843d44245a45b46246345c46448149349b4aa4af4b44bc4c44c94d14e352c53153e4ec4ed4ee54b4f054c54d1c0
j:ordinal_finType T

(x0 (widen_ord (m:=n.+1) TLN j) == pp2) || (x0 (widen_ord (m:=n.+1) TLN j) == pp3)
552
55a
508
55a50b
55a
x0 (widen_ord (m:=n.+1) TLN j) == x0s T -> (x0 (widen_ord (m:=n.+1) TLN j) == pp2) || (x0 (widen_ord (m:=n.+1) TLN j) == pp3)
55a
x0 (widen_ord (m:=n.+1) TLN j) == p0 -> (x0 (widen_ord (m:=n.+1) TLN j) == pp2) || (x0 (widen_ord (m:=n.+1) TLN j) == pp3)
553537
55e
55a
50b
562564553537
568
55a
563
564553537
56d
55a
565
552
554
546
536
538
157
514214312b13a13b13c15615c16518518a18f19419c1ab1ac1bb1d61de1df1e71ef2bc2c12c82d02d82dd2e62fd30230a32e33833935135235335435535a35f36436937137d38238a3b13b23b33b43b53ba3c33cc3d53dd3e93f140b40c40d40e40f41441c42843043843d44245a45b46246345c46448149349b4aa4af4b44bc4c44c94d14e352c531539
TLK:T < Ξ”K

157
514214312b13a13b13c15615c16518518a18f19419c1ab1ac1bb1d61de1df1e71ef2bc2c12c82d02d82dd2e62fd30230a32e33833935135235335435535a35f36436937137d38238a3b13b23b33b43b53ba3c33cc3d53dd3e93f140b40c40d40e40f41441c42843043843d44245a45b46246345c46448149349b4aa4af4b44bc4c44c94d14e352c531539
KLT:Ξ”K <= T
157
514214312b13a13b13c15615c16518518a18f19419c1ab1ac1bb1d61de1df1e71ef2bc2c12c82d02d82dd2e62fd30230a32e33833935135235335435535a35f36436937137d38238a3b13b23b33b43b53ba3c33cc3d53dd3e93f140b40c40d40e40f41441c42843043843d44245a45b46246345c46448149349b4aa4af4b44bc4c44c94d14e352c53153957e
K_gt0:0 < K

157
57f
514214312b13a13b13c15615c16518518a18f19419c1ab1ac1bb1d61de1df1e71ef2bc2c12c82d02d82dd2e62fd30230a32e33833935135235335435535a35f36436937137d38238a3b13b23b33b43b53ba3c33cc3d53dd3e93f140b40c40d40e40f41441c42843043843d44245a45b46246345c46448149349b4aa4af4b44bc4c44c94d14e352c53153957e587
TLN:T < N

157
57f
(* This is 3. 5 *)
58b
psi (s2f (n:=n.+1) E) - psi (s2f (n:=n.+1) (E :\ N)) <= 2 ^ K.-1
514214312b13a13b13c15615c16518518a18f19419c1ab1ac1bb1d61de1df1e71ef2bc2c12c82d02d82dd2e62fd30230a32e33833935135235335435535a35f36436937137d38238a3b13b23b33b43b53ba3c33cc3d53dd3e93f140b40c40d40e40f41441c42843043843d44245a45b46246345c46448149349b4aa4af4b44bc4c44c94d14e352c53153957e58758c
psiDN:psi (s2f (n:=n.+1) E) - psi (s2f (n:=n.+1) (E :\ N)) <= 2 ^ K.-1
157
580
58b
psi (s2f (n:=n.+1) E) - psi (s2f (n:=n.+1) E `\ N) <= 2 ^ K.-1
591
58b
#|` s2f (n:=n.+1) E `\` `[Ξ”K]| <= K
591
58b
#|E :\: isO n.+1 (Ξ”K)| <= K
591
58b
E :\: isO n.+1 (Ξ”K) \subset E''
591
514214312b13a13b13c15615c16518518a18f19419c1ab1ac1bb1d61de1df1e71ef2bc2c12c82d02d82dd2e62fd30230a32e33833935135235335435535a35f36436937137d38238a3b13b23b33b43b53ba3c33cc3d53dd3e93f140b40c40d40e40f41441c42843043843d44245a45b46246345c46448149349b4aa4af4b44bc4c44c94d14e352c53153957e58758c171

(Ξ”K <= i) && (u i == p0) -> (u i == p0) && (T < i)
591
514214312b13a13b13c15615c16518518a18f19419c1ab1ac1bb1d61de1df1e71ef2bc2c12c82d02d82dd2e62fd30230a32e33833935135235335435535a35f36436937137d38238a3b13b23b33b43b53ba3c33cc3d53dd3e93f140b40c40d40e40f41441c42843043843d44245a45b46246345c46448149349b4aa4af4b44bc4c44c94d14e352c53153957e58758c171
KLi:Ξ”K <= i

T < i
591
593
157
57f
514214312b13a13b13c15615c16518518a18f19419c1ab1ac1bb1d61de1df1e71ef2bc2c12c82d02d82dd2e62fd30230a32e33833935135235335435535a35f36436937137d38238a3b13b23b33b43b53ba3c33cc3d53dd3e93f140b40c40d40e40f41441c42843043843d44245a45b46246345c46448149349b4aa4af4b44bc4c44c94d14e352c53153957e58758c594
gH5:size (z0s :: z0sa) = `d[z0, v]_rmove

157
57f
5b6
psi (s2f (n:=n.+1) E) <= `d[u, z0]_rmove + `d[z0, v]_rmove
57f
5b6
psi (s2f (n:=n.+1) E) <= psi (s2f (n:=n.+1) (E :\ N)) + `d[z0, v]_rmove
57f
514214312b13a13b13c15615c16518518a18f19419c1ab1ac1bb1d61de1df1e71ef2bc2c12c82d02d82dd2e62fd30230a32e33833935135235335435535a35f36436937137d38238a3b13b23b33b43b53ba3c33cc3d53dd3e93f140b40c40d40e40f41441c42843043843d44245a45b46246345c46448149349b4aa4af4b44bc4c44c94d14e352c53153957e58758c5b7

2 ^ K.-1 <= `d[z0, v]_rmove
57f
5c3
1 + (2 ^ K.-1).-1 <= `d[z0, z2]_rmove + `d[z2, v]_rmove
57f
5c3
0 < `d[z0, z2]_rmove
5c3
(2 ^ K.-1).-1 <= `d[z2, v]_rmove
580
5c3
z0 != z2
5cd
5c3
5cf
57f
514214312b13a13b13c15615c16518518a18f19419c1ab1ac1bb1d61de1df1e71ef2bc2c12c82d02d82dd2e62fd30230a32e33833935135235335435535a35f36436937137d38238a3b13b23b33b43b53ba3c33cc3d53dd3e93f140b40c40d40e40f41441c42843043843d44245a45b46246345c46448149349b4aa4af4b44bc4c44c94d14e352c53153957e58758c5b71fd

5cf
57f
5da
all (cvalid (n:=n.+1) (E'' :\ N) (k:=4) P) (z2 :: z2a)
514214312b13a13b13c15615c16518518a18f19419c1ab1ac1bb1d61de1df1e71ef2bc2c12c82d02d82dd2e62fd30230a32e33833935135235335435535a35f36436937137d38238a3b13b23b33b43b53ba3c33cc3d53dd3e93f140b40c40d40e40f41441c42843043843d44245a45b46246345c46448149349b4aa4af4b44bc4c44c94d14e352c53153957e58758c5b71fd
aH:all (cvalid (n:=n.+1) (E'' :\ N) (k:=4) P) (z2 :: z2a)
5cf
580
514214312b13a13b13c15615c16518518a18f19419c1ab1ac1bb1d61de1df1e71ef2bc2c12c82d02d82dd2e62fd30230a32e33833935135235335435535a35f36436937137d38238a3b13b23b33b43b53ba3c33cc3d53dd3e93f140b40c40d40e40f41441c42843043843d44245a45b46246345c46448149349b4aa4af4b44bc4c44c94d14e352c53153957e58758c5b71fd20a
cIg:c \in z2 :: z2a
20c
iIE'':i \in E'' :\ N

20e
5df
514214312b13a13b13c15615c16518518a18f19419c1ab1ac1bb1d61de1df1e71ef2bc2c12c82d02d82dd2fd30230a32e33833935135235335435535a35f36436937137d38238a3b13b23b33b43b53ba3c33cc3d53dd3e93f140b40c40d40e40f41441c42843043843d44245a45b46246345c46448149349b4aa4af4b44bc4c44c94d14e352c53153957e58758c5b71fd20a5e720c5e8

i \in E''
5ec
c \in u :: g
5e0580
5ec
5f0
5df
5e1
5cf
57f
514214312b13a13b13c15615c16518518a18f19419c1ab1ac1bb1d61de1df1e71ef2bc2c12c82d02d82dd2e62fd30230a32e33833935135235335435535a35f36436937137d38238a3b13b23b33b43b53ba3c33cc3d53dd3e93f140b40c40d40e40f41441c42843043843d44245a45b46246345c46448149349b4aa4af4b44bc4c44c94d14e352c53153957e58758c5b71fd5e2228

5cf
57f
514214312b13a13b13c15615c16518518a18f19419c1ab1ac1bb1d61de1df1e71ef2bc2c12c82d02d82dd2e62fd30230a32e33833935135235335435535a35f36436937137d38238a3b13b23b33b43b53ba3c33cc3d53dd3e93f140b40c40d40e40f41441c42843043843d44245a45b46246345c46448149349b4aa4af4b44bc4c44c94d14e352c53153957e58758c5b71fd5e222822d

22e
514214312b13a13b13c15615c16518518a18f19419c1ab1ac1bb1d61de1df1e71ef2bc2c12c82d02d82dd2e62fd30230a32e33833935135235335435535a35f36436937137d38238a3b13b23b33b43b53ba3c33cc3d53dd3e93f140b40c40d40e40f41441c42843043843d44245a45b46246345c46448149349b4aa4af4b44bc4c44c94d14e352c53153957e58758c5b71fd5e2228232
5cf
580
514214312b13a13b13c15615c16518518a18f19419c1ab1ac1bb1d61de1df1e71ef2bc2c12c82d02d82dd2e62fd30230a32e33833935135235335435535a35f36436937137d38238a3b13b23b33b43b53ba3c33cc3d53dd3e93f140b40c40d40e40f41441c42843043843d44245a45b46246345c46448149349b4aa4af4b44bc4c44c94d14e352c53153957e58758c5b71fd5e222822d237238239

23a
5ff
514214312b13a13b13c15615c16518518a18f19419c1ab1ac1bb1d61de1df1e71ef2bc2c12c82d02d82dd2e62fd30230a32e33833935135235335435535a35f36436937137d38238a3b13b23b33b43b53ba3c33cc3d53dd3e93f140b40c40d40e40f41441c42843043843d44245a45b46246345c46448149349b4aa4af4b44bc4c44c94d14e352c53153957e58758c5b71fd5e222822d237238

23f
5ff
601
5cf
57f
601
z2p N != np3
601
np2 != np3
514214312b13a13b13c15615c16518518a18f19419c1ab1ac1bb1d61de1df1e71ef2bc2c12c82d02d82dd2e62fd30230a32e33833935135235335435535a35f36436937137d38238a3b13b23b33b43b53ba3c33cc3d53dd3e93f140b40c40d40e40f41441c42843043843d44245a45b46246345c46448149349b4aa4af4b44bc4c44c94d14e352c53153957e58758c5b71fd5e2228232
p1:peg 4
p1Dnp3:p1 != np3
p1Dnp2:p1 != np2
p1Dz:p1 != z2p N
Hz:forall p : peg 4, [\/ p = z2p N, p = np2, p = np3 | p = p1]
5cf
580
60e
514214312b13a13b13c15615c16518518a18f19419c1ab1ac1bb1d61de1df1e71ef2bc2c12c82d02d82dd2e62fd30230a32e33833935135235335435535a35f36436937137d38238a3b13b23b33b43b53ba3c33cc3d53dd3e93f140b40c40d40e40f41441c42843043843d44245a45b46246345c46448149349b4aa4af4b44bc4c44c94d14e352c53153957e5875b71fd5e2228232

~~ (N <= \max_(i in E') i) -> z2p N != np3
611
514214312b13a13b13c15615c16518518a18f19419c1ab1ac1bb1d61de1df1e71ef2bc2c12c82d02d82dd2e62fd30230a32e33833935135235335435535a35f36436937137d38238a3b13b23b33b43b53ba3c33cc3d53dd3e93f140b40c40d40e40f41441c42843043843d44245a45b46246345c46448149349b4aa4af4b44bc4c44c94d14e352c53153957e5875b71fd5e2228232
z2pNE:z2p N = np3

N \in E'
611
624
(z2p \in u :: g) && (z2p N == np3)
611
624
z2p \in u :: z0sb ++ rcons (behead (rcons z2b z2p)) z2 ++ z2a
611
514214312b13a13b13c15615c16518518a18f19419c1ab1ac1bb1d61de1df1e71ef2bc2c12c82d02d82dd2e62fd30230a32e33833935135235335435535a35f36436937137d38238a3b13b23b33b43b53ba3c33cc3d53dd3e93f140b40c40d40e40f41441c42843043843d44245a45b46246345c46448149b4aa4af4b44bc4c44c94d14e352c53153957e5875b71fd5e2228232625

z0 \in u :: z0sb ++ z2 :: z2a
514214312b13a13b13c15615c16518518a18f19419c1ab1ac1bb1d61de1df1e71ef2bc2c12c82d02d82dd2e62fd30230a32e33833935135235335435535a35f36436937137d38238a3b13b23b33b43b53ba3c33cc3d53dd3e93f140b40c40d40e40f41441c42843043843d44245a45b46246345c46448149b4aa4af4b44bc4c44c94d14e352c53153957e5875b71fd5e22282326254a04a1
z2p \in u :: z0sb ++ rcons (rcons ll z2p) z2 ++ z2a
612614580
636
637
611
601
613
614580
63c
615
5cf
57f
615
(2 ^ K.-1).-1 <= `d[cset2 (n:=n.+1) (E'' :\ N) (k:=4) (sp:=P) (p0:=p0) p0Isp z2, cset2 (n:=n.+1) (E'' :\ N) (k:=4) (sp:=P) (p0:=p0) p0Isp v]_(move (q:=#|P|) (rrel (n:=#|[eta P]|)))
57f
615
cset2 (n:=n.+1) (E'' :\ N) (k:=4) (sp:=P) (p0:=p0) p0Isp z2 = `c[enum_rank_in (T:=ordinal_finType 4) (x0:=p0) (A:=P) p0Isp p1]
615
(2 ^ K.-1).-1 <= `d[`c[enum_rank_in (T:=ordinal_finType 4) (x0:=p0) (A:=P) p0Isp p1], cset2 (n:=n.+1) (E'' :\ N) (k:=4) (sp:=P) (p0:=p0) p0Isp v]_(move (q:=#|P|) (rrel (n:=#|[eta P]|)))
580
514214312b13a13b13c15615c16518518a18f19419c1ab1ac1bb1d61de1df1e71ef2bc2c12c82d02d82dd2e62fd30230a32e33833935135235335435535a35f36436937137d38238a3b13b23b33b43b53ba3c33cc3d53dd3e93f140b40c40d40e40f41441c42843043843d44245a45b46246345c46448149349b4aa4af4b44bc4c44c94d14e352c53153957e58758c5b71fd5e222823261661761861961a
i:ordinal_finType #|E'' :\ N|

cset2 (n:=n.+1) (E'' :\ N) (k:=4) (sp:=P) (p0:=p0) p0Isp z2 i = `c[enum_rank_in (T:=ordinal_finType 4) (x0:=p0) (A:=P) p0Isp p1] i
64b
651
z2 (enum_val i) = p1
64b
651
z2 (enum_val i) != z2p N
651
z2 (enum_val i) != np2
651
z2 (enum_val i) != np3
64c580
659
651
65e
65f64c580
663
651
enum_val i < N
665
651
enum_val i != n -> (u (enum_val i) == p0) && (T < enum_val i) -> enum_val i < n
665
651
(enum_val i == n) || (enum_val i < n) -> enum_val i != n -> (u (enum_val i) == p0) && (T < enum_val i) -> enum_val i < n
665
651
660
64b
514214312b13a13b13c15615c16518518a18f19419c1ab1ac1bb1d61de1df1e71ef2bc2c12c82d02d82dd2fd30230a32e33833935135235335435535a35f36436937137d38238a3b13b23b33b43b53ba3c33cc3d53dd3e93f140b40c40d40e40f41441c42843043843d44245a45b46246345c46448149349b4aa4af4b44bc4c44c94d14e352c53153957e58758c5b71fd5e222823261661761861961a652

enum_val i \in E''
64b
615
(2 ^ K.-1).-1 <= `d[`c[enum_rank_in (T:=ordinal_finType 4) (x0:=p0) (A:=P) p0Isp p1], cset2 (n:=n.+1) (E'' :\ N) (k:=4) (sp:=P) (p0:=p0) p0Isp v]_(move (q:=#|P|) (rrel (n:=#|[eta P]|)))
57f
615
cset2 (n:=n.+1) (E'' :\ N) (k:=4) (sp:=P) (p0:=p0) p0Isp v = `c[enum_rank_in (T:=ordinal_finType 4) (x0:=p0) (A:=P) p0Isp np2]
615
(2 ^ K.-1).-1 <= `d[`c[enum_rank_in (T:=ordinal_finType 4) (x0:=p0) (A:=P) p0Isp p1], `c[ enum_rank_in (T:=ordinal_finType 4) (x0:=p0) (A:=P) p0Isp np2]]_(move (q:=#|P|) (rrel (n:=#|[eta P]|)))
580
651
cset2 (n:=n.+1) (E'' :\ N) (k:=4) (sp:=P) (p0:=p0) p0Isp v i = `c[enum_rank_in (T:=ordinal_finType 4) (x0:=p0) (A:=P) p0Isp np2] i
683
651
26a
683
651
26e
683
651
272
683
651
v (enum_val i) != np3
683
678683
615
(2 ^ K.-1).-1 <= `d[`c[enum_rank_in (T:=ordinal_finType 4) (x0:=p0) (A:=P) p0Isp p1], `c[enum_rank_in (T:=ordinal_finType 4) (x0:=p0) (A:=P) p0Isp np2]]_(move (q:=#|P|) (rrel (n:=#|[eta P]|)))
57f
615
enum_rank_in (T:=ordinal_finType 4) (x0:=p0) (A:=P) p0Isp p1 != enum_rank_in (T:=ordinal_finType 4) (x0:=p0) (A:=P) p0Isp np2
615
enum_rank_in (T:=ordinal_finType 4) (x0:=p0) (A:=P) p0Isp p1 != enum_rank_in (T:=ordinal_finType 4) (x0:=p0) (A:=P) p0Isp np2 -> (2 ^ K.-1).-1 <= `d[`c[enum_rank_in (T:=ordinal_finType 4) (x0:=p0) (A:=P) p0Isp p1], `c[ enum_rank_in (T:=ordinal_finType 4) (x0:=p0) (A:=P) p0Isp np2]]_(move (q:=#|P|) (rrel (n:=#|[eta P]|)))
580
615
(np2 \in P -> p1 \in P -> np2 = p1) -> False
6a1
514214312b13a13b13c15615c16518518a18f19419c1ab1ac1bb1d61de1df1e71ef2bc2c12c82d02d82dd2e62fd30230a32e33833935135235335435535a35f36436937137d38238a3b13b23b33b43b53ba3c33cc3d53dd3e93f140b40c40d40e40f41441c42843043843d44245a45b46246345c46448149349b4aa4af4b44bc4c44c94d14e352c53153957e58758c5b71fd5e222823261661761861961a
H:np2 = p1

214
6a1
615
enum_rank_in (T:=ordinal_finType 4) (x0:=p0) (A:=P) p0Isp p1 != enum_rank_in (T:=ordinal_finType 4) (x0:=p0) (A:=P) p0Isp np2 -> (2 ^ K.-1).-1 <= `d[`c[enum_rank_in (T:=ordinal_finType 4) (x0:=p0) (A:=P) p0Isp p1], `c[enum_rank_in (T:=ordinal_finType 4) (x0:=p0) (A:=P) p0Isp np2]]_(move (q:=#|P|) (rrel (n:=#|[eta P]|)))
57f
615
29a
514214312b13a13b13c15615c16518518a18f19419c1ab1ac1bb1d61de1df1e71ef2bc2c12c82d02d82dd2e62fd30230a32e33833935135235335435535a35f36436937137d38238a3b13b23b33b43b53ba3c33cc3d53dd3e93f140b40c40d40e40f41441c42843043843d44245a45b46246345c46448149349b4aa4af4b44bc4c44c94d14e352c53153957e58758c5b71fd5e222823261661761861961a29e
6a3
580
615
2a2
6b4
6b6
6b0
57f
6b6
forall enum_rank_in enum_rank_in0 : ordinal_subType #|[eta P]|, enum_rank_in != enum_rank_in0 -> (2 ^ K.-1).-1 <= `d[`c[enum_rank_in], `c[enum_rank_in0]]_(move (q:=#|P|) (rrel (n:=#|[eta P]|)))
57f
514214312b13a13b13c15615c16518518a18f19419c1ab1ac1bb1d61de1df1e71ef2bc2c12c82d02d82dd2e62fd30230a32e33833935135235335435535a35f36436937137d38238a3b13b23b33b43b53ba3c33cc3d53dd3e93f140b40c40d40e40f41441c42843043843d44245a45b46246345c46448149349b4aa4af4b44bc4c44c94d14e352c53153957e58758c5b71fd5e222823261661761861961a29e2ae2af

(2 ^ K.-1).-1 <= `d[`c[u1], `c[v1]]_(move (q:=3) (rrel (n:=3)))
57f
6c4
(2 ^ #|E''|.-1).-1 <= (2 ^ #|E'' :\ N|).-1
57f
581
157
514214312b13a13b13c15615c16518518a18f19419c1ab1ac1bb1d61de1df1e71ef2bc2c12c82d02d82dd2e62fd30230a32e33833935135235335435535a35f36436937137d38238a3b13b23b33b43b53ba3c33cc3d53dd3e93f140b40c40d40e40f41441c42843043843d44245a45b46246345c46448149349b4aa4af4b44bc4c44c94d14e352c531539582
s:=βˆ‡(T + K).+1:nat

157
(* This is 3.7 *)
6d0
psi (s2f (n:=n.+1) E) - psi (s2f (n:=n.+1) (E :\ N)) <= 2 ^ s.-1
514214312b13a13b13c15615c16518518a18f19419c1ab1ac1bb1d61de1df1e71ef2bc2c12c82d02d82dd2e62fd30230a32e33833935135235335435535a35f36436937137d38238a3b13b23b33b43b53ba3c33cc3d53dd3e93f140b40c40d40e40f41441c42843043843d44245a45b46246345c46448149349b4aa4af4b44bc4c44c94d14e352c5315395826d1
psiDN:psi (s2f (n:=n.+1) E) - psi (s2f (n:=n.+1) (E :\ N)) <= 2 ^ s.-1
157
6d0
psi (s2f (n:=n.+1) E) - psi (s2f (n:=n.+1) E `\ N) <= 2 ^ s.-1
6d6
6d0
#|` s2f (n:=n.+1) E `\` `[Ξ”s]| <= s
6d6
6d0
#|E :\: isO n.+1 (Ξ”s)| <= s
6d6
514214312b13a13b13c15615c16518518a18f19419c1ab1ac1bb1d61de1df1e71ef2bc2c12c82d02d82dd2e62fd30230a32e33833935135235335435535a35f36436937137d38238a3b13b23b33b43b53ba3c33cc3d53dd3e93f140b40c40d40e40f41441c42843043843d44245a45b46246345c46448149349b4aa4af4b44bc4c44c94d14e352c5315395826d1
tS1:=isO n.+1 (Ξ”s):{set ordinal_finType n.+1}
tS2:=isO n.+1 T.+1:{set ordinal_finType n.+1}

#|E :\: tS1| <= s
6d6
6e9
#|E :\: tS1| <= #|E'' :|: tS2 :\: tS1|
6e9
#|E'' :|: tS2 :\: tS1| <= s
6d7
514214312b13a13b13c15615c16518518a18f19419c1ab1ac1bb1d61de1df1e71ef2bc2c12c82d02d82dd2e62fd30230a32e33833935135235335435535a35f36436937137d38238a3b13b23b33b43b53ba3c33cc3d53dd3e93f140b40c40d40e40f41441c42843043843d44245a45b46246345c46448149349b4aa4af4b44bc4c44c94d14e352c5315395826d16ea6eb171

i \in E :\: tS1 -> i \in E'' :|: tS2 :\: tS1
6f1
6e9
6f3
6d6
6e9
#|E'' :|: tS2 :\: tS1| <= #|E''| + #|tS2 :\: tS1|
6e9
#|E''| + #|tS2 :\: tS1| <= s
6d7
6e9
702
6d6
6e9
K + #|tS2 :\: tS1| <= s
6d6
514214312b13a13b13c15615c16518518a18f19419c1ab1ac1bb1d61de1df1e71ef2bc2c12c82d02d82dd2e62fd30230a32e33833935135235335435535a35f36436937137d38238a3b13b23b33b43b53ba3c33cc3d53dd3e93f140b40c40d40e40f41441c42843043843d44245a45b46246345c46448149349b4aa4af4b44bc4c44c94d14e352c5315395826d16ea6eb
TLd:T < Ξ”s

709
514214312b13a13b13c15615c16518518a18f19419c1ab1ac1bb1d61de1df1e71ef2bc2c12c82d02d82dd2e62fd30230a32e33833935135235335435535a35f36436937137d38238a3b13b23b33b43b53ba3c33cc3d53dd3e93f140b40c40d40e40f41441c42843043843d44245a45b46246345c46448149349b4aa4af4b44bc4c44c94d14e352c5315395826d16ea6eb
dLT:Ξ”s < T.+1
709
6d7
70d
K <= s
70d
tS2 :\: tS1 = set0
7106d7
70d
βˆ‡T <= s
717
70d
719
70f
514214312b13a13b13c15615c16518518a18f19419c1ab1ac1bb1d61de1df1e71ef2bc2c12c82d02d82dd2e62fd30230a32e33833935135235335435535a35f36436937137d38238a3b13b23b33b43b53ba3c33cc3d53dd3e93f140b40c40d40e40f41441c42843043843d44245a45b46246345c46448149349b4aa4af4b44bc4c44c94d14e352c5315395826d16ea6eb70e171

~~ (i < Ξ”s) && (i < T.+1) = false
70f
514214312b13a13b13c15615c16518518a18f19419c1ab1ac1bb1d61de1df1e71ef2bc2c12c82d02d82dd2e62fd30230a32e33833935135235335435535a35f36436937137d38238a3b13b23b33b43b53ba3c33cc3d53dd3e93f140b40c40d40e40f41441c42843043843d44245a45b46246345c46448149349b4aa4af4b44bc4c44c94d14e352c5315395826d16ea6eb70e171
H:Ξ”s <= i

(i < T.+1) = false
70f
711
709
6d6
711
K + #|` s2f (n:=n.+1) (tS2 :\: tS1)| <= s
6d6
711
K + #|` sint (Ξ”s) T.+1| <= s
711
s2f (n:=n.+1) (tS2 :\: tS1) = sint (Ξ”s) T.+1
6d7
711
K + (T.+1 - Ξ”s) <= s
737
711
K + T.+1 <= s + Ξ”s
737
711
(K + T).+1 < Ξ”s.+1
737
711
739
6d6
6d8
157
(* This is 3.8 *)
6d8
psi (s2f (n:=n.+1) E) - 2 ^ s.-1 <= `d[u, z0]_rmove
514214312b13a13b13c15615c16518518a18f19419c1ab1ac1bb1d61de1df1e71ef2bc2c12c82d02d82dd2e62fd30230a32e33833935135235335435535a35f36436937137d38238a3b13b23b33b43b53ba3c33cc3d53dd3e93f140b40c40d40e40f41441c42843043843d44245a45b46246345c46448149349b4aa4af4b44bc4c44c94d14e352c5315395826d16d9
duz0_leq2:psi (s2f (n:=n.+1) E) - 2 ^ s.-1 <= `d[u, z0]_rmove
157
752
157
752
K <= 0 -> psi (s2f (n:=n.+1) E) <= `d[u, v]_rmove
514214312b13a13b13c15615c16518518a18f19419c1ab1ac1bb1d61de1df1e71ef2bc2c12c82d02d82dd2e62fd30230a32e33833935135235335435535a35f36436937137d38238a3b13b23b33b43b53ba3c33cc3d53dd3e93f140b40c40d40e40f41441c42843043843d44245a45b46246345c46448149349b4aa4af4b44bc4c44c94d14e352c5315395826d16d9753587
157
514214312b13a13b13c15615c16518518a18f19419c1ab1ac1bb1d61de1df1e71ef2bc2c12c82d02d82dd2e62fd30230a32e33833935135235335435535a35f36436937137d38238a3b13b23b33b43b53ba3c33cc3d53dd3e93f140b40c40d40e40f41441c42843043843d44245a45b46246345c46448149349b4aa4af4b44bc4c44c94d14e352c5315395826d16d9753
KE0:K = 0

157
75b
761
T = N
514214312b13a13b13c15615c16518518a18f19419c1ab1ac1bb1d61de1df1e71ef2bc2c12c82d02d82dd2e62fd30230a32e33833935135235335435535a35f36436937137d38238a3b13b23b33b43b53ba3c33cc3d53dd3e93f140b40c40d40e40f41441c42843043843d44245a45b46246345c46448149349b4aa4af4b44bc4c44c94d14e352c5315395826d16d9753762
TE:T = N
157
75c
761
n <= T
767
761
N \notin E''
767
761
E'' = set0
767
769
157
75b
769
x3 \in rcons (behead (rcons z2b z2p)) z2
514214312b13a13b13c15615c16518518a18f19419c1ab1ac1bb1d61de1df1e71ef2bc2c12c82d02d82dd2e62fd30230a32e33833935135235335435535a35f36436937137d38238a3b13b23b33b43b53ba3c33cc3d53dd3e93f140b40c40d40e40f41441c42843043843d44245a45b46246345c46448149349b4aa4af4b44bc4c44c94d14e352c5315395826d16d975376276a
x3Ircons:x3 \in rcons (behead (rcons z2b z2p)) z2
157
75c
769
x3 \in g -> x3 \in rcons (behead (rcons z2b z2p)) z2
77e
769
[|| x3 \in z0sb, x3 \in rcons (behead (rcons z2b z2p)) z2 | x3 \in z2a] -> x3 \in rcons (behead (rcons z2b z2p)) z2
77e
769
[predC fun c : configuration 4 n.+1 => c N != p0] x3 -> x3 \in rcons (behead (rcons z2b z2p)) z2
514214312b13a13b13c15615c16518518a18f19419c1ab1ac1bb1d61de1df1e71ef2bc2c12c82d02d82dd2e62fd30230a32e33833935135235335435535a35f36436937137d38238a3b13b23b33b43b53ba3c33cc3d53dd3e93f140b40c40d40e40f41441c42843043843d44245a45b46246345c46448149349b4aa4af4b44bc4c44c94d14e352c5315395826d16d975376276a
iIz2:x3 \in z2a
77d
77f75c
790
77d
77e
790
x3 N == np2 -> x3 \in rcons (behead (rcons z2b z2p)) z2
77e
780
157
75b
514214312b13a13b13c15615c16518518a18f19419c1ab1ac1bb1d61de1df1e71ef2bc2c12c82d02d82dd2e62fd30230a32e33833935135235335435535a35f36436937137d38238a3b13b23b33b43b53ba3c33cc3d53dd3e93f140b40c40d40e40f41441c42843043843d44245a45b46246345c46448149349b4aa4af4b44bc4c44c94d14e352c5315395826d16d975376276a781
c:=z2p N:(fun=> ordinal_eqType 4) N

157
75b
79f
x0 = z0
514214312b13a13b13c15615c16518518a18f19419c1ab1ac1bb1d61de1df1e71ef2bc2c12c82d02d82dd2e62fd30230a32e33833935135235335435535a35f36436937137d38238a3b13b23b33b43b53ba3c33cc3d53dd3e93f140b40c40d40e40f41441c42843043843d44245a45b46246345c46448149349b4aa4af4b44bc4c44c94d14e352c5315395826d16d975376276a7817a0
x0Ez0:x0 = z0
157
75c
514214312b13a13b13c15615c16518518a18f19419c1ab1ac1bb1d61de1df1e71ef2bc2c12c82d02d82dd2e62fd30230a32e33833935135235335435a35f36436937137d38238a3b13b23b33b43b53ba3c33cc3d53dd3e93f140b40c40d40e40f41441c42843043843d44245a45b46246345c46448149349b4aa4af4b44bc4c44c94d14e352c5315395826d16d975376276a7817a0

[/\ z0sb = x0sb, z0s = x0s & z0sa = x0sa] -> x0 = z0
514214312b13a13b13c15615c16518518a18f19419c1ab1ac1bb1d61de1df1e71ef2bc2c12c82d02d82dd2e62fd30230a32e33833935135235335435a35f36436937137d38238a3b13b23b33b43b53ba3c33cc3d53dd3e93f140b40c40d40e40f41441c42843043843d44245a45b46246345c46448149349b4aa4af4b44bc4c44c94d14e352c5315395826d16d975376276a7817a0
l5:seq (finfun_eqType (ordinal_finType n.+1) (ordinal_eqType 4))
x0sbE:x0sb = z0sb ++ z0s :: l5
7a4
514214312b13a13b13c15615c16518518a18f19419c1ab1ac1bb1d61de1df1e71ef2bc2c12c82d02d82dd2e62fd30230a32e33833935135235335435a35f36436937137d38238a3b13b23b33b43b53ba3c33cc3d53dd3e93f140b40c40d40e40f41441c42843043843d44245a45b46246345c46448149349b4aa4af4b44bc4c44c94d14e352c5315395826d16d975376276a7817a07b1
z0sbE:z0sb = x0sb ++ x0s :: l5
7a4
7a675c
7aa
7b0
7a4
7b37a675c
7b8
7b0
[predC fun c : configuration 4 n.+1 => c T != p0] z0s -> x0 = z0
7ba
7b4
7a4
7a5
7b4
[predC fun c : configuration 4 n.+1 => c N != p0] x0s -> x0 = z0
7a5
7a7
157
75b
514214312b13a13b13c15615c16518518a18f19419c1ab1ac1bb1d61de1df1e71ef2bc2c12c82d02d82dd2e62fd30230a32e33833935135235335435535a35f36436937137d38238a3b13b23b33b43b53ba3c33cc3d53dd3e93f140b40c40d40e40f41441c42843043843d44245a45b46246345c46448149349b4aa4af4b44bc4c44c94d14e352c5315395826d16d975376276a7817a07a8616617618
p1Dp0:p1 != p0
Hz:forall p : peg 4, [\/ p = p0, p = np2, p = np3 | p = p1]

157
75b
514214312b13a13b13c15615c16518518a18f19419c1ab1ac1bb1d61de1df1e71ef2bc2c12c82d02d82dd2e62fd30230a32e33833935135235335435535a35f36436937137d38238a3b13b23b33b43b53ba3c33cc3d53dd3e93f140b40c40d40e40f41441c42843043843d44245a45b46246345c46448149349b4aa4af4b44bc4c44c94d14e352c5315395826d16d975376276a7817a07a86166176187ce7cf
cDnp2:c != np2

157
75b
514214312b13a13b13c15615c16518518a18f19419c1ab1ac1bb1d61de1df1e71ef2bc2c12c82d02d82dd2e62fd30230a32e33833935135235335435535a35f36436937137d38238a3b13b23b33b43b53ba3c33cc3d53dd3e93f140b40c40d40e40f41441c42843043843d44245a45b46246345c46448149349b4aa4af4b44bc4c44c94d14e352c5315395826d16d975376276a7817a07a86166176187ce7cf7d44ec4ed
H2:pp3 != np2
H3:pp3 != c
H4:pp2 != np2
H5:pp2 != c
H6:forall p : peg 4, [\/ p = c, p = np2, p = pp2 | p = pp3]

157
75b
514214312b13a13b13c15615c16518518a18f19419c1ab1ac1bb1d61de1df1e71ef2bc2c12c82d02d82dd2e62fd30230a32e33833935135235335435535a35f36436937137d38238a3b13b23b33b43b53ba3c33cc3d53dd3e93f140b40c40d40e40f41441c42843043843d44245a45b46246345c46448149349b4aa4af4b44bc4c44c94d14e352c5315395826d16d975376276a7817a07a86166176187ce7cf7d44ec4ed7d97da7db7dc7dd
a:=if (pp2 \in [:: p0; np3]) && (pp3 \in [:: p0; p1]) then pp2 else pp3:peg 4

157
75b
514214312b13a13b13c15615c16518518a18f19419c1ab1ac1bb1d61de1df1e71ef2bc2c12c82d02d82dd2e62fd30230a32e33833935135235335435535a35f36436937137d38238a3b13b23b33b43b53ba3c33cc3d53dd3e93f140b40c40d40e40f41441c42843043843d44245a45b46246345c46448149349b4aa4af4b44bc4c44c94d14e352c5315395826d16d975376276a7817a07a86166176187ce7cf7d44ec4ed7d97da7db7dc7dd7e2
b:=if (pp2 \in [:: p0; np3]) && (pp3 \in [:: p0; p1]) then pp3 else pp2:peg 4

157
75b
7e6
[/\ a != c, a != np2, a != b, b != c & b != np2]
514214312b13a13b13c15615c16518518a18f19419c1ab1ac1bb1d61de1df1e71ef2bc2c12c82d02d82dd2e62fd30230a32e33833935135235335435535a35f36436937137d38238a3b13b23b33b43b53ba3c33cc3d53dd3e93f140b40c40d40e40f41441c42843043843d44245a45b46246345c46448149349b4aa4af4b44bc4c44c94d14e352c5315395826d16d975376276a7817a07a86166176187ce7cf7d44ec4ed7d97da7db7dc7dd7e27e7
aDc:a != c
aD2:a != np2
aDb:a != b
bDc:b != c
bDnp2:b != np2
157
75c
7ee
157
75b
7ee
(a \in [:: p0; np3]) && (b \in [:: p0; p1])
514214312b13a13b13c15615c16518518a18f19419c1ab1ac1bb1d61de1df1e71ef2bc2c12c82d02d82dd2e62fd30230a32e33833935135235335435535a35f36436937137d38238a3b13b23b33b43b53ba3c33cc3d53dd3e93f140b40c40d40e40f41441c42843043843d44245a45b46246345c46448149349b4aa4af4b44bc4c44c94d14e352c5315395826d16d975376276a7817a07a86166176187ce7cf7d44ec4ed7d97da7db7dc7dd7e27e77ef7f07f17f27f3
aI:a \in [:: p0; np3]
bI:b \in [:: p0; p1]
157
75c
7fd
157
75b
514214312b13a13b13c15615c16518518a18f19419c1ab1ac1bb1d61de1df1e71ef2bc2c12c82d02d82dd2e62fd30230a32e33833935135235335435535a35f36436937137d38238a3b13b23b33b43b53ba3c33cc3d53dd3e93f140b40c40d40e40f41441c42843043843d44245a45b46246345c46448149349b4aa4af4b44bc4c44c94d14e352c5315395826d16d975376276a7817a07a86166176187ce7cf7d44ec4ed7d97da7db7dc7dd7e27e77ef7f07f17f27f37fe7ff
p:peg 4

[\/ p = np2, p = c, p = a | p = b]
514214312b13a13b13c15615c16518518a18f19419c1ab1ac1bb1d61de1df1e71ef2bc2c12c82d02d82dd2e62fd30230a32e33833935135235335435535a35f36436937137d38238a3b13b23b33b43b53ba3c33cc3d53dd3e93f140b40c40d40e40f41441c42843043843d44245a45b46246345c46448149349b4aa4af4b44bc4c44c94d14e352c5315395826d16d975376276a7817a07a86166176187ce7cf7d44ec4ed7d97da7db7dc7dd7e27e77ef7f07f17f27f37fe7ff
Hz1:forall p : peg 4, [\/ p = np2, p = c, p = a | p = b]
157
75c
80b
157
75b
514214312b13a13b13c15615c16518518a18f19419c1ab1ac1bb1d61de1df1e71ef2bc2c12c82d02d82dd2e62fd30230a32e33833935135235335435535a35f36436937137d38238a3b13b23b33b43b53ba3c33cc3d53dd3e93f140b40c40d40e40f41441c42843043843d44245a45b46246345c46448149349b4aa4af4b44bc4c44c94d14e352c5315395826d16d975376276a7817a07a86166176187ce7cf7d44ec4ed7d97da7db7dc7dd7e27e77ef7f07f17f27f37fe7ff80c
A:=[set i | ↓[z2] i == a]:{set ordinal_finType n}

157
75b
514214312b13a13b13c15615c16518518a18f19419c1ab1ac1bb1d61de1df1e71ef2bc2c12c82d02d82dd2e62fd30230a32e33833935135235335435535a35f36436937137d38238a3b13b23b33b43b53ba3c33cc3d53dd3e93f140b40c40d40e40f41441c42843043843d44245a45b46246345c46448149349b4aa4af4b44bc4c44c94d14e352c5315395826d16d975376276a7817a07a86166176187ce7cf7d44ec4ed7d97da7db7dc7dd7e27e77ef7f07f17f27f37fe7ff80c814
B:=[set i | ↓[z2] i == b]:{set ordinal_finType n}

157
75b
514214312b13a13b13c15615c16518518a18f19419c1ab1ac1bb1d61de1df1e71ef2bc2c12c82d02d82dd2e62fd30230a32e33833935135235335435535a35f36436937137d38238a3b13b23b33b43b53ba3c33cc3d53dd3e93f140b40c40d40e40f41441c42843043843d44245a45b46246345c46448149349b4aa4af4b44bc4c44c94d14e352c5315395826d16d975376276a7817a07a86166176187ce7cf7d44ec4ed7d97da7db7dc7dd7e27e77ef7f07f17f27f37fe7ff80c814819
i:ordinal_finType n

↓[z2] i != np2
514214312b13a13b13c15615c16518518a18f19419c1ab1ac1bb1d61de1df1e71ef2bc2c12c82d02d82dd2e62fd30230a32e33833935135235335435535a35f36436937137d38238a3b13b23b33b43b53ba3c33cc3d53dd3e93f140b40c40d40e40f41441c42843043843d44245a45b46246345c46448149349b4aa4af4b44bc4c44c94d14e352c5315395826d16d975376276a7817a07a86166176187ce7cf7d44ec4ed7d97da7db7dc7dd7e27e77ef7f07f17f27f37fe7ff80c814819
z2iD2:forall i : ordinal_finType n, ↓[z2] i != np2
157
75c
81d
z2 (trshift 1 i) != z2 N
820
822
157
75b
514214312b13a13b13c15615c16518518a18f19419c1ab1ac1bb1d61de1df1e71ef2bc2c12c82d02d82dd2e62fd30230a32e33833935135235335435535a35f36436937137d38238a3b13b23b33b43b53ba3c33cc3d53dd3e93f140b40c40d40e40f41441c42843043843d44245a45b46246345c46448149349b4aa4af4b44bc4c44c94d14e352c5315395826d16d975376276a7817a07a86166176187ce7cf7d44ec4ed7d97da7db7dc7dd7e27e77ef7f07f17f27f37fe7ff80c81481982381e

↓[z2] i != c
514214312b13a13b13c15615c16518518a18f19419c1ab1ac1bb1d61de1df1e71ef2bc2c12c82d02d82dd2e62fd30230a32e33833935135235335435535a35f36436937137d38238a3b13b23b33b43b53ba3c33cc3d53dd3e93f140b40c40d40e40f41441c42843043843d44245a45b46246345c46448149349b4aa4af4b44bc4c44c94d14e352c5315395826d16d975376276a7817a07a86166176187ce7cf7d44ec4ed7d97da7db7dc7dd7e27e77ef7f07f17f27f37fe7ff80c814819823
z2iDc:forall i : ordinal_finType n, ↓[z2] i != c
157
75c
82e
z2 (trshift 1 i) != z2p N
830
832
157
75b
832
A :|: B = [set: ordinal_finType n]
514214312b13a13b13c15615c16518518a18f19419c1ab1ac1bb1d61de1df1e71ef2bc2c12c82d02d82dd2e62fd30230a32e33833935135235335435535a35f36436937137d38238a3b13b23b33b43b53ba3c33cc3d53dd3e93f140b40c40d40e40f41441c42843043843d44245a45b46246345c46448149349b4aa4af4b44bc4c44c94d14e352c5315395826d16d975376276a7817a07a86166176187ce7cf7d44ec4ed7d97da7db7dc7dd7e27e77ef7f07f17f27f37fe7ff80c814819823833
ABE:A :|: B = [set: ordinal_finType n]
157
75c
514214312b13a13b13c15615c16518518a18f19419c1ab1ac1bb1d61de1df1e71ef2bc2c12c82d02d82dd2e62fd30230a32e33833935135235335435535a35f36436937137d38238a3b13b23b33b43b53ba3c33cc3d53dd3e93f140b40c40d40e40f41441c42843043843d44245a45b46246345c46448149349b4aa4af4b44bc4c44c94d14e352c5315395826d16d975376276a7817a07a86166176187ce7cf7d44ec4ed7d97da7db7dc7dd7e27e77ef7f07f17f27f37fe7ff80c81481982383381e

(↓[z2] i == a) || (↓[z2] i == b) = true
83f
841
157
75b
(* This is 3.9 *)
841
2 ^ βˆ‡(T + K + 1) + psi `[n] <= ((psi (s2f (n:=n) A) + psi (s2f (n:=n) B)).+1).*2
514214312b13a13b13c15615c16518518a18f19419c1ab1ac1bb1d61de1df1e71ef2bc2c12c82d02d82dd2e62fd30230a32e33833935135235335435535a35f36436937137d38238a3b13b23b33b43b53ba3c33cc3d53dd3e93f140b40c40d40e40f41441c42843043843d44245a45b46246345c46448149349b4aa4af4b44bc4c44c94d14e352c5315395826d16d975376276a7817a07a86166176187ce7cf7d44ec4ed7d97da7db7dc7dd7e27e77ef7f07f17f27f37fe7ff80c814819823833842
psiAB_le:2 ^ βˆ‡(T + K + 1) + psi `[n] <= ((psi (s2f (n:=n) A) + psi (s2f (n:=n) B)).+1).*2
157
75c
841
(2 ^ βˆ‡(T + K + 1) + psi `[n]).*2 + 1 <= ((psi (s2f (n:=n) A) + psi (s2f (n:=n) B)).*2).*2 + 5
84f
841
Ο•(#|` s2f (n:=n) A `|` s2f (n:=n) B|.+3) <= ((psi (s2f (n:=n) A) + psi (s2f (n:=n) B)).*2).*2 + 5 -> (2 ^ βˆ‡(T + K + 1) + psi `[n]).*2 + 1 <= ((psi (s2f (n:=n) A) + psi (s2f (n:=n) B)).*2).*2 + 5
84f
841
(2 ^ βˆ‡(T + K + 1) + psi `[n]).*2 + 1 <= Ο•(n.+3)
84f
841
2 ^ βˆ‡(T + K + 1) + psi `[n] <= psi `[n] + 2 ^ (βˆ‡n.+1).-1 + 2 ^ (βˆ‡n.+2).-1
84f
841
2 ^ βˆ‡(T + K + 1) <= 2 ^ (βˆ‡n.+1).-1 + 2 ^ (βˆ‡n.+2).-1
84f
841
2 ^ (βˆ‡N.+1).+1 <= 2 ^ (βˆ‡n.+1).-1.+1 + 2 ^ (βˆ‡n.+2).-1.+1
84f
841
2 ^ βˆ‡N.+1 <= 2 ^ βˆ‡n.+2
84f
851
157
75b
514214312b13a13b13c15615c16518518a18f19419c1ab1ac1bb1d61de1df1e71ef2bc2c12c82d02d82dd2e62fd30230a32e33833935135235335435535a35f36436937137d38238a3b13b23b33b43b53ba3c33cc3d53dd3e93f140b40c40d40e40f41441c42843043843d44245a45b46246345c46448149349b4aa4af4b44bc4c44c94d14e352c5315395826d16d975376276a7817a07a86166176187ce7cf7d44ec4ed7d97da7db7dc7dd7e27e77ef7f07f17f27f37fe7ff80c814819823833842852
xa:=if a == p0 then x0 else x3:configuration 4 n.+1

157
75b
875
xa \in z0 :: rcons (behead (rcons z2b z2p)) z2
514214312b13a13b13c15615c16518518a18f19419c1ab1ac1bb1d61de1df1e71ef2bc2c12c82d02d82dd2e62fd30230a32e33833935135235335435535a35f36436937137d38238a3b13b23b33b43b53ba3c33cc3d53dd3e93f140b40c40d40e40f41441c42843043843d44245a45b46246345c46448149349b4aa4af4b44bc4c44c94d14e352c5315395826d16d975376276a7817a07a86166176187ce7cf7d44ec4ed7d97da7db7dc7dd7e27e77ef7f07f17f27f37fe7ff80c814819823833842852876
xaIrcons:xa \in z0 :: rcons (behead (rcons z2b z2p)) z2
157
75c
87d
157
75b
514214312b13a13b13c15615c16518518a18f19419c1ab1ac1bb1d61de1df1e71ef2bc2c12c82d02d82dd2e62fd30230a32e33833935135235335435535a35f36436937137d38238a3b13b23b33b43b53ba3c33cc3d53dd3e93f140b40c40d40e40f41441c42843043843d44245a45b46246345c46448149349b4aa4af4b44bc4c44c94d14e352c5315395826d16d975376276a7817a07a86166176187ce7cf7d44ec4ed7d97da7db7dc7dd7e27e77ef7f07f17f27f37fe7ff80c81481982383384285287687e
p1a:=if a == p0 then p0 else np3:peg 4

157
75b
514214312b13a13b13c15615c16518518a18f19419c1ab1ac1bb1d61de1df1e71ef2bc2c12c82d02d82dd2e62fd30230a32e33833935135235335435535a35f36436937137d38238a3b13b23b33b43b53ba3c33cc3d53dd3e93f140b40c40d40e40f41441c42843043843d44245a45b46246345c46448149349b4aa4af4b44bc4c44c94d14e352c5315395826d16d975376276a7817a07a86166176187ce7cf7d44ec4ed7d97da7db7dc7dd7e27e77ef7f07f17f27f37fe7ff80c81481982383384285287687e886
p2a:=if a == p0 then x0s N else x3p N:ordinal_finType 4

157
75b
88a
p1a != p2a
514214312b13a13b13c15615c16518518a18f19419c1ab1ac1bb1d61de1df1e71ef2bc2c12c82d02d82dd2e62fd30230a32e33833935135235335435535a35f36436937137d38238a3b13b23b33b43b53ba3c33cc3d53dd3e93f140b40c40d40e40f41441c42843043843d44245a45b46246345c46448149349b4aa4af4b44bc4c44c94d14e352c5315395826d16d975376276a7817a07a86166176187ce7cf7d44ec4ed7d97da7db7dc7dd7e27e77ef7f07f17f27f37fe7ff80c81481982383384285287687e88688b
p1aDp2a:p1a != p2a
157
75c
892
157
75b
514214312b13a13b13c15615c16518518a18f19419c1ab1ac1bb1d61de1df1e71ef2bc2c12c82d02d82dd2e62fd30230a32e33833935135235335435535a35f36436937137d38238a3b13b23b33b43b53ba3c33cc3d53dd3e93f140b40c40d40e40f41441c42843043843d44245a45b46246345c46448149349b4aa4af4b44bc4c44c94d14e352c5315395826d16d975376276a7817a07a86166176187ce7cf7d44ec4ed7d97da7db7dc7dd7e27e77ef7f07f17f27f37fe7ff80c81481982383384285287687e88688b893
p3a, p4a:peg 4
p4aDp3a:p4a != p3a
p4aDp2a:p4a != p2a
p4aDp1a:p4a != p1a
p3aDp2a:p3a != p2a
p3aDp1a:p3a != p1a
p1aH:forall p : peg 4, [\/ p = p1a, p = p2a, p = p3a | p = p4a]

157
75b
89a
codom ↓[xa] \subset [:: p3a; p4a]
514214312b13a13b13c15615c16518518a18f19419c1ab1ac1bb1d61de1df1e71ef2bc2c12c82d02d82dd2e62fd30230a32e33833935135235335435535a35f36436937137d38238a3b13b23b33b43b53ba3c33cc3d53dd3e93f140b40c40d40e40f41441c42843043843d44245a45b46246345c46448149349b4aa4af4b44bc4c44c94d14e352c5315395826d16d975376276a7817a07a86166176187ce7cf7d44ec4ed7d97da7db7dc7dd7e27e77ef7f07f17f27f37fe7ff80c81481982383384285287687e88688b89389b89c89d89e89f8a08a1
acodom:codom ↓[xa] \subset [:: p3a; p4a]
157
75c
514214312b13a13b13c15615c16518518a18f19419c1ab1ac1bb1d61de1df1e71ef2bc2c12c82d02d82dd2e62fd30230a32e33833935135235335435535a35f36436937137d38238a3b13b23b33b43b53ba3c33cc3d53dd3e93f140b40c40d40e40f41441c42843043843d44245a45b46246345c46448149349b4aa4af4b44bc4c44c94d14e352c5315395826d16d975376276a7817a07a86166176187ce7cf7d44ec4ed7d97da7db7dc7dd7e27e77ef7f07f17f27f37fe7ff80c81481982383384285287687e88688b89389b89c89d89e89f8a08a11c04ff

(↓[xa] j == p3a) || (↓[xa] j == p4a)
8a6
514214312b13a13b13c15615c16518518a18f19419c1ab1ac1bb1d61de1df1e71ef2bc2c12c82d02d82dd2e62fd30230a32e33833935135235335435535a35f36436937137d38238a3b13b23b33b43b53ba3c33cc3d53dd3e93f140b40c40d40e40f41441c42843043843d44245a45b46246345c46448149349b4aa4af4b44bc4c44c94d14e352c5315395826d16d975376276a7817a07a86166176187ce7cf7d44ec4ed7d97da7db7dc7dd7e27e77ef7f07f17f27f37fe7ff80c81481982383384285287687e88688b89389b89c89d89e89f8a08a11c04ff
H:↓[xa] j == p1a

8ae
514214312b13a13b13c15615c16518518a18f19419c1ab1ac1bb1d61de1df1e71ef2bc2c12c82d02d82dd2e62fd30230a32e33833935135235335435535a35f36436937137d38238a3b13b23b33b43b53ba3c33cc3d53dd3e93f140b40c40d40e40f41441c42843043843d44245a45b46246345c46448149349b4aa4af4b44bc4c44c94d14e352c5315395826d16d975376276a7817a07a86166176187ce7cf7d44ec4ed7d97da7db7dc7dd7e27e77ef7f07f17f27f37fe7ff80c81481982383384285287687e88688b89389b89c89d89e89f8a08a11c04ff
H:↓[xa] j == p2a
8ae
8a775c
8ad
↓[xa] j != p1a
8b4
8ad
x0 (trshift 1 j) != x0 T
8ad
x3 (trshift 1 j) != (x3, x3b, x3a).1.1 T
8b58a775c
8ad
8c2
8b4
8ad
trshift 1 j < T
8b4
8b6
8ae
8a6
8ad
↓[xa] j != p2a
8a6
8ad
x0 (trshift 1 j) != x0s T
8ad
x3 (trshift 1 j) != x3p T
8a775c
8ad
8d7
8a6
8ad
trshift 1 j <= T
8a6
8a8
157
75b
8a8
psi (s2f (n:=n) A) <= `d[↓[xa], ↓[z2]]_rmove
514214312b13a13b13c15615c16518518a18f19419c1ab1ac1bb1d61de1df1e71ef2bc2c12c82d02d82dd2e62fd30230a32e33833935135235335435535a35f36436937137d38238a3b13b23b33b43b53ba3c33cc3d53dd3e93f140b40c40d40e40f41441c42843043843d44245a45b46246345c46448149349b4aa4af4b44bc4c44c94d14e352c5315395826d16d975376276a7817a07a86166176187ce7cf7d44ec4ed7d97da7db7dc7dd7e27e77ef7f07f17f27f37fe7ff80c81481982383384285287687e88688b89389b89c89d89e89f8a08a18a9
psiA_le:psi (s2f (n:=n) A) <= `d[↓[xa], ↓[z2]]_rmove
157
75c
8a8
psi (s2f (n:=n) A) <= `d[↓[z2], ↓[xa]]_rmove
8e6
514312b13a13b13c15615c16518518a18f19419c1ab1ac1bb1d61de1df1e71ef2bc2c12c82d02d82dd2e62fd30230a32e33833935135235335435535a35f36436937137d38238a3b13b23b33b43b53ba3c33cc3d53dd3e93f140b40c40d40e40f41441c42843043843d44245a45b46246345c46448149349b4aa4af4b44bc4c44c94d14e352c5315395826d16d975376276a7817a07a86166176187ce7cf7d44ec4ed7d97da7db7dc7dd7e27e77ef7f07f17f27f37fe7ff80c81481982383384285287687e88688b89389b89c89d89e89f8a08a1

[/\ p4a != p3a, p4a != a & p3a != a]
8e6
8f1
p4a != a
8f1
p3a != a
8e775c
514312b13a13b13c15615c16518518a18f19419c1ab1ac1bb1d61de1df1e71ef2bc2c12c82d02d82dd2e62fd30230a32e33833935135235335435535a35f36436937137d38238a3b13b23b33b43b53ba3c33cc3d53dd3e93f140b40c40d40e40f41441c42843043843d44245a45b46246345c46448149349b4aa4af4b44bc4c44c94d14e352c5315395826d16d975376276a7817a07a86166176187ce7cf7d44ec4ed7d97da7db7dc7dd7e27e77ef7f07f17f27f37ff80c81481982383384285287687e88688b89389b89c89f8a08a1

(a == p0) || (a == np3) -> p4a != (if a == p0 then p0 else np3) -> p4a != (if a == p0 then x0s N else x3p N) -> p4a != a
8f7
8f1
8f9
8e6
514312b13a13b13c15615c16518518a18f19419c1ab1ac1bb1d61de1df1e71ef2bc2c12c82d02d82dd2e62fd30230a32e33833935135235335435535a35f36436937137d38238a3b13b23b33b43b53ba3c33cc3d53dd3e93f140b40c40d40e40f41441c42843043843d44245a45b46246345c46448149349b4aa4af4b44bc4c44c94d14e352c5315395826d16d975376276a7817a07a86166176187ce7cf7d44ec4ed7d97da7db7dc7dd7e27e77ef7f07f17f27f37ff80c81481982383384285287687e88688b89389b89c89d89e8a1

(a == p0) || (a == np3) -> p3a != (if a == p0 then p0 else np3) -> p3a != (if a == p0 then x0s N else x3p N) -> p3a != a
8e6
8e8
157
75b
8e8
codom ↓[v] \subset [:: np2; np3]
514214312b13a13b13c15615c16518518a18f19419c1ab1ac1bb1d61de1df1e71ef2bc2c12c82d02d82dd2e62fd30230a32e33833935135235335435535a35f36436937137d38238a3b13b23b33b43b53ba3c33cc3d53dd3e93f140b40c40d40e40f41441c42843043843d44245a45b46246345c46448149349b4aa4af4b44bc4c44c94d14e352c5315395826d16d975376276a7817a07a86166176187ce7cf7d44ec4ed7d97da7db7dc7dd7e27e77ef7f07f17f27f37fe7ff80c81481982383384285287687e88688b89389b89c89d89e89f8a08a18a98e9
bcodom:codom ↓[v] \subset [:: np2; np3]
157
75c
514214312b13a13b13c15615c16518518a18f19419c1ab1ac1bb1d61de1df1e71ef2bc2c12c82d02d82dd2e62fd30230a32e33833935135235335435535a35f36436937137d38238a3b13b23b33b43b53ba3c33cc3d53dd3e93f140b40c40d40e40f41441c42843043843d44245a45b46246345c46448149349b4aa4af4b44bc4c44c94d14e352c5315395826d16d975376276a7817a07a86166176187ce7cf7d44ec4ed7d97da7db7dc7dd7e27e77ef7f07f17f27f37fe7ff80c81481982383384285287687e88688b89389b89c89d89e89f8a08a18a98e91c04ff

(↓[v] j == np2) || (↓[v] j == np3)
90e
915
(v (trshift 1 j) == np2) || (v (trshift 1 j) == np3)
90e
915
(v (trshift 1 j) \in codom v -> v (trshift 1 j) \in [:: np2; np3]) -> (v (trshift 1 j) == np2) || (v (trshift 1 j) == np3)
90e
910
157
75b
910
5bb
75b
910
psi (s2f (n:=n) B) <= `d[↓[z2], ↓[v]]_rmove
514214312b13a13b13c15615c16518518a18f19419c1ab1ac1bb1d61de1df1e71ef2bc2c12c82d02d82dd2e62fd30230a32e33833935135235335435535a35f36436937137d38238a3b13b23b33b43b53ba3c33cc3d53dd3e93f140b40c40d40e40f41441c42843043843d44245a45b46246345c46448149349b4aa4af4b44bc4c44c94d14e352c5315395826d16d975376276a7817a07a86166176187ce7cf7d44ec4ed7d97da7db7dc7dd7e27e77ef7f07f17f27f37fe7ff80c81481982383384285287687e88688b89389b89c89d89e89f8a08a18a98e9911
psiB_le:psi (s2f (n:=n) B) <= `d[↓[z2], ↓[v]]_rmove
5bb
75c
514312b13a13b13c15615c16518518a18f19419c1ab1ac1bb1d61de1df1e71ef2bc2c12c82d02d82dd2e62fd30230a32e33833935135235335435535a35f36436937137d38238a3b13b23b33b43b53ba3c33cc3d53dd3e93f140b40c40d40e40f41441c42843043843d44245a45b46246345c46448149349b4aa4af4b44bc4c44c94d14e352c5315395826d16d975376276a7817a07a86166176187ce7cf7d44ec4ed7d97da7db7dc7dd7e27e77ef7f07f17f27f37fe7ff80c81481982383384285287687e88688b89389b89c89d89e89f8a08a18a98e9

[/\ np3 != np2, np3 != b & np2 != b]
929
930
np3 != b
930
np2 != b
92a75c
930
938
929
92b
5bb
75b
92b
(psi (s2f (n:=n) A)).+1 < `d[z0, z2]_rmove
514214312b13a13b13c15615c16518518a18f19419c1ab1ac1bb1d61de1df1e71ef2bc2c12c82d02d82dd2e62fd30230a32e33833935135235335435535a35f36436937137d38238a3b13b23b33b43b53ba3c33cc3d53dd3e93f140b40c40d40e40f41441c42843043843d44245a45b46246345c46448149349b4aa4af4b44bc4c44c94d14e352c5315395826d16d975376276a7817a07a86166176187ce7cf7d44ec4ed7d97da7db7dc7dd7e27e77ef7f07f17f27f37fe7ff80c81481982383384285287687e88688b89389b89c89d89e89f8a08a18a98e991192c
dz0z2_leq:(psi (s2f (n:=n) A)).+1 < `d[z0, z2]_rmove
5bb
75c
92b
(psi (s2f (n:=n) A)).+1 < size (rcons (behead (rcons z2b z2p)) z2)
943
92b
irreflexive (T:=peg 4) (rrel (n:=4))
92b
(psi (s2f (n:=n) A)).+1 < size `dup[ clshift (q:=4) (m:=1) (n:=n) z0, [seq clshift (q:=4) (m:=1) (n:=n) i | i <- rcons (behead (rcons z2b z2p)) z2]] + size `dup[ crshift (q:=4) (m:=1) (n:=n) z0, [seq crshift (q:=4) (m:=1) (n:=n) i | i <- rcons (behead (rcons z2b z2p)) z2]]
94475c
92b
951
943
92b
1 < size `dup[ clshift (q:=4) (m:=1) (n:=n) z0, [seq clshift (q:=4) (m:=1) (n:=n) i | i <- rcons (behead (rcons z2b z2p)) z2]]
92b
psi (s2f (n:=n) A) <= size `dup[ crshift (q:=4) (m:=1) (n:=n) z0, [seq crshift (q:=4) (m:=1) (n:=n) i | i <- rcons (behead (rcons z2b z2p)) z2]]
94475c
514214312b13a13b13c15615c16518518a18f19419c1ab1ac1bb1d61de1df1e71ef2bc2c12c82d02d82dd2e62fd30230a32e33833935135235335435535a35f36436937137d38238a3b13b23b33b43b53ba3c33cc3d53dd3e93f140b40c40d40e40f41441c42843043843d44245a45b46246345c46448149349b4aa4af4b44bc4c44c94d14e352c5315395826d16d975376276a7817a07a86166176187ce7cf7d44ec4ed7d97da7db7dc7dd7e27e77ef7f07f17f27f37fe7ff80c81481982383384285287687e88688b89389b89c89d89e89f8a08a18a98e991192c
sx3:=clshift (q:=4) (m:=1) (n:=n) x3:configuration 4 1
sz2:=clshift (q:=4) (m:=1) (n:=n) z2:configuration 4 1

958
959
95f
#|[set i in [:: sx3; sz2]]| = 2
514214312b13a13b13c15615c16518518a18f19419c1ab1ac1bb1d61de1df1e71ef2bc2c12c82d02d82dd2e62fd30230a32e33833935135235335435535a35f36436937137d38238a3b13b23b33b43b53ba3c33cc3d53dd3e93f140b40c40d40e40f41441c42843043843d44245a45b46246345c46448149349b4aa4af4b44bc4c44c94d14e352c5315395826d16d975376276a7817a07a86166176187ce7cf7d44ec4ed7d97da7db7dc7dd7e27e77ef7f07f17f27f37fe7ff80c81481982383384285287687e88688b89389b89c89d89e89f8a08a18a98e991192c960961
CD:#|[set i in [:: sx3; sz2]]| = 2
958
95a94475c
95f
1 + ((sz2 != sx3) && true + #|[set i in [:: sx3; sz2]] :\ sx3 :\ sz2|) = 2
966
514214312b13a13b13c15615c16518518a18f19419c1ab1ac1bb1d61de1df1e71ef2bc2c12c82d02d82dd2e62fd30230a32e33833935135235335435535a35f36436937137d38238a3b13b23b33b43b53ba3c33cc3d53dd3e93f140b40c40d40e40f41441c42843043843d44245a45b46246345c46448149349b4aa4af4b44bc4c44c94d14e352c5315395826d16d975376276a7817a07a86166176187ce7cf7d44ec4ed7d97da7db7dc7dd7e27e77ef7f07f17f27f37fe7ff80c81481982383384285287687e88688b89389b89c89d89e89f8a08a18a98e991192c960961
sz2Rsx3:sz2 <> sx3

1 + (1 + #|[set i in [:: sx3; sz2]] :\ sx3 :\ sz2|) = 2
514214312b13a13b13c15615c16518518a18f19419c1ab1ac1bb1d61de1df1e71ef2bc2c12c82d02d82dd2e62fd30230a32e33833935135235335435535a35f36436937137d38238a3b13b23b33b43b53ba3c33cc3d53dd3e93f140b40c40d40e40f41441c42843043843d44245a45b46246345c46448149349b4aa4af4b44bc4c44c94d14e352c5315395826d16d975376276a7817a07a86166176187ce7cf7d44ec4ed7d97da7db7dc7dd7e27e77ef7f07f17f27f37fe7ff80c81481982383384285287687e88688b89389b89c89d89e89f8a08a18a98e991192c960961
sz2Rsx3:sz2 = sx3
1 + (0 + #|[set i in [:: sx3; sz2]] :\ sx3 :\ sz2|) = 2
96795a94475c
514214312b13a13b13c15615c16518518a18f19419c1ab1ac1bb1d61de1df1e71ef2bc2c12c82d02d82dd2e62fd30230a32e33833935135235335435535a35f36436937137d38238a3b13b23b33b43b53ba3c33cc3d53dd3e93f140b40c40d40e40f41441c42843043843d44245a45b46246345c46448149349b4aa4af4b44bc4c44c94d14e352c5315395826d16d975376276a7817a07a86166176187ce7cf7d44ec4ed7d97da7db7dc7dd7e27e77ef7f07f17f27f37fe7ff80c81481982383384285287687e88688b89389b89c89d89e89f8a08a18a98e991192c960961972
i:finfun_finType (ordinal_finType 1) (ordinal_finType 4)

[&& i != sz2, i != sx3 & (i == sx3) || (i == sz2)] = false
974
976
978
966
976
sz2 ord0 = sx3 ord0 -> 1 + (0 + #|[set i in [:: sx3; sz2]] :\ sx3 :\ sz2|) = 2
966
976
z2 ord_max = x3 ord_max -> 1 + (0 + #|[set i in [:: sx3; sz2]] :\ sx3 :\ sz2|) = 2
976
tlshift n ord0 = ord_max
96795a94475c
976
z2 ord_max == x3 ord_max -> 1 + (0 + #|[set i in [:: sx3; sz2]] :\ sx3 :\ sz2|) = 2
98a
976
98c
966
968
958
959
968
#|[set i in [:: sx3; sz2]]| <= size `dup[ clshift (q:=4) (m:=1) (n:=n) z0, [seq clshift (q:=4) (m:=1) (n:=n) i | i <- rcons (behead (rcons z2b z2p)) z2]]
959
968
{subset [set i in [:: sx3; sz2]] <= [seq clshift (q:=4) (m:=1) (n:=n) i | i <- rcons (behead (rcons z2b z2p)) z2]}
968
clshift (q:=4) (m:=1) (n:=n) z0 \notin [set i in [:: sx3; sz2]]
95a94475c
514214312b13a13b13c15615c16518518a18f19419c1ab1ac1bb1d61de1df1e71ef2bc2c12c82d02d82dd2e62fd30230a32e33833935135235335435535a35f36436937137d38238a3b13b23b33b43b53ba3c33cc3d53dd3e93f140b40c40d40e40f41441c42843043843d44245a45b46246345c46448149349b4aa4af4b44bc4c44c94d14e352c5315395826d16d975376276a7817a07a86166176187ce7cf7d44ec4ed7d97da7db7dc7dd7e27e77ef7f07f17f27f37fe7ff80c81481982383384285287687e88688b89389b89c89d89e89f8a08a18a98e991192c96096196997d

z2 \in rcons (behead (rcons z2b z2p)) z2
99f
968
9a1
959
968
clshift (q:=4) (m:=1) (n:=n) z0 <> sx3
968
clshift (q:=4) (m:=1) (n:=n) z0 <> sz2
95a94475c
968
clshift (q:=4) (m:=1) (n:=n) z0 ord_max == sx3 ord_max -> False
9ae
968
z0 ord_max == x3 ord_max -> False
968
tlshift n ord_max = ord_max
9af95a94475c
968
9bb
9ae
968
9b0
959
968
clshift (q:=4) (m:=1) (n:=n) z0 ord_max == sz2 ord_max -> False
959
968
z0 ord_max == z2 ord_max -> False
9ba95a94475c
9be959
92b
95b
943
514214312b13a13b13c15615c16518518a18f19419c1ab1ac1bb1d61de1df1e71ef2bc2c12c82d02d82dd2e62fd30230a32e33833935135235335435535a35f36436937137d38238a3b13b23b33b43b53ba3c33cc3d53dd3e93f140b40c40d40e40f41441c42843043843d44245a45b46246345c46448149349b4aa4af4b44bc4c44c94d14e352c5315395826d16d975376276a7817a07a86166176187ce7cf7d44ec4ed7d97da7db7dc7dd7e27e77ef7f07f17f27f37fe7ff80c81481982383384285287687e88688b89389b89c89d89e89f8a08a18a991192c

`d[↓[xa], ↓[z2]]_rmove <= size `dup[ crshift (q:=4) (m:=1) (n:=n) z0, [seq crshift (q:=4) (m:=1) (n:=n) i | i <- rcons (behead (rcons z2b z2p)) z2]]
943
9d3
`d[↓[x0], ↓[z2]]_rmove <= size `dup[ crshift (q:=4) (m:=1) (n:=n) z0, [seq crshift (q:=4) (m:=1) (n:=n) i | i <- rcons (behead (rcons z2b z2p)) z2]]
9d3
`d[↓[x3], ↓[z2]]_rmove <= size `dup[ crshift (q:=4) (m:=1) (n:=n) z0, [seq crshift (q:=4) (m:=1) (n:=n) i | i <- rcons (behead (rcons z2b z2p)) z2]]
94475c
9d3
`d[↓[z0], ↓[z2]]_rmove <= size `dup[ crshift (q:=4) (m:=1) (n:=n) z0, [seq crshift (q:=4) (m:=1) (n:=n) i | i <- rcons (behead (rcons z2b z2p)) z2]]
9d9
9d3
path rmove ↓[z0] `dup[ crshift (q:=4) (m:=1) (n:=n) z0, [seq crshift (q:=4) (m:=1) (n:=n) i | i <- rcons (behead (rcons z2b z2p)) z2]]
9d3
last ↓[z0] `dup[ crshift (q:=4) (m:=1) (n:=n) z0, [seq crshift (q:=4) (m:=1) (n:=n) i | i <- rcons (behead (rcons z2b z2p)) z2]] = ↓[z2]
9da94475c
9d3
9e6
9d9
9d3
9db
943
514214312b13a13b13c15615c16518518a18f19419c1ab1ac1bb1d61de1df1e71ef2bc2c12c82d02d82dd2e62fd30230a32e33833935135235335435535a35f36436937137d38238a3b13b23b33b43b53ba3c33cc3d53dd3e93f140b40c40d40e40f41441c42843043843d44245a45b46246345c46448149349b4af4b44bc4c44c94d14e352c5315395826d16d975376276a7817a07a86166176187ce7cf7d44ec4ed7d97da7db7dc7dd7e27e77ef7f07f17f27f37fe7ff80c81481982383384285287687e88688b89389b89c89d89e89f8a08a18a991192c

gpath rmove z0 z2 (rcons (behead (rcons z2b z2p)) z2) -> `d[↓[x3], ↓[z2]]_rmove <= size `dup[ crshift (q:=4) (m:=1) (n:=n) z0, [seq crshift (q:=4) (m:=1) (n:=n) i | i <- rcons (behead (rcons z2b z2p)) z2]]
943
514214312b13a13b13c15615c16518518a18f19419c1ab1ac1bb1d61de1df1e71ef2bc2c12c82d02d82dd2e62fd30230a32e33833935135235335435535a35f36436937137d38238a3b13b23b33b43b53ba3c33cc3d53dd3e93f140b40c40d40e40f41441c42843043843d44245a45b46246345c46448149349b4af4b44bc4c44c94d14e352c5315395826d16d975376276a7817a07a86166176187ce7cf7d44ec4ed7d97da7db7dc7dd7e27e77ef7f07f17f27f37fe7ff80c81481982383384285287687e88688b89389b89c89d89e89f8a08a18a991192c
l1, l2:seq (finfun_finType (ordinal_finType n.+1) (ordinal_finType 4))
rE:rcons (behead (rcons z2b z2p)) z2 = l1 ++ x3 :: l2

9f1
943
9f5
gpath rmove (last z0 (rcons l1 x3)) z2 l2 -> `d[↓[x3], ↓[z2]]_rmove <= size `dup[ crshift (q:=4) (m:=1) (n:=n) z0, [seq crshift (q:=4) (m:=1) (n:=n) i | i <- rcons l1 x3 ++ l2]]
943
514214312b13a13b13c15615c16518518a18f19419c1ab1ac1bb1d61de1df1e71ef2bc2c12c82d02d82dd2e62fd30230a32e33833935135235335435535a35f36436937137d38238a3b13b23b33b43b53ba3c33cc3d53dd3e93f140b40c40d40e40f41441c42843043843d44245a45b46246345c46448149349b4af4b44bc4c44c94d14e352c5315395826d16d975376276a7817a07a86166176187ce7cf7d44ec4ed7d97da7db7dc7dd7e27e77ef7f07f17f27f37fe7ff80c81481982383384285287687e88688b89389b89c89d89e89f8a08a18a991192c9f69f7
gH3:gpath rmove x3 z2 l2

`d[↓[x3], ↓[z2]]_rmove <= size `dup[ crshift (q:=4) (m:=1) (n:=n) z0, rcons [seq crshift (q:=4) (m:=1) (n:=n) i | i <- l1] (crshift (q:=4) (m:=1) (n:=n) x3)] + size `dup[ crshift (q:=4) (m:=1) (n:=n) x3, [seq crshift (q:=4) (m:=1) (n:=n) i | i <- l2]]
943
9ff
`d[↓[x3], ↓[z2]]_rmove <= size `dup[ crshift (q:=4) (m:=1) (n:=n) x3, [seq crshift (q:=4) (m:=1) (n:=n) i | i <- l2]]
943
9ff
path rmove ↓[x3] `dup[ crshift (q:=4) (m:=1) (n:=n) x3, [seq crshift (q:=4) (m:=1) (n:=n) i | i <- l2]]
9ff
last ↓[x3] `dup[ crshift (q:=4) (m:=1) (n:=n) x3, [seq crshift (q:=4) (m:=1) (n:=n) i | i <- l2]] = ↓[z2]
94475c
9ff
a0c
943
9ff
↓[last x3 l2] = ↓[z2]
943
9ff
last x3 (l1 ++ x3 :: l2) = last x3 l2
943
945
5bb
75b
945
psi (s2f (n:=n.+1) E) <= psi (s2f (n:=n.+1) E) - 2 ^ s.-1 + `d[z0, v]_rmove
75b
945
psi (s2f (n:=n.+1) E) <= psi (s2f (n:=n.+1) E) - 2 ^ s.-1 + `d[z0, z2]_rmove + `d[z2, v]_rmove
75b
945
connect (move (q:=4) (rrel (n:=4))) z2 v
945
psi (s2f (n:=n.+1) E) <= psi (s2f (n:=n.+1) E) - 2 ^ s.-1 + `d[z0, z2]_rmove + `d[↓[z2], ↓[v]]_(move (q:=4) (rrel (n:=4)))
75c
945
a29
75b
945
psi (s2f (n:=n.+1) E) <= psi (s2f (n:=n.+1) E) - 2 ^ s.-1 + (psi (s2f (n:=n) A)).+2 + psi (s2f (n:=n) B)
75b
945
psi (s2f (n:=n.+1) E) - ((psi (s2f (n:=n) A)).+2 + psi (s2f (n:=n) B)) <= psi (s2f (n:=n.+1) E) - 2 ^ s.-1
75b
945
2 ^ s.-1 <= (psi (s2f (n:=n) A)).+2 + psi (s2f (n:=n) B)
75b
945
(2 ^ s.-1).*2 <= ((psi (s2f (n:=n) A) + psi (s2f (n:=n) B)).+1).*2 + 1.*2
75b
945
(2 ^ s.-1).*2 <= 2 ^ βˆ‡(T + K + 1) + psi `[n] + 1.*2
75b
75d
157
514214312b13a13b13c15615c16518518a18f19419c1ab1ac1bb1d61de1df1e71ef2bc2c12c82d02d82dd2e62fd30230a32e33833935135235335435535a35f36436937137d38238a3b13b23b33b43b53ba3c33cc3d53dd3e93f140b40c40d40e40f41441c42843043843d44245a45b46246345c46448149349b4aa4af4b44bc4c44c94d14e352c5315395826d16d975358758c

157
514214312b13a13b13c15615c16518518a18f19419c1ab1ac1bb1d61de1df1e71ef2bc2c12c82d02d82dd2e62fd30230a32e33833935135235335435535a35f36436937137d38238a3b13b23b33b43b53ba3c33cc3d53dd3e93f140b40c40d40e40f41441c42843043843d44245a45b46246345c46448149349b4aa4af4b44bc4c44c94d14e352c5315395826d16d975358758c
NiE'':N \in E''

157
514214312b13a13b13c15615c16518518a18f19419c1ab1ac1bb1d61de1df1e71ef2bc2c12c82d02d82dd2e62fd30230a32e33833935135235335435535a35f36436937137d38238a3b13b23b33b43b53ba3c33cc3d53dd3e93f140b40c40d40e40f41441c42843043843d44245a45b46246345c46448149349b4aa4af4b44bc4c44c94d14e352c5315395826d16d975358758ca4c
c:=z2p N : disk 4:disk 4

157
a50
forall x : peg 4, [/\ x != np3, x != np2 & x != p0] /\ (forall p : peg 4, [\/ p = p0, p = np2, p = np3 | p = x]) -> psi (s2f (n:=n.+1) E) <= `d[u, v]_rmove
514214312b13a13b13c15615c16518518a18f19419c1ab1ac1bb1d61de1df1e71ef2bc2c12c82d02d82dd2e62fd30230a32e33833935135235335435535a35f36436937137d38238a3b13b23b33b43b53ba3c33cc3d53dd3e93f140b40c40d40e40f41441c42843043843d44245a45b46246345c46448149349b4aa4af4b44bc4c44c94d14e352c5315395826d16d975358758ca4ca516166176187ce7cf

157
a59
c \in [:: p0; p1]
514214312b13a13b13c15615c16518518a18f19419c1ab1ac1bb1d61de1df1e71ef2bc2c12c82d02d82dd2e62fd30230a32e33833935135235335435535a35f36436937137d38238a3b13b23b33b43b53ba3c33cc3d53dd3e93f140b40c40d40e40f41441c42843043843d44245a45b46246345c46448149349b4aa4af4b44bc4c44c94d14e352c5315395826d16d975358758ca4ca516166176187ce7cf
cI01:c \in [:: p0; p1]
157
a59
c == np2 -> (c == p0) || (c == p1)
a59
c == np3 -> (c == p0) || (c == p1)
a5f
a59
a68
a5e
a59
z2p N == np3 -> (z2p N == p0) || (z2p N == p1)
a5e
a59
z2p \in u :: g
a5e
a59
62e
a5e
514214312b13a13b13c15615c16518518a18f19419c1ab1ac1bb1d61de1df1e71ef2bc2c12c82d02d82dd2e62fd30230a32e33833935135235335435535a35f36436937137d38238a3b13b23b33b43b53ba3c33cc3d53dd3e93f140b40c40d40e40f41441c42843043843d44245a45b46246345c46448149b4aa4af4b44bc4c44c94d14e352c5315395826d16d975358758ca4ca516166176187ce7cf

z0 \in u :: z0sb ++ rcons (behead (rcons [::] z0)) z2 ++ z2a
514214312b13a13b13c15615c16518518a18f19419c1ab1ac1bb1d61de1df1e71ef2bc2c12c82d02d82dd2e62fd30230a32e33833935135235335435535a35f36436937137d38238a3b13b23b33b43b53ba3c33cc3d53dd3e93f140b40c40d40e40f41441c42843043843d44245a45b46246345c46448149b4aa4af4b44bc4c44c94d14e352c5315395826d16d975358758ca4ca516166176187ce7cf
zz1:finfun_eqType (ordinal_finType n.+1) (ordinal_eqType 4)
ll1:seq (finfun_eqType (ordinal_finType n.+1) (ordinal_eqType 4))
z2p \in u :: z0sb ++ rcons (behead (rcons (zz1 :: ll1) z2p)) z2 ++ z2a
a5f
a7e
a81
a5e
a60
157
514214312b13a13b13c15615c16518518a18f19419c1ab1ac1bb1d61de1df1e71ef2bc2c12c82d02d82dd2e62fd30230a32e33833935135235335435535a35f36436937137d38238a3b13b23b33b43b53ba3c33cc3d53dd3e93f140b40c40d40e40f41441c42843043843d44245a45b46246345c46448149349b4aa4af4b44bc4c44c94d14e352c5315395826d16d975358758ca4ca516166176187ce7cfa61
d:=x3p T : disk 4:disk 4

157
514214312b13a13b13c15615c16518518a18f19419c1ab1ac1bb1d61de1df1e71ef2bc2c12c82d02d82dd2e62fd30230a32e33833935135235335435535a35f36436937137d38238a3b13b23b33b43b53ba3c33cc3d53dd3e93f140b40c40d40e40f41441c42843043843d44245a45b46246345c46448149349b4aa4af4b44bc4c44c94d14e352c5315395826d16d975358758ca4ca516166176187ce7cfa61a8c
dD3:d != np3

157
514214312b13a13b13c15615c16518518a18f19419c1ab1ac1bb1d61de1df1e71ef2bc2c12c82d02d82dd2e62fd30230a32e33833935135235335435535a35f36436937137d38238a3b13b23b33b43b53ba3c33cc3d53dd3e93f140b40c40d40e40f41441c42843043843d44245a45b46246345c46448149349b4aa4af4b44bc4c44c94d14e352c5315395826d16d975358758ca4ca516166176187ce7cfa61a8ca91
a:=(if d == np2 then c else np2) : disk 4:disk 4

157
514214312b13a13b13c15615c16518518a18f19419c1ab1ac1bb1d61de1df1e71ef2bc2c12c82d02d82dd2e62fd30230a32e33833935135235335435535a35f36436937137d38238a3b13b23b33b43b53ba3c33cc3d53dd3e93f140b40c40d40e40f41441c42843043843d44245a45b46246345c46448149349b4aa4af4b44bc4c44c94d14e352c5315395826d16d975358758ca4ca516166176187ce7cfa61a8ca91a96
b:=(if d == np2 then if c == p0 then p1 else p0 else if d == p0 then p1 else p0) : disk 4:disk 4

157
a9a
a \in [:: np2; c]
514214312b13a13b13c15615c16518518a18f19419c1ab1ac1bb1d61de1df1e71ef2bc2c12c82d02d82dd2e62fd30230a32e33833935135235335435535a35f36436937137d38238a3b13b23b33b43b53ba3c33cc3d53dd3e93f140b40c40d40e40f41441c42843043843d44245a45b46246345c46448149349b4aa4af4b44bc4c44c94d14e352c5315395826d16d975358758ca4ca516166176187ce7cfa61a8ca91a96a9b
aI2c:a \in [:: np2; c]
157
aa2
157
aa2
b \in [:: p0; p1]
514214312b13a13b13c15615c16518518a18f19419c1ab1ac1bb1d61de1df1e71ef2bc2c12c82d02d82dd2e62fd30230a32e33833935135235335435535a35f36436937137d38238a3b13b23b33b43b53ba3c33cc3d53dd3e93f140b40c40d40e40f41441c42843043843d44245a45b46246345c46448149349b4aa4af4b44bc4c44c94d14e352c5315395826d16d975358758ca4ca516166176187ce7cfa61a8ca91a96a9baa3
bI01:b \in [:: p0; p1]
157
aad
157
aad
d != a
514214312b13a13b13c15615c16518518a18f19419c1ab1ac1bb1d61de1df1e71ef2bc2c12c82d02d82dd2e62fd30230a32e33833935135235335435535a35f36436937137d38238a3b13b23b33b43b53ba3c33cc3d53dd3e93f140b40c40d40e40f41441c42843043843d44245a45b46246345c46448149349b4aa4af4b44bc4c44c94d14e352c5315395826d16d975358758ca4ca516166176187ce7cfa61a8ca91a96a9baa3aae
dDa:d != a
157
aad
np2 != c
ab6
ab8
157
ab8
d != b
514214312b13a13b13c15615c16518518a18f19419c1ab1ac1bb1d61de1df1e71ef2bc2c12c82d02d82dd2e62fd30230a32e33833935135235335435535a35f36436937137d38238a3b13b23b33b43b53ba3c33cc3d53dd3e93f140b40c40d40e40f41441c42843043843d44245a45b46246345c46448149349b4aa4af4b44bc4c44c94d14e352c5315395826d16d975358758ca4ca516166176187ce7cfa61a8ca91a96a9baa3aaeab9
dDb:d != b
157
ab8
np2 != (if c == p0 then p1 else p0)
ab8
d != (if d == p0 then p1 else p0)
ac6
ab8
acf
ac5
ac7
157
ac7
b != np3
514214312b13a13b13c15615c16518518a18f19419c1ab1ac1bb1d61de1df1e71ef2bc2c12c82d02d82dd2e62fd30230a32e33833935135235335435535a35f36436937137d38238a3b13b23b33b43b53ba3c33cc3d53dd3e93f140b40c40d40e40f41441c42843043843d44245a45b46246345c46448149349b4aa4af4b44bc4c44c94d14e352c5315395826d16d975358758ca4ca516166176187ce7cfa61a8ca91a96a9baa3aaeab9ac8
bD3:b != np3
157
adc
157
adc
b != a
514214312b13a13b13c15615c16518518a18f19419c1ab1ac1bb1d61de1df1e71ef2bc2c12c82d02d82dd2e62fd30230a32e33833935135235335435535a35f36436937137d38238a3b13b23b33b43b53ba3c33cc3d53dd3e93f140b40c40d40e40f41441c42843043843d44245a45b46246345c46448149349b4aa4af4b44bc4c44c94d14e352c5315395826d16d975358758ca4ca516166176187ce7cfa61a8ca91a96a9baa3aaeab9ac8add
bDa:b != a
157
adc
(if d == np2 then p1 else if d == p0 then p1 else p0) != (if d == np2 then p0 else np2)
514214312b13a13b13c15615c16518518a18f19419c1ab1ac1bb1d61de1df1e71ef2bc2c12c82d02d82dd2e62fd30230a32e33833935135235335435535a35f36436937137d38238a3b13b23b33b43b53ba3c33cc3d53dd3e93f140b40c40d40e40f41441c42843043843d44245a45b46246345c46448149349b4aa4af4b44bc4c44c94d14e352c5315395826d16d975358758ca4ca516166176187ce7cfa61a8ca91a96a9baa3aaeab9ac8add
cDp0:c != p0
(if d == np2 then p0 else if d == p0 then p1 else p0) != (if d == np2 then c else np2)
ae6
adc
(if d == p0 then p1 else p0) != np2
aed
aef
af1
ae5
aef
af5
ae5
ae7
157
ae7
a != np3
514214312b13a13b13c15615c16518518a18f19419c1ab1ac1bb1d61de1df1e71ef2bc2c12c82d02d82dd2e62fd30230a32e33833935135235335435535a35f36436937137d38238a3b13b23b33b43b53ba3c33cc3d53dd3e93f140b40c40d40e40f41441c42843043843d44245a45b46246345c46448149349b4aa4af4b44bc4c44c94d14e352c5315395826d16d975358758ca4ca516166176187ce7cfa61a8ca91a96a9baa3aaeab9ac8addae8
aD3:a != np3
157
ae7
c != np3
b03
b05
157
514214312b13a13b13c15615c16518518a18f19419c1ab1ac1bb1d61de1df1e71ef2bc2c12c82d02d82dd2e62fd30230a32e33833935135235335435535a35f36436937137d38238a3b13b23b33b43b53ba3c33cc3d53dd3e93f140b40c40d40e40f41441c42843043843d44245a45b46246345c46448149349b4aa4af4b44bc4c44c94d14e352c5315395826d16d975358758ca4ca516166176187ce7cfa61a8ca91a96a9baa3aaeab9ac8addae8b06
i:disk 4

[\/ i = a, i = b, i = np3 | i = d]
514214312b13a13b13c15615c16518518a18f19419c1ab1ac1bb1d61de1df1e71ef2bc2c12c82d02d82dd2e62fd30230a32e33833935135235335435535a35f36436937137d38238a3b13b23b33b43b53ba3c33cc3d53dd3e93f140b40c40d40e40f41441c42843043843d44245a45b46246345c46448149349b4aa4af4b44bc4c44c94d14e352c5315395826d16d975358758ca4ca516166176187ce7cfa61a8ca91a96a9baa3aaeab9ac8addae8b06
Hza:forall i : disk 4, [\/ i = a, i = b, i = np3 | i = d]
157
b11
[\/ p0 = a, p0 = b, p0 = np3 | p0 = d]
b11
[\/ np2 = a, np2 = b, np2 = np3 | np2 = d]
b11
[\/ np3 = a, np3 = b, np3 = np3 | np3 = d]
b11
[\/ p1 = a, p1 = b, p1 = np3 | p1 = d]
b15
b19
b11
[\/ p0 = p0, p0 = p1, p0 = np3 | p0 = np2]
b11
[\/ p0 = c, p0 = p0, p0 = np3 | p0 = np2]
b11
[\/ p0 = np2, p0 = p1, p0 = np3 | p0 = p0]
b11
[\/ p0 = np2, p0 = p0, p0 = np3 | p0 = d]
b1db1fb21b15
b25
b11
b2a
b2bb2db1db1fb21b15
b31
b11
b2c
b2db1db1fb21b15
b36
b11
b2e
b1c
b11
b1e
b1fb21b15
b3e
b11
[\/ np2 = p0, np2 = p1, np2 = np3 | np2 = np2]
b11
[\/ np2 = c, np2 = p0, np2 = np3 | np2 = np2]
b11
[\/ np2 = np2, np2 = p1, np2 = np3 | np2 = p0]
b11
[\/ np2 = np2, np2 = p0, np2 = np3 | np2 = d]
b1fb21b15
b43
b11
b48
b49b4bb1fb21b15
b4f
b11
b4a
b4bb1fb21b15
b54
b11
b4c
b40
b11
b20
b21b15
b5c
b11
b22
b14
b11
[\/ p1 = p0, p1 = p1, p1 = np3 | p1 = np2]
514214312b13a13b13c15615c16518518a18f19419c1ab1ac1bb1d61de1df1e71ef2bc2c12c82d02d82dd2e62fd30230a32e33833935135235335435535a35f36436937137d38238a3b13b23b33b43b53ba3c33cc3d53dd3e93f140b40c40d40e40f41441c42843043843d44245a45b46246345c46448149349b4aa4af4b44bc4c44c94d14e352c5315395826d16d975358758ca4ca516166176187ce7cfa61a8ca91a96a9baa3aaeab9ac8addae8b06b12
cD0:c != p0
[\/ p1 = c, p1 = p0, p1 = np3 | p1 = np2]
514214312b13a13b13c15615c16518518a18f19419c1ab1ac1bb1d61de1df1e71ef2bc2c12c82d02d82dd2e62fd30230a32e33833935135235335435535a35f36436937137d38238a3b13b23b33b43b53ba3c33cc3d53dd3e93f140b40c40d40e40f41441c42843043843d44245a45b46246345c46448149349b4aa4af4b44bc4c44c94d14e352c5315395826d16d975358758ca4ca516166176187ce7cfa61a8ca91a96a9baa3aaeab9ac8addae8b06b12
dD2:d != np2
[\/ p1 = np2, p1 = p1, p1 = np3 | p1 = p0]
514214312b13a13b13c15615c16518518a18f19419c1ab1ac1bb1d61de1df1e71ef2bc2c12c82d02d82dd2e62fd30230a32e33833935135235335435535a35f36436937137d38238a3b13b23b33b43b53ba3c33cc3d53dd3e93f140b40c40d40e40f41441c42843043843d44245a45b46246345c46448149349b4aa4af4b44bc4c44c94d14e352c5315395826d16d975358758ca4ca516166176187ce7cfa61a8ca91a96a9baa3aaeab9ac8addae8b06b12b6e
cD0:d != p0
[\/ p1 = np2, p1 = p0, p1 = np3 | p1 = d]
b15
b64
b69
b6b
b6cb70b15
b76
514214312b13a13b13c15615c16518518a18f19419c1ab1ac1bb1d61de1df1e71ef2bc2c12c82d02d82dd2e62fd30230a32e33833935135235335435535a35f36436937137d38238a3b13b23b33b43b53ba3c33cc3d53dd3e93f140b40c40d40e40f41441c42843043843d44245a45b46246345c46448149349b4aa4af4b44bc4c44c94d14e352c5315395826d16d975358758ca4ca516166176187ce7cfa8ca91a96a9baa3aaeab9ac8addae8b06b12

p1 != p0 -> [\/ p1 = p1, p1 = p0, p1 = np3 | p1 = np2]
b78
b6d
b6f
b70b15
b80
b71
b73
b14
514214312b13a13b13c15615c16518518a18f19419c1ab1ac1bb1d61de1df1e71ef2bc2c12c82d02d82dd2e62fd30230a32e33833935135235335435535a35f36436937137d38238a3b13b23b33b43b53ba3c33cc3d53dd3e93f140b40c40d40e40f41441c42843043843d44245a45b46246345c46448149349b4aa4af4b44bc4c44c94d14e352c5315395826d16d975358758ca4ca516166176187ce7cfa61a8ca96a9baa3aaeab9ac8addae8b06b12

p1 != np2 -> p1 != p0 -> p1 != np3 -> [\/ p1 = np2, p1 = p0, p1 = np3 | p1 = p1]
b14
b16
157
b16
z0sb ++ rcons (behead (rcons z2b z2p)) z2 ++ z2a = x0sb ++ (x3, x3b, x3a).1.2 ++ (x3, x3b, x3a).1.1 :: (x3, x3b, x3a).2 -> psi (s2f (n:=n.+1) E) <= `d[u, v]_rmove
514214312b13a13b13c15615c16518518a18f19419c1ab1ac1bb1d61de1df1e71ef2bc2c12c82d02d82dd2e62fd30230a32e33833935135235335435535a35f36436937137d38238a3b13b23b33b43b53ba3c33cc3d53dd3e93f140b40c40d40e40f41441c42843043843d44245a45b46246345c46448149349b4aa4af4b44bc4c44c94d14e352c5315395826d16d975358758ca4ca516166176187ce7cfa61a8ca91a96a9baa3aaeab9ac8addae8b06b17
tln:T <= n.+1

b92
514214312b13a13b13c15615c16518518a18f19419c1ab1ac1bb1d61de1df1e71ef2bc2c12c82d02d82dd2e62fd30230a32e33833935135235335435535a35f36436937137d38238a3b13b23b33b43b53ba3c33cc3d53dd3e93f140b40c40d40e40f41441c42843043843d44245a45b46246345c46448149349b4aa4af4b44bc4c44c94d14e352c5315395826d16d975358758ca4ca516166176187ce7cfa61a8ca91a96a9baa3aaeab9ac8addae8b06b17b97
zz:seq (finfun_eqType (ordinal_finType n.+1) (ordinal_eqType 4))
z2aE:z2a = zz ++ (x3, x3b, x3a).1.1 :: (x3, x3b, x3a).2

157
514214312b13a13b13c15615c16518518a18f19419c1ab1ac1bb1d61de1df1e71ef2bc2c12c82d02d82dd2e62fd30230a32e33833935135235335435535a35f36436937137d38238a3b13b23b33b43b53ba3c33cc3d53dd3e93f140b40c40d40e40f41441c42843043843d44245a45b46246345c46448149349b4aa4af4b44bc4c44c94d14e352c5315395826d16d975358758ca4ca516166176187ce7cfa61a8ca91a96a9baa3aaeab9ac8addae8b06b17b97
lE:z0sb ++ behead (rcons z2b z2p) = x0sb ++ (x3, x3b, x3a).1.2
z2Ex3:z2 = (x3, x3b, x3a).1.1
157
514214312b13a13b13c15615c16518518a18f19419c1ab1ac1bb1d61de1df1e71ef2bc2c12c82d02d82dd2e62fd30230a32e33833935135235335435535a35f36436937137d38238a3b13b23b33b43b53ba3c33cc3d53dd3e93f140b40c40d40e40f41441c42843043843d44245a45b46246345c46448149349b4aa4af4b44bc4c44c94d14e352c5315395826d16d975358758ca4ca516166176187ce7cfa61a8ca91a96a9baa3aaeab9ac8addae8b06b17b97b9c
x3aE:(x3, x3b, x3a).2 = zz ++ z2 :: z2a
157
b99
b9b
gpath rmove z2 (last z2 (rcons zz (x3, x3b, x3a).1.1)) (rcons zz (x3, x3b, x3a).1.1) -> psi (s2f (n:=n.+1) E) <= `d[u, v]_rmove
b9e
514214312b13a13b13c15615c16518518a18f19419c1ab1ac1bb1d61de1df1e71ef2bc2c12c82d02d82dd2e62fd30230a32e33833935135235335435535a35f36436937137d38238a3b13b23b33b43b53ba3c33cc3d53dd3e93f140b40c40d40e40f41441c42843043843d44245a45b46246345c46448149349b4aa4af4b44bc4c44c94d14e352c5315395826d16d975358758ca4ca516166176187ce7cfa61a8ca91a96a9baa3aaeab9ac8addae8b06b17b97b9cb9d
gHz2x3:gpath rmove z2 (x3, x3b, x3a).1.1 (rcons zz (x3, x3b, x3a).1.1)

157
b9e
bae
gpath rmove (last z2 (rcons zz (x3, x3b, x3a).1.1)) v (x3, x3b, x3a).2 -> psi (s2f (n:=n.+1) E) <= `d[u, v]_rmove
b9e
514214312b13a13b13c15615c16518518a18f19419c1ab1ac1bb1d61de1df1e71ef2bc2c12c82d02d82dd2e62fd30230a32e33833935135235335435535a35f36436937137d38238a3b13b23b33b43b53ba3c33cc3d53dd3e93f140b40c40d40e40f41441c42843043843d44245a45b46246345c46448149349b4aa4af4b44bc4c44c94d14e352c5315395826d16d975358758ca4ca516166176187ce7cfa61a8ca91a96a9baa3aaeab9ac8addae8b06b17b97b9cb9dbaf
gHx3v1:gpath rmove (x3, x3b, x3a).1.1 v (x3, x3b, x3a).2

157
b9e
bb7
`d[z2, v]_rmove = `d[z2, last z2 (rcons zz (x3, x3b, x3a).1.1)]_rmove + `d[last z2 (rcons zz (x3, x3b, x3a).1.1), v]_rmove -> psi (s2f (n:=n.+1) E) <= `d[u, v]_rmove
b9e
514214312b13a13b13c15615c16518518a18f19419c1ab1ac1bb1d61de1df1e71ef2bc2c12c82d02d82dd2e62fd30230a32e33833935135235335435535a35f36436937137d38238a3b13b23b33b43b53ba3c33cc3d53dd3e93f140b40c40d40e40f41441c42843043843d44245a45b46246345c46448149349b4aa4af4b44bc4c44c94d14e352c5315395826d16d975358758ca4ca516166176187ce7cfa61a8ca91a96a9baa3aaeab9ac8addae8b06b17b97b9cb9dbafbb8
dz2vE:`d[z2, v]_rmove = `d[z2, (x3, x3b, x3a).1.1]_rmove + `d[(x3, x3b, x3a).1.1, v]_rmove

157
b9e
514214312b13a13b13c15615c16518518a18f19419c1ab1ac1bb1d61de1df1e71ef2bc2c12c82d02d82dd2e62fd30230a32e33833935135235335435535a35f36436937137d38238a3b13b23b33b43b53ba3c33cc3d53dd3e93f140b40c40d40e40f41441c42843043843d44245a45b46246345c46448149349b4aa4af4b44bc4c44c94d14e352c5315395826d16d975358758ca4ca516166176187ce7cfa61a8ca91a96a9baa3aaeab9ac8addae8b06b17b97b9cb9dbafbb8bc1
A:=[set i | `cut[ tln, x3] i == a]:{set ordinal_finType T}

157
b9e
514214312b13a13b13c15615c16518518a18f19419c1ab1ac1bb1d61de1df1e71ef2bc2c12c82d02d82dd2e62fd30230a32e33833935135235335435535a35f36436937137d38238a3b13b23b33b43b53ba3c33cc3d53dd3e93f140b40c40d40e40f41441c42843043843d44245a45b46246345c46448149349b4aa4af4b44bc4c44c94d14e352c5315395826d16d975358758ca4ca516166176187ce7cfa61a8ca91a96a9baa3aaeab9ac8addae8b06b17b97b9cb9dbafbb8bc1bc6
B:=[set i | `cut[ tln, x3] i == b]:{set ordinal_finType T}

157
b9e
bca
A :&: B = set0
514214312b13a13b13c15615c16518518a18f19419c1ab1ac1bb1d61de1df1e71ef2bc2c12c82d02d82dd2e62fd30230a32e33833935135235335435535a35f36436937137d38238a3b13b23b33b43b53ba3c33cc3d53dd3e93f140b40c40d40e40f41441c42843043843d44245a45b46246345c46448149349b4aa4af4b44bc4c44c94d14e352c5315395826d16d975358758ca4ca516166176187ce7cfa61a8ca91a96a9baa3aaeab9ac8addae8b06b17b97b9cb9dbafbb8bc1bc6bcb
AIB:A :&: B = set0
157
b9fba3
514214312b13a13b13c15615c16518518a18f19419c1ab1ac1bb1d61de1df1e71ef2bc2c12c82d02d82dd2e62fd30230a32e33833935135235335435535a35f36436937137d38238a3b13b23b33b43b53ba3c33cc3d53dd3e93f140b40c40d40e40f41441c42843043843d44245a45b46246345c46448149349b4aa4af4b44bc4c44c94d14e352c5315395826d16d975358758ca4ca516166176187ce7cfa61a8ca91a96a9baa3aaeab9ac8addae8b06b17b97b9cb9dbafbb8bc1bc6bcb
i:ordinal_finType T

(x3 (widen_ord (m:=n.+1) tln i) == a) && (x3 (widen_ord (m:=n.+1) tln i) == b) = false
bd0
bd7
(a == b) = false
bd0
bd2
157
b9e
bd2
A :|: B = [set: ordinal_finType T]
514214312b13a13b13c15615c16518518a18f19419c1ab1ac1bb1d61de1df1e71ef2bc2c12c82d02d82dd2e62fd30230a32e33833935135235335435535a35f36436937137d38238a3b13b23b33b43b53ba3c33cc3d53dd3e93f140b40c40d40e40f41441c42843043843d44245a45b46246345c46448149349b4aa4af4b44bc4c44c94d14e352c5315395826d16d975358758ca4ca516166176187ce7cfa61a8ca91a96a9baa3aaeab9ac8addae8b06b17b97b9cb9dbafbb8bc1bc6bcbbd3
AUB:A :|: B = [set: ordinal_finType T]
157
b9fba3
514214312b13a13b13c15615c16518518a18f19419c1ab1ac1bb1d61de1df1e71ef2bc2c12c82d02d82dd2e62fd30230a32e33833935135235335435535a35f36436937137d38238a3b13b23b33b43b53ba3c33cc3d53dd3e93f140b40c40d40e40f41441c42843043843d44245a45b46246345c46448149349b4aa4af4b44bc4c44c94d14e352c5315395826d16d975358758ca4ca516166176187ce7cfa61a8ca91a96a9baa3aaeab9ac8addae8b06b17b97b9cb9dbafbb8bc1bc6bcbbd3bd8

(x3 (widen_ord (m:=n.+1) tln i) == a) || (x3 (widen_ord (m:=n.+1) tln i) == b) = true
be5
bec
`cut[ tln, x3] i != np3
bec
`cut[ tln, x3] i != np3 -> (x3 (widen_ord (m:=n.+1) tln i) == a) || (x3 (widen_ord (m:=n.+1) tln i) == b) = true
be6b9fba3
bec
x3 (widen_ord (m:=n.+1) tln i) != (x3, x3b, x3a).1.1 T
bf2
bec
bf4
be5
bec
`cut[ tln, x3] i != d
bec
`cut[ tln, x3] i != d -> `cut[ tln, x3] i != np3 -> (x3 (widen_ord (m:=n.+1) tln i) == a) || (x3 (widen_ord (m:=n.+1) tln i) == b) = true
be6b9fba3
bec
x3 (widen_ord (m:=n.+1) tln i) != x3p T
c00
bec
c02
be5
be7
157
b9e
be7
psi (s2f (n:=T) A) <= `d[z2, x3]_rmove
514214312b13a13b13c15615c16518518a18f19419c1ab1ac1bb1d61de1df1e71ef2bc2c12c82d02d82dd2e62fd30230a32e33833935135235335435535a35f36436937137d38238a3b13b23b33b43b53ba3c33cc3d53dd3e93f140b40c40d40e40f41441c42843043843d44245a45b46246345c46448149349b4aa4af4b44bc4c44c94d14e352c5315395826d16d975358758ca4ca516166176187ce7cfa61a8ca91a96a9baa3aaeab9ac8addae8b06b17b97b9cb9dbafbb8bc1bc6bcbbd3be8
dz2x3_leq:psi (s2f (n:=T) A) <= `d[z2, x3]_rmove
157
b9fba3
be7
psi (s2f (n:=T) A) <= `d[x3, z2]_rmove
c11
514214312b13a13b13c15615c16518518a18f19419c1ab1ac1bb1d61de1df1e71ef2bc2c12c82d02d82dd2e62fd30230a32e33833935135235335435535a35f36436937137d38238a3b13b23b33b43b53ba3c33cc3d53dd3e93f140b40c40d40e40f41441c42843043843d44245a45b46246345c46448149349b4aa4af4b44bc4c44c94d14e352c5315395826d16d975358758ca4ca516166176187ce7cfa61a8ca91a96a9baa3aaeab9ac8addae8b06b17b97b9cb9dbafbb8bc1bc6bcbbd3be87d4

c18
c11
514214312b13a13b13c15615c16518518a18f19419c1ab1ac1bb1d61de1df1e71ef2bc2c12c82d02d82dd2e62fd30230a32e33833935135235335435535a35f36436937137d38238a3b13b23b33b43b53ba3c33cc3d53dd3e93f140b40c40d40e40f41441c42843043843d44245a45b46246345c46448149349b4aa4af4b44bc4c44c94d14e352c5315395826d16d975358758ca4ca516166176187ce7cfa61a8ca91a96a9baa3aaeab9ac8addae8b06b17b97b9cb9dbafbb8bc1bc6bcbbd3be87d4
pp1, pp2:peg 4
H1:pp2 != pp1
H2:pp2 != np2
H3:pp2 != c
H4:pp1 != np2
H5:pp1 != c
H6:forall p : peg 4, [\/ p = c, p = np2, p = pp1 | p = pp2]

c18
c11
c20
codom `cut[ tln, z2] \subset [:: pp1; pp2]
514214312b13a13b13c15615c16518518a18f19419c1ab1ac1bb1d61de1df1e71ef2bc2c12c82d02d82dd2e62fd30230a32e33833935135235335435535a35f36436937137d38238a3b13b23b33b43b53ba3c33cc3d53dd3e93f140b40c40d40e40f41441c42843043843d44245a45b46246345c46448149349b4aa4af4b44bc4c44c94d14e352c5315395826d16d975358758ca4ca516166176187ce7cfa61a8ca91a96a9baa3aaeab9ac8addae8b06b17b97b9cb9dbafbb8bc1bc6bcbbd3be87d4c21c22c23c24c25c26c27
cH1:codom `cut[ tln, z2] \subset [:: pp1; pp2]
c18
c12b9fba3
514214312b13a13b13c15615c16518518a18f19419c1ab1ac1bb1d61de1df1e71ef2bc2c12c82d02d82dd2e62fd30230a32e33833935135235335435535a35f36436937137d38238a3b13b23b33b43b53ba3c33cc3d53dd3e93f140b40c40d40e40f41441c42843043843d44245a45b46246345c46448149349b4aa4af4b44bc4c44c94d14e352c5315395826d16d975358758ca4ca516166176187ce7cfa61a8ca91a96a9baa3aaeab9ac8addae8b06b17b97b9cb9dbafbb8bc1bc6bcbbd3be87d4c21c22c23c24c25c26c271c055b

(z2 (widen_ord (m:=n.+1) tln j) == pp1) || (z2 (widen_ord (m:=n.+1) tln j) == pp2)
c2c
c33
z2 (widen_ord (m:=n.+1) tln j) == c -> (z2 (widen_ord (m:=n.+1) tln j) == pp1) || (z2 (widen_ord (m:=n.+1) tln j) == pp2)
c33
z2 (widen_ord (m:=n.+1) tln j) == np2 -> (z2 (widen_ord (m:=n.+1) tln j) == pp1) || (z2 (widen_ord (m:=n.+1) tln j) == pp2)
c2dc12b9fba3
c33
z2 (widen_ord (m:=n.+1) tln j) != z2p N
c39
c33
j <= n
c39
c33
c3b
c2c
c33
z2 (widen_ord (m:=n.+1) tln j) != z2 N
c2c
c33
j < n
c2c
c2e
c18
c11
c2e
psi (s2f (n:=T) A) <= `d[`cut[ tln, x3], `cut[ tln, z2]]_rmove
c2e
`d[`cut[ tln, x3], `cut[ tln, z2]]_rmove <= `d[x3, z2]_rmove
c12b9fba3
514312b13a13b13c15615c16518518a18f19419c1ab1ac1bb1d61de1df1e71ef2bc2c12c82d02d82dd2e62fd30230a32e33833935135235335435535a35f36436937137d38238a3b13b23b33b43b53ba3c33cc3d53dd3e93f140b40c40d40e40f41441c42843043843d44245a45b46246345c46448149349b4aa4af4b44bc4c44c94d14e352c5315395826d16d975358758ca4ca516166176187ce7cfa61a8ca91a96a9baa3aaeab9ac8addae8b06b17b97b9cb9dbafbb8bc1bc6bcbbd3be87d4c21c22c23c24c25c26c27

[/\ pp2 != pp1, pp2 != a & pp1 != a]
c56
c5c
pp2 != a
c5c
pp1 != a
c57c12b9fba3
514312b13a13b13c15615c16518518a18f19419c1ab1ac1bb1d61de1df1e71ef2bc2c12c82d02d82dd2e62fd30230a32e33833935135235335435535a35f36436937137d38238a3b13b23b33b43b53ba3c33cc3d53dd3e93f140b40c40d40e40f41441c42843043843d44245a45b46246345c46448149349b4aa4af4b44bc4c44c94d14e352c5315395826d16d975358758ca4ca516166176187ce7cfa61a8ca91a96a9baaeab9ac8addae8b06b17b97b9cb9dbafbb8bc1bc6bcbbd3be87d4c21c22c23c24c25c26c27

(a == np2) || (a == c) -> pp2 != a
c62
c5c
c64
c56
c68
(a == np2) || (a == c) -> pp1 != a
c56
c68
(pp2 == np2) || (pp2 == c) -> pp1 != pp2
c56
c2e
c58
c11
c2e
symmetric (T:=finfun_finType (ordinal_finType n.+1) (ordinal_finType 4)) rmove
c11
c13
157
b9e
c13
psi (s2f (n:=T) B) <= `d[x3, v]_rmove
514214312b13a13b13c15615c16518518a18f19419c1ab1ac1bb1d61de1df1e71ef2bc2c12c82d02d82dd2e62fd30230a32e33833935135235335435535a35f36436937137d38238a3b13b23b33b43b53ba3c33cc3d53dd3e93f140b40c40d40e40f41441c42843043843d44245a45b46246345c46448149349b4aa4af4b44bc4c44c94d14e352c5315395826d16d975358758ca4ca516166176187ce7cfa61a8ca91a96a9baa3aaeab9ac8addae8b06b17b97b9cb9dbafbb8bc1bc6bcbbd3be8c14
dx3v_leq:psi (s2f (n:=T) B) <= `d[x3, v]_rmove
157
b9fba3
c13
codom `cut[ tln, v] \subset [:: np2; np3]
514214312b13a13b13c15615c16518518a18f19419c1ab1ac1bb1d61de1df1e71ef2bc2c12c82d02d82dd2e62fd30230a32e33833935135235335435535a35f36436937137d38238a3b13b23b33b43b53ba3c33cc3d53dd3e93f140b40c40d40e40f41441c42843043843d44245a45b46246345c46448149349b4aa4af4b44bc4c44c94d14e352c5315395826d16d975358758ca4ca516166176187ce7cfa61a8ca91a96a9baa3aaeab9ac8addae8b06b17b97b9cb9dbafbb8bc1bc6bcbbd3be8c14
cH1:codom `cut[ tln, v] \subset [:: np2; np3]
c82
c84b9fba3
c8d
c82
c83
c8d
psi (s2f (n:=T) B) <= `d[`cut[ tln, x3], `cut[ tln, v]]_rmove
c8d
`d[`cut[ tln, x3], `cut[ tln, v]]_rmove <= `d[x3, v]_rmove
c84b9fba3
514312b13a13b13c15615c16518518a18f19419c1ab1ac1bb1d61de1df1e71ef2bc2c12c82d02d82dd2e62fd30230a32e33833935135235335435535a35f36436937137d38238a3b13b23b33b43b53ba3c33cc3d53dd3e93f140b40c40d40e40f41441c42843043843d44245a45b46246345c46448149349b4aa4af4b44bc4c44c94d14e352c5315395826d16d975358758ca4ca516166176187ce7cfa61a8ca91a96a9baa3aaeab9ac8addae8b06b17b97b9cb9dbafbb8bc1bc6bcbbd3be8c14

931
c96
c8d
c98
c83
c85
157
b9e
c85
5bb
b9e
c85
a1e
b9e
c85
psi (s2f (n:=n.+1) E) <= size (behead (rcons z2b z2p)) + (psi (s2f (n:=n.+1) E) - 2 ^ s.-1).+1 + size z2a
b9e
c85
psi (s2f (n:=n.+1) E) <= (psi (s2f (n:=n.+1) E) - 2 ^ s.-1).+1 + size z2a
b9e
c85
psi (s2f (n:=n.+1) E) <= (psi (s2f (n:=n.+1) E) - 2 ^ s.-1).+1 + (`d[z2, (x3, x3b, x3a).1.1]_rmove + `d[(x3, x3b, x3a).1.1, v]_rmove)
b9e
c85
psi (s2f (n:=n.+1) E) <= (psi (s2f (n:=n.+1) E) - 2 ^ s.-1).+1 + (psi (s2f (n:=T) A) + psi (s2f (n:=T) B))
b9e
c85
psi (s2f (n:=n.+1) E) <= psi (s2f (n:=n.+1) E) - 2 ^ s.-1 + (psi (s2f (n:=T) A) + psi (s2f (n:=T) B)).+1
b9e
514214312b13a13b13c15615c16518518a18f19419c1ab1ac1bb1d61de1df1e71ef2bc2c12c82d02d82dd2e62fd30230a32e33833935135235335435535a35f36436937137d38238a3b13b23b33b43b53ba3c33cc3d53dd3e93f140b40c40d40e40f41441c42843043843d44245a45b46246345c46448149349b4aa4af4b44bc4c44c94d14e352c5315395826d16d975358758ca4ca516166176187ce7cfa61a8ca91a96a9baa3aaeab9ac8addae8b06b17b97b9cb9dbafbb8bc1bc6bcbbd3be8c14c86
psiAB_le:2 ^ s <= ((psi (s2f (n:=T) A) + psi (s2f (n:=T) B)).+1).*2

cbc
c85
2 ^ s <= ((psi (s2f (n:=T) A) + psi (s2f (n:=T) B)).+1).*2
b9fba3
cc0
(psi (s2f (n:=n.+1) E)).*2 <= (psi (s2f (n:=n.+1) E)).*2 - (2 ^ s.-1).*2 + ((psi (s2f (n:=T) A) + psi (s2f (n:=T) B)).+1).*2
cc2
cc0
(psi (s2f (n:=n.+1) E)).*2 <= (psi (s2f (n:=n.+1) E)).*2 - (2 ^ s.-1).*2 + 2 ^ s
cc2
cc0
(2 ^ s.-1).*2 <= 2 ^ s
cc2
c85
cc4
b9e
c85
2 ^ s.+1 < ((psi (s2f (n:=T) A) + psi (s2f (n:=T) B)).*2).*2 + 5
b9e
c85
2 ^ s.+1 < Ο•(#|` s2f (n:=T) A `|` s2f (n:=T) B|.+3)
b9e
c85
2 ^ s.+1 < Ο•(#|` s2f (n:=n.+1) (isO n.+1 T)|.+3)
b9e
c85
2 ^ s.+1 < Ο•(T.+3)
b9e
c85
2 ^ s <= psi `[T.+2]
b9e
c85
2 ^ s <= 2 ^ (βˆ‡T).+1
b9e
c85
Ξ”s.-1 <= T
b9e
c85
Ξ”s - s <= T
b9e
c85
Ξ”s - s <= (T + K).+1 - K.+1
b9e
c85
K < s
b9e
ba0
157
ba3
cfd
ba0
z2p = x3p
514214312b13a13b13c15615c16518518a18f19419c1ab1ac1bb1d61de1df1e71ef2bc2c12c82d02d82dd2e62fd30230a32e33833935135235335435535a35f36436937137d38238a3b13b23b33b43b53ba3c33cc3d53dd3e93f140b40c40d40e40f41441c42843043843d44245a45b46246345c46448149349b4aa4af4b44bc4c44c94d14e352c5315395826d16d975358758ca4ca516166176187ce7cfa61a8ca91a96a9baa3aaeab9ac8addae8b06b17b97ba1ba2
z2pEx3:z2p = x3p
157
ba3
ba0
z2p = last u (z0sb ++ behead (rcons z2b z2p))
d05
514214312b13a13b13c15615c16518518a18f19419c1ab1ac1bb1d61de1df1e71ef2bc2c12c82d02d82dd2e62fd30230a32e33833935135235335435535a35f36436937137d38238a3b13b23b33b43b53ba3c33cc3d53dd3e93f140b40c40d40e40f41441c42843043843d44245a45b46246345c46448149b4aa4af4b44bc4c44c94d14e352c5315395826d16d975358758ca4ca516166176187ce7cfa61a8ca91a96a9baa3aaeab9ac8addae8b06b17b97ba1ba24a04a1

z2p = last u (z0sb ++ rcons ll z2p)
d05
d07
157
cff
d07
z2p T == z2 T -> psi (s2f (n:=n.+1) E) <= `d[u, v]_rmove
cff
ba4
157
(* x0 is before z0 *)
ba4
g = z0sb ++ z0s :: z0sa -> psi (s2f (n:=n.+1) E) <= `d[u, v]_rmove
514214312b13a13b13c15615c16518518a18f19419c1ab1ac1bb1d61de1df1e71ef2bc2c12c82d02d82dd2e62fd30230a32e33833935135235335435535a35f36436937137d38238a3b13b23b33b43b53ba3c33cc3d53dd3e93f140b40c40d40e40f41441c42843043843d44245a45b46246345c46448149349b4aa4af4b44bc4c44c94d14e352c5315395826d16d975358758ca4ca516166176187ce7cfa61a8ca91a96a9baa3aaeab9ac8addae8b06b17b97b9cba5
zz1:seq (finfun_eqType (ordinal_finType n.+1) (ordinal_eqType 4))
x0sbE:x0sb = z0sb ++ z0s :: zz1

157
514214312b13a13b13c15615c16518518a18f19419c1ab1ac1bb1d61de1df1e71ef2bc2c12c82d02d82dd2e62fd30230a32e33833935135235335435535a35f36436937137d38238a3b13b23b33b43b53ba3c33cc3d53dd3e93f140b40c40d40e40f41441c42843043843d44245a45b46246345c46448149349b4aa4af4b44bc4c44c94d14e352c5315395826d16d975358758ca4ca516166176187ce7cfa61a8ca91a96a9baa3aaeab9ac8addae8b06b17b97b9cba5
x0sbE:x0sb = z0sb
x0sEz0s:x0s = z0s
xsaE:x0sa = z0sa
157
514214312b13a13b13c15615c16518518a18f19419c1ab1ac1bb1d61de1df1e71ef2bc2c12c82d02d82dd2e62fd30230a32e33833935135235335435535a35f36436937137d38238a3b13b23b33b43b53ba3c33cc3d53dd3e93f140b40c40d40e40f41441c42843043843d44245a45b46246345c46448149349b4aa4af4b44bc4c44c94d14e352c5315395826d16d975358758ca4ca516166176187ce7cfa61a8ca91a96a9baa3aaeab9ac8addae8b06b17b97b9cba5d24
z0sbE:z0sb = x0sb ++ x0s :: zz1
157
d21
d23
z0s \in x0sb -> psi (s2f (n:=n.+1) E) <= `d[u, v]_rmove
d26
514214312b13a13b13c15615c16518518a18f19419c1ab1ac1bb1d61de1df1e71ef2bc2c12c82d02d82dd2e62fd30230a32e33833935135235335435535a35f36436937137d38238a3b13b23b33b43b53ba3c33cc3d53dd3e93f140b40c40d40e40f41441c42843043843d44245a45b46246345c46448149349b4aa4af4b44bc4c44c94d14e352c5315395826d16d975358758ca4ca516166176187ce7cfa61a8ca91a96a9baa3aaeab9ac8addae8b06b17b97b9cba5d24d25
z0sT0:z0s T = p0

157
d26
d37
z0 T = p0
514214312b13a13b13c15615c16518518a18f19419c1ab1ac1bb1d61de1df1e71ef2bc2c12c82d02d82dd2e62fd30230a32e33833935135235335435535a35f36436937137d38238a3b13b23b33b43b53ba3c33cc3d53dd3e93f140b40c40d40e40f41441c42843043843d44245a45b46246345c46448149349b4aa4af4b44bc4c44c94d14e352c5315395826d16d975358758ca4ca516166176187ce7cfa61a8ca91a96a9baa3aaeab9ac8addae8b06b17b97b9cba5d24d25d38
z0T0:z0 T = p0
157
d27d2c
514214312b13a13b13c15615c16518518a18f19419c1ab1ac1bb1d61de1df1e71ef2bc2c12c82d02d82dd2e62fd30230a32e33833935135235335435535a35f36436937137d38238a3b13b23b33b43b53ba3c33cc3d53dd3e93f140b40c40d40e40f41441c43843d44245a45b46246345c46448149349b4aa4af4b44bc4c44c94d14e352c5315395826d16d975358758ca4ca516166176187ce7cfa61a8ca91a96a9baa3aaeab9ac8addae8b06b17b97b9cba5d24d25d38

N != T
d3d
d3f
157
d26
d3f
z0 T != z0 N -> psi (s2f (n:=n.+1) E) <= `d[u, v]_rmove
d26
d28
157
d2c
d4e
514214312b13a13b13c15615c16518518a18f19419c1ab1ac1bb1d61de1df1e71ef2bc2c12c82d02d82dd2e62fd30230a32e33833935135235335435535a35f36436937138238a3b13b23b33b43b53ba3c33cc3d53dd3e93f140b40c40d40e40f41441c42843043843d44245a45b46246345c46448149349b4aa4af4b44bc4c44c94d14e352c5315395826d16d975358758ca4ca516166176187ce7cfa61a8ca91a96a9baa3aaeab9ac8addae8b06b17b97b9cba5d29d2ad2b

x0 T = x0s T
d50
514214312b13a13b13c15615c16518518a18f19419c1ab1ac1bb1d61de1df1e71ef2bc2c12c82d02d82dd2e62fd30230a32e33833935135235335435535a35f36436937138238a3b13b23b33b43b53ba3c33cc3d53dd3e93f140b40c40d40e40f41441c43843d44245a45b46246345c46448149349b4aa4af4b44bc4c44c94d14e352c5315395826d16d975358758ca4ca516166176187ce7cfa61a8ca91a96a9baa3aaeab9ac8addae8b06b17b97b9cba5d29d2ad2b

d45
d50
d2d
157
514214312b13a13b13c15615c16518518a18f19419c1ab1ac1bb1d61de1df1e71ef2bc2c12c82d02d82dd2e62fd30230a32e33833935135235335435535a35f36436937137d38238a3b13b23b33b43b53ba3c33cc3d53dd3e93f140b40c40d40e40f41441c42843043843d44245a45b46246345c46448149349b4aa4af4b44bc4c44c94d14e352c5315395826d16d975358758ca4ca516166176187ce7cfa61a8ca91a96a9baa3aaeab9ac8addae8b06b17b97b9cba5d24d2e
sd:=isO n.+1 T : {set disk n.+1}:{set disk n.+1}

157
d61
#|sd| = T
514214312b13a13b13c15615c16518518a18f19419c1ab1ac1bb1d61de1df1e71ef2bc2c12c82d02d82dd2e62fd30230a32e33833935135235335435535a35f36436937137d38238a3b13b23b33b43b53ba3c33cc3d53dd3e93f140b40c40d40e40f41441c42843043843d44245a45b46246345c46448149349b4aa4af4b44bc4c44c94d14e352c5315395826d16d975358758ca4ca516166176187ce7cfa61a8ca91a96a9baa3aaeab9ac8addae8b06b17b97b9cba5d24d2ed62
card_sdE:#|sd| = T
157
d69
157
514214312b13a13b13c15615c16518518a18f19419c1ab1ac1bb1d61de1df1e71ef2bc2c12c82d02d82dd2e62fd30230a32e33833935135235335435535a35f36436937137d38238a3b13b23b33b43b53ba3c33cc3d53dd3e93f140b40c40d40e40f41441c42843043843d44245a45b46246345c46448149349b4aa4af4b44bc4c44c94d14e352c5315395826d16d975358758ca4ca516166176187ce7cfa61a8ca91a96a9baa3aaeab9ac8addae8b06b17b97b9cba5d24d2ed62d6a
u'':=`cut[ tln, u]:configuration 4 T

157
514214312b13a13b13c15615c16518518a18f19419c1ab1ac1bb1d61de1df1e71ef2bc2c12c82d02d82dd2e62fd30230a32e33833935135235335435535a35f36436937137d38238a3b13b23b33b43b53ba3c33cc3d53dd3e93f140b40c40d40e40f41441c42843043843d44245a45b46246345c46448149349b4aa4af4b44bc4c44c94d14e352c5315395826d16d975358758ca4ca516166176187ce7cfa61a8ca91a96a9baa3aaeab9ac8addae8b06b17b97b9cba5d24d2ed62d6ad72
x0'':=`cut[ tln, x0]:configuration 4 T

157
514214312b13a13b13c15615c16518518a18f19419c1ab1ac1bb1d61de1df1e71ef2bc2c12c82d02d82dd2e62fd30230a32e33833935135235335435535a35f36436937137d38238a3b13b23b33b43b53ba3c33cc3d53dd3e93f140b40c40d40e40f41441c42843043843d44245a45b46246345c46448149349b4aa4af4b44bc4c44c94d14e352c5315395826d16d975358758ca4ca516166176187ce7cfa61a8ca91a96a9baa3aaeab9ac8addae8b06b17b97b9cba5d24d2ed62d6ad72d77
z2'':=`cut[ tln, z2]:configuration 4 T

157
514214312b13a13b13c15615c16518518a18f19419c1ab1ac1bb1d61de1df1e71ef2bc2c12c82d02d82dd2e62fd30230a32e33833935135235335435535a35f36436937137d38238a3b13b23b33b43b53ba3c33cc3d53dd3e93f140b40c40d40e40f41441c42843043843d44245a45b46246345c46448149349b4aa4af4b44bc4c44c94d14e352c5315395826d16d975358758ca4ca516166176187ce7cfa61a8ca91a96a9baa3aaeab9ac8addae8b06b17b97b9cba5d24d2ed62d6ad72d77d7c
x3'':=`cut[ tln, x3]:configuration 4 T

157
514214312b13a13b13c15615c16518518a18f19419c1ab1ac1bb1d61de1df1e71ef2bc2c12c82d02d82dd2e62fd30230a32e33833935135235335435535a35f36436937137d38238a3b13b23b33b43b53ba3c33cc3d53dd3e93f140b40c40d40e40f41441c42843043843d44245a45b46246345c46448149349b4aa4af4b44bc4c44c94d14e352c5315395826d16d975358758ca4ca516166176187ce7cfa61a8ca91a96aa3ab9b06b97b9cba5d24d2ed62d6ad72d77d7cd81

157
514214312b13a13b13c15615c16518518a18f19419c1ab1ac1bb1d61de1df1e71ef2bc2c12c82d02d82dd2e62fd30230a32e33833935135235335435535a35f36436937137d38238a3b13b23b33b43b53ba3c33cc3d53dd3e93f140b40c40d40e40f41441c42843043843d44245a45b46246345c46448149349b4aa4af4b44bc4c44c94d14e352c5315395826d16d975358758ca4ca516166176187ce7cfa61a8ca91a96aa3ab9b06b97b9cba5d24d2ed62d6ad72d77d7cd81
b:=if c == p0 then p1 else p0:peg 4

157
d89
np3 != c
514214312b13a13b13c15615c16518518a18f19419c1ab1ac1bb1d61de1df1e71ef2bc2c12c82d02d82dd2e62fd30230a32e33833935135235335435535a35f36436937137d38238a3b13b23b33b43b53ba3c33cc3d53dd3e93f140b40c40d40e40f41441c42843043843d44245a45b46246345c46448149349b4aa4af4b44bc4c44c94d14e352c5315395826d16d975358758ca4ca516166176187ce7cfa61a8ca91a96aa3ab9b06b97b9cba5d24d2ed62d6ad72d77d7cd81d8a
np3Dc:np3 != c
157
d91
157
d91
935
514214312b13a13b13c15615c16518518a18f19419c1ab1ac1bb1d61de1df1e71ef2bc2c12c82d02d82dd2e62fd30230a32e33833935135235335435535a35f36436937137d38238a3b13b23b33b43b53ba3c33cc3d53dd3e93f140b40c40d40e40f41441c42843043843d44245a45b46246345c46448149349b4aa4af4b44bc4c44c94d14e352c5315395826d16d975358758ca4ca516166176187ce7cfa61a8ca91a96aa3ab9b06b97b9cba5d24d2ed62d6ad72d77d7cd81d8ad92
np3Db:np3 != b
157
d9b
157
d9b
abd
514214312b13a13b13c15615c16518518a18f19419c1ab1ac1bb1d61de1df1e71ef2bc2c12c82d02d82dd2e62fd30230a32e33833935135235335435535a35f36436937137d38238a3b13b23b33b43b53ba3c33cc3d53dd3e93f140b40c40d40e40f41441c42843043843d44245a45b46246345c46448149349b4aa4af4b44bc4c44c94d14e352c5315395826d16d975358758ca4ca516166176187ce7cfa61a8ca91a96aa3ab9b06b97b9cba5d24d2ed62d6ad72d77d7cd81d8ad92d9c
np2Dc:np2 != c
157
da5
157
da5
938
514214312b13a13b13c15615c16518518a18f19419c1ab1ac1bb1d61de1df1e71ef2bc2c12c82d02d82dd2e62fd30230a32e33833935135235335435535a35f36436937137d38238a3b13b23b33b43b53ba3c33cc3d53dd3e93f140b40c40d40e40f41441c42843043843d44245a45b46246345c46448149349b4aa4af4b44bc4c44c94d14e352c5315395826d16d975358758ca4ca516166176187ce7cfa61a8ca91a96aa3ab9b06b97b9cba5d24d2ed62d6ad72d77d7cd81d8ad92d9cda6
np2Db:np2 != b
157
daf
157
daf
c != b
514214312b13a13b13c15615c16518518a18f19419c1ab1ac1bb1d61de1df1e71ef2bc2c12c82d02d82dd2e62fd30230a32e33833935135235335435535a35f36436937137d38238a3b13b23b33b43b53ba3c33cc3d53dd3e93f140b40c40d40e40f41441c42843043843d44245a45b46246345c46448149349b4aa4af4b44bc4c44c94d14e352c5315395826d16d975358758ca4ca516166176187ce7cfa61a8ca91a96aa3ab9b06b97b9cba5d24d2ed62d6ad72d77d7cd81d8ad92d9cda6db0
cDb:c != b
157
dba
157
514214312b13a13b13c15615c16518518a18f19419c1ab1ac1bb1d61de1df1e71ef2bc2c12c82d02d82dd2e62fd30230a32e33833935135235335435535a35f36436937137d38238a3b13b23b33b43b53ba3c33cc3d53dd3e93f140b40c40d40e40f41441c42843043843d44245a45b46246345c46448149349b4aa4af4b44bc4c44c94d14e352c5315395826d16d975358758ca4ca516166176187ce7cfa61a8ca91a96aa3ab9b06b97b9cba5d24d2ed62d6ad72d77d7cd81d8ad92d9cda6db0dbb
i:peg 4

[\/ i = np3, i = np2, i = c | i = b]
514214312b13a13b13c15615c16518518a18f19419c1ab1ac1bb1d61de1df1e71ef2bc2c12c82d02d82dd2e62fd30230a32e33833935135235335435535a35f36436937137d38238a3b13b23b33b43b53ba3c33cc3d53dd3e93f140b40c40d40e40f41441c42843043843d44245a45b46246345c46448149349b4aa4af4b44bc4c44c94d14e352c5315395826d16d975358758ca4ca516166176187ce7cfa61a8ca91a96aa3ab9b06b97b9cba5d24d2ed62d6ad72d77d7cd81d8ad92d9cda6db0dbb
Hzb:forall i : peg 4, [\/ i = np3, i = np2, i = c | i = b]
157
dc7
157
dc7
aaa
514214312b13a13b13c15615c16518518a18f19419c1ab1ac1bb1d61de1df1e71ef2bc2c12c82d02d82dd2e62fd30230a32e33833935135235335435535a35f36436937137d38238a3b13b23b33b43b53ba3c33cc3d53dd3e93f140b40c40d40e40f41441c42843043843d44245a45b46246345c46448149349b4aa4af4b44bc4c44c94d14e352c5315395826d16d975358758ca4ca516166176187ce7cfa61a8ca91a96aa3ab9b06b97b9cba5d24d2ed62d6ad72d77d7cd81d8ad92d9cda6db0dbbdc8aae
157
dd1
157
514214312b13a13b13c15615c16518518a18f19419c1ab1ac1bb1d61de1df1e71ef2bc2c12c82d02d82dd2e62fd30230a32e33833935135235335435535a35f36436937137d38238a3b13b23b33b43b53ba3c33cc3d53dd3e93f140b40c40d40e40f41441c42843043843d44245a45b46246345c46448149349b4aa4af4b44bc4c44c94d14e352c5315395826d16d975358758ca4ca516166176187ce7cfa61a8ca91a96aa3ab9b06b97b9cba5d24d2ed62d6ad72d77d7cd81d8ad92d9cda6db0dbbdc8aae
A:=[set i | z2'' i == np3] : {set disk T}:{set disk T}

157
514214312b13a13b13c15615c16518518a18f19419c1ab1ac1bb1d61de1df1e71ef2bc2c12c82d02d82dd2e62fd30230a32e33833935135235335435535a35f36436937137d38238a3b13b23b33b43b53ba3c33cc3d53dd3e93f140b40c40d40e40f41441c42843043843d44245a45b46246345c46448149349b4aa4af4b44bc4c44c94d14e352c5315395826d16d975358758ca4ca516166176187ce7cfa61a8ca91a96aa3ab9b06b97b9cba5d24d2ed62d6ad72d77d7cd81d8ad92d9cda6db0dbbdc8aaedd9
B:=[set i | ↓[z2] i == b] : {set disk n}:{set disk n}

157
ddd
codom ↓[z2] \subset [:: np3; b]
514214312b13a13b13c15615c16518518a18f19419c1ab1ac1bb1d61de1df1e71ef2bc2c12c82d02d82dd2e62fd30230a32e33833935135235335435535a35f36436937137d38238a3b13b23b33b43b53ba3c33cc3d53dd3e93f140b40c40d40e40f41441c42843043843d44245a45b46246345c46448149349b4aa4af4b44bc4c44c94d14e352c5315395826d16d975358758ca4ca516166176187ce7cfa61a8ca91a96aa3ab9b06b97b9cba5d24d2ed62d6ad72d77d7cd81d8ad92d9cda6db0dbbdc8aaedd9dde
cH2:codom ↓[z2] \subset [:: np3; b]
157
514214312b13a13b13c15615c16518518a18f19419c1ab1ac1bb1d61de1df1e71ef2bc2c12c82d02d82dd2e62fd30230a32e33833935135235335435535a35f36436937137d38238a3b13b23b33b43b53ba3c33cc3d53dd3e93f140b40c40d40e40f41441c42843043843d44245a45b46246345c46448149349b4aa4af4b44bc4c44c94d14e352c5315395826d16d975358758ca4ca516166176187ce7cfa61a8ca91a96aa3ab9b06b97b9cba5d24d2ed62d6ad72d77d7cd81d8ad92d9cda6db0dbbdc8aaedd9dde1c04ff

(z2 (trshift 1 j) == np3) || (z2 (trshift 1 j) == b)
de3
dea
z2 (trshift 1 j) == np2 -> (z2 (trshift 1 j) == np3) || (z2 (trshift 1 j) == b)
dea
z2 (trshift 1 j) == c -> (z2 (trshift 1 j) == np3) || (z2 (trshift 1 j) == b)
de4
dea
z2 (trshift 1 j) != z2 N
df0
dea
df2
de3
dea
z2 (trshift 1 j) != z2p N
de3
de5
157
514214312b13a13b13c15615c16518518a18f19419c1ab1ac1bb1d61de1df1e71ef2bc2c12c82d02d82dd2e62fd30230a32e33833935135235335435535a35f36436937137d38238a3b13b23b33b43b53ba3c33cc3d53dd3e93f140b40c40d40e40f41441c42843043843d44245a45b46246345c46448149349b4aa4af4b44bc4c44c94d14e352c5315395826d16d975358758ca4ca516166176187ce7cfa61a8ca91a96aa3ab9b06b97b9cba5d24d2ed62d6ad72d77d7cd81d8ad92d9cda6db0dbbdc8aaedd9ddede6
i:disk n.+1

i \in E'' :\ N -> z2 i = b
514214312b13a13b13c15615c16518518a18f19419c1ab1ac1bb1d61de1df1e71ef2bc2c12c82d02d82dd2e62fd30230a32e33833935135235335435535a35f36436937137d38238a3b13b23b33b43b53ba3c33cc3d53dd3e93f140b40c40d40e40f41441c42843043843d44245a45b46246345c46448149349b4aa4af4b44bc4c44c94d14e352c5315395826d16d975358758ca4ca516166176187ce7cfa61a8ca91a96aa3ab9b06b97b9cba5d24d2ed62d6ad72d77d7cd81d8ad92d9cda6db0dbbdc8aaedd9ddede6
bsI:forall i : disk n.+1, i \in E'' :\ N -> z2 i = b
157
514214312b13a13b13c15615c16518518a18f19419c1ab1ac1bb1d61de1df1e71ef2bc2c12c82d02d82dd2e62fd30230a32e33833935135235335435535a35f36436937137d38238a3b13b23b33b43b53ba3c33cc3d53dd3e93f140b40c40d40e40f41441c42843043843d44245a45b46246345c46448149349b4aa4af4b44bc4c44c94d14e352c5315395826d16d975358758ca4ca516166176187ce7cfa61a8ca91a96aa3ab9b06b97b9cba5d24d2ed62d6ad72d77d7cd81d8ad92d9cda6db0dbbdc8aaedd9ddede6e05
iDn:i != n
iIE'':i \in E''

z2 i == b
e07
e0e
i < n
514214312b13a13b13c15615c16518518a18f19419c1ab1ac1bb1d61de1df1e71ef2bc2c12c82d02d82dd2e62fd30230a32e33833935135235335435535a35f36436937137d38238a3b13b23b33b43b53ba3c33cc3d53dd3e93f140b40c40d40e40f41441c42843043843d44245a45b46246345c46448149349b4aa4af4b44bc4c44c94d14e352c5315395826d16d975358758ca4ca516166176187ce7cfa61a8ca91a96aa3ab9b06b97b9cba5d24d2ed62d6ad72d77d7cd81d8ad92d9cda6db0dbbdc8aaedd9ddede6e05e0fe10
iLn:i < n
e11
e08
e18
e11
e07
e18
{subset codom ↓[z2] <= [:: np3; b]} -> z2 i == b
e07
e18
↓[z2] (Ordinal (n:=n) (m:=i) iLn) \in [:: np3; b] -> z2 i == b
e07
e18
trshift 1 (Ordinal (n:=n) (m:=i) iLn) = i
e18
(z2 i == np3) || (z2 i == b) -> z2 i == b
e08
e18
e2b
e07
e18
z2 \in u :: g
e07
e09
157
e09
psi (s2f (n:=T) A) <= `d[z2'', x3'']_rmove
514214312b13a13b13c15615c16518518a18f19419c1ab1ac1bb1d61de1df1e71ef2bc2c12c82d02d82dd2e62fd30230a32e33833935135235335435535a35f36436937137d38238a3b13b23b33b43b53ba3c33cc3d53dd3e93f140b40c40d40e40f41441c42843043843d44245a45b46246345c46448149349b4aa4af4b44bc4c44c94d14e352c5315395826d16d975358758ca4ca516166176187ce7cfa61a8ca91a96aa3ab9b06b97b9cba5d24d2ed62d6ad72d77d7cd81d8ad92d9cda6db0dbbdc8aaedd9ddede6e0a
dz2''x3''_leq:psi (s2f (n:=T) A) <= `d[z2'', x3'']_rmove
157
514214312b13a13b13c15615c16518518a18f19419c1ab1ac1bb1d61de1df1e71ef2bc2c12c82d02d82dd2e62fd30230a32e33833935135235335435535a35f36436937137d38238a3b13b23b33b43b53ba3c33cc3d53dd3e93f140b40c40d40e40f41441c42843043843d44245a45b46246345c46448149349b4aa4af4b44bc4c44c94d14e352c5315395826d16d975358758ca4ca516166176187ce7cfa61a8ca91a96aa3ab9b06b97b9cba5d24d2ed62d6ad72d77d7cd81d8ad92d9cda6db0dbbdc8aaedd9ddede6e0a
a1:=x3p T : peg 4:peg 4

e39
e3a
514214312b13a13b13c15615c16518518a18f19419c1ab1ac1bb1d61de1df1e71ef2bc2c12c82d02d82dd2e62fd30230a32e33833935135235335435535a35f36436937137d38238a3b13b23b33b43b53ba3c33cc3d53dd3e93f140b40c40d40e40f41441c42843043843d44245a45b46246345c46448149349b4aa4af4b44bc4c44c94d14e352c5315395826d16d975358758ca4ca516166176187ce7cfa61a8ca91a96aa3ab9b06b97b9cba5d24d2ed62d6ad72d77d7cd81d8ad92d9cda6db0dbbdc8aaedd9ddede6e0ae42
a1Dnp3:a1 != np3

e39
e3a
514214312b13a13b13c15615c16518518a18f19419c1ab1ac1bb1d61de1df1e71ef2bc2c12c82d02d82dd2e62fd30230a32e33833935135235335435535a35f36436937137d38238a3b13b23b33b43b53ba3c33cc3d53dd3e93f140b40c40d40e40f41441c42843043843d44245a45b46246345c46448149349b4aa4af4b44bc4c44c94d14e352c5315395826d16d975358758ca4ca516166176187ce7cfa61a8ca91a96aa3ab9b06b97b9cba5d24d2ed62d6ad72d77d7cd81d8ad92d9cda6db0dbbdc8aaedd9ddede6e0ae42e47c21c22
H2:pp2 != np3
H3:pp2 != a1
H4:pp1 != np3
H5:pp1 != a1
H6:forall p : peg 4, [\/ p = a1, p = np3, p = pp1 | p = pp2]

e39
e3a
e4b
codom x3'' \subset [:: pp1; pp2]
514214312b13a13b13c15615c16518518a18f19419c1ab1ac1bb1d61de1df1e71ef2bc2c12c82d02d82dd2e62fd30230a32e33833935135235335435535a35f36436937137d38238a3b13b23b33b43b53ba3c33cc3d53dd3e93f140b40c40d40e40f41441c42843043843d44245a45b46246345c46448149349b4aa4af4b44bc4c44c94d14e352c5315395826d16d975358758ca4ca516166176187ce7cfa61a8ca91a96aa3ab9b06b97b9cba5d24d2ed62d6ad72d77d7cd81d8ad92d9cda6db0dbbdc8aaedd9ddede6e0ae42e47c21c22e4ce4de4ee4fe50
cH3:codom x3'' \subset [:: pp1; pp2]
e39
e3b
514214312b13a13b13c15615c16518518a18f19419c1ab1ac1bb1d61de1df1e71ef2bc2c12c82d02d82dd2e62fd30230a32e33833935135235335435535a35f36436937137d38238a3b13b23b33b43b53ba3c33cc3d53dd3e93f140b40c40d40e40f41441c42843043843d44245a45b46246345c46448149349b4aa4af4b44bc4c44c94d14e352c5315395826d16d975358758ca4ca516166176187ce7cfa61a8ca91a96aa3ab9b06b97b9cba5d24d2ed62d6ad72d77d7cd81d8ad92d9cda6db0dbbdc8aaedd9ddede6e0ae42e47c21c22e4ce4de4ee4fe501c055b

(x3 (widen_ord (m:=n.+1) tln j) == pp1) || (x3 (widen_ord (m:=n.+1) tln j) == pp2)
e55
e5c
x3 (widen_ord (m:=n.+1) tln j) == a1 -> (x3 (widen_ord (m:=n.+1) tln j) == pp1) || (x3 (widen_ord (m:=n.+1) tln j) == pp2)
e5c
x3 (widen_ord (m:=n.+1) tln j) == np3 -> (x3 (widen_ord (m:=n.+1) tln j) == pp1) || (x3 (widen_ord (m:=n.+1) tln j) == pp2)
e56e3b
e5c
x3 (widen_ord (m:=n.+1) tln j) != a1
e62
e5c
e64
e55
e5c
x3 (widen_ord (m:=n.+1) tln j) != (x3, x3b, x3a).1.1 T
e55
e57
e39
e3a
e3c
157
e3c
psi (s2f (n:=n.+1) E `&` `[T]) <= `d[u'', x0'']_rmove
514214312b13a13b13c15615c16518518a18f19419c1ab1ac1bb1d61de1df1e71ef2bc2c12c82d02d82dd2e62fd30230a32e33833935135235335435535a35f36436937137d38238a3b13b23b33b43b53ba3c33cc3d53dd3e93f140b40c40d40e40f41441c42843043843d44245a45b46246345c46448149349b4aa4af4b44bc4c44c94d14e352c5315395826d16d975358758ca4ca516166176187ce7cfa61a8ca91a96aa3ab9b06b97b9cba5d24d2ed62d6ad72d77d7cd81d8ad92d9cda6db0dbbdc8aaedd9ddede6e0ae3d
du''x0''_leq:psi (s2f (n:=n.+1) E `&` `[T]) <= `d[u'', x0'']_rmove
157
e3c
s2f (n:=n.+1) E `&` `[T] = s2f (n:=T) [set i | u'' i == p0]
e3c
psi (s2f (n:=T) [set i | u'' i == p0]) <= `d[u'', x0'']_rmove
e7b
e3c
e84
e7a
514214312b13a13b13c15615c16518518a18f19419c1ab1ac1bb1d61de1df1e71ef2bc2c12c82d02d82dd2e62fd30230a32e33833935135235335435535a35f36436937137d38238a3b13b23b33b43b53ba3c33cc3d53dd3e93f140b40c40d40e40f41441c42843043843d44245a45b46246345c46448149349b4aa4af4b44bc4c44c94d14e352c5315395826d16d975358758ca4ca516166176187ce7cfa61a8ca91a96aa3ab9b06b97b9cba5d24d2ed62d6ad72d77d7cd81d8ad92d9cda6db0dbbdc8aaedd9ddede6e0ae3d4ec4ed4ee54b4f054c54d

e84
e7a
e8b
codom x0'' \subset [:: pp2; pp3]
514214312b13a13b13c15615c16518518a18f19419c1ab1ac1bb1d61de1df1e71ef2bc2c12c82d02d82dd2e62fd30230a32e33833935135235335435535a35f36436937137d38238a3b13b23b33b43b53ba3c33cc3d53dd3e93f140b40c40d40e40f41441c42843043843d44245a45b46246345c46448149349b4aa4af4b44bc4c44c94d14e352c5315395826d16d975358758ca4ca516166176187ce7cfa61a8ca91a96aa3ab9b06b97b9cba5d24d2ed62d6ad72d77d7cd81d8ad92d9cda6db0dbbdc8aaedd9ddede6e0ae3d4ec4ed4ee54b4f054c54d
cH1:codom x0'' \subset [:: pp2; pp3]
e84
e7b
514214312b13a13b13c15615c16518518a18f19419c1ab1ac1bb1d61de1df1e71ef2bc2c12c82d02d82dd2e62fd30230a32e33833935135235335435535a35f36436937137d38238a3b13b23b33b43b53ba3c33cc3d53dd3e93f140b40c40d40e40f41441c42843043843d44245a45b46246345c46448149349b4aa4af4b44bc4c44c94d14e352c5315395826d16d975358758ca4ca516166176187ce7cfa61a8ca91a96aa3ab9b06b97b9cba5d24d2ed62d6ad72d77d7cd81d8ad92d9cda6db0dbbdc8aaedd9ddede6e0ae3d4ec4ed4ee54b4f054c54d1c055b

(x0 (widen_ord (m:=n.+1) tln j) == pp2) || (x0 (widen_ord (m:=n.+1) tln j) == pp3)
e90
e97
x0 (widen_ord (m:=n.+1) tln j) == x0s T -> (x0 (widen_ord (m:=n.+1) tln j) == pp2) || (x0 (widen_ord (m:=n.+1) tln j) == pp3)
e97
x0 (widen_ord (m:=n.+1) tln j) == p0 -> (x0 (widen_ord (m:=n.+1) tln j) == pp2) || (x0 (widen_ord (m:=n.+1) tln j) == pp3)
e91e7b
e97
x0 (widen_ord (m:=n.+1) tln j) != x0s T
e9d
e97
e9f
e90
e97
x0 (widen_ord (m:=n.+1) tln j) != x0 T
e90
e92
e84
e7a
e7c
157
e7c
psi `[T + K + 1] <= ((psi (s2f (n:=T) A) + psi (s2f (n:=n) B)).+1).*2
514214312b13a13b13c15615c16518518a18f19419c1ab1ac1bb1d61de1df1e71ef2bc2c12c82d02d82dd2e62fd30230a32e33833935135235335435535a35f36436937137d38238a3b13b23b33b43b53ba3c33cc3d53dd3e93f140b40c40d40e40f41441c42843043843d44245a45b46246345c46448149349b4aa4af4b44bc4c44c94d14e352c5315395826d16d975358758ca4ca516166176187ce7cfa61a8ca91a96aa3ab9b06b97b9cba5d24d2ed62d6ad72d77d7cd81d8ad92d9cda6db0dbbdc8aaedd9ddede6e0ae3de7d
psiAB_leq:psi `[T + K + 1] <= ((psi (s2f (n:=T) A) + psi (s2f (n:=n) B)).+1).*2
157
e7c
Ο•((T + K + 1).+1) <= (((psi (s2f (n:=T) A) + psi (s2f (n:=n) B)).+1).*2).*2.+1
eb5
e7c
(T + K + 1).+1 = (T + K).-1.+3
e7c
Ο•((T + K).-1.+3) <= (((psi (s2f (n:=T) A) + psi (s2f (n:=n) B)).+1).*2).*2.+1
eb6
e7c
ec3
eb5
e7c
(T + K).-1 <= #|` s2f (n:=T) A `|` s2f (n:=n) B|
e7c
(T + K).-1 <= #|` s2f (n:=T) A `|` s2f (n:=n) B| -> Ο•((T + K).-1.+3) <= (((psi (s2f (n:=T) A) + psi (s2f (n:=n) B)).+1).*2).*2.+1
eb6
e7c
`[T] `|` s2f (n:=n.+1) (E'' :\ N) `<=` s2f (n:=T) A `|` s2f (n:=n) B
e7c
`[T] `|` s2f (n:=n.+1) (E'' :\ N) `<=` s2f (n:=T) A `|` s2f (n:=n) B -> (T + K).-1 <= #|` s2f (n:=T) A `|` s2f (n:=n) B|
ecceb6
514214312b13a13b13c15615c16518518a18f19419c1ab1ac1bb1d61de1df1e71ef2bc2c12c82d02d82dd2e62fd30230a32e33833935135235335435535a35f36436937137d38238a3b13b23b33b43b53ba3c33cc3d53dd3e93f140b40c40d40e40f41441c42843043843d44245a45b46246345c46448149349b4aa4af4b44bc4c44c94d14e352c5315395826d16d975358758ca4ca516166176187ce7cfa61a8ca91a96aa3ab9b06b97b9cba5d24d2ed62d6ad72d77d7cd81d8ad92d9cda6db0dbbdc8aaedd9ddede6e0ae3de7d
i:nat_choiceType

(i < T) || (i \in s2f (n:=n.+1) (E'' :\ N)) -> i \in s2f (n:=T) A `|` s2f (n:=n) B
ed2
514214312b13a13b13c15615c16518518a18f19419c1ab1ac1bb1d61de1df1e71ef2bc2c12c82d02d82dd2e62fd30230a32e33833935135235335435535a35f36436937137d38238a3b13b23b33b43b53ba3c33cc3d53dd3e93f140b40c40d40e40f41441c42843043843d44245a45b46246345c46448149349b4aa4af4b44bc4c44c94d14e352c5315395826d16d975358758ca4ca516166176187ce7cfa61a8ca91a96aa3ab9b06b97b9cba5d24d2ed62d6ad72d77d7cd81d8ad92d9cda6db0dbbdc8aaedd9ddede6e0ae3de7ded9
iIEN:i \in s2f (n:=n.+1) (E'' :\ N)

i \in s2f (n:=T) A `|` s2f (n:=n) B
514214312b13a13b13c15615c16518518a18f19419c1ab1ac1bb1d61de1df1e71ef2bc2c12c82d02d82dd2e62fd30230a32e33833935135235335435535a35f36436937137d38238a3b13b23b33b43b53ba3c33cc3d53dd3e93f140b40c40d40e40f41441c42843043843d44245a45b46246345c46448149349b4aa4af4b44bc4c44c94d14e352c5315395826d16d975358758ca4ca516166176187ce7cfa61a8ca91a96aa3ab9b06b97b9cba5d24d2ed62d6ad72d77d7cd81d8ad92d9cda6db0dbbdc8aaedd9ddede6e0ae3de7ded9
iLT:i < T
ee0
ed3ecceb6
ede
e15
514214312b13a13b13c15615c16518518a18f19419c1ab1ac1bb1d61de1df1e71ef2bc2c12c82d02d82dd2e62fd30230a32e33833935135235335435535a35f36436937137d38238a3b13b23b33b43b53ba3c33cc3d53dd3e93f140b40c40d40e40f41441c42843043843d44245a45b46246345c46448149349b4aa4af4b44bc4c44c94d14e352c5315395826d16d975358758ca4ca516166176187ce7cfa61a8ca91a96aa3ab9b06b97b9cba5d24d2ed62d6ad72d77d7cd81d8ad92d9cda6db0dbbdc8aaedd9ddede6e0ae3de7ded9edfe19
ee0
ee2ed3ecceb6
ed8
(i != n) && (i \in s2f (n:=n.+1) E'') -> i < n
ee8
514214312b13a13b13c15615c16518518a18f19419c1ab1ac1bb1d61de1df1e71ef2bc2c12c82d02d82dd2e62fd30230a32e33833935135235335435535a35f36436937137d38238a3b13b23b33b43b53ba3c33cc3d53dd3e93f140b40c40d40e40f41441c42843043843d44245a45b46246345c46448149349b4aa4af4b44bc4c44c94d14e352c5315395826d16d975358758ca4ca516166176187ce7cfa61a8ca91a96aa3ab9b06b97b9cba5d24d2ed62d6ad72d77d7cd81d8ad92d9cda6db0dbbdc8aaedd9ddede6e0ae3de7ded9e0f
j:'I_n.+1
iEj:i = j

e15
ee8
eea
ee0
ee1
eea
i \in s2f (n:=n) B
ee1
eea
z2 (trshift 1 (Ordinal (n:=n) (m:=i) iLn)) = b
ee1
ee3
ee0
ed2
514214312b13a13b13c15615c16518518a18f19419c1ab1ac1bb1d61de1df1e71ef2bc2c12c82d02d82dd2e62fd30230a32e33833935135235335435535a35f36436937137d38238a3b13b23b33b43b53ba3c33cc3d53dd3e93f140b40c40d40e40f41441c42843043843d44245a45b46246345c46448149349b4aa4af4b44bc4c44c94d14e352c5315395826d16d975358758ca4ca516166176187ce7cfa61a8ca91a96aa3ab9b06b97b9cba5d24d2ed62d6ad72d77d7cd81d8ad92d9cda6db0dbbdc8aaedd9ddede6e0ae3de7ded9ee4e19

ee0
ed2
f06
↓[z2] (Ordinal (n:=n) (m:=i) iLn) \in [:: np3; b] -> i \in s2f (n:=T) A `|` s2f (n:=n) B
ed2
f06
(z2 (trshift 1 (Ordinal (n:=n) (m:=i) iLn)) == np3) || (z2 (trshift 1 (Ordinal (n:=n) (m:=i) iLn)) == b) -> (i \in s2f (n:=T) A) || (i \in s2f (n:=n) B)
ed2
f06
(z2 (trshift 1 (Ordinal (n:=n) (m:=i) iLn)) == np3) || (z2 (trshift 1 (Ordinal (n:=n) (m:=i) iLn)) == b) -> (i \in s2f (n:=T) A) || (z2 (trshift 1 (Ordinal (n:=n) (m:=i) iLn)) == b)
ed2
f06
(z2 (trshift 1 (Ordinal (n:=n) (m:=i) iLn)) == np3) || (z2 (trshift 1 (Ordinal (n:=n) (m:=i) iLn)) == b) -> (z2 (widen_ord (m:=n.+1) tln (Ordinal (n:=T) (m:=i) iLT)) == np3) || (z2 (trshift 1 (Ordinal (n:=n) (m:=i) iLn)) == b)
ed2
f06
trshift 1 (Ordinal (n:=n) (m:=i) iLn) = widen_ord (m:=n.+1) tln (Ordinal (n:=T) (m:=i) iLT)
ed2
e7c
ed4
ecb
e7c
(T + K).-1 <= #|` `[T] `|` s2f (n:=n.+1) (E'' :\ N)|
ecb
e7c
(T + K).-1 <= #|` `[T] `|` s2f (n:=n.+1) (E'' :\ N)| + 0
ecb
e7c
(T + K).-1 <= #|` `[T] `|` s2f (n:=n.+1) (E'' :\ N)| + #|` `[T] `&` s2f (n:=n.+1) (E'' :\ N)|
e7c
#|` `[T] `&` s2f (n:=n.+1) (E'' :\ N)| = 0
ecceb6
e7c
(T + ((N \in E'') + #|E'' :\ N|)).-1 <= T + #|E'' :\ N|
f2a
e7c
f2c
ecb
ed8
(i \in `[T] `&` s2f (n:=n.+1) (E'' :\ N)) = (i \in fset0)
ecb
514214312b13a13b13c15615c16518518a18f19419c1ab1ac1bb1d61de1df1e71ef2bc2c12c82d02d82dd2e62fd30230a32e33833935135235335435535a35f36436937137d38238a3b13b23b33b43b53ba3c33cc3d53dd3e93f140b40c40d40e40f41441c42843043843d44245a45b46246345c46448149349b4aa4af4b44bc4c44c94d14e352c5315395826d16d975358758ca4ca516166176187ce7cfa61a8ca91a96aa3ab9b06b97b9cba5d24d2ed62d6ad72d77d7cd81d8ad92d9cda6db0dbbdc8aaedd9ddede6e0ae3de7ded9ee4
j:ordinal_choiceType n.+1

j \in E'' :\ N -> i = j -> False
ecb
514214312b13a13b13c15615c16518518a18f19419c1ab1ac1bb1d61de1df1e71ef2bc2c12c82d02d82dd2e62fd30230a32e33833935135235335435535a35f36436937137d38238a3b13b23b33b43b53ba3c33cc3d53dd3e93f140b40c40d40e40f41441c42843043843d44245a45b46246345c46448149349b4aa4af4b44bc4c44c94d14e352c5315395826d16d975358758ca4ca516166176187ce7cfa61a8ca91a96aa3ab9b06b97b9cba5d24d2ed62d6ad72d77d7cd81d8ad92d9cda6db0dbbdc8aaedd9ddede6e0ae3de7ded9ee4f3c
TLj:T < j
ef4

214
ecb
e7c
ecd
eb5
e7c
Ο•(#|` s2f (n:=T) A `|` s2f (n:=n) B|.+3) <= (((psi (s2f (n:=T) A) + psi (s2f (n:=n) B)).+1).*2).*2.+1
eb5
e7c
Ο•(#|` s2f (n:=T) A `|` s2f (n:=n) B|.+3) <= ((psi (s2f (n:=T) A) + psi (s2f (n:=n) B)).*2).*2 + 5
eb5
eb7
157
eb7
psi (s2f (n:=n.+1) E `&` `[T]) + psi (s2f (n:=T) A) + 2 ^ K.-1 < `d[u, z2]_rmove
514214312b13a13b13c15615c16518518a18f19419c1ab1ac1bb1d61de1df1e71ef2bc2c12c82d02d82dd2e62fd30230a32e33833935135235335435535a35f36436937137d38238a3b13b23b33b43b53ba3c33cc3d53dd3e93f140b40c40d40e40f41441c42843043843d44245a45b46246345c46448149349b4aa4af4b44bc4c44c94d14e352c5315395826d16d975358758ca4ca516166176187ce7cfa61a8ca91a96aa3ab9b06b97b9cba5d24d2ed62d6ad72d77d7cd81d8ad92d9cda6db0dbbdc8aaedd9ddede6e0ae3de7deb8
duz2_leq:psi (s2f (n:=n.+1) E `&` `[T]) + psi (s2f (n:=T) A) + 2 ^ K.-1 < `d[u, z2]_rmove
157
eb7
gpath rmove u (last u (z0sb ++ rcons (behead (rcons z2b z2p)) z2)) (z0sb ++ rcons (behead (rcons z2b z2p)) z2) -> psi (s2f (n:=n.+1) E `&` `[T]) + psi (s2f (n:=T) A) + 2 ^ K.-1 < `d[u, z2]_rmove
f55
514214312b13a13b13c15615c16518518a18f19419c1ab1ac1bb1d61de1df1e71ef2bc2c12c82d02d82dd2e62fd30230a32e33833935135235335435535a35f36436937137d38238a3b13b23b33b43b53ba3c33cc3d53dd3e93f140b40c40d40e40f41441c42843043843d44245a45b46246345c46448149349b4aa4af4b44bc4c44c94d14e352c5315395826d16d975358758ca4ca516166176187ce7cfa61a8ca91a96aa3ab9b06b97b9cba5d24d2ed62d6ad72d77d7cd81d8ad92d9cda6db0dbbdc8aaedd9ddede6e0ae3de7deb8
gH1:gpath rmove u z2 (z0sb ++ rcons (behead (rcons z2b z2p)) z2)

f54
f55
f60
94e
f60
psi (s2f (n:=n.+1) E `&` `[T]) + psi (s2f (n:=T) A) + 2 ^ K.-1 < size `dup[ `cut[ tln, u], [seq `cut[ tln, i] | i <- z0sb ++ rcons (behead (rcons z2b z2p)) z2]] + size `dup[ `tuc[ tln, u], [seq `tuc[ tln, i] | i <- z0sb ++ rcons (behead (rcons z2b z2p)) z2]]
f56
f60
f67
f55
f60
psi (s2f (n:=n.+1) E `&` `[T]) + psi (s2f (n:=T) A) <= size `dup[ `cut[ tln, u], [seq `cut[ tln, i] | i <- z0sb ++ rcons (behead (rcons z2b z2p)) z2]]
f60
2 ^ K.-1 < size `dup[ `tuc[ tln, u], [seq `tuc[ tln, i] | i <- z0sb ++ rcons (behead (rcons z2b z2p)) z2]]
f56
f60
x0sb ++ (x3, x3b, x3a).1.2 ++ (x3, x3b, x3a).1.1 :: zz ++ z2 :: z2a = z0sb ++ behead (rcons z2b z2p) ++ z2 :: z2a -> psi (s2f (n:=n.+1) E `&` `[T]) + psi (s2f (n:=T) A) <= size `dup[ `cut[ tln, u], [seq `cut[ tln, i] | i <- z0sb ++ rcons (behead (rcons z2b z2p)) z2]]
f6f
f60
psi (s2f (n:=n.+1) E `&` `[T]) + psi (s2f (n:=T) A) <= size `dup[ `cut[ tln, u], [seq `cut[ tln, i] | i <- rcons ((x0sb ++ (x3, x3b, x3a).1.2) ++ (x3, x3b, x3a).1.1 :: zz) z2]]
f6f
f60
psi (s2f (n:=n.+1) E `&` `[T]) + psi (s2f (n:=T) A) <= size `dup[ `cut[ tln, u], [seq `cut[ tln, i] | i <- x0sb]] + (size `dup[ last `cut[ tln, u] [seq `cut[ tln, i] | i <- x0sb], [seq `cut[ tln, i] | i <- (x3, x3b, x3a).1.2]] + size `dup[ last `cut[ tln, u] ([seq `cut[ tln, i] | i <- x0sb] ++ [seq `cut[ tln, i] | i <- (x3, x3b, x3a).1.2]), [seq `cut[ tln, i] | i <- rcons ((x3, x3b, x3a).1.1 :: zz) z2]])
f6f
f60
psi (s2f (n:=n.+1) E `&` `[T]) <= size `dup[ `cut[ tln, u], [seq `cut[ tln, i] | i <- x0sb]]
f60
psi (s2f (n:=T) A) <= size `dup[ last `cut[ tln, u] [seq `cut[ tln, i] | i <- x0sb], [seq `cut[ tln, i] | i <- (x3, x3b, x3a).1.2]] + size `dup[ last `cut[ tln, u] ([seq `cut[ tln, i] | i <- x0sb] ++ [seq `cut[ tln, i] | i <- (x3, x3b, x3a).1.2]), [seq `cut[ tln, i] | i <- rcons ((x3, x3b, x3a).1.1 :: zz) z2]]
f70f56
514214312b13a13b13c15615c16518518a18f19419c1ab1ac1bb1d61de1df1e71ef2bc2c12c82d02d82dd2e62fd30230a32e33833935135235335435535a35f36436937137d38238a3b13b23b33b43b53ba3c33cc3d53dd3e93f140b40c40d40e40f41441c42843043843d44245a45b46246345c46448149349b4aa4af4b44bc4c44c94d14e352c5315395826d16d975358758ca4ca516166176187ce7cfa61a8ca91a96aa3ab9b06b97b9cba5d24d2ed62d6ad72d77d7cd81d8ad92d9cda6db0dbbdc8aaedd9ddede6e0ae3deb8f61

`d[u'', x0'']_rmove <= size `dup[ `cut[ tln, u], [seq `cut[ tln, i] | i <- x0sb]]
f82
f88
path rmove u'' `dup[ `cut[ tln, u], [seq `cut[ tln, i] | i <- x0sb]]
f88
last u'' `dup[ `cut[ tln, u], [seq `cut[ tln, i] | i <- x0sb]] = x0''
f83f70f56
f88
path (move (q:=4) (rrel (n:=4))) u x0sb
f8e
f88
f90
f82
f60
f84
f6f
f60
psi (s2f (n:=T) A) <= size `dup[ last `cut[ tln, u] ([seq `cut[ tln, i] | i <- x0sb] ++ [seq `cut[ tln, i] | i <- (x3, x3b, x3a).1.2]), [seq `cut[ tln, i] | i <- rcons ((x3, x3b, x3a).1.1 :: zz) z2]]
f6f
514214312b13a13b13c15615c16518518a18f19419c1ab1ac1bb1d61de1df1e71ef2bc2c12c82d02d82dd2e62fd30230a32e33833935135235335435535a35f36436937137d38238a3b13b23b33b43b53ba3c33cc3d53dd3e93f140b40c40d40e40f41441c42843043843d44245a45b46246345c46448149349b4aa4af4b44bc4c44c94d14e352c5315395826d16d975358758ca4ca516166176187ce7cfa61a8ca91a96aa3ab9b06b97b9cba5d24d2ed62d6ad72d77d7cd81d8ad92d9cda6db0dbbdc8aaedd9ddede6e0ae7deb8f61

`d[z2'', x3'']_rmove <= size `dup[ last `cut[ tln, u] ([seq `cut[ tln, i] | i <- x0sb] ++ [seq `cut[ tln, i] | i <- (x3, x3b, x3a).1.2]), [seq `cut[ tln, i] | i <- rcons ((x3, x3b, x3a).1.1 :: zz) z2]]
f6f
fa2
`d[z2'', x3'']_rmove <= size `dup[ last `cut[ tln, u] ([seq `cut[ tln, i] | i <- x0sb] ++ [seq `cut[ tln, i] | i <- (x3, x3b, x3a).1.2]), `cut[ tln, x3] :: [seq `cut[ tln, i] | i <- rcons zz z2]]
f6f
fa2
`d[z2'', x3'']_rmove <= size `dup[ `cut[ tln, x3], [seq `cut[ tln, i] | i <- rcons zz z2]]
f6f
fa2
`d[x3'', z2'']_rmove <= size `dup[ `cut[ tln, x3], [seq `cut[ tln, i] | i <- rcons zz z2]]
f6f
fa2
path rmove x3'' `dup[ `cut[ tln, x3], [seq `cut[ tln, i] | i <- rcons zz z2]]
fa2
last x3'' `dup[ `cut[ tln, x3], [seq `cut[ tln, i] | i <- rcons zz z2]] = z2''
f70f56
fa2
path (move (q:=4) (rrel (n:=4))) x3 (rcons zz z2)
fb4
fa2
fb6
f6f
f60
f71
f55
f60
gpath rmove u (last u (z0sb ++ rcons (behead (rcons z2b z2p)) z2)) (z0sb ++ rcons (behead (rcons z2b z2p)) z2) -> 2 ^ K.-1 < size `dup[ `tuc[ tln, u], [seq `tuc[ tln, i] | i <- z0sb ++ rcons (behead (rcons z2b z2p)) z2]]
f55
514214312b13a13b13c15615c16518518a18f19419c1ab1ac1bb1d61de1df1e71ef2bc2c12c82d02d82dd2e62fd30230a32e33833935135235335435535a35f36436937137d38238a3b13b23b33b43b53ba3c33cc3d53dd3e93f140b40c40d40e40f41441c42843043843d44245a45b46246345c46448149349b4aa4af4b44bc4c44c94d14e352c5315395826d16d975358758ca4ca516166176187ce7cfa61a8ca91a96aa3ab9b06b97b9cba5d24d2ed62d6ad72d77d7cd81d8ad92d9cda6db0dbbdc8aaedd9ddede6e0ae3de7deb8
gH1, gHuz2:gpath rmove u z2 (z0sb ++ rcons (behead (rcons z2b z2p)) z2)

f71
f55
514214312b13a13b13c15615c16518518a18f19419c1ab1ac1bb1d61de1df1e71ef2bc2c12c82d02d82dd2e62fd30230a32e33833935135235335435535a35f36436937137d38238a3b13b23b33b43b53ba3c33cc3d53dd3e93f140b40c40d40e40f41441c42843043843d44245a45b46246345c46448149349b4aa4af4b44bc4c44c94d14e352c5315395826d16d975358758ca4ca516166176187ce7cfa61a8ca91a96aa3ab9b06b97b9cba5d24d2ed62d6ad72d77d7cd81d8ad92d9cda6db0dbbdc8aaedd9ddede6e0ae3de7deb8fc9
Puz2:path (move (q:=4) (rrel (n:=4))) `tuc[ tln, u] `dup[ `tuc[ tln, u], [seq `tuc[ tln, i] | i <- z0sb ++ rcons (behead (rcons z2b z2p)) z2]]

f71
f55
514214312b13a13b13c15615c16518518a18f19419c1ab1ac1bb1d61de1df1e71ef2bc2c12c82d02d82dd2e62fd30230a32e33833935135235335435535a35f36436937137d38238a3b13b23b33b43b53ba3c33cc3d53dd3e93f140b40c40d40e40f41441c42843043843d44245a45b46246345c46448149349b4aa4af4b44bc4c44c94d14e352c5315395826d16d975358758ca4ca516166176187ce7cfa61a8ca91a96aa3ab9b06b97b9cba5d24d2ed62d6ad72d77d7cd81d8ad92d9cda6db0dbbdc8aaedd9ddede6e0ae3de7deb8fc9fce
oLn:0 < n.+1 - T

f71
f55
fd2
1 + 2 ^ K.-1 <= size `dup[ `cut[ oLn, `tuc[ tln, u]], [seq `cut[ oLn, i] | i <- `dup[ `tuc[ tln, u], [seq `tuc[ tln, i] | i <- z0sb ++ rcons (behead (rcons z2b z2p)) z2]]]] + size `dup[ `tuc[ oLn, `tuc[ tln, u]], [seq `tuc[ oLn, i] | i <- `dup[ `tuc[ tln, u], [seq `tuc[ tln, i] | i <- z0sb ++ rcons (behead (rcons z2b z2p)) z2]]]]
f55
514214312b13a13b13c15615c16518518a18f19419c1ab1ac1bb1d61de1df1e71ef2bc2c12c82d02d82dd2e62fd30230a32e33833935135235335435535a35f36436937137d38238a3b13b23b33b43b53ba3c33cc3d53dd3e93f140b40c40d40e40f41441c42843043843d44245a45b46246345c46448149349b4aa4af4b44bc4c44c94d14e352c5315395826d16d975358758ca4ca516166176187ce7cfa61a8ca91a96aa3ab9b06b97b9cba5d24d2ed62d6ad72d77d7cd81d8ad92d9cda6db0dbbdc8aaedd9ddede6e0ae3de7deb8fc9fcefd3
Puz3:path (move (q:=4) (rrel (n:=4))) `tuc[ oLn, `tuc[ tln, u]] `dup[ `tuc[ oLn, `tuc[ tln, u]], [seq `tuc[ oLn, i] | i <- `dup[ `tuc[ tln, u], [seq `tuc[ tln, i] | i <- z0sb ++ rcons (behead (rcons z2b z2p)) z2]]]]

fd7
f55
fdb
0 < size `dup[ `cut[ oLn, `tuc[ tln, u]], [seq `cut[ oLn, i] | i <- `dup[ `tuc[ tln, u], [seq `tuc[ tln, i] | i <- z0sb ++ rcons (behead (rcons z2b z2p)) z2]]]]
fdb
2 ^ K.-1 <= size `dup[ `tuc[ oLn, `tuc[ tln, u]], [seq `tuc[ oLn, i] | i <- `dup[ `tuc[ tln, u], [seq `tuc[ tln, i] | i <- z0sb ++ rcons (behead (rcons z2b z2p)) z2]]]]
f56
514214312b13a13b13c15615c16518518a18f19419c1ab1ac1bb1d61de1df1e71ef2bc2c12c82d02d82dd2e62fd30230a32e33833935135235335435a35f36436937137d38238a3b13b23b33b43b53ba3c33cc3d53dd3e93f140b40c40d40e40f41441c42843043843d44245a45b46246345c46448149349b4aa4af4b44bc4c44c94d14e352c5315395826d16d975358758ca4ca516166176187ce7cfa61a8ca91a96aa3ab9b06b97b9cba5d24d2ed62d6ad72d77d7cd81d8ad92d9cda6db0dbbdc8aaedd9ddede6e0ae3de7deb8fc9fcefd3fdc

(z0sb ++ rcons (behead (rcons z2b z2p)) z2) ++ z2a = ((x0sb ++ rcons (x3, x3b, x3a).1.2 (x3, x3b, x3a).1.1) ++ rcons zz z2) ++ z2a -> 0 < size `dup[ `cut[ oLn, `tuc[ tln, u]], [seq `cut[ oLn, i] | i <- `dup[ `tuc[ tln, u], [seq `tuc[ tln, i] | i <- z0sb ++ rcons (behead (rcons z2b z2p)) z2]]]]
fe1
fe7
0 < size `dup[ `cut[ oLn, `tuc[ tln, u]], [seq `cut[ oLn, i] | i <- `dup[ `tuc[ tln, u], [seq `tuc[ tln, i] | i <- (x0sb ++ rcons (x3, x3b, x3a).1.2 (x3, x3b, x3a).1.1) ++ rcons zz z2]]]]
fe1
514214312b13a13b13c15615c16518518a18f19419c1ab1ac1bb1d61de1df1e71ef2bc2c12c82d02d82dd2e62fd30230a32e33833935135235335435a35f36436937137d38238a3b13b23b33b43b53ba3c33cc3d53dd3e93f140b40c40d40e40f41441c42843043843d44245a45b46246345c46448149349b4aa4af4b44bc4c44c94d14e352c5315395826d16d975358758ca4ca516166176187ce7cfa61a8ca91a96aa3ab9b06b97b9cba5d24d2ed62d6ad72d77d7cd81d8ad92d9cda6db0dbbdc8aaedd9ddede6e0ae3de7deb8fc9fcefd3fdc
cc:=`dup[ `cut[ oLn, `tuc[ tln, u]], [seq `cut[ oLn, i] | i <- `dup[ `tuc[ tln, u], [seq `tuc[ tln, i] | i <- (x0sb ++ rcons (x3, x3b, x3a).1.2 (x3, x3b, x3a).1.1) ++ rcons zz z2]]]]:seq (finfun_eqType (ordinal_finType 1) (ordinal_eqType 4))

0 < size cc
fe1
ff0
`cut[ oLn, `tuc[ tln, x3]] \in cc
fe1
ff0
`cut[ oLn, `tuc[ tln, x3]] != `cut[ oLn, `tuc[ tln, u]]
ff0
`cut[ oLn, `tuc[ tln, x3]] \in [seq `cut[ oLn, i] | i <- `dup[ `tuc[ tln, u], [seq `tuc[ tln, i] | i <- (x0sb ++ rcons (x3, x3b, x3a).1.2 (x3, x3b, x3a).1.1) ++ rcons zz z2]]]
fe2f56
ff0
x3 (tuc_ord (n:=n.+1) (t:=T) tln (widen_ord (m:=n.+1 - T) oLn ord0)) = u (tuc_ord (n:=n.+1) (t:=T) tln (widen_ord (m:=n.+1 - T) oLn ord0)) -> False
ffb
ff0
x3 T != u T
ffb
ff0
`cut[ oLn, `tuc[ tln, x3]] \in [seq `cut[ oLn, i] | i <- `dup[ `tuc[ tln, u], [seq `tuc[ tln, i] | i <- (x0sb ++ rcons (x3, x3b, x3a).1.2 (x3, x3b, x3a).1.1) ++ rcons zz z2]]]
fe1
ff0
`tuc[ tln, x3] \in [seq `tuc[ tln, i] | i <- (x0sb ++ rcons (x3, x3b, x3a).1.2 (x3, x3b, x3a).1.1) ++ rcons zz z2]
ff0
`tuc[ tln, x3] != `tuc[ tln, u]
fe2f56
ff0
1010
fe1
514214312b13a13b13c15615c16518518a18f19419c1ab1ac1bb1d61de1df1e71ef2bc2c12c82d02d82dd2e62fd30230a32e33833935135235335435a35f36436937137d38238a3b13b23b33b43b53ba3c33cc3d53dd3e93f140b40c40d40e40f41441c42843043843d44245a45b46246345c46448149349b4aa4af4b44bc4c44c94d14e352c5315395826d16d975358758ca4ca516166176187ce7cfa61a8ca91a96aa3ab9b06b97b9cba5d24d2ed62d6ad72d77d7cd81d8ad92d9cda6db0dbbdc8aaedd9ddede6e0ae3de7deb8fc9fcefd3fdcff1
onT:0 < n.+1 - T

1010
fe1
1017
x3 (tuc_ord (n:=n.+1) (t:=T) tln (Ordinal (n:=n.+1 - T) (m:=0) onT)) = u (tuc_ord (n:=n.+1) (t:=T) tln (Ordinal (n:=n.+1 - T) (m:=0) onT)) -> False
fe1
1017
1005
fe1
fdb
2 ^ K.-1 <= size `dup[ `tuc[ oLn, `tuc[ tln, u]], [seq `tuc[ oLn, i] | i <- `dup[ `tuc[ tln, u], [seq `tuc[ tln, i] | i <- z0sb ++ rcons (behead (rcons z2b z2p)) z2]]]]
f55
fdb
(n - T).-1 <= n.+1 - T - 1
514214312b13a13b13c15615c16518518a18f19419c1ab1ac1bb1d61de1df1e71ef2bc2c12c82d02d82dd2e62fd30230a32e33833935135235335435535a35f36436937137d38238a3b13b23b33b43b53ba3c33cc3d53dd3e93f140b40c40d40e40f41441c42843043843d44245a45b46246345c46448149349b4aa4af4b44bc4c44c94d14e352c5315395826d16d975358758ca4ca516166176187ce7cfa61a8ca91a96aa3ab9b06b97b9cba5d24d2ed62d6ad72d77d7cd81d8ad92d9cda6db0dbbdc8aaedd9ddede6e0ae3de7deb8fc9fcefd3fdc
nTLnT:(n - T).-1 <= n.+1 - T - 1
fe3
f56
102a
1023
f55
102a
2 ^ K.-1 <= size `dup[ `cut[ nTLnT, `tuc[ oLn, `tuc[ tln, u]]], [seq `cut[ nTLnT, i] | i <- `dup[ `tuc[ oLn, `tuc[ tln, u]], [seq `tuc[ oLn, i] | i <- `dup[ `tuc[ tln, u], [seq `tuc[ tln, i] | i <- z0sb ++ rcons (behead (rcons z2b z2p)) z2]]]]]] + size `dup[ `tuc[ nTLnT, `tuc[ oLn, `tuc[ tln, u]]], [seq `tuc[ nTLnT, i] | i <- `dup[ `tuc[ oLn, `tuc[ tln, u]], [seq `tuc[ oLn, i] | i <- `dup[ `tuc[ tln, u], [seq `tuc[ tln, i] | i <- z0sb ++ rcons (behead (rcons z2b z2p)) z2]]]]]]
f55
102a
(2 ^ K.-1).-1 + 1 <= size `dup[ `cut[ nTLnT, `tuc[ oLn, `tuc[ tln, u]]], [seq `cut[ nTLnT, i] | i <- `dup[ `tuc[ oLn, `tuc[ tln, u]], [seq `tuc[ oLn, i] | i <- `dup[ `tuc[ tln, u], [seq `tuc[ tln, i] | i <- z0sb ++ rcons (behead (rcons z2b z2p)) z2]]]]]] + size `dup[ `tuc[ nTLnT, `tuc[ oLn, `tuc[ tln, u]]], [seq `tuc[ nTLnT, i] | i <- `dup[ `tuc[ oLn, `tuc[ tln, u]], [seq `tuc[ oLn, i] | i <- `dup[ `tuc[ tln, u], [seq `tuc[ tln, i] | i <- z0sb ++ rcons (behead (rcons z2b z2p)) z2]]]]]]
f55
102a
0 < size `dup[ `tuc[ nTLnT, `tuc[ oLn, `tuc[ tln, u]]], [seq `tuc[ nTLnT, i] | i <- `dup[ `tuc[ oLn, `tuc[ tln, u]], [seq `tuc[ oLn, i] | i <- `dup[ `tuc[ tln, u], [seq `tuc[ tln, i] | i <- z0sb ++ rcons (behead (rcons z2b z2p)) z2]]]]]]
102a
(2 ^ K.-1).-1 <= size `dup[ `cut[ nTLnT, `tuc[ oLn, `tuc[ tln, u]]], [seq `cut[ nTLnT, i] | i <- `dup[ `tuc[ oLn, `tuc[ tln, u]], [seq `tuc[ oLn, i] | i <- `dup[ `tuc[ tln, u], [seq `tuc[ tln, i] | i <- z0sb ++ rcons (behead (rcons z2b z2p)) z2]]]]]]
f56
514214312b13a13b13c15615c16518518a18f19419c1ab1ac1bb1d61de1df1e71ef2bc2c12c82d02d82dd2e62fd30230a32e33833935135235335435535a35f36436937137d38238a3b13b23b33b43b53ba3c33cc3d53dd3e93f140b40c40d40e40f41441c42843043843d44245a45b46246345c46448149349b4aa4af4b44bc4c44c94d14e352c5315395826d16d975358758ca4ca516166176187ce7cfa61a8ca91a96aa3ab9b06b97b9cba5d24d2ed62d6ad72d77d7cd81d8ad92d9cda6db0dbbdc8aaedd9ddede6e0ae3de7deb8fc9fcefd3fdc102b
cc:=`dup[ `tuc[ nTLnT, `tuc[ oLn, `tuc[ tln, u]]], [seq `tuc[ nTLnT, i] | i <- `dup[ `tuc[ oLn, `tuc[ tln, u]], [seq `tuc[ oLn, i] | i <- `dup[ `tuc[ tln, u], [seq `tuc[ tln, i] | i <- z0sb ++ rcons (behead (rcons z2b z2p)) z2]]]]]]:seq (finfun_eqType (ordinal_finType (n.+1 - T - 1 - (n - T).-1)) (ordinal_eqType 4))

ff2
103b
1041
`tuc[ nTLnT, `tuc[ oLn, `tuc[ tln, z2]]] \in cc
103b
1041
`tuc[ nTLnT, `tuc[ oLn, `tuc[ tln, z2]]] != `tuc[ nTLnT, `tuc[ oLn, `tuc[ tln, u]]]
1041
`tuc[ nTLnT, `tuc[ oLn, `tuc[ tln, z2]]] \in [seq `tuc[ nTLnT, i] | i <- `dup[ `tuc[ oLn, `tuc[ tln, u]], [seq `tuc[ oLn, i] | i <- `dup[ `tuc[ tln, u], [seq `tuc[ tln, i] | i <- z0sb ++ rcons (behead (rcons z2b z2p)) z2]]]]]
103cf56
1041
0 < n.+1 - T - 1 - (n - T).-1
514214312b13a13b13c15615c16518518a18f19419c1ab1ac1bb1d61de1df1e71ef2bc2c12c82d02d82dd2e62fd30230a32e33833935135235335435535a35f36436937137d38238a3b13b23b33b43b53ba3c33cc3d53dd3e93f140b40c40d40e40f41441c42843043843d44245a45b46246345c46448149349b4aa4af4b44bc4c44c94d14e352c5315395826d16d975358758ca4ca516166176187ce7cfa61a8ca91a96aa3ab9b06b97b9cba5d24d2ed62d6ad72d77d7cd81d8ad92d9cda6db0dbbdc8aaedd9ddede6e0ae3de7deb8fc9fcefd3fdc102b1042
oLn1:0 < n.+1 - T - 1 - (n - T).-1
104a
104c103cf56
1041
0 < (n - T).+1 - (n - T).-1.+1
1052
1041
0 < (n - T).+1 - (n - T)
1052
1054
104a
104b
1054
z2 (tuc_ord (n:=n.+1) (t:=T) tln (tuc_ord (n:=n.+1 - T) (t:=1) oLn (tuc_ord (n:=n.+1 - T - 1) (t:=(n - T).-1) nTLnT (Ordinal (n:=n.+1 - T - 1 - (n - T).-1) (m:=0) oLn1)))) = u (tuc_ord (n:=n.+1) (t:=T) tln (tuc_ord (n:=n.+1 - T) (t:=1) oLn (tuc_ord (n:=n.+1 - T - 1) (t:=(n - T).-1) nTLnT (Ordinal (n:=n.+1 - T - 1 - (n - T).-1) (m:=0) oLn1)))) -> False
104b
1054
tuc_ord (n:=n.+1) (t:=T) tln (tuc_ord (n:=n.+1 - T) (t:=1) oLn (tuc_ord (n:=n.+1 - T - 1) (t:=(n - T).-1) nTLnT (Ordinal (n:=n.+1 - T - 1 - (n - T).-1) (m:=0) oLn1))) = N
1054
z2 N != u N
104c103cf56
1054
T <= n
1054
0 < n - T
106a104c103cf56
1054
1072
1069
1054
106b
104b
1041
`tuc[ nTLnT, `tuc[ oLn, `tuc[ tln, z2]]] \in [seq `tuc[ nTLnT, i] | i <- `dup[ `tuc[ oLn, `tuc[ tln, u]], [seq `tuc[ oLn, i] | i <- `dup[ `tuc[ tln, u], [seq `tuc[ tln, i] | i <- z0sb ++ rcons (behead (rcons z2b z2p)) z2]]]]]
103b
1041
`tuc[ oLn, `tuc[ tln, z2]] \in [seq `tuc[ oLn, i] | i <- `dup[ `tuc[ tln, u], [seq `tuc[ tln, i] | i <- z0sb ++ rcons (behead (rcons z2b z2p)) z2]]]
1041
`tuc[ oLn, `tuc[ tln, z2]] != `tuc[ oLn, `tuc[ tln, u]]
103cf56
1041
`tuc[ tln, z2] \in [seq `tuc[ tln, i] | i <- z0sb ++ rcons (behead (rcons z2b z2p)) z2]
1041
`tuc[ tln, z2] != `tuc[ tln, u]
1082103cf56
1041
108a
1081
514214312b13a13b13c15615c16518518a18f19419c1ab1ac1bb1d61de1df1e71ef2bc2c12c82d02d82dd2e62fd30230a32e33833935135235335435535a35f36436937137d38238a3b13b23b33b43b53ba3c33cc3d53dd3e93f140b40c40d40e40f41441c42843043843d44245a45b46246345c46448149349b4aa4af4b44bc4c44c94d14e352c5315395826d16d975358758ca4ca516166176187ce7cfa61a8ca91a96aa3ab9b06b97b9cba5d24d2ed62d6ad72d77d7cd81d8ad92d9cda6db0dbbdc8aaedd9ddede6e0ae3de7deb8fc9fcefd3fdc102b1042
oLn1:n - T < n.+1 - T

108a
1081
1091
z2 (tuc_ord (n:=n.+1) (t:=T) tln (Ordinal (n:=n.+1 - T) (m:=n - T) oLn1)) = u (tuc_ord (n:=n.+1) (t:=T) tln (Ordinal (n:=n.+1 - T) (m:=n - T) oLn1)) -> False
1081
1091
tuc_ord (n:=n.+1) (t:=T) tln (Ordinal (n:=n.+1 - T) (m:=n - T) oLn1) = N
1091106b
1082103cf56
1091
106b
1081
1041
1083
103b
1041
(n - T).-1 < n.+1 - T - 1
514214312b13a13b13c15615c16518518a18f19419c1ab1ac1bb1d61de1df1e71ef2bc2c12c82d02d82dd2e62fd30230a32e33833935135235335435535a35f36436937137d38238a3b13b23b33b43b53ba3c33cc3d53dd3e93f140b40c40d40e40f41441c42843043843d44245a45b46246345c46448149349b4aa4af4b44bc4c44c94d14e352c5315395826d16d975358758ca4ca516166176187ce7cfa61a8ca91a96aa3ab9b06b97b9cba5d24d2ed62d6ad72d77d7cd81d8ad92d9cda6db0dbbdc8aaedd9ddede6e0ae3de7deb8fc9fcefd3fdc102b1042
oLn1:(n - T).-1 < n.+1 - T - 1
1083
103cf56
1041
1 < n.+1 - T
1041
n - T < n.+1 - T
10a8103cf56
1041
10b1
10a7
10a9
1083
103b
10a9
z2 (tuc_ord (n:=n.+1) (t:=T) tln (tuc_ord (n:=n.+1 - T) (t:=1) oLn (Ordinal (n:=n.+1 - T - 1) (m:=(n - T).-1) oLn1))) = u (tuc_ord (n:=n.+1) (t:=T) tln (tuc_ord (n:=n.+1 - T) (t:=1) oLn (Ordinal (n:=n.+1 - T - 1) (m:=(n - T).-1) oLn1))) -> False
103b
10a9
tuc_ord (n:=n.+1) (t:=T) tln (tuc_ord (n:=n.+1 - T) (t:=1) oLn (Ordinal (n:=n.+1 - T - 1) (m:=(n - T).-1) oLn1)) = N
10a9106b
103cf56
10a9
106b
103b
102a
(2 ^ K.-1).-1 <= size `dup[ `cut[ nTLnT, `tuc[ oLn, `tuc[ tln, u]]], [seq `cut[ nTLnT, i] | i <- `dup[ `tuc[ oLn, `tuc[ tln, u]], [seq `tuc[ oLn, i] | i <- `dup[ `tuc[ tln, u], [seq `tuc[ tln, i] | i <- z0sb ++ rcons (behead (rcons z2b z2p)) z2]]]]]]
f55
514214312b13a13b13c15615c16518518a18f19419c1ab1ac1bb1d61de1df1e71ef2bc2c12c82d02d82dd2e62fd30230a32e33833935135235335435535a35f36436937137d38238a3b13b23b33b43b53ba3c33cc3d53dd3e93f140b40c40d40e40f41441c42843043843d44245a45b46246345c46448149349b4aa4af4b44bc4c44c94d14e352c5315395826d16d975358758ca4ca516166176187ce7cfa61a8ca91a96aa3ab9b06b97b9cba5d24d2ed72d77d7cd81d8ad92d9cda6db0dbbdc8aaedd9ddede6e0ae3de7deb8fc9fcefd3fdc102b

((2 ^ K.-1).-1 <= size `dup[ `cut[ nTLnT, `tuc[ oLn, `tuc[ tln, u]]], [seq `cut[ nTLnT, i] | i <- `dup[ `tuc[ oLn, `tuc[ tln, u]], [seq `tuc[ oLn, i] | i <- `dup[ `tuc[ tln, u], [seq `tuc[ tln, i] | i <- z0sb ++ rcons (behead (rcons z2b z2p)) z2]]]]]]) = true
f55
514214312b13a13b13c15615c16518518a18f19419c1ab1ac1bb1d61de1df1e71ef2bc2c12c82d02d82dd2e62fd30230a32e33833935135235335435535a35f36436937137d38238a3b13b23b33b43b53ba3c33cc3d53dd3e93f140b40c40d40e40f41441c42843043843d44245a45b46246345c46448149349b4aa4af4b44bc4c44c94d14e352c5315395826d16d975358758ca4ca516166176187ce7cfa61a8ca91a96aa3ab9b06b97b9cba5d24d2ed72d77d7cd81d8ad92d9cda6db0dbbdc8aaedd9ddede6e0ae3de7deb8fc9fcefd3fdc102b
i:'I_(n - T).-1

i + T.+1 < n.+1
514214312b13a13b13c15615c16518518a18f19419c1ab1ac1bb1d61de1df1e71ef2bc2c12c82d02d82dd2e62fd30230a32e33833935135235335435535a35f36436937137d38238a3b13b23b33b43b53ba3c33cc3d53dd3e93f140b40c40d40e40f41441c42843043843d44245a45b46246345c46448149349b4aa4af4b44bc4c44c94d14e352c5315395826d16d975358758ca4ca516166176187ce7cfa61a8ca91a96aa3ab9b06b97b9cba5d24d2ed72d77d7cd81d8ad92d9cda6db0dbbdc8aaedd9ddede6e0ae3de7deb8fc9fcefd3fdc102b
fproj:forall i : 'I_(n - T).-1, i + T.+1 < n.+1
((2 ^ K.-1).-1 <= size `dup[ `cut[ nTLnT, `tuc[ oLn, `tuc[ tln, u]]], [seq `cut[ nTLnT, i] | i <- `dup[ `tuc[ oLn, `tuc[ tln, u]], [seq `tuc[ oLn, i] | i <- `dup[ `tuc[ tln, u], [ seq `tuc[ tln, i] | i <- z0sb ++ rcons (behead (rcons z2b z2p)) z2]]]]]]) = true
f56
10d1
i + T.+1 < ((n - T).-1 + T.+1).+1
10d1
n.+1 = ((n - T).-1 + T.+1).+1
10d5f56
10d1
10df
10d4
10d6
10cd
f55
514214312b13a13b13c15615c16518518a18f19419c1ab1ac1bb1d61de1df1e71ef2bc2c12c82d02d82dd2e62fd30230a32e33833935135235335435535a35f36436937137d38238a3b13b23b33b43b53ba3c33cc3d53dd3e93f140b40c40d40e40f41441c42843043843d44245a45b46246345c46448149349b4aa4af4b44bc4c44c94d14e352c5315395826d16d975358758ca4ca516166176187ce7cfa61a8ca91a96aa3ab9b06b97b9cba5d24d2ed72d77d7cd81d8ad92d9cda6db0dbbdc8aaedd9ddede6e0ae3de7deb8fc9fcefd3fdc102b10d7
oproj:=fun i : 'I_(n - T).-1 => Ordinal (n:=n.+1) (m:=i + T.+1) (fproj i):'I_(n - T).-1 -> 'I_n.+1

10cd
f55
514214312b13a13b13c15615c16518518a18f19419c1ab1ac1bb1d61de1df1e71ef2bc2c12c82d02d82dd2e62fd30230a32e33833935135235335435535a35f36436937137d38238a3b13b23b33b43b53ba3c33cc3d53dd3e93f140b40c40d40e40f41441c42843043843d44245a45b46246345c46448149349b4aa4af4b44bc4c44c94d14e352c5315395826d16d975358758ca4ca516166176187ce7cfa61a8ca91a96aa3ab9b06b97b9cba5d24d2ed72d77d7cd81d8ad92d9cda6db0dbbdc8aaedd9ddede6e0ae3de7deb8fc9fcefd3fdc102b10d710ea10d2

oproj i = tuc_ord (n:=n.+1) (t:=T) tln (tuc_ord (n:=n.+1 - T) (t:=1) oLn (widen_ord (m:=n.+1 - T - 1) nTLnT i))
514214312b13a13b13c15615c16518518a18f19419c1ab1ac1bb1d61de1df1e71ef2bc2c12c82d02d82dd2e62fd30230a32e33833935135235335435535a35f36436937137d38238a3b13b23b33b43b53ba3c33cc3d53dd3e93f140b40c40d40e40f41441c42843043843d44245a45b46246345c46448149349b4aa4af4b44bc4c44c94d14e352c5315395826d16d975358758ca4ca516166176187ce7cfa61a8ca91a96aa3ab9b06b97b9cba5d24d2ed72d77d7cd81d8ad92d9cda6db0dbbdc8aaedd9ddede6e0ae3de7deb8fc9fcefd3fdc102b10d710ea
oprojE:forall i : 'I_(n - T).-1, oproj i = tuc_ord (n:=n.+1) (t:=T) tln (tuc_ord (n:=n.+1 - T) (t:=1) oLn (widen_ord (m:=n.+1 - T - 1) nTLnT i))
10d8
f56
10f2
10cd
f55
10f2
((2 ^ K.-1).-1 <= size `dup[ `cut[ nTLnT, `tuc[ oLn, `tuc[ tln, u]]], [seq `cut[ nTLnT, i] | i <- `dup[ `tuc[ oLn, `tuc[ tln, u]], [seq `tuc[ oLn, i] | i <- `dup[ `tuc[ tln, u], [seq `tuc[ tln, i] | i <- z0sb]]]]]] + size `dup[ last `cut[ nTLnT, `tuc[ oLn, `tuc[ tln, u]]] [seq `cut[ nTLnT, i] | i <- `dup[ `tuc[ oLn, `tuc[ tln, u]], [seq `tuc[ oLn, i] | i <- `dup[ `tuc[ tln, u], [seq `tuc[ tln, i] | i <- z0sb]]]]], [seq `cut[ nTLnT, i] | i <- `dup[ last `tuc[ oLn, `tuc[ tln, u]] [seq `tuc[ oLn, i] | i <- `dup[ `tuc[ tln, u], [seq `tuc[ tln, i] | i <- z0sb]]], [seq `tuc[ oLn, i] | i <- `dup[ last `tuc[ tln, u] [seq `tuc[ tln, i] | i <- z0sb], [seq `tuc[ tln, i] | i <- rcons (behead (rcons z2b z2p)) z2]]]]]]) = true
f55
10f2
(2 ^ K.-1).-1 <= size `dup[ `cut[ nTLnT, `tuc[ oLn, `tuc[ tln, u]]], [seq `cut[ nTLnT, i] | i <- `dup[ `tuc[ oLn, `tuc[ tln, u]], [seq `tuc[ oLn, i] | i <- `dup[ `tuc[ tln, u], [seq `tuc[ tln, i] | i <- z0sb]]]]]]
f55
514214312b13a13b13c15615c16518518a18f19419c1ab1ac1bb1d61de1df1e71ef2bc2c12c82d02d82dd2e62fd30230a32e33833935135235335435535a35f36436937137d38238a3b13b23b33b43b53ba3c33cc3d53dd3e93f140b40c40d40e40f41441c42843043843d44245a45b46246345c46448149349b4aa4af4b44bc4c44c94d14e352c5315395826d16d975358758ca4ca516166176187ce7cfa61a8ca91a96aa3ab9b06b97b9cba5d24d2ed72d77d7cd81d8ad92d9cda6db0dbbdc8aaedd9ddede6e0ae3de7deb8fc9fcefd3fdc102b10d710ea10f3
f:=fun i : configuration 4 n.+1 => `cut[ nTLnT, `tuc[ oLn, `tuc[ tln, i]]]:configuration 4 n.+1 -> configuration 4 (n - T).-1

10fe
f55
1102
path (move (q:=4) (rrel (n:=4))) `cut[ nTLnT, `tuc[ oLn, `tuc[ tln, u]]] `dup[ `cut[ nTLnT, `tuc[ oLn, `tuc[ tln, u]]], [seq `cut[ nTLnT, i] | i <- `dup[ `tuc[ oLn, `tuc[ tln, u]], [seq `tuc[ oLn, i] | i <- `dup[ `tuc[ tln, u], [seq `tuc[ tln, i] | i <- z0sb]]]]]] -> (2 ^ K.-1).-1 <= size `dup[ `cut[ nTLnT, `tuc[ oLn, `tuc[ tln, u]]], [seq `cut[ nTLnT, i] | i <- `dup[ `tuc[ oLn, `tuc[ tln, u]], [seq `tuc[ oLn, i] | i <- `dup[ `tuc[ tln, u], [seq `tuc[ tln, i] | i <- z0sb]]]]]]
f55
514214312b13a13b13c15615c16518518a18f19419c1ab1ac1bb1d61de1df1e71ef2bc2c12c82d02d82dd2e62fd30230a32e33833935135235335435535a35f36436937137d38238a3b13b23b33b43b53ba3c33cc3d53dd3e93f140b40c40d40e40f41441c42843043843d44245a45b46246345c46448149349b4aa4af4b44bc4c44c94d14e352c5315395826d16d975358758ca4ca516166176187ce7cfa61a8ca91a96aa3ab9b06b97b9cba5d24d2ed72d77d7cd81d8ad92d9cda6db0dbbdc8aaedd9ddede6e0ae3de7deb8fc9fcefd3fdc102b10d710ea10f31103
u1:=f u:configuration 4 (n - T).-1

path (move (q:=4) (rrel (n:=4))) u1 `dup[ u1, [seq `cut[ nTLnT, i] | i <- `dup[ `tuc[ oLn, `tuc[ tln, u]], [seq `tuc[ oLn, i] | i <- `dup[ `tuc[ tln, u], [seq `tuc[ tln, i] | i <- z0sb]]]]]] -> (2 ^ K.-1).-1 <= size `dup[ u1, [seq `cut[ nTLnT, i] | i <- `dup[ `tuc[ oLn, `tuc[ tln, u]], [seq `tuc[ oLn, i] | i <- `dup[ `tuc[ tln, u], [seq `tuc[ tln, i] | i <- z0sb]]]]]]
f55
514214312b13a13b13c15615c16518518a18f19419c1ab1ac1bb1d61de1df1e71ef2bc2c12c82d02d82dd2e62fd30230a32e33833935135235335435535a35f36436937137d38238a3b13b23b33b43b53ba3c33cc3d53dd3e93f140b40c40d40e40f41441c42843043843d44245a45b46246345c46448149349b4aa4af4b44bc4c44c94d14e352c5315395826d16d975358758ca4ca516166176187ce7cfa61a8ca91a96aa3ab9b06b97b9cba5d24d2ed72d77d7cd81d8ad92d9cda6db0dbbdc8aaedd9ddede6e0ae3de7deb8fc9fcefd3fdc102b10d710ea10f31103110c
cs:=[seq `cut[ nTLnT, i] | i <- `dup[ `tuc[ oLn, `tuc[ tln, u]], [seq `tuc[ oLn, i] | i <- `dup[ `tuc[ tln, u], [seq `tuc[ tln, i] | i <- z0sb]]]]]:seq (configuration 4 (n - T).-1)
path1:path (move (q:=4) (rrel (n:=4))) u1 `dup[ u1, cs]

(2 ^ K.-1).-1 <= size `dup[ u1, cs]
f55
1111
last u1 `dup[ u1, cs] = f z0
514214312b13a13b13c15615c16518518a18f19419c1ab1ac1bb1d61de1df1e71ef2bc2c12c82d02d82dd2e62fd30230a32e33833935135235335435535a35f36436937137d38238a3b13b23b33b43b53ba3c33cc3d53dd3e93f140b40c40d40e40f41441c42843043843d44245a45b46246345c46448149349b4aa4af4b44bc4c44c94d14e352c5315395826d16d975358758ca4ca516166176187ce7cfa61a8ca91a96aa3ab9b06b97b9cba5d24d2ed72d77d7cd81d8ad92d9cda6db0dbbdc8aaedd9ddede6e0ae3de7deb8fc9fcefd3fdc102b10d710ea10f31103110c11121113
csL:last u1 `dup[ u1, cs] = f z0
1114
f56
111b
1114
f55
514214312b13a13b13c15615c16518518a18f19419c1ab1ac1bb1d61de1df1e71ef2bc2c12c82d02d82dd2e62fd30230a32e33833935135235335435535a35f36436937137d38238a3b13b23b33b43b53ba3c33cc3d53dd3e93f140b40c40d40e40f41441c42843043843d44245a45b46246345c46448149349b4aa4af4b44bc4c44c94d14e352c5315395826d16d975358758ca4ca516166176187ce7cfa61a8ca91a96aa3ab9b06b97b9cba5d24d2ed72d77d7cd81d8ad92d9cda6db0dbbdc8aaedd9ddede6e0ae3de7deb8fc9fcefd3fdc102b10d710ea10f31103110c11121113111c
sd1:=oproj @^-1: (E'' :\ N):{set ordinal_finType (n - T).-1}

1114
f55
1123
#|sd1| = K.-1
514214312b13a13b13c15615c16518518a18f19419c1ab1ac1bb1d61de1df1e71ef2bc2c12c82d02d82dd2e62fd30230a32e33833935135235335435535a35f36436937137d38238a3b13b23b33b43b53ba3c33cc3d53dd3e93f140b40c40d40e40f41441c42843043843d44245a45b46246345c46448149349b4aa4af4b44bc4c44c94d14e352c5315395826d16d975358758ca4ca516166176187ce7cfa61a8ca91a96aa3ab9b06b97b9cba5d24d2ed72d77d7cd81d8ad92d9cda6db0dbbdc8aaedd9ddede6e0ae3de7deb8fc9fcefd3fdc102b10d710ea10f31103110c11121113111c1124
card_sd1:#|sd1| = K.-1
1114
f56
514214312b13a13b13c15615c16518518a18f19419c1ab1ac1bb1d61de1df1e71ef2bc2c12c82d02d82dd2e62fd30230a32e33833935135235335435535a35f36436937137d38238a3b13b23b33b43b53ba3c33cc3d53dd3e93f140b40c40d40e40f41441c42843043843d44245a45b46246345c46448149349b4aa4af4b44bc4c44c94d14e352c5315395826d16d975358758ca4ca516166176187ce7cfa61a8ca91a96aa3ab9b06b97b9cba5d24d2ed72d77d7cd81d8ad92d9cda6db0dbbdc8aaedd9ddede6e0ae3de7deb8fc9fcefd3fdc102b10d710ea10f31103110c11121113111c1124
TEN:T.+1 = n

1128
514214312b13a13b13c15615c16518518a18f19419c1ab1ac1bb1d61de1df1e71ef2bc2c12c82d02d82dd2e62fd30230a32e33833935135235335435535a35f36436937137d38238a3b13b23b33b43b53ba3c33cc3d53dd3e93f140b40c40d40e40f41441c42843043843d44245a45b46246345c46448149349b4aa4af4b44bc4c44c94d14e352c5315395826d16d975358758ca4ca516166176187ce7cfa61a8ca91a96aa3ab9b06b97b9cba5d24d2ed72d77d7cd81d8ad92d9cda6db0dbbdc8aaedd9ddede6e0ae3de7deb8fc9fcefd3fdc102b10d710ea10f31103110c11121113111c1124
TLNN:T.+1 < N
1128
112af56
1130
K <= 1 -> #|sd1| = K.-1
1132
514214312b13a13b13c15615c16518518a18f19419c1ab1ac1bb1d61de1df1e71ef2bc2c12c82d02d82dd2e62fd30230a32e33833935135235335435535a35f36436937137d38238a3b13b23b33b43b53ba3c33cc3d53dd3e93f140b40c40d40e40f41441c42843043843d44245a45b46246345c46448149349b4aa4af4b44bc4c44c94d14e352c5315395826d16d975358ca4ca516166176187ce7cfa61a8ca91a96aa3ab9b06b97b9cba5d24d2ed72d77d7cd81d8ad92d9cda6db0dbbdc8aaedd9ddede6e0ae3de7deb8fc9fcefd3fdc102b10d710ea10f31103110c11121113111c11241131

#|sd1| == 0
1132
113d
forall sd1 : {set ordinal_finType (n - T).-1}, sd1 =i set0
1132
113d
(n - T).-1 = 0
1132
1134
1128
1129
514214312b13a13b13c15615c16518518a18f19419c1ab1ac1bb1d61de1df1e71ef2bc2c12c82d02d82dd2e62fd30230a32e33833935135235335435535a35f36436937137d38238a3b13b23b33b43b53ba3c33cc3d53dd3e93f140b40c40d40e40f41441c42843043843d44245a45b46246345c46448149349b4aa4af4b44bc4c44c94d14e352c5315395826d16d975358758ca4ca516166176187ce7cfa61a8ca91a96aa3ab9b06b97b9cba5d24d2ed72d77d7cd81d8ad92d9cda6db0dbbdc8aaedd9ddede6e0ae3de7deb8fc9fcefd3fdc102b10d710ea10f31103110c11121113111c11241135
ov:0 < (n - T).-1

1128
1129
514214312b13a13b13c15615c16518518a18f19419c1ab1ac1bb1d61de1df1e71ef2bc2c12c82d02d82dd2e62fd30230a32e33833935135235335435535a35f36436937137d38238a3b13b23b33b43b53ba3c33cc3d53dd3e93f140b40c40d40e40f41441c42843043843d44245a45b46246345c46448149349b4aa4af4b44bc4c44c94d14e352c5315395826d16d975358758ca4ca516166176187ce7cfa61a8ca91a96aa3ab9b06b97b9cba5d24d2ed72d77d7cd81d8ad92d9cda6db0dbbdc8aaedd9ddede6e0ae3de7deb8fc9fcefd3fdc102b10d710ea10f31103110c11121113111c11241135114e
o:=Ordinal (n:=(n - T).-1) (m:=0) ov:'I_(n - T).-1

1128
1129
1152
{on E'' :\ N, bijective oproj}
1129
514214312b13a13b13c15615c16518518a18f19419c1ab1ac1bb1d61de1df1e71ef2bc2c12c82d02d82dd2e62fd30230a32e33833935135235335435535a35f36436937137d38238a3b13b23b33b43b53ba3c33cc3d53dd3e93f140b40c40d40e40f41441c42843043843d44245a45b46246345c46448149349b4aa4af4b44bc4c44c94d14e352c5315395826d16d975358758ca4ca516166176187ce7cfa61a8ca91a96aa3ab9b06b97b9cba5d24d2ed72d77d7cd81d8ad92d9cda6db0dbbdc8aaedd9ddede6e0ae3de7deb8fc9fcefd3fdc102b10d710ea10f31103110c11121113111c11241135114e1153
i:ordinal_finType (n - T).-1

[&& oproj i != N, u (oproj i) == p0 & T < i + T.+1] -> insubd o (i + T.+1 - T.+1) = i
514214312b13a13b13c15615c16518518a18f19419c1ab1ac1bb1d61de1df1e71ef2bc2c12c82d02d82dd2e62fd30230a32e33833935135235335435535a35f36436937137d38238a3b13b23b33b43b53ba3c33cc3d53dd3e93f140b40c40d40e40f41441c42843043843d44245a45b46246345c46448149349b4aa4af4b44bc4c44c94d14e352c5315395826d16d975358758ca4ca516166176187ce7cfa61a8ca91a96aa3ab9b06b97b9cba5d24d2ed72d77d7cd81d8ad92d9cda6db0dbbdc8aaedd9ddede6e0ae3de7deb8fc9fcefd3fdc102b10d710ea10f31103110c11121113111c11241135114e1153171
[&& i != N, u i == p0 & T < i] -> oproj (insubd o (i - T.+1)) = i
112af56
514214312b13a13b13c15615c16518518a18f19419c1ab1ac1bb1d61de1df1e71ef2bc2c12c82d02d82dd2e62fd30230a32e33833935135235335435535a35f36436937137d38238a3b13b23b33b43b53ba3c33cc3d53dd3e93f140b40c40d40e40f41441c42843043843d44245a45b46246345c46448149349b4aa4af4b44bc4c44c94d14e352c5315395826d16d975358758ca4ca516166176187ce7cfa61a8ca91a96aa3ab9b06b97b9cba5d24d2ed72d77d7cd81d8ad92d9cda6db0dbbdc8aaedd9ddede6e0ae3de7deb8fc9fcefd3fdc102b10d710ea10f31103110c11121113111c11241135114e1153115c
iDT:i + T.+1 != n
uEp0:u (oproj i) == p0

insubd o (i + T.+1 - T.+1) = i
115e
1160
1161
1129
514214312b13a13b13c15615c16518518a18f19419c1ab1ac1bb1d61de1df1e71ef2bc2c12c82d02d82dd2e62fd30230a32e33833935135235335435535a35f36436937137d38238a3b13b23b33b43b53ba3c33cc3d53dd3e93f140b40c40d40e40f41441c42843043843d44245a45b46246345c46448149349b4aa4af4b44bc4c44c94d14e352c5315395826d16d975358758ca4ca516166176187ce7cfa61a8ca91a96aa3ab9b06b97b9cba5d24d2ed72d77d7cd81d8ad92d9cda6db0dbbdc8aaedd9ddede6e0ae3de7deb8fc9fcefd3fdc102b10d710ea10f31103110c11121113111c11241135114e1153171
iDN:i != n
uEp0:u i == p0
TLi:T < i

oproj (insubd o (i - T.+1)) = i
1129
116f
i - T.+1 < (n - T).-1
1129
116f
1 < n - T
116fe15
112af56
116f
e15
1129
112b
1114
f55
514214312b13a13b13c15615c16518518a18f19419c1ab1ac1bb1d61de1df1e71ef2bc2c12c82d02d82dd2e62fd30230a32e33833935135235335435535a35f36436937137d38238a3b13b23b33b43b53ba3c33cc3d53dd3e93f140b40c40d40e40f41441c42843043843d44245a45b46246345c46448149349b4aa4af4b44bc4c44c94d14e352c5315395826d16d975358758ca4ca516166176187ce7cfa61a8ca91a96aa3ab9b06b97b9cba5d24d2ed72d77d7cd81d8ad92d9cda6db0dbbdc8aaedd9ddede6e0ae3de7deb8fc9fcefd3fdc102b10d710ea10f31103110c11121113111c1124112c
sp1:=[set~ np3]:{set ordinal_finType 4}

1114
f55
1187
#|sp1| = 3
514214312b13a13b13c15615c16518518a18f19419c1ab1ac1bb1d61de1df1e71ef2bc2c12c82d02d82dd2e62fd30230a32e33833935135235335435535a35f36436937137d38238a3b13b23b33b43b53ba3c33cc3d53dd3e93f140b40c40d40e40f41441c42843043843d44245a45b46246345c46448149349b4aa4af4b44bc4c44c94d14e352c5315395826d16d975358758ca4ca516166176187ce7cfa61a8ca91a96aa3ab9b06b97b9cba5d24d2ed72d77d7cd81d8ad92d9cda6db0dbbdc8aaedd9ddede6e0ae3de7deb8fc9fcefd3fdc102b10d710ea10f31103110c11121113111c1124112c1188
card_sp1:#|sp1| = 3
1114
f56
118f
1114
f55
514214312b13a13b13c15615c16518518a18f19419c1ab1ac1bb1d61de1df1e71ef2bc2c12c82d02d82dd2e62fd30230a32e33833935135235335435535a35f36436937137d38238a3b13b23b33b43b53ba3c33cc3d53dd3e93f140b40c40d40e40f41441c42843043843d44245a45b46246345c46448149349b4aa4af4b44bc4c44c94d14e352c5315395826d16d975358758ca4ca516166176187ce7cfa61a8ca91a96aa3ab9b06b97b9cba5d24d2ed72d77d7cd81d8ad92d9cda6db0dbbdc8aaedd9ddede6e0ae3de7deb8fc9fcefd3fdc102b10d710ea10f31103110c11121113111c1124112c11881190
p0Isp:p0 \in sp1

1114
f55
514214312b13a13b13c15615c16518518a18f19419c1ab1ac1bb1d61de1df1e71ef2bc2c12c82d02d82dd2e62fd30230a32e33833935135235335435535a35f36436937137d38238a3b13b23b33b43b53ba3c33cc3d53dd3e93f140b40c40d40e40f41441c42843043843d44245a45b46246345c46448149349b4aa4af4b44bc4c44c94d14e352c5315395826d16d975358758ca4ca516166176187ce7cfa61a8ca91a96aa3ab9b06b97b9cba5d24d2ed72d77d7cd81d8ad92d9cda6db0dbbdc8aaedd9ddede6e0ae3de7deb8fc9fcefd3fdc102b10d710ea10f31103110c11121113111c1124112c11881190119822d

pg1 \in sp1 -> pg2 \in sp1 -> rrel (n:=4) pg1 pg2 -> rrel (n:=#|[eta sp1]|) (enum_rank_in (T:=ordinal_finType 4) (x0:=p0) (A:=sp1) p0Isp pg1) (enum_rank_in (T:=ordinal_finType 4) (x0:=p0) (A:=sp1) p0Isp pg2)
514214312b13a13b13c15615c16518518a18f19419c1ab1ac1bb1d61de1df1e71ef2bc2c12c82d02d82dd2e62fd30230a32e33833935135235335435535a35f36436937137d38238a3b13b23b33b43b53ba3c33cc3d53dd3e93f140b40c40d40e40f41441c42843043843d44245a45b46246345c46448149349b4aa4af4b44bc4c44c94d14e352c5315395826d16d975358758ca4ca516166176187ce7cfa61a8ca91a96aa3ab9b06b97b9cba5d24d2ed72d77d7cd81d8ad92d9cda6db0dbbdc8aaedd9ddede6e0ae3de7deb8fc9fcefd3fdc102b10d710ea10f31103110c11121113111c1124112c118811901198
F1:forall pg1 pg2 : ordinal_finType 4, pg1 \in sp1 -> pg2 \in sp1 -> rrel (n:=4) pg1 pg2 -> rrel (n:=#|[eta sp1]|) (enum_rank_in (T:=ordinal_finType 4) (x0:=p0) (A:=sp1) p0Isp pg1) (enum_rank_in (T:=ordinal_finType 4) (x0:=p0) (A:=sp1) p0Isp pg2)
1114
f56
514214312b13a13b13c15615c16518518a18f19419c1ab1ac1bb1d61de1df1e71ef2bc2c12c82d02d82dd2e62fd30230a32e33833935135235335435535a35f36436937137d38238a3b13b23b33b43b53ba3c33cc3d53dd3e93f140b40c40d40e40f41441c42843043843d44245a45b46246345c46448149349b4aa4af4b44bc4c44c94d14e352c5315395826d16d975358758ca4ca516166176187ce7cfa61a8ca91a96aa3ab9b06b97b9cba5d24d2ed72d77d7cd81d8ad92d9cda6db0dbbdc8aaedd9ddede6e0ae3de7deb8fc9fcefd3fdc102b10d710ea10f31103110c11121113111c1124112c11881190119822d237238239

enum_rank_in (T:=ordinal_finType 4) (x0:=p0) (A:=sp1) p0Isp pg1 != enum_rank_in (T:=ordinal_finType 4) (x0:=p0) (A:=sp1) p0Isp pg2
119e
514214312b13a13b13c15615c16518518a18f19419c1ab1ac1bb1d61de1df1e71ef2bc2c12c82d02d82dd2e62fd30230a32e33833935135235335435535a35f36436937137d38238a3b13b23b33b43b53ba3c33cc3d53dd3e93f140b40c40d40e40f41441c42843043843d44245a45b46246345c46448149349b4aa4af4b44bc4c44c94d14e352c5315395826d16d975358758ca4ca516166176187ce7cfa61a8ca91a96aa3ab9b06b97b9cba5d24d2ed72d77d7cd81d8ad92d9cda6db0dbbdc8aaedd9ddede6e0ae3de7deb8fc9fcefd3fdc102b10d710ea10f31103110c11121113111c1124112c11881190119822d237238

(pg1 \in sp1 -> pg2 \in sp1 -> pg1 = pg2) -> pg1 = pg2
119e
11a0
1114
f55
11a0
all (cvalid (n:=(n - T).-1) sd1 (k:=4) sp1) (u1 :: `dup[ u1, cs])
514214312b13a13b13c15615c16518518a18f19419c1ab1ac1bb1d61de1df1e71ef2bc2c12c82d02d82dd2e62fd30230a32e33833935135235335435535a35f36436937137d38238a3b13b23b33b43b53ba3c33cc3d53dd3e93f140b40c40d40e40f41441c42843043843d44245a45b46246345c46448149349b4aa4af4b44bc4c44c94d14e352c5315395826d16d975358758ca4ca516166176187ce7cfa61a8ca91a96aa3ab9b06b97b9cba5d24d2ed72d77d7cd81d8ad92d9cda6db0dbbdc8aaedd9ddede6e0ae3de7deb8fc9fcefd3fdc102b10d710ea10f31103110c11121113111c1124112c11881190119811a1
csV:all (cvalid (n:=(n - T).-1) sd1 (k:=4) sp1) (u1 :: `dup[ u1, cs])
1114
f56
514214312b13a13b13c15615c16518518a18f19419c1ab1ac1bb1d61de1df1e71ef2bc2c12c82d02d82dd2e62fd30230a32e33833935135235335435535a35f36436937137d38238a3b13b23b33b43b53ba3c33cc3d53dd3e93f140b40c40d40e40f41441c42843043843d44245a45b46246345c46448149349b4aa4af4b44bc4c44c94d14e352c5315395826d16d975358758ca4ca516166176187ce7cfa61a8ca91a96aa3ab9b06b97b9cba5d24d2ed72d77d7cd81d8ad92d9cda6db0dbbdc8aaedd9ddede6e0ae3de7deb8fc9fcefd3fdc102b10d710ea10f31103110c11121113111c1124112c11881190119811a1
i:finfun_eqType (ordinal_finType (n - T).-1) (ordinal_eqType 4)
j:ordinal_finType (n - T).-1

j \in sd1 -> u1 j \in sp1
514214312b13a13b13c15615c16518518a18f19419c1ab1ac1bb1d61de1df1e71ef2bc2c12c82d02d82dd2e62fd30230a32e33833935135235335435535a35f36436937137d38238a3b13b23b33b43b53ba3c33cc3d53dd3e93f140b40c40d40e40f41441c42843043843d44245a45b46246345c46448149349b4aa4af4b44bc4c44c94d14e352c5315395826d16d975358758ca4ca516166176187ce7cfa61a8ca91a96aa3ab9b06b97b9cba5d24d2ed72d77d7cd81d8ad92d9cda6db0dbbdc8aaedd9ddede6e0ae3de7deb8fc9fcefd3fdc102b10d710ea10f31103110c11121113111c1124112c11881190119811a111bb
iId:i \in `dup[ u1, cs]
11bc
j \in sd1 -> i j \in sp1
11b4f56
514214312b13a13b13c15615c16518518a18f19419c1ab1ac1bb1d61de1df1e71ef2bc2c12c82d02d82dd2e62fd30230a32e33833935135235335435535a35f36436937137d38238a3b13b23b33b43b53ba3c33cc3d53dd3e93f140b40c40d40e40f41441c42843043843d44245a45b46246345c46448149349b4aa4af4b44bc4c44c94d14e352c5315395826d16d975358758ca4ca516166176187ce7cfa61a8ca91a96aa3ab9b06b97b9cba5d24d2ed72d77d7cd81d8ad92d9cda6db0dbbdc8aaedd9ddede6e0ae3de7deb8fc9fcefd3fdc102b10d710ea10f31103110c11121113111c1124112c11881190119811a111bb11bc
jTDn:j + T.+1 != n
uP:u (oproj j) = p0

u (tuc_ord (n:=n.+1) (t:=T) tln (tuc_ord (n:=n.+1 - T) (t:=1) oLn (widen_ord (m:=n.+1 - T - 1) nTLnT j))) != np3
11be
11c0
11c2
11b3
514214312b13a13b13c15615c16518518a18f19419c1ab1ac1bb1d61de1df1e71ef2bc2c12c82d02d82dd2e62fd30230a32e33833935135235335435535a35f36436937137d38238a3b13b23b33b43b53ba3c33cc3d53dd3e93f140b40c40d40e40f41441c42843043843d44245a45b46246345c46448149349b4aa4af4b44bc4c44c94d14e352c5315395826d16d975358758ca4ca516166176187ce7cfa61a8ca91a96aa3ab9b06b97b9cba5d24d2ed72d77d7cd81d8ad92d9cda6db0dbbdc8aaedd9ddede6e0ae3de7deb8fc9fcefd3fdc102b10d710ea10f31103110c11121113111c1124112c11881190119811a111bb11c111bc11c7
uEp0:u (oproj j) == p0
TLjT:T < j + T.+1

i j != np3
11b3
514214312b13a13b13c15615c16518518a18f19419c1ab1ac1bb1d61de1df1e71ef2bc2c12c82d02d82dd2e62fd30230a32e33833935135235335435535a35f36436937137d38238a3b13b23b33b43b53ba3c33cc3d53dd3e93f140b40c40d40e40f41441c42843043843d44245a45b46246345c46448149349b4aa4af4b44bc4c44c94d14e352c5315395826d16d975358758ca4ca516166176187ce7cfa61a8ca91a96aa3ab9b06b97b9cba5d24d2ed72d77d7cd81d8ad92d9cda6db0dbbdc8aaedd9ddede6e0ae3de7deb8fc9fcefd3fdc102b10d710ea10f31103110c11121113111c1124112c11881190119811a111bb11c111bc11c711d111d2
i1:finfun_eqType (ordinal_finType (n.+1 - T - 1)) (ordinal_eqType 4)
i2:finfun_eqType (ordinal_finType (n.+1 - T)) (ordinal_eqType 4)

i2 \in `dup[ `tuc[ tln, u], [seq `tuc[ tln, i] | i <- z0sb]] -> i1 = `tuc[ oLn, i2] -> i = `cut[ nTLnT, i1] -> i j != np3
11b3
514214312b13a13b13c15615c16518518a18f19419c1ab1ac1bb1d61de1df1e71ef2bc2c12c82d02d82dd2e62fd30230a32e33833935135235335435535a35f36436937137d38238a3b13b23b33b43b53ba3c33cc3d53dd3e93f140b40c40d40e40f41441c42843043843d44245a45b46246345c46448149349b4aa4af4b44bc4c44c94d14e352c5315395826d16d975358758ca4ca516166176187ce7cfa61a8ca91a96aa3ab9b06b97b9cba5d24d2ed72d77d7cd81d8ad92d9cda6db0dbbdc8aaedd9ddede6e0ae3de7deb8fc9fcefd3fdc102b10d710ea10f31103110c11121113111c1124112c11881190119811a111bb11c111bc11c711d111d211d811d9
i3:finfun_eqType (ordinal_finType n.+1) (ordinal_eqType 4)
i3Iz0b:i3 \in z0sb

`cut[ nTLnT, `tuc[ oLn, `tuc[ tln, i3]]] j != np3
11b3
11de
i3 (oproj j) != np3
11b3
514214312b13a13b13c15615c16518518a18f19419c1ab1ac1bb1d61de1df1e71ef2bc2c12c82d02d82dd2fd30230a32e33833935135235335435535a35f36436937137d38238a3b13b23b33b43b53ba3c33cc3d53dd3e93f140b40c40d40e40f41441c42843043843d44245a45b46246345c46448149349b4aa4af4b44bc4c44c94d14e352c5315395826d16d975358758ca4ca516166176187ce7cfa61a8ca91a96aa3ab9b06b97b9cba5d24d2ed72d77d7cd81d8ad92d9cda6db0dbbdc8aaedd9ddede6e0ae3de7deb8fc9fcefd3fdc102b10d710ea10f31103110c11121113111c1124112c11881190119811a111bb11c111bc11c711d111d211d811d911df11e0

oproj j \in E''
11b3
11b5
1114
f55
11b5
(2 ^ K.-1).-1 <= `d[cset2 (n:=(n - T).-1) sd1 (k:=4) (sp:=sp1) (p0:=p0) p0Isp u1, cset2 (n:=(n - T).-1) sd1 (k:=4) (sp:=sp1) (p0:=p0) p0Isp (f z0)]_ (move (q:=#|sp1|) (rrel (n:=#|[eta sp1]|)))
f55
11b5
cset2 (n:=(n - T).-1) sd1 (k:=4) (sp:=sp1) (p0:=p0) p0Isp u1 = `c[enum_rank_in (T:=ordinal_finType 4) (x0:=p0) (A:=sp1) p0Isp p0]
11b5
(2 ^ K.-1).-1 <= `d[`c[enum_rank_in (T:=ordinal_finType 4) (x0:=p0) (A:=sp1) p0Isp p0], cset2 (n:=(n - T).-1) sd1 (k:=4) (sp:=sp1) (p0:=p0) p0Isp (f z0)]_(move (q:=#|sp1|) (rrel (n:=#|[eta sp1]|)))
f56
514214312b13a13b13c15615c16518518a18f19419c1ab1ac1bb1d61de1df1e71ef2bc2c12c82d02d82dd2e62fd30230a32e33833935135235335435535a35f36436937137d38238a3b13b23b33b43b53ba3c33cc3d53dd3e93f140b40c40d40e40f41441c42843043843d44245a45b46246345c46448149349b4aa4af4b44bc4c44c94d14e352c5315395826d16d975358758ca4ca516166176187ce7cfa61a8ca91a96aa3ab9b06b97b9cba5d24d2ed72d77d7cd81d8ad92d9cda6db0dbbdc8aaedd9ddede6e0ae3de7deb8fc9fcefd3fdc102b10d710ea10f31103110c11121113111c1124112c11881190119811a111b6
i:ordinal_finType #|sd1|

enum_rank_in (T:=ordinal_finType 4) (x0:=p0) (A:=sp1) p0Isp (u (tuc_ord (n:=n.+1) (t:=T) tln (tuc_ord (n:=n.+1 - T) (t:=1) oLn (widen_ord (m:=n.+1 - T - 1) nTLnT (enum_val i))))) = enum_rank_in (T:=ordinal_finType 4) (x0:=p0) (A:=sp1) p0Isp p0
11f6
11fc
[&& oproj (enum_val i) != N, u (oproj (enum_val i)) == p0 & T < enum_val i + T.+1] -> enum_rank_in (T:=ordinal_finType 4) (x0:=p0) (A:=sp1) p0Isp (u (tuc_ord (n:=n.+1) (t:=T) tln (tuc_ord (n:=n.+1 - T) (t:=1) oLn (widen_ord (m:=n.+1 - T - 1) nTLnT (enum_val i))))) = enum_rank_in (T:=ordinal_finType 4) (x0:=p0) (A:=sp1) p0Isp p0
11f6
11fc
[&& oproj (enum_val i) != N, u (oproj (enum_val i)) == p0 & T < enum_val i + T.+1] -> enum_rank_in (T:=ordinal_finType 4) (x0:=p0) (A:=sp1) p0Isp (u (oproj (enum_val i))) = enum_rank_in (T:=ordinal_finType 4) (x0:=p0) (A:=sp1) p0Isp p0
11fc
tuc_ord (n:=n.+1) (t:=T) tln (tuc_ord (n:=n.+1 - T) (t:=1) oLn (widen_ord (m:=n.+1 - T - 1) nTLnT (enum_val i))) = oproj (enum_val i)
11f7f56
11fc
1209
11f6
11b5
(2 ^ K.-1).-1 <= `d[`c[enum_rank_in (T:=ordinal_finType 4) (x0:=p0) (A:=sp1) p0Isp p0], cset2 (n:=(n - T).-1) sd1 (k:=4) (sp:=sp1) (p0:=p0) p0Isp (f z0)]_ (move (q:=#|sp1|) (rrel (n:=#|[eta sp1]|)))
f55
11b5
z0s N != p0
11b5
z0s N != np3
11b5
p0 != np3
514214312b13a13b13c15615c16518518a18f19419c1ab1ac1bb1d61de1df1e71ef2bc2c12c82d02d82dd2e62fd30230a32e33833935135235335435535a35f36436937137d38238a3b13b23b33b43b53ba3c33cc3d53dd3e93f140b40c40d40e40f41441c42843043843d44245a45b46246345c46448149349b4aa4af4b44bc4c44c94d14e352c5315395826d16d975358758ca4ca516166176187ce7cfa61a8ca91a96aa3ab9b06b97b9cba5d24d2ed72d77d7cd81d8ad92d9cda6db0dbbdc8aaedd9ddede6e0ae3de7deb8fc9fcefd3fdc102b10d710ea10f31103110c11121113111c1124112c11881190119811a111b6
np1:peg 4
np1Dnp3:np1 != np3
np1Dp0:np1 != p0
np1Dz:np1 != z0s N
Hnz:forall p : peg 4, [\/ p = z0s N, p = p0, p = np3 | p = np1]
11f8
f56
1212
11b5
1217
1218121af56
1223
11b5
1219
121af56
1228
121b
1210
f55
121b
cset2 (n:=(n - T).-1) sd1 (k:=4) (sp:=sp1) (p0:=p0) p0Isp (f z0) = `c[enum_rank_in (T:=ordinal_finType 4) (x0:=p0) (A:=sp1) p0Isp np1]
121b
(2 ^ K.-1).-1 <= `d[`c[enum_rank_in (T:=ordinal_finType 4) (x0:=p0) (A:=sp1) p0Isp p0], `c[ enum_rank_in (T:=ordinal_finType 4) (x0:=p0) (A:=sp1) p0Isp np1]]_(move (q:=#|sp1|) (rrel (n:=#|[eta sp1]|)))
f56
514214312b13a13b13c15615c16518518a18f19419c1ab1ac1bb1d61de1df1e71ef2bc2c12c82d02d82dd2e62fd30230a32e33833935135235335435535a35f36436937137d38238a3b13b23b33b43b53ba3c33cc3d53dd3e93f140b40c40d40e40f41441c42843043843d44245a45b46246345c46448149349b4aa4af4b44bc4c44c94d14e352c5315395826d16d975358758ca4ca516166176187ce7cfa61a8ca91a96aa3ab9b06b97b9cba5d24d2ed72d77d7cd81d8ad92d9cda6db0dbbdc8aaedd9ddede6e0ae3de7deb8fc9fcefd3fdc102b10d710ea10f31103110c11121113111c1124112c11881190119811a111b6121c121d121e121f122011fd

enum_rank_in (T:=ordinal_finType 4) (x0:=p0) (A:=sp1) p0Isp (z0 (tuc_ord (n:=n.+1) (t:=T) tln (tuc_ord (n:=n.+1 - T) (t:=1) oLn (widen_ord (m:=n.+1 - T - 1) nTLnT (enum_val i))))) = enum_rank_in (T:=ordinal_finType 4) (x0:=p0) (A:=sp1) p0Isp np1
1233
514214312b13a13b13c15615c16518518a18f19419c1ab1ac1bb1d61de1df1e71ef2bc2c12c82d02d82dd2e62fd30230a32e33833935135235335435535a35f36436937137d38238a3b13b23b33b43b53ba3c33cc3d53dd3e93f140b40c40d40e40f41441c42843043843d44245a45b46246345c46448149349b4aa4af4b44bc4c44c94d14e352c5315395826d16d975358758ca4ca516166176187ce7cfa61a8ca91a96aa3ab9b06b97b9cba5d24d2ed72d77d7cd81d8ad92d9cda6db0dbbdc8aaedd9ddede6e0ae3de7deb8fc9fcefd3fdc102b10d710ea10f31103110c11121113111c1124112c11881190119811a111b6121c121d121e121f122011fd
iTEN:enum_val i + T.+1 != n
uEp0:u (oproj (enum_val i)) == p0
TLiT:T < enum_val i + T.+1

123a
1233
123e
z0 (oproj (enum_val i)) == z0s N -> enum_rank_in (T:=ordinal_finType 4) (x0:=p0) (A:=sp1) p0Isp (z0 (oproj (enum_val i))) = enum_rank_in (T:=ordinal_finType 4) (x0:=p0) (A:=sp1) p0Isp np1
123e
z0 (oproj (enum_val i)) == p0 -> enum_rank_in (T:=ordinal_finType 4) (x0:=p0) (A:=sp1) p0Isp (z0 (oproj (enum_val i))) = enum_rank_in (T:=ordinal_finType 4) (x0:=p0) (A:=sp1) p0Isp np1
123e
z0 (oproj (enum_val i)) == np3 -> enum_rank_in (T:=ordinal_finType 4) (x0:=p0) (A:=sp1) p0Isp (z0 (oproj (enum_val i))) = enum_rank_in (T:=ordinal_finType 4) (x0:=p0) (A:=sp1) p0Isp np1
123e
z0 (oproj (enum_val i)) == np1 -> enum_rank_in (T:=ordinal_finType 4) (x0:=p0) (A:=sp1) p0Isp (z0 (oproj (enum_val i))) = enum_rank_in (T:=ordinal_finType 4) (x0:=p0) (A:=sp1) p0Isp np1
1234f56
1243
123e
z0 (oproj (enum_val i)) != z0s N
1246
123e
enum_val i + T.+1 <= n
1246
123e
1248
1249124b1234f56
1257
123e
z0 (oproj (enum_val i)) != z0 N
1259
123e
enum_val i + T.+1 < n
1259
123e
124a
124b1234f56
123e
z0 (oproj (enum_val i)) != np3
1266
514214312b13a13b13c15615c16518518a18f19419c1ab1ac1bb1d61de1df1e71ef2bc2c12c82d02d82dd2fd30230a32e33833935135235335435535a35f36436937137d38238a3b13b23b33b43b53ba3c33cc3d53dd3e93f140b40c40d40e40f41441c42843043843d44245a45b46246345c46448149349b4aa4af4b44bc4c44c94d14e352c5315395826d16d975358758ca4ca516166176187ce7cfa61a8ca91a96aa3ab9b06b97b9cba5d24d2ed72d77d7cd81d8ad92d9cda6db0dbbdc8aaedd9ddede6e0ae3de7deb8fc9fcefd3fdc102b10d710ea10f31103110c11121113111c1124112c11881190119811a111b6121c121d121e121f122011fd123f12401241

z0 \in u :: g
126e
oproj (enum_val i) \in E''
124b1234f56
126e
(z0 == u) || (z0 \in z0sb) -> [|| z0 == u, z0 \in z0sb | z0 \in z0s :: z0sa]
1270
126e
1272
1266
123e
124c
1233
121b
(2 ^ K.-1).-1 <= `d[`c[enum_rank_in (T:=ordinal_finType 4) (x0:=p0) (A:=sp1) p0Isp p0], `c[enum_rank_in (T:=ordinal_finType 4) (x0:=p0) (A:=sp1) p0Isp np1]]_(move (q:=#|sp1|) (rrel (n:=#|[eta sp1]|)))
f55
121b
enum_rank_in (T:=ordinal_finType 4) (x0:=p0) (A:=sp1) p0Isp np1 != enum_rank_in (T:=ordinal_finType 4) (x0:=p0) (A:=sp1) p0Isp p0
121b
enum_rank_in (T:=ordinal_finType 4) (x0:=p0) (A:=sp1) p0Isp np1 != enum_rank_in (T:=ordinal_finType 4) (x0:=p0) (A:=sp1) p0Isp p0 -> (2 ^ K.-1).-1 <= `d[`c[enum_rank_in (T:=ordinal_finType 4) (x0:=p0) (A:=sp1) p0Isp p0], `c[ enum_rank_in (T:=ordinal_finType 4) (x0:=p0) (A:=sp1) p0Isp np1]]_(move (q:=#|sp1|) (rrel (n:=#|[eta sp1]|)))
f56
121b
(np1 \in sp1 -> p0 \in sp1 -> np1 = p0) -> False
1285
121b
np1 == p0 -> False
1285
121b
enum_rank_in (T:=ordinal_finType 4) (x0:=p0) (A:=sp1) p0Isp np1 != enum_rank_in (T:=ordinal_finType 4) (x0:=p0) (A:=sp1) p0Isp p0 -> (2 ^ K.-1).-1 <= `d[`c[enum_rank_in (T:=ordinal_finType 4) (x0:=p0) (A:=sp1) p0Isp p0], `c[enum_rank_in (T:=ordinal_finType 4) (x0:=p0) (A:=sp1) p0Isp np1]]_(move (q:=#|sp1|) (rrel (n:=#|[eta sp1]|)))
f55
121b
forall enum_rank_in enum_rank_in0 : ordinal_subType #|[eta sp1]|, enum_rank_in0 != enum_rank_in -> (2 ^ K.-1).-1 <= `d[`c[enum_rank_in], `c[enum_rank_in0]]_(move (q:=#|sp1|) (rrel (n:=#|[eta sp1]|)))
f55
514214312b13a13b13c15615c16518518a18f19419c1ab1ac1bb1d61de1df1e71ef2bc2c12c82d02d82dd2e62fd30230a32e33833935135235335435535a35f36436937137d38238a3b13b23b33b43b53ba3c33cc3d53dd3e93f140b40c40d40e40f41441c42843043843d44245a45b46246345c46448149349b4aa4af4b44bc4c44c94d14e352c5315395826d16d975358758ca4ca516166176187ce7cfa61a8ca91a96aa3ab9b06b97b9cba5d24d2ed72d77d7cd81d8ad92d9cda6db0dbbdc8aaedd9ddede6e0ae3de7deb8fc9fcefd3fdc102b10d710ea10f31103110c11121113111c1124112c11881190119811a111b6121c121d121e121f1220
cp1, cp2:'I_3
cp1Dcp2:cp2 != cp1

(2 ^ K.-1).-1 <= `d[`c[cp1], `c[cp2]]_(move (q:=3) (rrel (n:=3)))
f55
129b
`d[`c[cp1], `c[cp2]]_rmove = (2 ^ K.-1).-1 * (cp1 != cp2) -> (2 ^ K.-1).-1 <= `d[`c[cp1], `c[cp2]]_(move (q:=3) (rrel (n:=3)))
f55
f57
157
f57
psi (s2f (n:=n) B) <= `d[z2, v]_rmove
514214312b13a13b13c15615c16518518a18f19419c1ab1ac1bb1d61de1df1e71ef2bc2c12c82d02d82dd2e62fd30230a32e33833935135235335435535a35f36436937137d38238a3b13b23b33b43b53ba3c33cc3d53dd3e93f140b40c40d40e40f41441c42843043843d44245a45b46246345c46448149349b4aa4af4b44bc4c44c94d14e352c5315395826d16d975358758ca4ca516166176187ce7cfa61a8ca91a96aa3ab9b06b97b9cba5d24d2ed62d6ad72d77d7cd81d8ad92d9cda6db0dbbdc8aaedd9ddede6e0ae3de7deb8f58
dz2v_leq:psi (s2f (n:=n) B) <= `d[z2, v]_rmove
157
514214312b13a13b13c15615c16518518a18f19419c1ab1ac1bb1d61de1df1e71ef2bc2c12c82d02d82dd2e62fd30230a32e33833935135235335435535a35f36436937137d38238a3b13b23b33b43b53ba3c33cc3d53dd3e93f140b40c40d40e40f41441c42843043843d44245a45b46246345c46448149349b4aa4af4b44bc4c44c94d14e352c5315395826d16d975358758ca4ca516166176187ce7cfa61a8ca91a96aa3ab9b06b97b9cba5d24d2ed62d6ad72d77d7cd81d8ad92d9cda6db0dbbdc8aaedd9ddede6e0ae3de7deb8f58
cH1:codom ↓[v] \subset [:: np2; np3]

12a9
12aa
12b1
psi (s2f (n:=n) B) <= `d[↓[z2], ↓[v]]_(move (q:=4) (rrel (n:=4)))
12aa
12ac
157
514214312b13a13b13c15615c16518518a18f19419c1ab1ac1bb1d61de1e71ef2bc2c12c82d02d82dd2e62fd30230a32e33833935135235335435535a35f36436937137d38238a3b13b23b33b43b53ba3c33cc3d53dd3e93f140b40c40d40e40f41441c42843043843d44245a45b46246345c46448149349b4aa4af4b44bc4c44c94d14e352c5315395826d16d975358758ca4ca516166176187ce7cfa61a8ca91a96aa3ab9b06b97b9cba5d24d2ed62d6ad72d77d7cd81d8ad92d9cda6db0dbbdc8aaedd9ddede6e0ae3de7deb8f5812ad

psi (s2f (n:=n.+1) E) <= `d[u, last u (z0sb ++ rcons (behead (rcons z2b z2p)) z2)]_rmove + `d[last u (z0sb ++ rcons (behead (rcons z2b z2p)) z2), v]_rmove
12bd
psi (s2f (n:=n.+1) E) <= `d[u, z2]_rmove + `d[z2, v]_rmove
12bd
psi (s2f (n:=n.+1) E) <= (psi (s2f (n:=n.+1) E `&` `[T]) + psi (s2f (n:=T) A) + 2 ^ K.-1).+1 + psi (s2f (n:=n) B)
12bd
psi (s2f (n:=n.+1) E) <= 2 ^ K.-1 + psi (s2f (n:=n.+1) E `&` `[T]) + (psi (s2f (n:=T) A) + psi (s2f (n:=n) B)).+1
12bd
psi (s2f (n:=n.+1) E) <= psi (s2f (n:=n.+1) E `&` `[T]) + (psi `[(T + K).+1] - psi `[T])
514214312b13a13b13c15615c16518518a18f19419c1ab1ac1bb1d61de1e71ef2bc2c12c82d02d82dd2e62fd30230a32e33833935135235335435535a35f36436937137d38238a3b13b23b33b43b53ba3c33cc3d53dd3e93f140b40c40d40e40f41441c42843043843d44245a45b46246345c46448149349b4aa4af4b44bc4c44c94d14e352c5315395826d16d975358758ca4ca516166176187ce7cfa61a8ca91a96aa3ab9b06b97b9cba5d24d2ed62d6ad72d77d7cd81d8ad92d9cda6db0dbbdc8aaedd9ddede6e0ae3de7deb8f5812ad
pH:psi (s2f (n:=n.+1) E) <= psi (s2f (n:=n.+1) E `&` `[T]) + (psi `[(T + K).+1] - psi `[T])
12ca
12bd
psi (s2f (n:=n.+1) E) - psi (s2f (n:=n.+1) E `&` `[T]) <= psi `[T + K.+1] - psi `[T]
12cf
12bd
s2f (n:=n.+1) E = s2f (n:=n.+1) E `&` `[T] `|` s2f (n:=n.+1) (T |: E'')
12bd
psi (s2f (n:=n.+1) E `&` `[T] `|` s2f (n:=n.+1) (T |: E'')) - psi (s2f (n:=n.+1) E `&` `[T]) <= psi `[T + K.+1] - psi `[T]
12d0
514214312b13a13b13c15615c16518518a18f19419c1ab1ac1bb1d61de1e71ef2bc2c12c82d02d82dd2e62fd30230a32e33833935135235335435535a35f36436937137d38238a3b13b23b33b43b53ba3c33cc3d53dd3e93f140b40c40d40e40f41441c42843043843d44245a45b46246345c46448149349b4aa4af4b44bc4c44c94d14e352c5315395826d16d975358758ca4ca516166176187ce7cfa61a8ca91a96aa3ab9b06b97b9cba5d24d2ed62d6ad72d77d7cd81d8ad92d9cda6db0dbbdc8aaedd9ddede6e0ae3de7deb8f5812aded9

(i \in s2f (n:=n.+1) E) = [|| (i \in s2f (n:=n.+1) E) && (i < T), i == T | (i \in [eta mem_seq (T:=nat_choiceType) (s2f (n:=n.+1) E)]) && (T < i)]
12db
12e1
(T \in s2f (n:=n.+1) E) = true
12db
12bd
12dd
12cf
12bd
s2f (n:=n.+1) E `&` `[T] `<=` `[T]
12bd
#|` s2f (n:=n.+1) (T |: E'')| <= K.+1
12d0
12bd
12f0
12cf
12bd
#|(T |: E'') :\ T| <= #|E''|
12cf
12d1
12ca
12bd
(psi (s2f (n:=n.+1) E `&` `[T])).*2 + ((psi `[(T + K).+1]).*2 - (psi `[T]).*2) <= (2 ^ K.-1).*2 + (psi (s2f (n:=n.+1) E `&` `[T])).*2 + ((psi (s2f (n:=T) A) + psi (s2f (n:=n) B)).+1).*2
12bd
(psi (s2f (n:=n.+1) E `&` `[T])).*2 + ((psi `[(T + K).+1]).*2 - (psi `[T]).*2) <= (2 ^ K.-1).*2 + (psi (s2f (n:=n.+1) E `&` `[T])).*2 + psi `[T + K + 1]
12bd
psi `[(T + K).+1] <= (psi `[T]).*2 + (2 ^ K.-1).*2
12bd
psi `[T + K.+1] <= (psi `[T]).*2 + 2 ^ K
by apply: psi_leD. Qed.
4
p1 != p2 -> Ο•(n) <= `d[`c[p1 , n], `c[p2 , n]]_rmove
130c
65d

Ο•(n.+1) <= `d[`c[p1], `c[p2]]_rmove
65d1de
gHp1p2:gpath rmove `c[p1] `c[p2] g

1314
1318
`c[p2] \in g
65d1de1319
p2Ig:`c[p2] \in g
1314
1318
last `c[p1] g \in `c[p1] :: g -> `c[p2] \in g
131e
1320
1314
65d1de1319132115c

1314
132c
codom `c[p2] \subset [:: p2]
65d1de1319132115c
cH:codom `c[p2] \subset [:: p2]
1314
1333
1314
1333
~~ all [predC fun c : configuration 4 n.+1 => c N != p1] g
1333
forall x : {ffun 'I_n.+1 -> 'I_4} * seq {ffun 'I_n.+1 -> 'I_4} * seq {ffun 'I_n.+1 -> 'I_4}, [/\ all [predC fun c : configuration 4 n.+1 => c N != p1] x.1.2, x.1.1 N != p1 & g = x.1.2 ++ x.1.1 :: x.2] -> Ο•(n.+1) <= `d[`c[p1], `c[p2]]_rmove
1333
`c[p2] N == p1 -> False
133c
1333
`c[p2] N \in [:: p2] -> `c[p2] N == p1 -> False
133c
1333
133e
65d1de1319132115c133440b40c
z0sbP0:{in z0sb, forall x : finfun_eqType (ordinal_finType n.+1) (ordinal_eqType 4), [predC fun c : configuration 4 n.+1 => c N != p1] x}
z0sND0:z0s N != p1
40f

1314
65d1de1319132115c133440b40c134e134f40f
z0:=last `c[p1] z0sb:configuration 4 n.+1

1314
1353
z0 N = p1
65d1de1319132115c133440b40c134e134f40f1354
z0N1:z0 N = p1
1314
1353
`c[p1] N = p1
1353
[predC fun c : configuration 4 n.+1 => c N != p1] (last `c[p1] z0sb) -> last `c[p1] z0sb N = p1
135a
1353
[predC fun c : configuration 4 n.+1 => c N != p1] (last `c[p1] z0sb) -> last `c[p1] z0sb N = p1
1359
135b
1314
65d1de1319132115c133440b40c134e134f40f1354135c428

1314
136e
42c
65d1de1319132115c133440b40c134e134f40f1354135c428430
1314
1374
1314
65d1de1319132115c133440b40c134e134f40f1354135c428430
gHp1z0:gpath rmove `c[p1] z0 z0sb

1314
65d1de1319132115c133440b40c134e134f40f1354135c428430137c
gHz0p2:gpath rmove z0 `c[p2] (z0s :: z0sa)

1314
65d1de1319132115c133440b40c134e134f40f1354135c428430137c1381
dp1p2E:`d[`c[p1], `c[p2]]_rmove = `d[`c[p1], z0]_rmove + `d[z0, `c[p2]]_rmove

1314
1385
~~ all [predC fun c : configuration 4 n.+1 => c N != p2] [:: z0, z0s & z0sa]
1385
forall x : finfun_eqType (ordinal_finType n.+1) (ordinal_eqType 4) * seq (finfun_eqType (ordinal_finType n.+1) (ordinal_eqType 4)) * seq (finfun_eqType (ordinal_finType n.+1) (ordinal_eqType 4)), [/\ x.1.1 N != p2, all [predC fun c : configuration 4 n.+1 => c N != p2] x.2 & [:: z0, z0s & z0sa] = x.1.2 ++ x.1.1 :: x.2] -> Ο•(n.+1) <= `d[`c[p1], `c[p2]]_rmove
65d1de1319132115c133440b40c134e134f40f1354135c428430137c1381138644e

138a
138b
1391
z0 N == p2 -> False
138b
1385
138d
65d1de1319132115c133440b40c134e134f40f1354135c428430137c1381138645a45b
z2pN2:z2p N != p2
z2aEp2:true
45e

1314
65d1de1319132115c133440b40c134e134f40f1354135c428430137c1381138645a45b462463139d
z2aEp2:(z2 \notin (fun c : configuration 4 n.+1 => c N != p2)) && all [predC fun c : configuration 4 n.+1 => c N != p2] z2a
465
1314
139c
469
139c
last z0 (z0s :: z0sa) = z2p -> Ο•(n.+1) <= `d[`c[p1], `c[p2]]_rmove
13a0
139c
13a8
139f
65d1de1319132115c133440b40c134e134f40f1354135c428430137c1381138645a45b139d139e45e
p2Ez2p:`c[p2] = z2p

1314
139f
13a1
1314
65d1de1319132115c133440b40c134e134f40f1354135c428430137c1381138645a45b462463139d13a246520a

c \in z2 :: z2a -> c N = p2
65d1de1319132115c133440b40c134e134f40f1354135c428430137c1381138645a45b462463139d465
z2aEp2:forall c : finfun_eqType (ordinal_finType n.+1) (ordinal_eqType 4), c \in z2 :: z2a -> c N = p2
1314
65d1de1319132115c133440b40c134e134f40f1354135c428430137c1381138645a45b462463139d46520a
z2NEp2:z2 N = p2
H:{in z2a, forall x : finfun_eqType (ordinal_finType n.+1) (ordinal_eqType 4), [predC fun c : configuration 4 n.+1 => c N != p2] x}

13b8
13b9
13bb
1314
65d1de1319132115c133440b40c134e134f40f1354135c428430137c1381138645a45b462463139d46513bc493

1314
13c9
497
65d1de1319132115c133440b40c134e134f40f1354135c428430137c1381138645a45b462463139d13bc49349b
1314
65d1de1319132115c133440b40c134e134f40f1354135c428430137c1381138645a45b462463139d13bc4934a04a1

4a2
13cd
13cf
1314
65d1de1319132115c133440b40c134e134f40f1354135c428430137c1381138645a45b462463139d13bc49349b4aa

1314
65d1de1319132115c133440b40c134e134f40f1354135c428430137c1381138645a45b462463139d13bc49349b4aa
gHz2p2:gpath rmove z2 `c[p2] z2a

1314
65d1de1319132115c133440b40c134e134f40f1354135c428430137c1381138645a45b462463139d13bc49349b4aa13df
dz0p2E:`d[z0, `c[p2]]_rmove = `d[z0, z2]_rmove + `d[z2, `c[p2]]_rmove

1314
13e3
4b8
65d1de1319132115c133440b40c134e134f40f1354135c428430137c1381138645a45b462463139d13bc49349b4aa13df13e44bc
1314
13ea
1314
65d1de1319132115c133440b40c134e134f40f1354135c428430137c1381138645a45b462463139d13bc49349b4aa13df13e44bc
z2N2:z2 N = p2

1314
65d1de1319132115c133440b40c134e134f40f1354135c428430137c1381138645a45b462463139d13bc49349b4aa13df13e44bc13f24c9

1314
13f6
4cd
65d1de1319132115c133440b40c134e134f40f1354135c428430137c1381138645a45b462463139d13bc49349b4aa13df13e44bc13f24c94d1
1314
65d1de1319132115c133440b40c134e134f40f1354135c428430137c1381138645a45b462463139d13bc49b13df13e44bc13f24c94d64d7

4d8
13fa
13fc
1314
13fc
psi `[N] <= `d[`c[p1], z0]_rmove
65d1de1319132115c133440b40c134e134f40f1354135c428430137c1381138645a45b462463139d13bc49349b4aa13df13e44bc13f24c94d1
dp1z0_leq:psi `[N] <= `d[`c[p1], z0]_rmove
1314
13fc
`[N] = s2f (n:=n) [set i | ↓[`c[p1]] i == p1]
13fc
psi (s2f (n:=n) [set i | ↓[`c[p1]] i == p1]) <= `d[`c[p1], z0]_rmove
1409
65d1de1319132115c133440b40c134e134f40f1354135c428430137c1381138645a45b462463139d13bc49349b4aa13df13e44bc13f24c94d1ed9

(0 <= i < N) = (i \in s2f (n:=n) [set i | ↓[`c[p1]] i == p1])
1410
1416
0 <= i < N -> exists2 x : ordinal_choiceType n, in_mem x (mem_fin (fin_finpred (pT:=pred_finpredType (ordinal_finType n)) [set i | ↓[`c[p1]] i == p1])) & i = x
1410
13fc
1412
1408
13fc
psi (s2f (n:=n) [set i | ↓[`c[p1]] i == p1]) <= `d[↓[`c[p1]], ↓[z0]]_(move (q:=4) (rrel (n:=4)))
1408
65d1de1319132115c133440b40c134e134f40f1354135c428430137c1381138645a45b462463139d13bc49349b4aa13df13e44bc13f24c94d1c21
pp2Dpp1:pp2 != pp1
pp2Dpz0sN:pp2 != z0s N
pp2Dz0N:pp2 != z0 N
pp1Dz0sN:pp1 != z0s N
pp1Dz0N:pp1 != z0 N
Hz:forall p : peg 4, [\/ p = z0 N, p = z0s N, p = pp1 | p = pp2]

1422
1408
1426
codom ↓[z0] \subset [:: pp1; pp2]
65d1de1319132115c133440b40c134e134f40f1354135c428430137c1381138645a45b462463139d13bc49349b4aa13df13e44bc13f24c94d1c21142714281429142a142b142c
cH1:codom ↓[z0] \subset [:: pp1; pp2]
1422
1409
65d1de1319132115c133440b40c134e134f40f1354135c428430137c1381138645a45b462463139d13bc49349b4aa13df13e44bc13f24c94d1c21142714281429142a142b142c1c04ff

(z0 (trshift 1 j) == pp1) || (z0 (trshift 1 j) == pp2)
1431
1438
z0 (trshift 1 j) = z0 N -> (z0 (trshift 1 j) == pp1) || (z0 (trshift 1 j) == pp2)
1438
z0 (trshift 1 j) = z0s N -> (z0 (trshift 1 j) == pp1) || (z0 (trshift 1 j) == pp2)
14321409
1438
z0 (trshift 1 j) != z0 N
143e
1438
1440
1431
1438
z0 (trshift 1 j) != z0s N
1431
1433
1422
1408
140a
1314
140a
psi `[N] <= `d[`c[p2], z2]_rmove
65d1de1319132115c133440b40c134e134f40f1354135c428430137c1381138645a45b462463139d13bc49349b4aa13df13e44bc13f24c94d1140b
dp2z2_leq:psi `[N] <= `d[`c[p2], z2]_rmove
1314
140a
`[N] = s2f (n:=n) [set i | ↓[`c[p2]] i == p2]
140a
psi (s2f (n:=n) [set i | ↓[`c[p2]] i == p2]) <= `d[`c[p2], z2]_rmove
1457
65d1de1319132115c133440b40c134e134f40f1354135c428430137c1381138645a45b462463139d13bc49349b4aa13df13e44bc13f24c94d1140bed9

(0 <= i < N) = (i \in s2f (n:=n) [set i | ↓[`c[p2]] i == p2])
145e
1464
0 <= i < N -> exists2 x : ordinal_choiceType n, in_mem x (mem_fin (fin_finpred (pT:=pred_finpredType (ordinal_finType n)) [set i | ↓[`c[p2]] i == p2])) & i = x
145e
140a
1460
1456
140a
psi (s2f (n:=n) [set i | ↓[`c[p2]] i == p2]) <= `d[↓[`c[p2]], ↓[z2]]_(move (q:=4) (rrel (n:=4)))
1456
65d1de1319132115c133440b40c134e134f40f1354135c428430137c1381138645a45b462463139d13bc49349b4aa13df13e44bc13f24c94d1140bc211427
pp2Dpz2sN:pp2 != z2 N
pp2Dz2N:pp2 != z2p N
pp1Dz2sN:pp1 != z2 N
pp1Dz2N:pp1 != z2p N
Hz:forall p : peg 4, [\/ p = z2p N, p = z2 N, p = pp1 | p = pp2]

1470
1456
1474
codom ↓[z2] \subset [:: pp1; pp2]
65d1de1319132115c133440b40c134e134f40f1354135c428430137c1381138645a45b462463139d13bc49349b4aa13df13e44bc13f24c94d1140bc21142714751476147714781479
cH1:codom ↓[z2] \subset [:: pp1; pp2]
1470
1457
65d1de1319132115c133440b40c134e134f40f1354135c428430137c1381138645a45b462463139d13bc49349b4aa13df13e44bc13f24c94d1140bc211427147514761477147814791c04ff

(z2 (trshift 1 j) == pp1) || (z2 (trshift 1 j) == pp2)
147e
1485
z2 (trshift 1 j) = z2p N -> (z2 (trshift 1 j) == pp1) || (z2 (trshift 1 j) == pp2)
1485
z2 (trshift 1 j) = z2 N -> (z2 (trshift 1 j) == pp1) || (z2 (trshift 1 j) == pp2)
147f1457
1485
dfd
148b
1485
148d
147e
1485
df6
147e
1480
1470
1456
1458
1314
1458
Ο•(n.+1) <= psi `[N] + `d[z0, `c[p2]]_rmove
1458
Ο•(n.+1) <= psi `[N] + `d[z0, z2]_rmove + `d[`c[p2], z2]_rmove
1458
Ο•(n.+1) <= psi `[N] + `d[z0, z2]_rmove + psi `[N]
1458
Ο•(n.+1) <= `d[z0, z2]_rmove + Ο•(N.+1).-1
1458
(0 < `d[z0, z2]_rmove) = (z0 != z2) -> Ο•(n.+1) <= `d[z0, z2]_rmove + Ο•(N.+1).-1
1458
5d3
1458
(0 < `d[z0, z2]_rmove) = true -> Ο•(n.+1) <= `d[z0, z2]_rmove + Ο•(N.+1).-1
1458
14b6
65d1de1319132115c133440b40c134e134f40f1354135c428430137c1381138645a45b462463139d13bc49349b4aa13df13e44bc13f24c94d1140b1459
k:nat

Ο•(n.+1) <= k.+1 + Ο•(N.+1).-1
by rewrite addSnnS prednK // leq_addl. Qed.
4
p1 != p2 -> `d[`c[p1 , n], `c[p2 , n]]_rmove = Ο•(n)
14c1
by move=> p1Dp2; apply/eqP; rewrite eqn_leq gdist_leq // gdist_geq. Qed. End Hanoi4.