Step
*
2
2
of Lemma
add-poly-prepend-sq1
1. u : ℤ × (ℤ List)
2. v : (ℤ × (ℤ List)) List
3. ∀[q,l:(ℤ × (ℤ List)) List].  (add-ipoly-prepend(v;q;l) ~ rev(l) + add-ipoly(v;q))
4. u1 : ℤ × (ℤ List)
5. v1 : (ℤ × (ℤ List)) List
6. ∀[l:(ℤ × (ℤ List)) List]. (add-ipoly-prepend([u / v];v1;l) ~ rev(l) + add-ipoly([u / v];v1))
7. l : (ℤ × (ℤ List)) List
8. ∀u,u':ℤ × (ℤ List).  (imonomial-le(u;u') ∈ 𝔹)
9. ∀p,q:(ℤ × (ℤ List)) List.  (add-ipoly(p;q) ∈ (ℤ × (ℤ List)) List)
⊢ if imonomial-le(u;u1)
then if imonomial-le(u1;u)
     then let cp,vs = u 
          in eval c = cp + (fst(u1)) in
             eval l' = if c=0  then l  else [<c, vs> / l] in
               add-ipoly-prepend(v;v1;l')
     else add-ipoly-prepend(v;[u1 / v1];[u / l])
     fi 
else add-ipoly-prepend([u / v];v1;[u1 / l])
fi  ~ rev(l) + if imonomial-le(u;u1)
then if imonomial-le(u1;u)
     then let x ⟵ add-ipoly(v;v1)
          in let cp,vs = u 
             in eval c = cp + (fst(u1)) in
                if c=0  then x  else [<c, vs> / x]
     else let x ⟵ add-ipoly(v;[u1 / v1])
          in [u / x]
     fi 
else let x ⟵ add-ipoly([u / v];v1)
     in [u1 / x]
fi 
BY
{ Repeat ((SplitOnConclITE THENA Auto)) }
1
.....truecase..... 
1. u : ℤ × (ℤ List)
2. v : (ℤ × (ℤ List)) List
3. ∀[q,l:(ℤ × (ℤ List)) List].  (add-ipoly-prepend(v;q;l) ~ rev(l) + add-ipoly(v;q))
4. u1 : ℤ × (ℤ List)
5. v1 : (ℤ × (ℤ List)) List
6. ∀[l:(ℤ × (ℤ List)) List]. (add-ipoly-prepend([u / v];v1;l) ~ rev(l) + add-ipoly([u / v];v1))
7. l : (ℤ × (ℤ List)) List
8. ∀u,u':ℤ × (ℤ List).  (imonomial-le(u;u') ∈ 𝔹)
9. ∀p,q:(ℤ × (ℤ List)) List.  (add-ipoly(p;q) ∈ (ℤ × (ℤ List)) List)
10. ↑imonomial-le(u;u1)
11. ↑imonomial-le(u1;u)
⊢ let cp,vs = u 
  in eval c = cp + (fst(u1)) in
     eval l' = if c=0  then l  else [<c, vs> / l] in
       add-ipoly-prepend(v;v1;l') ~ rev(l) + let x ⟵ add-ipoly(v;v1)
                                             in let cp,vs = u 
                                                in eval c = cp + (fst(u1)) in
                                                   if c=0  then x  else [<c, vs> / x]
2
.....falsecase..... 
1. u : ℤ × (ℤ List)
2. v : (ℤ × (ℤ List)) List
3. ∀[q,l:(ℤ × (ℤ List)) List].  (add-ipoly-prepend(v;q;l) ~ rev(l) + add-ipoly(v;q))
4. u1 : ℤ × (ℤ List)
5. v1 : (ℤ × (ℤ List)) List
6. ∀[l:(ℤ × (ℤ List)) List]. (add-ipoly-prepend([u / v];v1;l) ~ rev(l) + add-ipoly([u / v];v1))
7. l : (ℤ × (ℤ List)) List
8. ∀u,u':ℤ × (ℤ List).  (imonomial-le(u;u') ∈ 𝔹)
9. ∀p,q:(ℤ × (ℤ List)) List.  (add-ipoly(p;q) ∈ (ℤ × (ℤ List)) List)
10. ↑imonomial-le(u;u1)
11. ¬↑imonomial-le(u1;u)
⊢ add-ipoly-prepend(v;[u1 / v1];[u / l]) ~ rev(l) + let x ⟵ add-ipoly(v;[u1 / v1])
                                                    in [u / x]
3
.....falsecase..... 
1. u : ℤ × (ℤ List)
2. v : (ℤ × (ℤ List)) List
3. ∀[q,l:(ℤ × (ℤ List)) List].  (add-ipoly-prepend(v;q;l) ~ rev(l) + add-ipoly(v;q))
4. u1 : ℤ × (ℤ List)
5. v1 : (ℤ × (ℤ List)) List
6. ∀[l:(ℤ × (ℤ List)) List]. (add-ipoly-prepend([u / v];v1;l) ~ rev(l) + add-ipoly([u / v];v1))
7. l : (ℤ × (ℤ List)) List
8. ∀u,u':ℤ × (ℤ List).  (imonomial-le(u;u') ∈ 𝔹)
9. ∀p,q:(ℤ × (ℤ List)) List.  (add-ipoly(p;q) ∈ (ℤ × (ℤ List)) List)
10. ¬↑imonomial-le(u;u1)
⊢ add-ipoly-prepend([u / v];v1;[u1 / l]) ~ rev(l) + let x ⟵ add-ipoly([u / v];v1)
                                                    in [u1 / x]
Latex:
Latex:
1.  u  :  \mBbbZ{}  \mtimes{}  (\mBbbZ{}  List)
2.  v  :  (\mBbbZ{}  \mtimes{}  (\mBbbZ{}  List))  List
3.  \mforall{}[q,l:(\mBbbZ{}  \mtimes{}  (\mBbbZ{}  List))  List].    (add-ipoly-prepend(v;q;l)  \msim{}  rev(l)  +  add-ipoly(v;q))
4.  u1  :  \mBbbZ{}  \mtimes{}  (\mBbbZ{}  List)
5.  v1  :  (\mBbbZ{}  \mtimes{}  (\mBbbZ{}  List))  List
6.  \mforall{}[l:(\mBbbZ{}  \mtimes{}  (\mBbbZ{}  List))  List].  (add-ipoly-prepend([u  /  v];v1;l)  \msim{}  rev(l)  +  add-ipoly([u  /  v];v1))
7.  l  :  (\mBbbZ{}  \mtimes{}  (\mBbbZ{}  List))  List
8.  \mforall{}u,u':\mBbbZ{}  \mtimes{}  (\mBbbZ{}  List).    (imonomial-le(u;u')  \mmember{}  \mBbbB{})
9.  \mforall{}p,q:(\mBbbZ{}  \mtimes{}  (\mBbbZ{}  List))  List.    (add-ipoly(p;q)  \mmember{}  (\mBbbZ{}  \mtimes{}  (\mBbbZ{}  List))  List)
\mvdash{}  if  imonomial-le(u;u1)
then  if  imonomial-le(u1;u)
          then  let  cp,vs  =  u 
                    in  eval  c  =  cp  +  (fst(u1))  in
                          eval  l'  =  if  c=0    then  l    else  [<c,  vs>  /  l]  in
                              add-ipoly-prepend(v;v1;l')
          else  add-ipoly-prepend(v;[u1  /  v1];[u  /  l])
          fi 
else  add-ipoly-prepend([u  /  v];v1;[u1  /  l])
fi    \msim{}  rev(l)  +  if  imonomial-le(u;u1)
then  if  imonomial-le(u1;u)
          then  let  x  \mleftarrow{}{}  add-ipoly(v;v1)
                    in  let  cp,vs  =  u 
                          in  eval  c  =  cp  +  (fst(u1))  in
                                if  c=0    then  x    else  [<c,  vs>  /  x]
          else  let  x  \mleftarrow{}{}  add-ipoly(v;[u1  /  v1])
                    in  [u  /  x]
          fi 
else  let  x  \mleftarrow{}{}  add-ipoly([u  /  v];v1)
          in  [u1  /  x]
fi 
By
Latex:
Repeat  ((SplitOnConclITE  THENA  Auto))
Home
Index