Step
*
of Lemma
genfact-step
∀[n:ℤ]. ∀[f:ℕ+ ⟶ ℤ]. ∀[b:ℤ].  (genfact(n;b;m.f[m]) = if n <z 1 then b else f[n] * genfact(n - 1;b;m.f[m]) fi  ∈ ℤ)
BY
{ ((Assert ∀[n:ℕ]. ∀[f:ℕ+ ⟶ ℤ]. ∀[b:ℤ].
             (genfact(n;b;m.f[m]) = if n <z 1 then b else f[n] * genfact(n - 1;b;m.f[m]) fi  ∈ ℤ) BY
          (InductionOnNat
           THEN Auto
           THEN (RW (AddrC [2] UnfoldTopAbC) 0 THEN AutoSplit)
           THEN (GenConclTerm ⌜f[n]⌝⋅ THENA Auto)
           THEN RepeatFor 3 ((CallByValueReduce 0 THENA Auto))
           THEN RWO "genfact-base-linear" 0
           THEN Auto))
   THEN Auto
   THEN Decide ⌜0 ≤ n⌝⋅
   THEN Auto) }
1
1. ∀[n:ℕ]. ∀[f:ℕ+ ⟶ ℤ]. ∀[b:ℤ].  (genfact(n;b;m.f[m]) = if n <z 1 then b else f[n] * genfact(n - 1;b;m.f[m]) fi  ∈ ℤ)
2. n : ℤ
3. f : ℕ+ ⟶ ℤ
4. b : ℤ
5. ¬(0 ≤ n)
⊢ genfact(n;b;m.f[m]) = if n <z 1 then b else f[n] * genfact(n - 1;b;m.f[m]) fi  ∈ ℤ
Latex:
Latex:
\mforall{}[n:\mBbbZ{}].  \mforall{}[f:\mBbbN{}\msupplus{}  {}\mrightarrow{}  \mBbbZ{}].  \mforall{}[b:\mBbbZ{}].
    (genfact(n;b;m.f[m])  =  if  n  <z  1  then  b  else  f[n]  *  genfact(n  -  1;b;m.f[m])  fi  )
By
Latex:
((Assert  \mforall{}[n:\mBbbN{}].  \mforall{}[f:\mBbbN{}\msupplus{}  {}\mrightarrow{}  \mBbbZ{}].  \mforall{}[b:\mBbbZ{}].
                      (genfact(n;b;m.f[m])  =  if  n  <z  1  then  b  else  f[n]  *  genfact(n  -  1;b;m.f[m])  fi  )  BY
                (InductionOnNat
                  THEN  Auto
                  THEN  (RW  (AddrC  [2]  UnfoldTopAbC)  0  THEN  AutoSplit)
                  THEN  (GenConclTerm  \mkleeneopen{}f[n]\mkleeneclose{}\mcdot{}  THENA  Auto)
                  THEN  RepeatFor  3  ((CallByValueReduce  0  THENA  Auto))
                  THEN  RWO  "genfact-base-linear"  0
                  THEN  Auto))
  THEN  Auto
  THEN  Decide  \mkleeneopen{}0  \mleq{}  n\mkleeneclose{}\mcdot{}
  THEN  Auto)
Home
Index