Step
*
of Lemma
ratreduce_wf
∀[x:ℤ × ℕ+]. (ratreduce(x) ∈ {y:ℤ × ℕ+| ratreal(x) = ratreal(y)} )
BY
{ (Intro
   THEN Unhide
   THEN D 1
   THEN RepUR ``ratreduce`` 0
   THEN (RWO "better-gcd-gcd" 0 THENA Auto)
   THEN (Assert (|gcd(x1;x2)| | x1) ∧ (|gcd(x1;x2)| | x2) BY
               (RWO "absval-divides" 0 THEN Auto))
   THEN MoveToConcl (-1)
   THEN (Assert 0 < |gcd(x1;x2)| BY
               (RWO "absval-positive" 0 THEN Auto THEN BLemma  `gcd-non-zero` THEN Auto))
   THEN MoveToConcl (-1)
   THEN (GenConcl⌜gcd(x1;x2) = g ∈ ℤ⌝⋅ THENA Auto)
   THEN Unfold `divides` 0
   THEN RepeatFor 2 ((D 0 THENA Auto))
   THEN ExRepD
   THEN (CallByValueReduce 0 THENA Auto)
   THEN (Subst' x1 ÷ |g| ~ c1 0 THENA (Auto THEN RWO "7" 0 THEN Auto))
   THEN (Subst' x2 ÷ |g| ~ c 0 THENA (Auto THEN RWO "9" 0 THEN Auto))
   THEN RepeatFor 2 ((CallByValueReduce 0 THENA Auto))
   THEN (Assert c ∈ ℕ+ BY
               (MemTypeCD
                THEN Auto
                THEN (Assert 0 < c * |g| BY
                            Auto)
                THEN (RWO  "mul_positive_iff" (-1) ⋅ THENA Auto)
                THEN D -1
                THEN Auto))) }
1
1. x1 : ℤ
2. x2 : ℕ+
3. g : ℤ
4. gcd(x1;x2) = g ∈ ℤ
5. 0 < |g|
6. c1 : ℤ
7. x1 = (|g| * c1) ∈ ℤ
8. c : ℤ
9. x2 = (|g| * c) ∈ ℤ
10. c ∈ ℕ+
⊢ <c1, c> ∈ {y:ℤ × ℕ+| ratreal(<x1, x2>) = ratreal(y)} 
Latex:
Latex:
\mforall{}[x:\mBbbZ{}  \mtimes{}  \mBbbN{}\msupplus{}].  (ratreduce(x)  \mmember{}  \{y:\mBbbZ{}  \mtimes{}  \mBbbN{}\msupplus{}|  ratreal(x)  =  ratreal(y)\}  )
By
Latex:
(Intro
  THEN  Unhide
  THEN  D  1
  THEN  RepUR  ``ratreduce``  0
  THEN  (RWO  "better-gcd-gcd"  0  THENA  Auto)
  THEN  (Assert  (|gcd(x1;x2)|  |  x1)  \mwedge{}  (|gcd(x1;x2)|  |  x2)  BY
                          (RWO  "absval-divides"  0  THEN  Auto))
  THEN  MoveToConcl  (-1)
  THEN  (Assert  0  <  |gcd(x1;x2)|  BY
                          (RWO  "absval-positive"  0  THEN  Auto  THEN  BLemma    `gcd-non-zero`  THEN  Auto))
  THEN  MoveToConcl  (-1)
  THEN  (GenConcl\mkleeneopen{}gcd(x1;x2)  =  g\mkleeneclose{}\mcdot{}  THENA  Auto)
  THEN  Unfold  `divides`  0
  THEN  RepeatFor  2  ((D  0  THENA  Auto))
  THEN  ExRepD
  THEN  (CallByValueReduce  0  THENA  Auto)
  THEN  (Subst'  x1  \mdiv{}  |g|  \msim{}  c1  0  THENA  (Auto  THEN  RWO  "7"  0  THEN  Auto))
  THEN  (Subst'  x2  \mdiv{}  |g|  \msim{}  c  0  THENA  (Auto  THEN  RWO  "9"  0  THEN  Auto))
  THEN  RepeatFor  2  ((CallByValueReduce  0  THENA  Auto))
  THEN  (Assert  c  \mmember{}  \mBbbN{}\msupplus{}  BY
                          (MemTypeCD
                            THEN  Auto
                            THEN  (Assert  0  <  c  *  |g|  BY
                                                    Auto)
                            THEN  (RWO    "mul\_positive\_iff"  (-1)  \mcdot{}  THENA  Auto)
                            THEN  D  -1
                            THEN  Auto)))
Home
Index