Step
*
of Lemma
poly-val-fun_wf
∀[n:ℕ]. ∀[p:polyform(n)].  (poly-val-fun(p) ∈ {l:ℤ List| n ≤ ||l||}  ⟶ ℤ)
BY
{ ((Assert ⌜∀k:ℕ. ∀[n:ℕ]. ∀[p:polyform(n)].  ((tree_size(p) ≤ k) 
⇒ (poly-val-fun(p) ∈ {l:ℤ List| n ≤ ||l||}  ⟶ ℤ))⌝⋅
   THENM (Auto THEN InstHyp [⌜tree_size(p)⌝;⌜n⌝;⌜p⌝] 1⋅ THEN Auto)
   )
   THEN InductionOnNat
   THEN Auto
   THEN (RepeatFor 2 (DVar `p')
         THEN RecUnfold `tree_size` (-1)
         THEN Reduce -1
         THEN Try (((Assert (0 ≤ tree_size(left)) ∧ (0 ≤ tree_size(p2)) BY Auto) THEN Auto))
         THEN RepUR ``poly-val-fun`` 0
         THEN (Fold `poly-val-fun` 0 ORELSE Auto))⋅) }
1
1. k : ℤ
2. 0 < k
3. ∀[n:ℕ]. ∀[p:polyform(n)].  ((tree_size(p) ≤ (k - 1)) 
⇒ (poly-val-fun(p) ∈ {l:ℤ List| n ≤ ||l||}  ⟶ ℤ))
4. n : ℕ
5. left : tree(ℤ)
6. p2 : tree(ℤ)
7. ↑(ispolyform(tree_node(left;p2)) n)
8. ((1 + tree_size(left)) + tree_size(p2)) ≤ k
9. 0 ≤ tree_size(left)
10. 0 ≤ tree_size(p2)
⊢ λl.eval t = tl(l) in
     eval av = poly-val-fun(left) tl(l) in
     eval bv = poly-val-fun(p2) l in
       if bv=0  then av  else eval h = hd(l) in av + (h * bv) ∈ {l:ℤ List| n ≤ ||l||}  ⟶ ℤ
Latex:
Latex:
\mforall{}[n:\mBbbN{}].  \mforall{}[p:polyform(n)].    (poly-val-fun(p)  \mmember{}  \{l:\mBbbZ{}  List|  n  \mleq{}  ||l||\}    {}\mrightarrow{}  \mBbbZ{})
By
Latex:
((Assert  \mkleeneopen{}\mforall{}k:\mBbbN{}
                        \mforall{}[n:\mBbbN{}].  \mforall{}[p:polyform(n)].
                            ((tree\_size(p)  \mleq{}  k)  {}\mRightarrow{}  (poly-val-fun(p)  \mmember{}  \{l:\mBbbZ{}  List|  n  \mleq{}  ||l||\}    {}\mrightarrow{}  \mBbbZ{}))\mkleeneclose{}\mcdot{}
  THENM  (Auto  THEN  InstHyp  [\mkleeneopen{}tree\_size(p)\mkleeneclose{};\mkleeneopen{}n\mkleeneclose{};\mkleeneopen{}p\mkleeneclose{}]  1\mcdot{}  THEN  Auto)
  )
  THEN  InductionOnNat
  THEN  Auto
  THEN  (RepeatFor  2  (DVar  `p')
              THEN  RecUnfold  `tree\_size`  (-1)
              THEN  Reduce  -1
              THEN  Try  (((Assert  (0  \mleq{}  tree\_size(left))  \mwedge{}  (0  \mleq{}  tree\_size(p2))  BY  Auto)  THEN  Auto))
              THEN  RepUR  ``poly-val-fun``  0
              THEN  (Fold  `poly-val-fun`  0  ORELSE  Auto))\mcdot{})
Home
Index