Step
*
of Lemma
ml-int-vec-add-sq
∀[as,bs:ℤ List].  (ml-int-vec-add(as;bs) ~ as + bs)
BY
{ (RepeatFor 2 (InductionOnList)
   THEN Unfold `ml-int-vec-add` 0
   THEN (RW (AddrC [1] (LemmaC `ml_apply-sq`)) 0 THEN Try (Complete (Auto)))
   THEN RW (AddrC [1;1] (LemmaC `ml_apply-sq`)) 0
   THEN Auto
   THEN (RW  (SweepUpC UnrollRecursionC) 0 THEN Reduce 0)
   THEN Try (Fold `ml-int-vec-add` 0)
   THEN RecUnfold `int-vec-add` 0
   THEN Reduce 0
   THEN Try (Fold `int-vec-add` 0)
   THEN (Trivial ORELSE RepUR ``spreadcons`` 0)) }
1
1. u : ℤ
2. v : ℤ List
3. ∀[bs:ℤ List]. (ml-int-vec-add(v;bs) ~ v + bs)
4. u1 : ℤ
5. v1 : ℤ List
6. ml-int-vec-add([u / v];v1) ~ [u / v] + v1
⊢ [u + u1 / ml-int-vec-add(v;v1)] = [u + u1 / v + v1] ∈ (ℤ List)
Latex:
Latex:
\mforall{}[as,bs:\mBbbZ{}  List].    (ml-int-vec-add(as;bs)  \msim{}  as  +  bs)
By
Latex:
(RepeatFor  2  (InductionOnList)
  THEN  Unfold  `ml-int-vec-add`  0
  THEN  (RW  (AddrC  [1]  (LemmaC  `ml\_apply-sq`))  0  THEN  Try  (Complete  (Auto)))
  THEN  RW  (AddrC  [1;1]  (LemmaC  `ml\_apply-sq`))  0
  THEN  Auto
  THEN  (RW    (SweepUpC  UnrollRecursionC)  0  THEN  Reduce  0)
  THEN  Try  (Fold  `ml-int-vec-add`  0)
  THEN  RecUnfold  `int-vec-add`  0
  THEN  Reduce  0
  THEN  Try  (Fold  `int-vec-add`  0)
  THEN  (Trivial  ORELSE  RepUR  ``spreadcons``  0))
Home
Index