Step * 2 2 of Lemma concat-lifting-list-member


1. Type
2. : ℕ
3. : ℕn ⟶ Type
4. bags k:ℕn ⟶ bag(A k)
5. B
6. : ℤ
7. 0 < p
8. 0 ≤ 1 < 1
 (∀f:funtype(n 1;λx.(A (x (n 1)));bag(B))
      ((↓∃lst:k:{n 1..n-} ⟶ (A k)
          ((∀[k:{n 1..n-}]. lst k ↓∈ bags k) ∧ b ↓∈ uncurry-gen(n) (n 1) x.f) lst))
       b ↓∈ concat-lifting-list(n;bags) (n 1) f))
9. 0 ≤ p < 1
10. funtype(n p;λx.(A (x (n p)));bag(B))
11. ↓∃lst:k:{n p..n-} ⟶ (A k). ((∀[k:{n p..n-}]. lst k ↓∈ bags k) ∧ b ↓∈ uncurry-gen(n) (n p) x.f) lst)
⊢ b ↓∈ concat-lifting-list(n;bags) (n p) f
BY
((Subst ⌜(n p) 1⌝ (-4)⋅ THENA Auto)
   THEN (Subst ⌜(n p) 1⌝ (-4)⋅ THENA Auto)
   THEN (Subst ⌜p⌝ (-2)⋅ THENA Auto)
   THEN Unfold `concat-lifting-list` 0
   THEN Unfold `lifting-gen-list-rev` 0
   THEN RW (SweepUpC UnrollRecursionC) 0
   THEN Reduce 0
   THEN Try (Fold `lifting-gen-list-rev` 0)
   THEN (Subst ⌜(n =z p) ff⌝ 0⋅ THENA Auto)
   THEN Reduce 0
   THEN Unfold `concat-lifting-list` (-4)
   THEN Reduce (-4)
   THEN (((RWO "funtype-unroll" 10 THENM OnVar `f' Reduce) THENA Auto) THEN OnVar `f' SplitOnHypITE THEN Auto)
   THEN Thin (-1)
   THEN (InstLemma `bag-member-union` [⌜B⌝; ⌜b⌝; ⌜⋃x∈bags (n p).lifting-gen-list-rev(n;bags) ((n p) 1) (f x)⌝]⋅
         THENA (Auto'
                THEN (BLemma `lifting-gen-list-rev_wf` THENA Auto')
                THEN (DoSubsume
                      THEN Auto'
                      THEN BLemma `subtype_rel-equal`
                      THEN Auto'
                      THEN RepeatFor ((EqCD THEN Auto')))⋅)
         )⋅)⋅ }

1
1. Type
2. : ℕ
3. : ℕn ⟶ Type
4. bags k:ℕn ⟶ bag(A k)
5. B
6. : ℤ
7. 0 < p
8. 0 ≤ (n p) 1 < 1
 (∀f:funtype(p 1;λx.(A (x (n p) 1));bag(B))
      ((↓∃lst:k:{(n p) 1..n-} ⟶ (A k)
          ((∀[k:{(n p) 1..n-}]. lst k ↓∈ bags k) ∧ b ↓∈ uncurry-gen(n) ((n p) 1) x.f) lst))
       b ↓∈ bag-union(lifting-gen-list-rev(n;bags) ((n p) 1) f)))
9. 0 ≤ (n p)
10. p < 1
11. (A (0 (n p))) ⟶ funtype(p 1;λi.(A ((i 1) (n p)));bag(B))
12. ↓∃lst:k:{n p..n-} ⟶ (A k). ((∀[k:{n p..n-}]. lst k ↓∈ bags k) ∧ b ↓∈ uncurry-gen(n) (n p) x.f) lst)
13. uiff(b ↓∈ bag-union(⋃x∈bags (n p).lifting-gen-list-rev(n;bags) ((n p) 1) 
                                        (f x));↓∃b@0:bag(B)
                                                 (b ↓∈ b@0
                                                 ∧ b@0 ↓∈ ⋃x∈bags (n p).lifting-gen-list-rev(n;bags) ((n p) 1) 
                                                                          (f x)))
⊢ b ↓∈ bag-union(⋃x∈bags (n p).lifting-gen-list-rev(n;bags) ((n p) 1) (f x))


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  <  p
8.  0  \mleq{}  n  -  p  -  1  <  n  +  1
{}\mRightarrow{}  (\mforall{}f:funtype(n  -  n  -  p  -  1;\mlambda{}x.(A  (x  +  (n  -  p  -  1)));bag(B))
            ((\mdownarrow{}\mexists{}lst:k:\{n  -  p  -  1..n\msupminus{}\}  {}\mrightarrow{}  (A  k)
                    ((\mforall{}[k:\{n  -  p  -  1..n\msupminus{}\}].  lst  k  \mdownarrow{}\mmember{}  bags  k)  \mwedge{}  b  \mdownarrow{}\mmember{}  uncurry-gen(n)  (n  -  p  -  1)  (\mlambda{}x.f)  lst))
            {}\mRightarrow{}  b  \mdownarrow{}\mmember{}  concat-lifting-list(n;bags)  (n  -  p  -  1)  f))
9.  0  \mleq{}  n  -  p  <  n  +  1
10.  f  :  funtype(n  -  n  -  p;\mlambda{}x.(A  (x  +  (n  -  p)));bag(B))
11.  \mdownarrow{}\mexists{}lst:k:\{n  -  p..n\msupminus{}\}  {}\mrightarrow{}  (A  k)
            ((\mforall{}[k:\{n  -  p..n\msupminus{}\}].  lst  k  \mdownarrow{}\mmember{}  bags  k)  \mwedge{}  b  \mdownarrow{}\mmember{}  uncurry-gen(n)  (n  -  p)  (\mlambda{}x.f)  lst)
\mvdash{}  b  \mdownarrow{}\mmember{}  concat-lifting-list(n;bags)  (n  -  p)  f


By


Latex:
((Subst  \mkleeneopen{}n  -  p  -  1  \msim{}  (n  -  p)  +  1\mkleeneclose{}  (-4)\mcdot{}  THENA  Auto)
  THEN  (Subst  \mkleeneopen{}n  -  (n  -  p)  +  1  \msim{}  p  -  1\mkleeneclose{}  (-4)\mcdot{}  THENA  Auto)
  THEN  (Subst  \mkleeneopen{}n  -  n  -  p  \msim{}  p\mkleeneclose{}  (-2)\mcdot{}  THENA  Auto)
  THEN  Unfold  `concat-lifting-list`  0
  THEN  Unfold  `lifting-gen-list-rev`  0
  THEN  RW  (SweepUpC  UnrollRecursionC)  0
  THEN  Reduce  0
  THEN  Try  (Fold  `lifting-gen-list-rev`  0)
  THEN  (Subst  \mkleeneopen{}(n  =\msubz{}  n  -  p)  \msim{}  ff\mkleeneclose{}  0\mcdot{}  THENA  Auto)
  THEN  Reduce  0
  THEN  Unfold  `concat-lifting-list`  (-4)
  THEN  Reduce  (-4)
  THEN  (((RWO  "funtype-unroll"  10  THENM  OnVar  `f'  Reduce)  THENA  Auto)
              THEN  OnVar  `f'  SplitOnHypITE
              THEN  Auto)
  THEN  Thin  (-1)
  THEN  (InstLemma  `bag-member-union`  [\mkleeneopen{}B\mkleeneclose{};  \mkleeneopen{}b\mkleeneclose{};  \mkleeneopen{}\mcup{}x\mmember{}bags  (n  -  p).lifting-gen-list-rev(n;bags) 
                                                                                                                                ((n  -  p)  +  1) 
                                                                                                                                (f  x)\mkleeneclose{}]\mcdot{}
              THENA  (Auto'
                            THEN  (BLemma  `lifting-gen-list-rev\_wf`  THENA  Auto')
                            THEN  (DoSubsume
                                        THEN  Auto'
                                        THEN  BLemma  `subtype\_rel-equal`
                                        THEN  Auto'
                                        THEN  RepeatFor  2  ((EqCD  THEN  Auto')))\mcdot{})
              )\mcdot{})\mcdot{}




Home Index