Step
*
1
2
1
2
of Lemma
lifting-member
1. B : Type
2. n : ℕ
3. A : ℕn ⟶ Type
4. bags : k:ℕn ⟶ bag(A k)
5. b : B
6. p : ℤ
7. 0 < p
8. 0 ≤ n - p < n + 1
9. f : funtype(n - n - p;λx.(A (x + (n - p)));B)
10. ↓∃x:A (n - p). (x ↓∈ bags (n - p) ∧ b ↓∈ lifting-gen-list-rev(n;bags) ((n - p) + 1) (f x))
11. ∀f:funtype(n - (n - p) + 1;λx.(A (x + (n - p) + 1));B)
      (b ↓∈ lifting-gen-list-rev(n;bags) ((n - p) + 1) f
      
⇒ (↓∃lst:k:{(n - p) + 1..n-} ⟶ (A k)
            ((∀[k:{(n - p) + 1..n-}]. lst k ↓∈ bags k) ∧ ((uncurry-gen(n) ((n - p) + 1) (λx.f) lst) = b ∈ B))))
⊢ ↓∃lst:k:{n - p..n-} ⟶ (A k). ((∀[k:{n - p..n-}]. lst k ↓∈ bags k) ∧ ((uncurry-gen(n) (n - p) (λx.f) lst) = b ∈ B))
BY
{ TACTIC:(PromoteHyp (-1) (-2)
          THEN SqExRepD
          THEN (Subst ⌜n - (n - p) + 1 ~ p - 1⌝ (-4)⋅ THENA Auto)
          THEN (Subst ⌜n - n - p ~ p⌝ (-5)⋅ THENA Auto)
          THEN Unfold `funtype` (-5)
          THEN (RWO "primrec-unroll" (-5) THENA Auto)
          THEN (Subst ⌜p <z 1 ~ ff⌝ (-5)⋅ THENA Auto)
          THEN Reduce (-5)
          THEN (Subst ⌜(p - 1 - p - 1) + (n - p) ~ n - p⌝ (-5)⋅ THENA Auto)
          THEN (InstHyp [⌜f x⌝] (-4)⋅ THENA Auto)
          THEN Try (Complete ((Unfold `funtype` 0
                               THEN Reduce 0
                               THEN (MemCD THENA Auto')
                               THEN Try (Complete ((MemCD THEN Auto'))))))) }
1
1. B : Type
2. n : ℕ
3. A : ℕn ⟶ Type
4. bags : k:ℕn ⟶ bag(A k)
5. b : B
6. p : ℤ
7. 0 < p
8. 0 ≤ n - p < n + 1
9. f : (A (n - p)) ⟶ primrec(p - 1;B;λi,t. ((A ((p - 1 - i) + (n - p))) ⟶ t))
10. ∀f:funtype(p - 1;λx.(A (x + (n - p) + 1));B)
      (b ↓∈ lifting-gen-list-rev(n;bags) ((n - p) + 1) f
      
⇒ (↓∃lst:k:{(n - p) + 1..n-} ⟶ (A k)
            ((∀[k:{(n - p) + 1..n-}]. lst k ↓∈ bags k) ∧ ((uncurry-gen(n) ((n - p) + 1) (λx.f) lst) = b ∈ B))))
11. x : A (n - p)
12. x ↓∈ bags (n - p)
13. b ↓∈ lifting-gen-list-rev(n;bags) ((n - p) + 1) (f x)
14. ↓∃lst:k:{(n - p) + 1..n-} ⟶ (A k)
      ((∀[k:{(n - p) + 1..n-}]. lst k ↓∈ bags k) ∧ ((uncurry-gen(n) ((n - p) + 1) (λx@0.(f x)) lst) = b ∈ B))
⊢ ↓∃lst:k:{n - p..n-} ⟶ (A k). ((∀[k:{n - p..n-}]. lst k ↓∈ bags k) ∧ ((uncurry-gen(n) (n - p) (λx.f) lst) = b ∈ B))
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  <  n  +  1
9.  f  :  funtype(n  -  n  -  p;\mlambda{}x.(A  (x  +  (n  -  p)));B)
10.  \mdownarrow{}\mexists{}x:A  (n  -  p).  (x  \mdownarrow{}\mmember{}  bags  (n  -  p)  \mwedge{}  b  \mdownarrow{}\mmember{}  lifting-gen-list-rev(n;bags)  ((n  -  p)  +  1)  (f  x))
11.  \mforall{}f:funtype(n  -  (n  -  p)  +  1;\mlambda{}x.(A  (x  +  (n  -  p)  +  1));B)
            (b  \mdownarrow{}\mmember{}  lifting-gen-list-rev(n;bags)  ((n  -  p)  +  1)  f
            {}\mRightarrow{}  (\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{}  ((uncurry-gen(n)  ((n  -  p)  +  1)  (\mlambda{}x.f)  lst)  =  b))))
\mvdash{}  \mdownarrow{}\mexists{}lst:k:\{n  -  p..n\msupminus{}\}  {}\mrightarrow{}  (A  k)
        ((\mforall{}[k:\{n  -  p..n\msupminus{}\}].  lst  k  \mdownarrow{}\mmember{}  bags  k)  \mwedge{}  ((uncurry-gen(n)  (n  -  p)  (\mlambda{}x.f)  lst)  =  b))
By
Latex:
TACTIC:(PromoteHyp  (-1)  (-2)
                THEN  SqExRepD
                THEN  (Subst  \mkleeneopen{}n  -  (n  -  p)  +  1  \msim{}  p  -  1\mkleeneclose{}  (-4)\mcdot{}  THENA  Auto)
                THEN  (Subst  \mkleeneopen{}n  -  n  -  p  \msim{}  p\mkleeneclose{}  (-5)\mcdot{}  THENA  Auto)
                THEN  Unfold  `funtype`  (-5)
                THEN  (RWO  "primrec-unroll"  (-5)  THENA  Auto)
                THEN  (Subst  \mkleeneopen{}p  <z  1  \msim{}  ff\mkleeneclose{}  (-5)\mcdot{}  THENA  Auto)
                THEN  Reduce  (-5)
                THEN  (Subst  \mkleeneopen{}(p  -  1  -  p  -  1)  +  (n  -  p)  \msim{}  n  -  p\mkleeneclose{}  (-5)\mcdot{}  THENA  Auto)
                THEN  (InstHyp  [\mkleeneopen{}f  x\mkleeneclose{}]  (-4)\mcdot{}  THENA  Auto)
                THEN  Try  (Complete  ((Unfold  `funtype`  0
                                                          THEN  Reduce  0
                                                          THEN  (MemCD  THENA  Auto')
                                                          THEN  Try  (Complete  ((MemCD  THEN  Auto')))))))
Home
Index