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