Step * 2 of Lemma funtype-split


1. : ℤ
2. 0 < k
3. ∀T:Type. ∀m:ℤ.
     ((0 ≤ m)
      (∀A:ℕ(k 1) ⟶ Type. (funtype(m (k 1);A;T) funtype(m;A;funtype(k 1;λk.(A (k m));T)) ∈ Type)))
4. Type
5. : ℤ
6. 0 ≤ m
7. : ℕk ⟶ Type
⊢ funtype(m k;A;T) funtype(m;A;funtype(k;λk.(A (k m));T)) ∈ Type
BY
((RW (AddrC [2] (LemmaC `funtype-unroll-last-eq`)) THENA Auto)
   THEN AutoSplit
   THEN Try (Complete (Auto'))
   THEN (RW (AddrC [3;3] (LemmaC `funtype-unroll-last-eq`)) THENA Auto)
   THEN AutoSplit
   THEN (Subst ⌜(m k) (k 1)⌝ 0⋅ THENA Auto)
   THEN (Subst ⌜(k 1) (k 1)⌝ 0⋅ THENA Auto)
   THEN BackThruSomeHyp
   THEN Auto') }


Latex:


Latex:

1.  k  :  \mBbbZ{}
2.  0  <  k
3.  \mforall{}T:Type.  \mforall{}m:\mBbbZ{}.
          ((0  \mleq{}  m)
          {}\mRightarrow{}  (\mforall{}A:\mBbbN{}m  +  (k  -  1)  {}\mrightarrow{}  Type
                      (funtype(m  +  (k  -  1);A;T)  =  funtype(m;A;funtype(k  -  1;\mlambda{}k.(A  (k  +  m));T)))))
4.  T  :  Type
5.  m  :  \mBbbZ{}
6.  0  \mleq{}  m
7.  A  :  \mBbbN{}m  +  k  {}\mrightarrow{}  Type
\mvdash{}  funtype(m  +  k;A;T)  =  funtype(m;A;funtype(k;\mlambda{}k.(A  (k  +  m));T))


By


Latex:
((RW  (AddrC  [2]  (LemmaC  `funtype-unroll-last-eq`))  0  THENA  Auto)
  THEN  AutoSplit
  THEN  Try  (Complete  (Auto'))
  THEN  (RW  (AddrC  [3;3]  (LemmaC  `funtype-unroll-last-eq`))  0  THENA  Auto)
  THEN  AutoSplit
  THEN  (Subst  \mkleeneopen{}(m  +  k)  -  1  \msim{}  m  +  (k  -  1)\mkleeneclose{}  0\mcdot{}  THENA  Auto)
  THEN  (Subst  \mkleeneopen{}(k  -  1)  +  m  \msim{}  m  +  (k  -  1)\mkleeneclose{}  0\mcdot{}  THENA  Auto)
  THEN  BackThruSomeHyp
  THEN  Auto')




Home Index