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.Set Implicit Arguments.Unset Strict Implicit.Unset Printing Implicit Defensive.SectionMain.Variableab : nat.HypothesisaL1 : 1 < a.HypothesisaLb : a < b.HypothesisaCb : coprime a b.
a, b:nat
aL1:1 < a
aLb:a < b
aCb:coprime a b
1 < b
2
byapply: ltn_trans aLb.Qed.Fixpointalphal (n : nat) :=
if n isn't n1.+1then [:: 1; a; b]
elseletl := alphal n1 in
merge leq
(letc := head 1 l inletl1 := if b * c \in l then [::] else [:: b * c] inif a * c \in l then l1 else a * c :: l1)
(behead l).Definitionalphan := head 1 (alphal n).
5678
bL1:1 < b
T:eqType
r:rel T
l:seq T
sorted r l -> sorted r (behead l)
c
bycase: l => //= a1 [|b1 l /andP[]].Qed.
5678f
n:nat
sorted leq (alphal n)
16
5678f19
IH:sorted leq (alphal n)
sorted leq
(merge leq
(if a * head 1 (alphal n) \in alphal n
thenif b * head 1 (alphal n) \in alphal n
then [::]
else [:: b * head 1 (alphal n)]
else
a * head 1 (alphal n)
:: (if b * head 1 (alphal n) \in alphal n
then [::]
else [:: b * head 1 (alphal n)]))
(behead (alphal n)))
1f
sorted leq
(if a * head 1 (alphal n) \in alphal n
thenif b * head 1 (alphal n) \in alphal n
then [::]
else [:: b * head 1 (alphal n)]
else
a * head 1 (alphal n)
:: (if b * head 1 (alphal n) \in alphal n
then [::]
else [:: b * head 1 (alphal n)]))
1f
sorted leq (behead (alphal n))
1f28
byapply: behead_sorted.Qed.
5678f19
i:nat_eqType
i \in alphal n -> 0 < i
2d
5678f
i:nat
i \in [:: 1; a; b] -> 0 < i
18
(foralli : nat, i \in alphal n -> 0 < i) ->
foralli : nat,
i
\in merge leq
(if a * head 1 (alphal n) \in alphal n
thenif b * head 1 (alphal n) \in alphal n
then [::]
else [:: b * head 1 (alphal n)]
else
a * head 1 (alphal n)
:: (if b * head 1 (alphal n) \in alphal n
then [::]
else [:: b * head 1 (alphal n)]))
(behead (alphal n)) -> 0 < i
183b
5678f
n, i:nat
(i == a * 1) || (i == b * 1) -> 0 < i
5678f
n, a1:nat
l:seq nat
IH:foralli : nat, i \in a1 :: l -> 0 < i
37
i
\in merge leq
(if (a * a1 == a1) || (a * a1 \in l)
thenif (b * a1 == a1) || (b * a1 \in l)
then [::]
else [:: b * a1]
else
a * a1
:: (if (b * a1 == a1) || (b * a1 \in l)
then [::]
else [:: b * a1])) l -> 0 < i
474b
5678f48494a37
H1:0 < a1
4b
5678f48494a3753
i1:nat_eqType
i1 \in l -> 0 < i1
5678f48494a3753
IH1:foralli1 : nat_eqType, i1 \in l -> 0 < i1
4b
5c4b
5c
i
\in (if (a * a1 == a1) || (a * a1 \in l)
thenif (b * a1 == a1) || (b * a1 \in l)
then [::]
else [:: b * a1]
else
a * a1
:: (if (b * a1 == a1) || (b * a1 \in l)
then [::]
else [:: b * a1])) ++ l -> 0 < i
merge leq
(if a * head 1 (alphal n) \in alphal n
thenif b * head 1 (alphal n) \in alphal n
then [::]
else [:: b * head 1 (alphal n)]
else
a * head 1 (alphal n)
:: (if b * head 1 (alphal n) \in alphal n
then [::]
else [:: b * head 1 (alphal n)]))
(behead (alphal n)) != [::]
18
size
((if a * head 1 (alphal n) \in alphal n
thenif b * head 1 (alphal n) \in alphal n
then [::]
else [:: b * head 1 (alphal n)]
else
a * head 1 (alphal n)
:: (if b * head 1 (alphal n) \in alphal n
then [::]
else [:: b * head 1 (alphal n)])) ++
behead (alphal n)) != 0
5678f
n, c:nat
49
H:foralli : nat, i \in c :: l -> 0 < i
size
((if a * c \in c :: l
thenif b * c \in c :: l then [::] else [:: b * c]
else
a * c
:: (if b * c \in c :: l then [::] else [:: b * c])) ++
l) != 0
5678f884989
E:(a * c \in c :: l) = true
size ([::] ++ l) != 0
5678f88
0 < c ->
(a * c == c) = true ->
1 < a -> size ([::] ++ [::]) != 0
5678f
n, c1:nat
(a * c1.+1 == c1.+1) = true ->
1 < a -> size ([::] ++ [::]) != 0
uniq
(merge leq
(if a * head 1 (alphal n) \in alphal n
thenif b * head 1 (alphal n) \in alphal n
then [::]
else [:: b * head 1 (alphal n)]
else
a * head 1 (alphal n)
:: (if b * head 1 (alphal n) \in alphal n
then [::]
else [:: b * head 1 (alphal n)]))
(behead (alphal n)))
a8aa
18
(a * 1 \notin [:: b * 1]) && true
5678f8849
U:foralli : nat, i \in c :: l -> 0 < i
cL:c \notin l
uL:uniq l
uniq
(merge leq
(if a * c \in c :: l
thenif b * c \in c :: l then [::] else [:: b * c]
else
a * c
:: (if b * c \in c :: l
then [::]
else [:: b * c])) l)
b4b8
5678f8849b5b6b7
H1:a * c \in c :: l
H2:b * c \notin c :: l
b * c \notin l
5678f8849b5b6b7
H1:a * c \notin c :: l
H2:b * c \in c :: l
a * c \notin l
5678f8849b5b6b7c6c1
(a * c \notin b * c :: l) && (b * c \notin l)
bd
c5c8
c9
ce
cacb
b4
(a * c != b * c) && true && true
byrewrite eqn_mul2r negb_or !neq_ltn aLb U ?orbT // inE eqxx.Qed.
18
alpha n < alpha n.+1
da
18
head 1 (alphal n) <
head 1
(merge leq
(if a * head 1 (alphal n) \in alphal n
thenif b * head 1 (alphal n) \in alphal n
then [::]
else [:: b * head 1 (alphal n)]
else
a * head 1 (alphal n)
:: (if b * head 1 (alphal n) \in alphal n
then [::]
else [:: b * head 1 (alphal n)]))
(behead (alphal n)))
5678f19
h:=head 1 (alphal n):nat
h <
head 1
(merge leq
(if a * h \in alphal n
thenif b * h \in alphal n then [::] else [:: b * h]
else
a * h
:: (if b * h \in alphal n
then [::]
else [:: b * h])) (behead (alphal n)))
e5
0 < h
5678f19e6
hP:0 < h
e7
e5
0 < head 1 (alphal n)
ec
5678f19e6
c:nat
49
c \in c :: l
ec
eee7
5678f19e6ef
l1:=merge leq
(if a * h \in alphal n
thenif b * h \in alphal n
then [::]
else [:: b * h]
else
a * h
:: (if b * h \in alphal n
then [::]
else [:: b * h])) (behead (alphal n)):seq nat
h < head 1 l1
100
head 1 l1 \in l1
5678f19e6ef101
hIl1:head 1 l1 \in l1
102
100
merge leq
(if a * head 1 (alphal n) \in alphal n
thenif b * head 1 (alphal n) \in alphal n
then [::]
else [:: b * head 1 (alphal n)]
else
a * head 1 (alphal n)
:: (if b * head 1 (alphal n) \in alphal n
then [::]
else [:: b * head 1 (alphal n)]))
(behead (alphal n)) != [::] -> head 1 l1 \in l1
107
109102
5678f19e6ef10110a
hLi:foralli : nat_eqType, i \in l1 -> h < i
102
5678f19e6ef
l1:=merge leq
(if a * h \in alphal n
thenif b * h \in alphal n
then [::]
else [:: b * h]
else
a * h
:: (if b * h \in alphal n
then [::]
else [:: b * h]))
(behead (alphal n)):seq nat
10a30
i \in l1 -> h < i
5678f19e6ef10110a30
11b
11f
(i
\in (if a * h \in alphal n
thenif b * h \in alphal n
then [::]
else [:: b * h]
else
a * h
:: (if b * h \in alphal n
then [::]
else [:: b * h])))
|| (i \in behead (alphal n)) -> h < i
5678f19e6ef10110a30
hLi1:i \in behead (alphal n) -> h < i
123
5678f19e6ef11a10a30
H:i \in behead (alphal n)
h < i
5678f19e6ef10110a30128
H1:a * h \in alphal n
H2:b * h \notin alphal n
(i == b * h) || (i \in behead (alphal n)) -> h < i
5678f19e6ef11a10a30128
H1:a * h \notin alphal n
H2:b * h \in alphal n
(i == a * h) || (i \in behead (alphal n)) -> h < i
5678f19e6ef11a10a30128138133
(i == a * h) || (i == b * h)
|| (i \in behead (alphal n)) ->
h < i
12a
12f
5678f19e6ef10110a30128138139
13a
13b12a
140
5678f19e6ef10110a30128138133
(i == a * h) || (i == b * h)
|| (i \in behead (alphal n)) -> h < i
bycase: n => // n; apply: leq_ltn_trans (alpha_ltn _).Qed.
18
n < alpha n
19b
byelim: n => // n IH; apply: leq_trans (alpha_ltn _).Qed.DefinitionisABi := existsm, i = a ^ m.1 * b ^ m.2.
36
isAB (a ^ i)
1a0
byexists (i, 0); rewrite muln1.Qed.
36
isAB (b ^ i)
1a5
byexists (0, i); rewrite mul1n.Qed.
36
isAB i -> isAB (a * i)
1aa
5678f
i, m1, m2:nat
a * (a ^ m1 * b ^ m2) =
a ^ (m1.+1, m2).1 * b ^ (m1.+1, m2).2
byrewrite !mulnA expnS.Qed.
36
isAB i -> isAB (b * i)
1b5
1b1
b * (a ^ m1 * b ^ m2) =
a ^ (m1, m2.+1).1 * b ^ (m1, m2.+1).2
byrewrite mulnCA expnS.Qed.
2f
i \in alphal n -> isAB i
1be
36
[|| i == 1, i == a | i == b] -> isAB i
5678f19
IH:foralli : nat, i \in alphal n -> isAB i
37
i
\in (if a * head 1 (alphal n) \in alphal n
thenif b * head 1 (alphal n) \in alphal n
then [::]
else [:: b * head 1 (alphal n)]
else
a * head 1 (alphal n)
:: (if b * head 1 (alphal n) \in alphal n
then [::]
else [:: b * head 1 (alphal n)])) ++
behead (alphal n) -> isAB i
36
isAB a
36
isAB b
1c7
361d1
1c6
1c81ca
1c8
i \in behead (alphal n) ->
existsm : nat * nat, i = a ^ m.1 * b ^ m.2
5678f191c937
F:i \in behead (alphal n) ->
existsm : nat * nat, i = a ^ m.1 * b ^ m.2
1ca
1de1ca
1de
existsm : nat * nat,
head 1 (alphal n) = a ^ m.1 * b ^ m.2
5678f191c9371df
m1, m2:nat
Hm:head 1 (alphal n) =
a ^ (m1, m2).1 * b ^ (m1, m2).2
1ca
5678f431dff849
F1:foralli : nat, i \in c :: l -> isAB i
existsm : nat * nat, c = a ^ m.1 * b ^ m.2
1e7
1e91ca
1e9
i \in behead (alphal n) -> isAB i
1e9
(i == b * head 1 (alphal n))
|| (i \in behead (alphal n)) -> isAB i
1e9
(i == a * head 1 (alphal n))
|| (i \in behead (alphal n)) -> isAB i
1e9
[|| i == a * head 1 (alphal n),
i == b * head 1 (alphal n)
| i \in behead (alphal n)] -> isAB i
1f6
1e91fb
1fc1fe
202
202
1e9
b * head 1 (alphal n) =
a ^ (m1, m2.+1).1 * b ^ (m1, m2.+1).2
204
1e91fd
1fe
20c
1e9
a * head 1 (alphal n) =
a ^ (m1.+1, m2).1 * b ^ (m1.+1, m2).2
i \in alphal n -> i != alpha n -> i \in alphal n.+1
230
2f
0 < alpha n ->
i \in alphal n -> i != alpha n -> i \in alphal n.+1
2f
0 < head 1 (alphal n) ->
i \in alphal n ->
i != head 1 (alphal n) ->
(i \in behead (alphal n))
|| (i
\in (if a * head 1 (alphal n) \in alphal n
thenif b * head 1 (alphal n) \in alphal n
then [::]
else [:: b * head 1 (alphal n)]
else
a * head 1 (alphal n)
:: (if b * head 1 (alphal n) \in alphal n
then [::]
else [:: b * head 1 (alphal n)])))
5678f1930f849
cP:0 < c
i \in c :: l ->
i != c ->
(i \in l)
|| (i
\in (if a * c \in c :: l
thenif b * c \in c :: l
then [::]
else [:: b * c]
else
a * c
:: (if b * c \in c :: l
then [::]
else [:: b * c])))
byrewrite inE => /orP[/eqP->|->//]; rewrite eqxx.Qed.
18
alpha n \in alphal n
243
18
alphal n != [::] -> alpha n \in alphal n
22d
true -> c \in c :: l
byrewrite inE eqxx.Qed.
2f
i \in alphal n.+1 ->
i != a * alpha n -> i != b * alpha n -> i \in alphal n
250
2f
i
\in merge leq
(if a * head 1 (alphal n) \in alphal n
thenif b * head 1 (alphal n) \in alphal n
then [::]
else [:: b * head 1 (alphal n)]
else
a * head 1 (alphal n)
:: (if b * head 1 (alphal n) \in alphal n
then [::]
else [:: b * head 1 (alphal n)]))
(behead (alphal n)) ->
i != a * head 1 (alphal n) ->
i != b * head 1 (alphal n) -> i \in alphal n
5678f1930e6
i
\in merge leq
(if a * h \in alphal n
thenif b * h \in alphal n
then [::]
else [:: b * h]
else
a * h
:: (if b * h \in alphal n
then [::]
else [:: b * h])) (behead (alphal n)) ->
i != a * h -> i != b * h -> i \in alphal n
25b
i \in behead (alphal n) ->
i != a * h -> i != b * h -> i \in alphal n
25b
i
\in (if a * h \in alphal n
thenif b * h \in alphal n
then [::]
else [:: b * h]
else
a * h
:: (if b * h \in alphal n
then [::]
else [:: b * h])) ->
i != a * h -> i != b * h -> i \in alphal n
(a * alpha n \in alphal n ->
a * alpha n != alpha n -> a * alpha n \in alphal n.+1) ->
0 < alpha n -> a * alpha n \in alphal n.+1
18
(a * head 1 (alphal n) \in alphal n ->
a * head 1 (alphal n) != head 1 (alphal n) ->
a * head 1 (alphal n)
\in (if a * head 1 (alphal n) \in alphal n
thenif b * head 1 (alphal n) \in alphal n
then [::]
else [:: b * head 1 (alphal n)]
else
a * head 1 (alphal n)
:: (if b * head 1 (alphal n) \in alphal n
then [::]
else [:: b * head 1 (alphal n)])) ++
behead (alphal n)) ->
0 < head 1 (alphal n) ->
a * head 1 (alphal n)
\in (if a * head 1 (alphal n) \in alphal n
thenif b * head 1 (alphal n) \in alphal n
then [::]
else [:: b * head 1 (alphal n)]
else
a * head 1 (alphal n)
:: (if b * head 1 (alphal n) \in alphal n
then [::]
else [:: b * head 1 (alphal n)])) ++
behead (alphal n)
e5
(a * h \in alphal n ->
a * h != h ->
a * h
\in (if a * h \in alphal n
thenif b * h \in alphal n
then [::]
else [:: b * h]
else
a * h
:: (if b * h \in alphal n
then [::]
else [:: b * h])) ++ behead (alphal n)) ->
0 < h ->
a * h
\in (if a * h \in alphal n
thenif b * h \in alphal n
then [::]
else [:: b * h]
else
a * h
:: (if b * h \in alphal n
then [::]
else [:: b * h])) ++ behead (alphal n)
5678f19e6
H:a * h \in alphal n
H1:true ->
a * h != h ->
a * h
\in (if b * h \in alphal n
then [::]
else [:: b * h]) ++ behead (alphal n)
H2:0 < h
a * h
\in (if b * h \in alphal n then [::] else [:: b * h]) ++
behead (alphal n)
e5
a * h \notin alphal n ->
(false ->
a * h != h ->
a * h
\in (a * h
:: (if b * h \in alphal n
then [::]
else [:: b * h])) ++ behead (alphal n)) ->
0 < h ->
a * h
\in (a * h
:: (if b * h \in alphal n
then [::]
else [:: b * h])) ++ behead (alphal n)
5678f19e6280282
a * h != h
284
e5286
byrewrite mem_cat inE eqxx.Qed.
18
b * alpha n \in alphal n.+1
290
18
0 < alpha n -> b * alpha n \in alphal n.+1
18
(b * alpha n \in alphal n ->
b * alpha n != alpha n -> b * alpha n \in alphal n.+1) ->
0 < alpha n -> b * alpha n \in alphal n.+1
18
(b * head 1 (alphal n) \in alphal n ->
b * head 1 (alphal n) != head 1 (alphal n) ->
b * head 1 (alphal n)
\in (if a * head 1 (alphal n) \in alphal n
thenif b * head 1 (alphal n) \in alphal n
then [::]
else [:: b * head 1 (alphal n)]
else
a * head 1 (alphal n)
:: (if b * head 1 (alphal n) \in alphal n
then [::]
else [:: b * head 1 (alphal n)])) ++
behead (alphal n)) ->
0 < head 1 (alphal n) ->
b * head 1 (alphal n)
\in (if a * head 1 (alphal n) \in alphal n
thenif b * head 1 (alphal n) \in alphal n
then [::]
else [:: b * head 1 (alphal n)]
else
a * head 1 (alphal n)
:: (if b * head 1 (alphal n) \in alphal n
then [::]
else [:: b * head 1 (alphal n)])) ++
behead (alphal n)
e5
(b * h \in alphal n ->
b * h != h ->
b * h
\in (if a * h \in alphal n
thenif b * h \in alphal n
then [::]
else [:: b * h]
else
a * h
:: (if b * h \in alphal n
then [::]
else [:: b * h])) ++ behead (alphal n)) ->
0 < h ->
b * h
\in (if a * h \in alphal n
thenif b * h \in alphal n
then [::]
else [:: b * h]
else
a * h
:: (if b * h \in alphal n
then [::]
else [:: b * h])) ++ behead (alphal n)
5678f19e6
H:b * h \in alphal n
H1:true ->
b * h != h ->
b * h
\in (if a * h \in alphal n
then [::]
else [:: a * h]) ++ behead (alphal n)
282
b * h
\in (if a * h \in alphal n then [::] else [:: a * h]) ++
behead (alphal n)
e5
b * h \notin alphal n ->
(false ->
b * h != h ->
b * h
\in (if a * h \in alphal n
then [:: b * h]
else [:: a * h; b * h]) ++ behead (alphal n)) ->
0 < h ->
b * h
\in (if a * h \in alphal n
then [:: b * h]
else [:: a * h; b * h]) ++ behead (alphal n)
byrewrite -[X in X < _]mul1n ltn_mul2r alpha_gt0.Qed.
37f
isAB v -> v < alpha i.+1 -> v <= alpha i
3ae
5678f380
isAB:Main.isAB v
(alpha i < v -> alpha i.+1 <= v) ->
v < alpha i.+1 -> v <= alpha i
bydo2case: leqP => // _.Qed.
42
i <= n ->
\sum_(j < n) alpha j <=
a * (\sum_(j < n - i) alpha j) + \sum_(j < i) b ^ j
3b9
5678f43
iLn:i <= n
\sum_(j < n) alpha j <=
a * (\sum_(j < n - i) alpha j) + \sum_(j < i) b ^ j
3c0
\sum_(0 <= i < n) alpha i <=
\sum_(0 <= i < n - i) a * alpha i +
\sum_(0 <= i < i) b ^ i
5678f433c1
aux:foralluvwnn0n1 : nat,
u = v + w ->
(v != 0) * alpha n <= a * alpha n0 ->
(w != 0) * alpha n <= b ^ n1 ->
\sum_(n <= i0 < n + u) alpha i0 <=
\sum_(n0 <= i < n0 + v) a * alpha i + \sum_(n1 <= i0 < n1 + w) b ^ i0
3c6
3c0
foralluvwnn0n1 : nat,
u = v + w ->
(v != 0) * alpha n <= a * alpha n0 ->
(w != 0) * alpha n <= b ^ n1 ->
\sum_(n <= i0 < n + u) alpha i0 <=
\sum_(n0 <= i < n0 + v) a * alpha i +
\sum_(n1 <= i0 < n1 + w) b ^ i0
3ca
\sum_(0 <= i < 0 + n) alpha i <=
\sum_(0 <= i < 0 + (n - i)) a * alpha i +
\sum_(0 <= i < 0 + i) b ^ i
3cc
3c0
n = n - i + i
3c0
(n - i != 0) * alpha 0 <= a * alpha 0
3c0
(i != 0) * alpha 0 <= b ^ 0
3cd
3d4
3c03d9
3da3cd
3de
3c03db
3cc
3c03ce
5678f
n, i, j, k:nat
(0 != 0) * alpha i <= b ^ k ->
\sum_(i <= i0 < i + 0) alpha i0 <=
\sum_(j <= i < j + 0) a * alpha i +
\sum_(k <= i0 < k + 0) b ^ i0
5678f
n, u:nat
IH:forallvwnn0n1 : nat,
u = v + w ->
(v != 0) * alpha n <= a * alpha n0 ->
(w != 0) * alpha n <= b ^ n1 ->
\sum_(n <= i0 < n + u) alpha i0 <=
\sum_(n0 <= i < n0 + v) a * alpha i +
\sum_(n1 <= i0 < n1 + w) b ^ i0
w, i, j, k:nat
uvw:u.+1 = 0 + w.+1
aM1:(0 != 0) * alpha i <= a * alpha j
aM2:(w.+1 != 0) * alpha i <= b ^ k
\sum_(i <= i0 < i + u.+1) alpha i0 <=
\sum_(j <= i < j + 0) a * alpha i +
\sum_(k <= i0 < k + w.+1) b ^ i0
5678f3f13f2
v, i, j, k:nat
uvw:u.+1 = v.+1 + 0
aM1:(v.+1 != 0) * alpha i <= a * alpha j
aM2:(0 != 0) * alpha i <= b ^ k
\sum_(i <= i0 < i + u.+1) alpha i0 <=
\sum_(j <= i < j + v.+1) a * alpha i +
\sum_(k <= i0 < k + 0) b ^ i0
5678f3f13f2
v, w, i, j, k:nat
uvw:u.+1 = v.+1 + w.+1
3fc3f6
\sum_(i <= i0 < i + u.+1) alpha i0 <=
\sum_(j <= i < j + v.+1) a * alpha i +
\sum_(k <= i0 < k + w.+1) b ^ i0
3e9
3f03f7
3f83ff
406
3f0
alpha i + \sum_(i.+1 <= i < i + u.+1) alpha i <=
\sum_(j <= i < j + 0) a * alpha i +
\sum_(k <= i0 < k + w.+1) b ^ i0
408
3f0
alpha i + \sum_(i.+1 <= i < i + u.+1) alpha i <=
\sum_(j <= i < j + 0) a * alpha i +
(b ^ k + \sum_(k.+1 <= i < k + w.+1) b ^ i)
408
3f0
alpha i + \sum_(i.+1 <= i < i + u.+1) alpha i <=
b ^ k +
(\sum_(j <= i < j + 0) a * alpha i +
\sum_(k.+1 <= i < k + w.+1) b ^ i)
408
3f0
\sum_(i.+1 <= i < i + u.+1) alpha i <=
\sum_(j <= i < j + 0) a * alpha i +
\sum_(k.+1 <= i < k + w.+1) b ^ i
408
3f0
\sum_(i.+1 <= i < i.+1 + u) alpha i <=
\sum_(j <= i < j + 0) a * alpha i +
\sum_(k.+1 <= i < k.+1 + w) b ^ i
408
5678f
n, u, w, i, j, k:nat
3f43f53f6
(w != 0) * alpha i.+1 <= b ^ k.+1
408
5678f4223f43f53f6
w1:nat
(w1.+1 != 0) * alpha i.+1 <= b ^ k.+1
408
5678f4223f43f5428
aM2:alpha i <= b ^ k
alpha i.+1 <= b ^ k.+1
408
42d
a * alpha i <= b ^ k.+1
42d3a7
3f83ff
42d3a7
408
3f93fe
3ff
43a
3f9
alpha i + \sum_(i.+1 <= i < i + u.+1) alpha i <=
\sum_(j <= i < j + v.+1) a * alpha i +
\sum_(k <= i0 < k + 0) b ^ i0
43c
3f9
alpha i + \sum_(i.+1 <= i < i + u.+1) alpha i <=
a * alpha j + \sum_(j.+1 <= i < j + v.+1) a * alpha i +
\sum_(k <= i0 < k + 0) b ^ i0
43c
3f9
alpha i + \sum_(i.+1 <= i < i + u.+1) alpha i <=
a * alpha j +
(\sum_(j.+1 <= i < j + v.+1) a * alpha i +
\sum_(k <= i0 < k + 0) b ^ i0)
43c
3f9
\sum_(i.+1 <= i < i + u.+1) alpha i <=
\sum_(j.+1 <= i < j + v.+1) a * alpha i +
\sum_(k <= i0 < k + 0) b ^ i0
43c
3f9
\sum_(i.+1 <= i < i.+1 + u) alpha i <=
\sum_(j.+1 <= i < j.+1 + v) a * alpha i +
\sum_(k <= i0 < k + 0) b ^ i0
43c
5678f
n, u, v, i, j, k:nat
3fb3fc3fd
(v != 0) * alpha i.+1 <= a * alpha j.+1
43c
5678f4563fb3fc3fd
v1:nat
(v1.+1 != 0) * alpha i.+1 <= a * alpha j.+1
43c
5678f4563fb3fd45c
aM1:alpha i <= a * alpha j
alpha i.+1 <= a * alpha j.+1
43c
461
alpha i < a * alpha j.+1
43c
5678f4563fb3fd45c
a * alpha j < a * alpha j.+1
43c
400403
400463
5678f3f13f24014023fc3f6
aM3:alpha i.+1 <= a * alpha j.+1
403
5678f3f13f24014023f6462
463
473
47a467
473
5678f3f13f24014023f6
46c
473
475403
475
a * alpha j <= b ^ k ->
\sum_(i <= i1 < i + u.+1) alpha i1 <=
\sum_(j <= i < j + v.+1) a * alpha i +
\sum_(k <= i1 < k + w.+1) b ^ i1
5678f3f13f24014023fc3f6476
bLaa:b ^ k < a * alpha j
403
486
5678f3f13f24014023fc3f6476
aaEb:a * alpha j = b ^ k
403
5678f3f13f24014023fc3f6476
aaLb:a * alpha j < b ^ k
403
48a
491
a %| b ^ k ->
\sum_(i <= i0 < i + u.+1) alpha i0 <=
\sum_(j <= i < j + v.+1) a * alpha i +
\sum_(k <= i0 < k + w.+1) b ^ i0
493
491
gcdn a (b ^ k) = a ->
\sum_(i <= i0 < i + u.+1) alpha i0 <=
\sum_(j <= i < j + v.+1) a * alpha i +
\sum_(k <= i0 < k + w.+1) b ^ i0
493
491
1 = a ->
\sum_(i <= i0 < i + u.+1) alpha i0 <=
\sum_(j <= i < j + v.+1) a * alpha i +
\sum_(k <= i0 < k + w.+1) b ^ i0
493
495403
489
4a4
495
alpha i + \sum_(i.+1 <= i < i + u.+1) alpha i <=
\sum_(j <= i < j + v.+1) a * alpha i +
\sum_(k <= i0 < k + w.+1) b ^ i0
489
495
alpha i + \sum_(i.+1 <= i < i + u.+1) alpha i <=
a * alpha j + \sum_(j.+1 <= i < j + v.+1) a * alpha i +
\sum_(k <= i0 < k + w.+1) b ^ i0
489
495
alpha i + \sum_(i.+1 <= i < i + u.+1) alpha i <=
a * alpha j +
(\sum_(j.+1 <= i < j + v.+1) a * alpha i +
\sum_(k <= i0 < k + w.+1) b ^ i0)
489
495
\sum_(i.+1 <= i < i + u.+1) alpha i <=
\sum_(j.+1 <= i < j + v.+1) a * alpha i +
\sum_(k <= i0 < k + w.+1) b ^ i0
489
495
\sum_(i.+1 <= i < i.+1 + u) alpha i <=
\sum_(j.+1 <= i < j.+1 + v) a * alpha i +
\sum_(k <= i0 < k + w.+1) b ^ i0
489
5678f
n, u, v, w, i, j, k:nat
4023fc3f6476496
457
4be
(w.+1 != 0) * alpha i.+1 <= b ^ k
48a
5678f4bf4023fc3f647649645c
45d
4c0
4be4c2
489
5678f4bf40247649646242e
alpha i.+1 <= b ^ k
489
4cd
alpha i < b ^ k
489
48b403
48b4aa
48b
alpha i + \sum_(i.+1 <= i < i + u.+1) alpha i <=
\sum_(j <= i < j + v.+1) a * alpha i +
(b ^ k + \sum_(k.+1 <= i < k + w.+1) b ^ i)
48b
alpha i + \sum_(i.+1 <= i < i + u.+1) alpha i <=
b ^ k +
(\sum_(j <= i < j + v.+1) a * alpha i +
\sum_(k.+1 <= i < k + w.+1) b ^ i)
48b
\sum_(i.+1 <= i < i + u.+1) alpha i <=
\sum_(j <= i < j + v.+1) a * alpha i +
\sum_(k.+1 <= i < k + w.+1) b ^ i
48b
\sum_(i.+1 <= i < i.+1 + u) alpha i <=
\sum_(j <= i < j + v.+1) a * alpha i +
\sum_(k.+1 <= i < k.+1 + w) b ^ i