Step
*
1
1
1
1
1
2
1
2
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
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
BY
{ TACTIC:(SqequalSqle
          THEN AssumeHasValue
          THEN (HasValueD (-1) ORELSE (ExceptionCases (-1) THEN Try (Complete (SameException))))
          THEN (Try ((CallByValueReduce 0 THENA Complete (Auto)))
                THEN Try ((ExceptionCases (-1)
                           THEN Try (SameException)
                           THEN Try ((CallByValueReduce 0 THENA Complete (Auto)))))
                )
          THEN Try (((Assert ⌜(eval v' = c + b in sum_aux(s + d;v';s + 1;x.f[x]))↓⌝⋅ THENA Complete (Auto))
                     THEN HasValueD  (-1)
                     ))
          THEN Try (((Assert c + b ∈ ℤ BY (HasValueD (-1) THEN Complete (Auto))) THEN RWO  "15" 0 THEN Auto))) }
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
15.  (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)
\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:(SqequalSqle
                THEN  AssumeHasValue
                THEN  (HasValueD  (-1)  ORELSE  (ExceptionCases  (-1)  THEN  Try  (Complete  (SameException))))
                THEN  (Try  ((CallByValueReduce  0  THENA  Complete  (Auto)))
                            THEN  Try  ((ExceptionCases  (-1)
                                                  THEN  Try  (SameException)
                                                  THEN  Try  ((CallByValueReduce  0  THENA  Complete  (Auto)))))
                            )
                THEN  Try  (((Assert  \mkleeneopen{}(eval  v'  =  c  +  b  in
                                                          sum\_aux(s  +  d;v';s  +  1;x.f[x]))\mdownarrow{}\mkleeneclose{}\mcdot{}
                                        THENA  Complete  (Auto)
                                        )
                                      THEN  HasValueD    (-1)
                                      ))
                THEN  Try  (((Assert  c  +  b  \mmember{}  \mBbbZ{}  BY
                                                    (HasValueD  (-1)  THEN  Complete  (Auto)))
                                      THEN  RWO    "15"  0
                                      THEN  Auto)))
Home
Index