Step
*
of Lemma
rounding-div-property
∀[a:ℤ]. ∀[n:ℕ+].  ((2 * |(n * [a ÷ n]) - a|) ≤ n)
BY
{ (Auto
   THEN Unfold `rounding-div` 0
   THEN RepeatFor 2 ((CallByValueReduce 0 THENA Auto))
   THEN ((RWO "divrem-sq" 0 THENA Auto) THEN Reduce 0)
   THEN (InstLemma `div_rem_sum` [⌜a⌝;⌜n⌝]⋅ THENA Auto)
   THEN MoveToConcl (-1)
   THEN (GenConcl ⌜(a ÷ n) = q ∈ ℤ⌝⋅ THENA Auto)
   THEN (InstLemma `rem_bounds_absval` [⌜n⌝;⌜a⌝]⋅ THENA Auto)
   THEN MoveToConcl (-1)
   THEN (GenConcl ⌜(a rem n) = r ∈ ℤ⌝⋅ THENA Auto)
   THEN (CallByValueReduce 0 THENA Auto)
   THEN RepeatFor 2 ((D 0 THENA Auto))
   THEN HypSubst' (-1) 0
   THEN (Subst' |n| ~ n -2 THENA Auto)
   THEN (RWO "absval_strict_ubound" (-2) THENA Auto)) }
1
1. a : ℤ
2. n : ℕ+
3. q : ℤ
4. (a ÷ n) = q ∈ ℤ
5. r : ℤ
6. (a rem n) = r ∈ ℤ
7. -n < r ∧ r < n
8. a = ((q * n) + r) ∈ ℤ
⊢ (2 * |(n * if (2 * r) < (n)  then if (-n) < (2 * r)  then q  else (q - 1)  else (q + 1)) - (q * n) + r|) ≤ n
Latex:
Latex:
\mforall{}[a:\mBbbZ{}].  \mforall{}[n:\mBbbN{}\msupplus{}].    ((2  *  |(n  *  [a  \mdiv{}  n])  -  a|)  \mleq{}  n)
By
Latex:
(Auto
  THEN  Unfold  `rounding-div`  0
  THEN  RepeatFor  2  ((CallByValueReduce  0  THENA  Auto))
  THEN  ((RWO  "divrem-sq"  0  THENA  Auto)  THEN  Reduce  0)
  THEN  (InstLemma  `div\_rem\_sum`  [\mkleeneopen{}a\mkleeneclose{};\mkleeneopen{}n\mkleeneclose{}]\mcdot{}  THENA  Auto)
  THEN  MoveToConcl  (-1)
  THEN  (GenConcl  \mkleeneopen{}(a  \mdiv{}  n)  =  q\mkleeneclose{}\mcdot{}  THENA  Auto)
  THEN  (InstLemma  `rem\_bounds\_absval`  [\mkleeneopen{}n\mkleeneclose{};\mkleeneopen{}a\mkleeneclose{}]\mcdot{}  THENA  Auto)
  THEN  MoveToConcl  (-1)
  THEN  (GenConcl  \mkleeneopen{}(a  rem  n)  =  r\mkleeneclose{}\mcdot{}  THENA  Auto)
  THEN  (CallByValueReduce  0  THENA  Auto)
  THEN  RepeatFor  2  ((D  0  THENA  Auto))
  THEN  HypSubst'  (-1)  0
  THEN  (Subst'  |n|  \msim{}  n  -2  THENA  Auto)
  THEN  (RWO  "absval\_strict\_ubound"  (-2)  THENA  Auto))
Home
Index