Step * 2 of Lemma add-poly-prepend-sq1


1. : ℤ × (ℤ List)
2. (ℤ × (ℤ List)) List
3. ∀[q,l:(ℤ × (ℤ List)) List].  (add-ipoly-prepend(v;q;l) rev(l) add-ipoly(v;q))
⊢ ∀[q,l:(ℤ × (ℤ List)) List].  (add-ipoly-prepend([u v];q;l) rev(l) add-ipoly([u v];q))
BY
(InductionOnList
   THEN RecUnfold `add-ipoly-prepend` 0
   THEN RecUnfold `add-ipoly` 0
   THEN Reduce 0
   THEN ((Subst' null(<u, v>ff THENA Auto) THEN (Subst' null(⋅tt THENA Auto))
   THEN Reduce 0
   THEN (UnivCD THENA Auto)
   THEN (Subst' null(<u1, v1>ff THENA Auto)
   THEN Reduce 0
   THEN (Assert ∀u,u':ℤ × (ℤ List).  (imonomial-le(u;u') ∈ 𝔹BY
               ProveWfLemma)
   THEN Assert ⌜∀p,q:(ℤ × (ℤ List)) List.  (add-ipoly(p;q) ∈ (ℤ × (ℤ List)) List)⌝⋅}

1
.....assertion..... 
1. : ℤ × (ℤ List)
2. (ℤ × (ℤ 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. (ℤ × (ℤ List)) List
8. ∀u,u':ℤ × (ℤ List).  (imonomial-le(u;u') ∈ 𝔹)
⊢ ∀p,q:(ℤ × (ℤ List)) List.  (add-ipoly(p;q) ∈ (ℤ × (ℤ List)) List)

2
1. : ℤ × (ℤ List)
2. (ℤ × (ℤ 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. (ℤ × (ℤ 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 
          in eval 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 
             in eval 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 


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))
\mvdash{}  \mforall{}[q,l:(\mBbbZ{}  \mtimes{}  (\mBbbZ{}  List))  List].    (add-ipoly-prepend([u  /  v];q;l)  \msim{}  rev(l)  +  add-ipoly([u  /  v];q))


By


Latex:
(InductionOnList
  THEN  RecUnfold  `add-ipoly-prepend`  0
  THEN  RecUnfold  `add-ipoly`  0
  THEN  Reduce  0
  THEN  ((Subst'  null(<u,  v>)  \msim{}  ff  0  THENA  Auto)  THEN  (Subst'  null(\mcdot{})  \msim{}  tt  0  THENA  Auto))
  THEN  Reduce  0
  THEN  (UnivCD  THENA  Auto)
  THEN  (Subst'  null(<u1,  v1>)  \msim{}  ff  0  THENA  Auto)
  THEN  Reduce  0
  THEN  (Assert  \mforall{}u,u':\mBbbZ{}  \mtimes{}  (\mBbbZ{}  List).    (imonomial-le(u;u')  \mmember{}  \mBbbB{})  BY
                          ProveWfLemma)
  THEN  Assert  \mkleeneopen{}\mforall{}p,q:(\mBbbZ{}  \mtimes{}  (\mBbbZ{}  List))  List.    (add-ipoly(p;q)  \mmember{}  (\mBbbZ{}  \mtimes{}  (\mBbbZ{}  List))  List)\mkleeneclose{}\mcdot{})




Home Index