Step
*
1
1
1
1
1
2
1
of Lemma
sum-unroll
1. f : Base
2. m : ℕ
3. d : ℤ
4. 0 < d
5. ∀s,b:ℤ. (sum_aux(s + (d - 1) + 1;b;s;x.f[x]) ~ sum_aux(s + (d - 1);b;s;x.f[x]) + f[s + (d - 1)])
6. s : ℤ
7. b : ℤ
8. ∀b:ℤ. (sum_aux(s + d + 1;b;s + 1;x.f[x]) ~ sum_aux(s + d;b;s + 1;x.f[x]) + f[s + d])
9. s < s + d + 1
10. s < s + d
11. a : Base
12. f[s + d] = a ∈ Base
13. c : Base
14. f[s] = c ∈ Base
⊢ eval v' = c + b in
sum_aux(s + d + 1;v';s + 1;x.f[x]) ~ eval v' = c + b in sum_aux(s + d;v';s + 1;x.f[x]) + a
BY
{ TACTIC:Assert ⌜(c + b ∈ ℤ)
⇒ (sum_aux(s + d + 1;c + b;s + 1;x.f[x]) ~ sum_aux(s + d;c + b;s + 1;x.f[x]) + a)⌝⋅ }
1
.....assertion.....
1. f : Base
2. m : ℕ
3. d : ℤ
4. 0 < d
5. ∀s,b:ℤ. (sum_aux(s + (d - 1) + 1;b;s;x.f[x]) ~ sum_aux(s + (d - 1);b;s;x.f[x]) + f[s + (d - 1)])
6. s : ℤ
7. b : ℤ
8. ∀b:ℤ. (sum_aux(s + d + 1;b;s + 1;x.f[x]) ~ sum_aux(s + d;b;s + 1;x.f[x]) + f[s + d])
9. s < s + d + 1
10. s < s + d
11. a : Base
12. f[s + d] = a ∈ Base
13. c : Base
14. f[s] = c ∈ Base
⊢ (c + b ∈ ℤ)
⇒ (sum_aux(s + d + 1;c + b;s + 1;x.f[x]) ~ sum_aux(s + d;c + b;s + 1;x.f[x]) + a)
2
1. f : Base
2. m : ℕ
3. d : ℤ
4. 0 < d
5. ∀s,b:ℤ. (sum_aux(s + (d - 1) + 1;b;s;x.f[x]) ~ sum_aux(s + (d - 1);b;s;x.f[x]) + f[s + (d - 1)])
6. s : ℤ
7. b : ℤ
8. ∀b:ℤ. (sum_aux(s + d + 1;b;s + 1;x.f[x]) ~ sum_aux(s + d;b;s + 1;x.f[x]) + f[s + d])
9. s < s + d + 1
10. s < s + d
11. a : Base
12. f[s + d] = a ∈ Base
13. c : Base
14. f[s] = c ∈ Base
15. (c + b ∈ ℤ)
⇒ (sum_aux(s + d + 1;c + b;s + 1;x.f[x]) ~ sum_aux(s + d;c + b;s + 1;x.f[x]) + a)
⊢ eval v' = c + b in
sum_aux(s + d + 1;v';s + 1;x.f[x]) ~ eval v' = c + b in sum_aux(s + d;v';s + 1;x.f[x]) + a
Latex:
Latex:
1. f : Base
2. m : \mBbbN{}
3. d : \mBbbZ{}
4. 0 < d
5. \mforall{}s,b:\mBbbZ{}. (sum\_aux(s + (d - 1) + 1;b;s;x.f[x]) \msim{} sum\_aux(s + (d - 1);b;s;x.f[x]) + f[s + (d - 1)])
6. s : \mBbbZ{}
7. b : \mBbbZ{}
8. \mforall{}b:\mBbbZ{}. (sum\_aux(s + d + 1;b;s + 1;x.f[x]) \msim{} sum\_aux(s + d;b;s + 1;x.f[x]) + f[s + d])
9. s < s + d + 1
10. s < s + d
11. a : Base
12. f[s + d] = a
13. c : Base
14. f[s] = c
\mvdash{} eval v' = c + b in
sum\_aux(s + d + 1;v';s + 1;x.f[x]) \msim{} eval v' = c + b in sum\_aux(s + d;v';s + 1;x.f[x]) + a
By
Latex:
TACTIC:Assert \mkleeneopen{}(c + b \mmember{} \mBbbZ{})
{}\mRightarrow{} (sum\_aux(s + d + 1;c + b;s + 1;x.f[x]) \msim{} sum\_aux(s + d;c + b;s + 1;x.f[x]) + a)\mkleeneclose{}\mcdot{}
Home
Index