Step
*
1
1
of Lemma
concat-lifting-list-member
1. B : Type
2. n : ℕ
3. A : ℕn ⟶ Type
4. bags : k:ℕn ⟶ bag(A k)
5. b : B
6. p : ℤ
7. 0 ≤ n - 0 < n + 1
8. f : funtype(n - n - 0;λx.(A (x + (n - 0)));bag(B))
9. b ↓∈ concat-lifting-list(n;bags) (n - 0) f
⊢ ↓∃lst:k:{n - 0..n-} ⟶ (A k). ((∀[k:{n - 0..n-}]. lst k ↓∈ bags k) ∧ b ↓∈ uncurry-gen(n) (n - 0) (λx.f) lst)
BY
{ ((Subst ⌜n - 0 ~ n⌝ 0⋅ THENA Auto)
   THEN (Subst ⌜n - 0 ~ n⌝ (-1)⋅ THENA Auto)
   THEN (Subst ⌜n - 0 ~ n⌝ (-2)⋅ THENA Auto)
   THEN (Subst ⌜n - n ~ 0⌝ (-2)⋅ THENA Auto)
   THEN Unfold `concat-lifting-list` (-1)
   THEN Reduce (-1)
   THEN Unfold `lifting-gen-list-rev` (-1)
   THEN RW (SweepUpC UnrollRecursionC) (-1)
   THEN Reduce (-1)
   THEN (Subst ⌜(n =z n) ~ tt⌝ (-1)⋅ THENA Auto)
   THEN Reduce (-1)
   THEN Unfold `funtype` (-2)
   THEN (RWO "primrec-unroll" (-2) THENA Auto)
   THEN Reduce (-2)
   THEN RepUR ``bag-union concat single-bag`` (-1)
   THEN (RWO "append_nil_sq" (-1) THENA Auto)
   THEN D 0
   THEN Unfold `uncurry-gen` 0
   THEN RW (SweepUpC UnrollRecursionC) 0
   THEN Reduce 0
   THEN (Subst ⌜(n =z n) ~ tt⌝ 0⋅ THENA Auto)
   THEN Reduce 0
   THEN InstConcl [⌜λx.x⌝]⋅
   THEN Auto
   THEN Unhide
   THEN Auto)⋅ }
Latex:
Latex:
1.  B  :  Type
2.  n  :  \mBbbN{}
3.  A  :  \mBbbN{}n  {}\mrightarrow{}  Type
4.  bags  :  k:\mBbbN{}n  {}\mrightarrow{}  bag(A  k)
5.  b  :  B
6.  p  :  \mBbbZ{}
7.  0  \mleq{}  n  -  0  <  n  +  1
8.  f  :  funtype(n  -  n  -  0;\mlambda{}x.(A  (x  +  (n  -  0)));bag(B))
9.  b  \mdownarrow{}\mmember{}  concat-lifting-list(n;bags)  (n  -  0)  f
\mvdash{}  \mdownarrow{}\mexists{}lst:k:\{n  -  0..n\msupminus{}\}  {}\mrightarrow{}  (A  k)
        ((\mforall{}[k:\{n  -  0..n\msupminus{}\}].  lst  k  \mdownarrow{}\mmember{}  bags  k)  \mwedge{}  b  \mdownarrow{}\mmember{}  uncurry-gen(n)  (n  -  0)  (\mlambda{}x.f)  lst)
By
Latex:
((Subst  \mkleeneopen{}n  -  0  \msim{}  n\mkleeneclose{}  0\mcdot{}  THENA  Auto)
  THEN  (Subst  \mkleeneopen{}n  -  0  \msim{}  n\mkleeneclose{}  (-1)\mcdot{}  THENA  Auto)
  THEN  (Subst  \mkleeneopen{}n  -  0  \msim{}  n\mkleeneclose{}  (-2)\mcdot{}  THENA  Auto)
  THEN  (Subst  \mkleeneopen{}n  -  n  \msim{}  0\mkleeneclose{}  (-2)\mcdot{}  THENA  Auto)
  THEN  Unfold  `concat-lifting-list`  (-1)
  THEN  Reduce  (-1)
  THEN  Unfold  `lifting-gen-list-rev`  (-1)
  THEN  RW  (SweepUpC  UnrollRecursionC)  (-1)
  THEN  Reduce  (-1)
  THEN  (Subst  \mkleeneopen{}(n  =\msubz{}  n)  \msim{}  tt\mkleeneclose{}  (-1)\mcdot{}  THENA  Auto)
  THEN  Reduce  (-1)
  THEN  Unfold  `funtype`  (-2)
  THEN  (RWO  "primrec-unroll"  (-2)  THENA  Auto)
  THEN  Reduce  (-2)
  THEN  RepUR  ``bag-union  concat  single-bag``  (-1)
  THEN  (RWO  "append\_nil\_sq"  (-1)  THENA  Auto)
  THEN  D  0
  THEN  Unfold  `uncurry-gen`  0
  THEN  RW  (SweepUpC  UnrollRecursionC)  0
  THEN  Reduce  0
  THEN  (Subst  \mkleeneopen{}(n  =\msubz{}  n)  \msim{}  tt\mkleeneclose{}  0\mcdot{}  THENA  Auto)
  THEN  Reduce  0
  THEN  InstConcl  [\mkleeneopen{}\mlambda{}x.x\mkleeneclose{}]\mcdot{}
  THEN  Auto
  THEN  Unhide
  THEN  Auto)\mcdot{}
Home
Index