active
eq
0
0
mark
true
active
eq
s
X
s
Y
mark
eq
X
Y
active
eq
X
Y
mark
false
active
inf
X
mark
cons
X
inf
s
X
active
take
0
X
mark
nil
active
take
s
X
cons
Y
L
mark
cons
Y
take
X
L
active
length
nil
mark
0
active
length
cons
X
L
mark
s
length
L
active
inf
X
inf
active
X
active
take
X1
X2
take
active
X1
X2
active
take
X1
X2
take
X1
active
X2
active
length
X
length
active
X
inf
mark
X
mark
inf
X
take
mark
X1
X2
mark
take
X1
X2
take
X1
mark
X2
mark
take
X1
X2
length
mark
X
mark
length
X
proper
eq
X1
X2
eq
proper
X1
proper
X2
proper
0
ok
0
proper
true
ok
true
proper
s
X
s
proper
X
proper
false
ok
false
proper
inf
X
inf
proper
X
proper
cons
any
X1
X2
cons
any
any
proper
X1
any
proper
X2
proper
take
X1
X2
take
proper
X1
proper
X2
proper
nil
ok
nil
proper
length
X
length
proper
X
eq
ok
X1
ok
X2
ok
eq
X1
X2
s
ok
X
ok
s
X
inf
ok
X
ok
inf
X
cons
ok
X1
ok
X2
ok
cons
X1
X2
take
ok
X1
ok
X2
ok
take
X1
X2
length
ok
X
ok
length
X
top
mark
X
top
proper
X
top
ok
X
top
active
X
any
X
s
X
any
proper
X
any
any
any
X
2.2
inf
ok
X
inf
X
any
proper
X
any
any
any
X
top
mark
X
top
proper
X
top
ok
X
active
X
length
mark
X
length
X
proper
length
X
proper
X
proper
length
X
length
proper
X
proper
eq
X1
X2
eq
proper
X1
proper
X2
active
length
cons
X
L
s
length
L
active
length
cons
X
L
length
L
proper
eq
X1
X2
proper
X1
inf
mark
X
inf
X
length
ok
X
length
X
active
inf
X
inf
s
X
proper
take
X1
X2
proper
X2
active
take
X1
X2
take
X1
active
X2
proper
take
X1
X2
take
proper
X1
proper
X2
cons
ok
X1
ok
X2
cons
X1
X2
take
mark
X1
X2
take
X1
X2
any
proper
X
any
X
proper
take
X1
X2
proper
X1
s
ok
X
s
X
proper
cons
any
X1
X2
cons
any
any
proper
X1
any
proper
X2
top
mark
X
proper
X
active
inf
X
s
X
take
X1
mark
X2
take
X1
X2
proper
s
X
s
proper
X
active
length
X
length
active
X
active
inf
X
inf
active
X
proper
eq
X1
X2
proper
X2
active
take
X1
X2
active
X2
proper
inf
X
proper
X
active
take
s
X
cons
Y
L
take
X
L
any
proper
X
any
any
X
active
take
X1
X2
active
X1
take
ok
X1
ok
X2
take
X1
X2
top
ok
X
top
active
X
active
take
X1
X2
take
active
X1
X2
proper
cons
any
X1
X2
proper
X1
proper
inf
X
inf
proper
X
proper
cons
any
X1
X2
proper
X2
proper
s
X
proper
X
eq
ok
X1
ok
X2
eq
X1
X2
active
length
X
active
X
proper
cons
any
X1
X2
any
proper
X1
any
X
s
X
active
eq
s
X
s
Y
eq
X
Y
active
inf
X
active
X
proper
cons
any
X1
X2
any
any
proper
X1
active
take
s
X
cons
Y
L
cons
Y
take
X
L
active
inf
X
cons
X
inf
s
X
proper
cons
any
X1
X2
any
proper
X2
true
top
ok
X
top
active
X
top
mark
X
top
proper
X
true
2
1
cons
2
0
0
s
1
1
0
0
0
1
32714
50571
take
2
0
0
take
2
0
0
0
1
1
0
0
0
1
2
0
3
top
1
0
0
eq
2
0
1
0
0
1
0
1
0
0
2
1
23127
any
1
0
0
1
0
1
32713
20485
false
0
0
1
top
1
0
0
1
0
1
0
0
any
1
0
0
true
0
1
3106
eq
2
0
0
proper
1
1
0
0
ok
1
1
0
0
0
0
1
1
s
1
0
0
nil
0
0
2
mark
1
0
1
0
1
1
0
2
proper
1
0
0
inf
1
0
0
active
1
0
0
0
1
1
1
0
cons
2
17962
83285
active
1
0
0
length
1
0
0
0
1
1
0
2
length
1
0
0
inf
1
0
0
0
1
1
0
101249
top
ok
X
top
active
X
proper
0
ok
0
active
inf
X
mark
cons
X
inf
s
X
take
X1
mark
X2
mark
take
X1
X2
active
length
cons
X
L
mark
s
length
L
active
eq
0
0
mark
true
active
eq
X
Y
mark
false
length
mark
X
mark
length
X
proper
false
ok
false
proper
length
X
length
proper
X
proper
true
ok
true
length
ok
X
ok
length
X
proper
eq
X1
X2
eq
proper
X1
proper
X2
eq
ok
X1
ok
X2
ok
eq
X1
X2
proper
inf
X
inf
proper
X
s
ok
X
ok
s
X
active
take
0
X
mark
nil
active
take
X1
X2
take
active
X1
X2
active
length
nil
mark
0
proper
s
X
s
proper
X
proper
nil
ok
nil
cons
ok
X1
ok
X2
ok
cons
X1
X2
take
mark
X1
X2
mark
take
X1
X2
take
ok
X1
ok
X2
ok
take
X1
X2
active
length
X
length
active
X
proper
cons
any
X1
X2
cons
any
any
proper
X1
any
proper
X2
proper
take
X1
X2
take
proper
X1
proper
X2
active
take
X1
X2
take
X1
active
X2
active
inf
X
inf
active
X
inf
mark
X
mark
inf
X
active
take
s
X
cons
Y
L
mark
cons
Y
take
X
L
inf
ok
X
ok
inf
X
active
eq
s
X
s
Y
mark
eq
X
Y
top
ok
X
top
active
X
true
cons
2
0
s
1
1
0
take
2
0
take
2
1
1
top
1
0
eq
2
2
20912
any
1
1
0
false
0
29161
top
1
1
0
any
1
0
true
0
47909
eq
2
0
proper
1
1
2
ok
1
1
2
0
0
1
s
1
0
nil
0
23467
mark
1
1
proper
1
0
inf
1
0
active
1
1
1
cons
2
1
977
active
1
0
length
1
1
34296
length
1
0
inf
1
1
3824
proper
0
ok
0
active
inf
X
mark
cons
X
inf
s
X
take
X1
mark
X2
mark
take
X1
X2
active
length
cons
X
L
mark
s
length
L
active
eq
0
0
mark
true
active
eq
X
Y
mark
false
length
mark
X
mark
length
X
proper
false
ok
false
any
proper
X
any
any
any
X
proper
length
X
length
proper
X
proper
true
ok
true
length
ok
X
ok
length
X
proper
eq
X1
X2
eq
proper
X1
proper
X2
eq
ok
X1
ok
X2
ok
eq
X1
X2
proper
inf
X
inf
proper
X
s
ok
X
ok
s
X
active
take
0
X
mark
nil
active
take
X1
X2
take
active
X1
X2
active
length
nil
mark
0
proper
s
X
s
proper
X
proper
nil
ok
nil
cons
ok
X1
ok
X2
ok
cons
X1
X2
take
mark
X1
X2
mark
take
X1
X2
take
ok
X1
ok
X2
ok
take
X1
X2
active
length
X
length
active
X
proper
cons
any
X1
X2
cons
any
any
proper
X1
any
proper
X2
proper
take
X1
X2
take
proper
X1
proper
X2
active
take
X1
X2
take
X1
active
X2
active
inf
X
inf
active
X
inf
mark
X
mark
inf
X
active
take
s
X
cons
Y
L
mark
cons
Y
take
X
L
any
X
s
X
inf
ok
X
ok
inf
X
active
eq
s
X
s
Y
mark
eq
X
Y
top
mark
X
proper
X
false
proper
take
X1
X2
proper
X1
proper
s
X
proper
X
proper
take
X1
X2
proper
X2
proper
cons
any
X1
X2
proper
X2
proper
cons
any
X1
X2
proper
X1
proper
eq
X1
X2
proper
X1
proper
inf
X
proper
X
proper
length
X
proper
X
proper
eq
X1
X2
proper
X2
true
cons
2
0
s
1
1
1
take
2
0
take
2
1
2
1
top
1
0
eq
2
1
2
1
any
1
1
0
false
0
8573
top
1
0
any
1
0
true
0
28652
eq
2
0
proper
1
8822
ok
1
1
39707
0
0
1
s
1
0
nil
0
1
mark
1
4934
proper
1
1
0
inf
1
0
active
1
1
4930
cons
2
1
2
1
active
1
0
length
1
1
1
length
1
0
inf
1
1
2
proper
take
X1
X2
take
proper
X1
proper
X2
false
proper
cons
any
X1
X2
cons
any
any
proper
X1
any
proper
X2
false
proper
cons
any
X1
X2
any
any
proper
X1
false
proper
cons
any
X1
X2
any
proper
X1
false
proper
cons
any
X1
X2
any
proper
X2
false
proper
s
X
s
proper
X
false
proper
inf
X
inf
proper
X
false
proper
eq
X1
X2
eq
proper
X1
proper
X2
false
proper
length
X
length
proper
X
false
top
ok
X
active
X
false
active
inf
X
active
X
active
length
X
active
X
active
take
X1
X2
active
X1
active
take
X1
X2
active
X2
true
cons
2
0
s
1
1
1
take
2
0
take
2
1
2
1
top
1
0
eq
2
1
2
1
any
1
1
0
false
0
8822
top
1
0
any
1
0
true
0
8822
eq
2
0
proper
1
8822
ok
1
1
1
0
0
8822
s
1
0
nil
0
8822
mark
1
17647
proper
1
0
inf
1
0
active
1
1
1
cons
2
2
8562
active
1
1
0
length
1
1
1
length
1
0
inf
1
1
1
active
eq
s
X
s
Y
eq
X
Y
false
eq
ok
X1
ok
X2
eq
X1
X2
true
cons
2
0
s
1
1
1
take
2
0
take
2
1
2
1
top
1
0
eq
2
1
2
1
any
1
1
0
false
0
1800
top
1
0
any
1
0
true
0
1
eq
2
1
0
proper
1
1
ok
1
1
1
0
0
1
s
1
0
nil
0
8623
mark
1
17647
proper
1
0
inf
1
0
active
1
1
1
cons
2
2
1
active
1
0
length
1
1
1
length
1
0
inf
1
1
1
active
take
s
X
cons
Y
L
cons
Y
take
X
L
false
active
take
s
X
cons
Y
L
take
X
L
false
active
inf
X
inf
active
X
false
active
take
X1
X2
take
X1
active
X2
false
active
take
X1
X2
take
active
X1
X2
false
take
X1
mark
X2
take
X1
X2
take
mark
X1
X2
take
X1
X2
take
ok
X1
ok
X2
take
X1
X2
true
cons
2
0
s
1
1
1
take
2
1
2
0
take
2
1
2
1
top
1
0
eq
2
1
2
1
any
1
1
0
false
0
1
top
1
0
any
1
0
true
0
1
eq
2
0
proper
1
1
ok
1
1
1
0
0
1
s
1
0
nil
0
1
mark
1
1
17647
proper
1
0
inf
1
0
active
1
1
1
cons
2
2
1
active
1
0
length
1
1
1
length
1
0
inf
1
1
35261
active
length
cons
X
L
s
length
L
false
active
length
cons
X
L
length
L
false
active
inf
X
cons
X
inf
s
X
false
cons
ok
X1
ok
X2
cons
X1
X2
true
cons
2
1
0
s
1
1
1
take
2
0
take
2
1
2
1
top
1
0
eq
2
1
2
1
any
1
1
0
false
0
26784
top
1
0
any
1
0
true
0
1
eq
2
0
proper
1
1
ok
1
1
1
0
0
1
s
1
0
nil
0
1
mark
1
1
4
proper
1
0
inf
1
0
active
1
1
1
cons
2
2
1
active
1
0
length
1
1
1
length
1
0
inf
1
1
1
active
inf
X
inf
s
X
false
active
inf
X
s
X
false
any
proper
X
any
X
any
proper
X
any
any
X
any
proper
X
any
any
any
X
true
cons
2
0
s
1
1
take
2
0
take
2
2
1
top
1
0
eq
2
1
0
any
1
1
false
0
1
top
1
0
any
1
1
0
true
0
43313
eq
2
0
proper
1
1
2
ok
1
1
0
0
0
1
s
1
0
nil
0
0
mark
1
1
3
proper
1
0
inf
1
0
active
1
1
1
cons
2
1
2
1
active
1
0
length
1
1
1
length
1
0
inf
1
1
1
any
proper
X
any
any
any
X
s
ok
X
ok
s
X
any
X
s
X
any
X
s
X
false
s
ok
X
s
X
true
cons
2
0
s
1
1
0
take
2
0
take
2
1
1
top
1
0
eq
2
50181
any
1
1
0
false
0
50181
top
1
0
any
1
1
0
true
0
50181
eq
2
0
proper
1
1
1
ok
1
1
1
0
0
50181
s
1
1
0
nil
0
50181
mark
1
1
0
proper
1
0
inf
1
0
active
1
50180
cons
2
1
50181
active
1
0
length
1
1
0
length
1
0
inf
1
1
0
proper
0
ok
0
take
X1
mark
X2
mark
take
X1
X2
length
mark
X
mark
length
X
proper
false
ok
false
any
proper
X
any
any
any
X
proper
true
ok
true
length
ok
X
ok
length
X
s
ok
X
ok
s
X
proper
nil
ok
nil
cons
ok
X1
ok
X2
ok
cons
X1
X2
take
mark
X1
X2
mark
take
X1
X2
take
ok
X1
ok
X2
ok
take
X1
X2
inf
mark
X
mark
inf
X
any
X
s
X
inf
ok
X
ok
inf
X
inf
mark
X
inf
X
inf
ok
X
inf
X
true
cons
2
0
s
1
1
0
take
2
0
take
2
1
1
top
1
0
eq
2
2
any
1
1
0
false
0
17574
top
1
0
any
1
1
0
true
0
30754
eq
2
0
proper
1
1
1
ok
1
1
1
0
0
2
s
1
0
nil
0
2
mark
1
1
0
proper
1
0
inf
1
1
0
active
1
1
cons
2
1
2
active
1
0
length
1
1
0
length
1
0
inf
1
1
0
inf
mark
X
inf
X
proper
0
ok
0
take
X1
mark
X2
mark
take
X1
X2
length
mark
X
mark
length
X
proper
false
ok
false
any
proper
X
any
any
any
X
proper
true
ok
true
length
ok
X
ok
length
X
s
ok
X
ok
s
X
proper
nil
ok
nil
cons
ok
X1
ok
X2
ok
cons
X1
X2
take
mark
X1
X2
mark
take
X1
X2
take
ok
X1
ok
X2
ok
take
X1
X2
inf
mark
X
mark
inf
X
any
X
s
X
inf
ok
X
ok
inf
X
inf
mark
X
inf
X
true
cons
2
0
s
1
1
0
take
2
0
take
2
1
2
0
top
1
0
eq
2
1
any
1
1
0
false
0
1427
top
1
0
any
1
0
true
0
26064
eq
2
0
proper
1
0
ok
1
0
0
0
25337
s
1
0
nil
0
22611
mark
1
1
7803
proper
1
0
inf
1
1
0
active
1
7802
cons
2
0
active
1
0
length
1
0
length
1
0
inf
1
0
proper
0
ok
0
take
X1
mark
X2
mark
take
X1
X2
proper
false
ok
false
proper
true
ok
true
proper
nil
ok
nil
take
mark
X1
X2
mark
take
X1
X2
take
ok
X1
ok
X2
ok
take
X1
X2
active
length
X
length
active
X
false
length
ok
X
length
X
length
mark
X
length
X
true
cons
2
0
s
1
1
0
take
2
0
take
2
1
2
0
top
1
0
eq
2
0
any
1
1
0
false
0
1
top
1
0
any
1
0
true
0
0
eq
2
0
proper
1
0
ok
1
1
0
0
0
0
s
1
0
nil
0
0
mark
1
1
34734
proper
1
0
inf
1
0
active
1
34733
cons
2
0
active
1
0
length
1
0
length
1
1
0
inf
1
0
length
ok
X
length
X
proper
0
ok
0
take
X1
mark
X2
mark
take
X1
X2
proper
true
ok
true
proper
nil
ok
nil
take
mark
X1
X2
mark
take
X1
X2
take
ok
X1
ok
X2
ok
take
X1
X2
length
ok
X
length
X
true
cons
2
0
s
1
1
0
take
2
0
take
2
2
0
top
1
0
eq
2
2
0
any
1
0
false
0
1
top
1
0
any
1
0
true
0
0
eq
2
0
proper
1
1
ok
1
1
1
0
0
0
s
1
0
nil
0
0
mark
1
1
proper
1
0
inf
1
0
active
1
0
cons
2
0
active
1
0
length
1
0
length
1
1
0
inf
1
1
0
proper
0
ok
0
take
X1
mark
X2
mark
take
X1
X2
proper
true
ok
true
proper
nil
ok
nil
NaTT
certifiable-1.6