Step * 1 2 of Lemma add-ipoly-wf1


1. ∀u,u':ℤ × (ℤ List).  (imonomial-le(u;u') ∈ 𝔹)
2. : ℤ × (ℤ List)
3. (ℤ × (ℤ List)) List
4. ∀q:(ℤ × (ℤ List)) List. (add-ipoly(v;q) ∈ (ℤ × (ℤ List)) List)
⊢ ∀q:(ℤ × (ℤ List)) List. (add-ipoly([u v];q) ∈ (ℤ × (ℤ List)) List)
BY
(InductionOnList
   THEN RecUnfold `add-ipoly` 0
   THEN Repeat ((CallByValueReduceOnTypes [⌜(ℤ × (ℤ List)) List⌝0⋅ THENA Auto))) }

1
1. ∀u,u':ℤ × (ℤ List).  (imonomial-le(u;u') ∈ 𝔹)
2. : ℤ × (ℤ List)
3. (ℤ × (ℤ List)) List
4. ∀q:(ℤ × (ℤ List)) List. (add-ipoly(v;q) ∈ (ℤ × (ℤ List)) List)
⊢ eval qq [] in
  if null([u v]) then qq
  if null(qq) then [u v]
  else let p1,ps [u v] 
       in let q1,qs qq 
          in if imonomial-le(p1;q1)
             then if imonomial-le(q1;p1)
                  then let x ⟵ add-ipoly(ps;qs)
                       in let cp,vs p1 
                          in eval cp (fst(q1)) in
                             if c=0  then x  else [<c, vs> x]
                  else let x ⟵ add-ipoly(ps;[q1 qs])
                       in [p1 x]
                  fi 
             else let x ⟵ add-ipoly([p1 ps];qs)
                  in [q1 x]
             fi 
  fi  ∈ (ℤ × (ℤ List)) List

2
1. ∀u,u':ℤ × (ℤ List).  (imonomial-le(u;u') ∈ 𝔹)
2. : ℤ × (ℤ List)
3. (ℤ × (ℤ List)) List
4. ∀q:(ℤ × (ℤ List)) List. (add-ipoly(v;q) ∈ (ℤ × (ℤ List)) List)
5. u1 : ℤ × (ℤ List)
6. v1 (ℤ × (ℤ List)) List
7. add-ipoly([u v];v1) ∈ (ℤ × (ℤ List)) List
⊢ if null([u v]) then [u1 v1]
  if null([u1 v1]) then [u v]
  else let p1,ps [u v] 
       in let q1,qs [u1 v1] 
          in if imonomial-le(p1;q1)
             then if imonomial-le(q1;p1)
                  then let x ⟵ add-ipoly(ps;qs)
                       in let cp,vs p1 
                          in eval cp (fst(q1)) in
                             if c=0  then x  else [<c, vs> x]
                  else let x ⟵ add-ipoly(ps;[q1 qs])
                       in [p1 x]
                  fi 
             else let x ⟵ add-ipoly([p1 ps];qs)
                  in [q1 x]
             fi 
  fi  ∈ (ℤ × (ℤ List)) List


Latex:


Latex:

1.  \mforall{}u,u':\mBbbZ{}  \mtimes{}  (\mBbbZ{}  List).    (imonomial-le(u;u')  \mmember{}  \mBbbB{})
2.  u  :  \mBbbZ{}  \mtimes{}  (\mBbbZ{}  List)
3.  v  :  (\mBbbZ{}  \mtimes{}  (\mBbbZ{}  List))  List
4.  \mforall{}q:(\mBbbZ{}  \mtimes{}  (\mBbbZ{}  List))  List.  (add-ipoly(v;q)  \mmember{}  (\mBbbZ{}  \mtimes{}  (\mBbbZ{}  List))  List)
\mvdash{}  \mforall{}q:(\mBbbZ{}  \mtimes{}  (\mBbbZ{}  List))  List.  (add-ipoly([u  /  v];q)  \mmember{}  (\mBbbZ{}  \mtimes{}  (\mBbbZ{}  List))  List)


By


Latex:
(InductionOnList
  THEN  RecUnfold  `add-ipoly`  0
  THEN  Repeat  ((CallByValueReduceOnTypes  [\mkleeneopen{}(\mBbbZ{}  \mtimes{}  (\mBbbZ{}  List))  List\mkleeneclose{}]  0\mcdot{}  THENA  Auto)))




Home Index