Step
*
4
of Lemma
gcd-reduce-eq-constraints_wf2
.....subterm..... T:t
1:n
1. n : ℕ
2. LL : {L:ℤ List| ||L|| = (n + 1) ∈ ℤ}  List
3. sat : {L:ℤ List| ||L|| = (n + 1) ∈ ℤ}  List
4. L : {L:ℤ List| ||L|| = (n + 1) ∈ ℤ} 
5. Ls : {L:ℤ List| ||L|| = (n + 1) ∈ ℤ}  List
⊢ let h,t = L 
  in if t = Ax then if h=0 then inl [L / Ls] else (inr ⋅ ) otherwise eval g = |gcd-list(t)| in
                                                                     if (1) < (g)
                                                                        then if h rem g=0
                                                                             then eval L' = eager-map(λx.(x ÷ g);L) in
                                                                                  inl [L' / Ls]
                                                                             else (inr ⋅ )
                                                                        else (inl [L / Ls]) ∈ {L:ℤ List| ||L|| = (n + 1)\000C ∈ ℤ}  List?
BY
{ (RepeatFor 2 (DVar  `L') THENL [(Reduce -2 THEN Auto); RW (AddrC [2] (TagC (mk_tag_term 2))) 0]) }
1
1. n : ℕ
2. LL : {L:ℤ List| ||L|| = (n + 1) ∈ ℤ}  List
3. sat : {L:ℤ List| ||L|| = (n + 1) ∈ ℤ}  List
4. u : ℤ
5. v : ℤ List
6. ||[u / v]|| = (n + 1) ∈ ℤ
7. Ls : {L:ℤ List| ||L|| = (n + 1) ∈ ℤ}  List
⊢ if v = Ax then if u=0 then inl [[u / v] / Ls] else (inr ⋅ )
  otherwise eval g = |gcd-list(v)| in
            if (1) < (g)
               then if u rem g=0 then eval L' = eager-map(λx.(x ÷ g);[u / v]) in inl [L' / Ls] else (inr ⋅ )
               else (inl [[u / v] / Ls]) ∈ {L:ℤ List| ||L|| = (n + 1) ∈ ℤ}  List?
Latex:
Latex:
.....subterm.....  T:t
1:n
1.  n  :  \mBbbN{}
2.  LL  :  \{L:\mBbbZ{}  List|  ||L||  =  (n  +  1)\}    List
3.  sat  :  \{L:\mBbbZ{}  List|  ||L||  =  (n  +  1)\}    List
4.  L  :  \{L:\mBbbZ{}  List|  ||L||  =  (n  +  1)\} 
5.  Ls  :  \{L:\mBbbZ{}  List|  ||L||  =  (n  +  1)\}    List
\mvdash{}  let  h,t  =  L 
    in  if  t  =  Ax  then  if  h=0  then  inl  [L  /  Ls]  else  (inr  \mcdot{}  )
          otherwise  eval  g  =  |gcd-list(t)|  in
                              if  (1)  <  (g)
                                    then  if  h  rem  g=0
                                              then  eval  L'  =  eager-map(\mlambda{}x.(x  \mdiv{}  g);L)  in
                                                        inl  [L'  /  Ls]
                                              else  (inr  \mcdot{}  )
                                    else  (inl  [L  /  Ls])  \mmember{}  \{L:\mBbbZ{}  List|  ||L||  =  (n  +  1)\}    List?
By
Latex:
(RepeatFor  2  (DVar    `L')  THENL  [(Reduce  -2  THEN  Auto);  RW  (AddrC  [2]  (TagC  (mk\_tag\_term  2)))  0])
Home
Index