Step
*
1
of Lemma
mul-polynom_wf2
1. n : ℤ
2. 0 < n
3. ∀[p,q:polynom(n - 1)].  (mul-polynom(n - 1;p;q) ∈ polynom(n - 1))
4. ¬(n = 0 ∈ ℤ)
5. p : polynom(n)
6. q : polynom(n)
⊢ eager-accum(z,a.add-polynom(n;tt;if null(z) then [] else z @ [polyconst(n - 1;0)] fi if poly-zero(n - 1;a)
  then []
  else map(λx.mul-polynom(n - 1;a;x);q)
  fi );polyconst(n;0);p) ∈ polynom(n)
BY
{ (RepeatFor 2 (((RecUnfold `polynom` (-2) THENA Auto) THEN (SplitOnHypITE -2  THENA Auto) THEN Try (Trivial)))
   THEN skip{(Auto
              THEN Try ((RecUnfold `polynom` 0 THEN (SplitOnConclITE THENA Auto) THEN Try (Trivial)))
              THEN Try (OnVar `z' (\h. ((RecUnfold `polynom` h THENA Auto)
                                        THEN (SplitOnHypITE h  THENA Auto)
                                        THEN Try (Trivial)))⋅)
              THEN DSetVars
              THEN Try ((RepUR ``polyform-lead-nonzero`` 0 THEN MemTypeCD))
              THEN Auto)}
   ) }
1
.....falsecase..... 
1. n : ℤ
2. 0 < n
3. ∀[p,q:polynom(n - 1)].  (mul-polynom(n - 1;p;q) ∈ polynom(n - 1))
4. ¬(n = 0 ∈ ℤ)
5. p : {p:polynom(n - 1) List| polyform-lead-nonzero(n;p)} 
6. q : {p:polynom(n - 1) List| polyform-lead-nonzero(n;p)} 
7. ¬(n = 0 ∈ ℤ)
8. ¬(n = 0 ∈ ℤ)
⊢ eager-accum(z,a.add-polynom(n;tt;if null(z) then [] else z @ [polyconst(n - 1;0)] fi if poly-zero(n - 1;a)
  then []
  else map(λx.mul-polynom(n - 1;a;x);q)
  fi );polyconst(n;0);p) ∈ polynom(n)
Latex:
Latex:
1.  n  :  \mBbbZ{}
2.  0  <  n
3.  \mforall{}[p,q:polynom(n  -  1)].    (mul-polynom(n  -  1;p;q)  \mmember{}  polynom(n  -  1))
4.  \mneg{}(n  =  0)
5.  p  :  polynom(n)
6.  q  :  polynom(n)
\mvdash{}  eager-accum(z,a.add-polynom(n;tt;if  null(z)
    then  []
    else  z  @  [polyconst(n  -  1;0)]
    fi  ;if  poly-zero(n  -  1;a)  then  []  else  map(\mlambda{}x.mul-polynom(n  -  1;a;x);q)  fi  );polyconst(n;0);p)
    \mmember{}  polynom(n)
By
Latex:
(RepeatFor  2  (((RecUnfold  `polynom`  (-2)  THENA  Auto)
                              THEN  (SplitOnHypITE  -2    THENA  Auto)
                              THEN  Try  (Trivial)))
  THEN  skip\{(Auto
                        THEN  Try  ((RecUnfold  `polynom`  0  THEN  (SplitOnConclITE  THENA  Auto)  THEN  Try  (Trivial)))
                        THEN  Try  (OnVar  `z'  (\mbackslash{}h.  ((RecUnfold  `polynom`  h  THENA  Auto)
                                                                            THEN  (SplitOnHypITE  h    THENA  Auto)
                                                                            THEN  Try  (Trivial)))\mcdot{})
                        THEN  DSetVars
                        THEN  Try  ((RepUR  ``polyform-lead-nonzero``  0  THEN  MemTypeCD))
                        THEN  Auto)\}
  )
Home
Index