Step
*
of Lemma
mutual-corec-ext
∀[k:ℕ]. ∀[F:(ℕk ⟶ Type) ⟶ ℕk ⟶ Type].
  (mutual-corec(T.F[T]) ≡ F[mutual-corec(T.F[T])]) supposing (k-Monotone(T.F[T]) and k-Continuous(T.F[T]))
BY
{ (Intros
   THEN (Assert ∀n:ℕ. primrec(n + 1;λi.Top;λj,T. F[T]) ⊆ primrec(n;λi.Top;λj,T. F[T]) BY
               (InductionOnNat⋅
                THEN Reduce 0
                THEN Try (Complete ((D 0 THEN Auto)))
                THEN (RW (AddrC [2] (LemmaC `primrec-unroll`)) 0⋅ THENA Auto)
                THEN AutoSplit
                THEN ((Subst' (n + 1) - 1 ~ n 0 THENA Auto)
                      THEN Unfold `k-monotone` 4
                      THEN (FHyp 4 [-1] THENA Auto)
                      THEN NthHypEq (-1)
                      THEN EqCD
                      THEN Auto
                      THEN (RW (AddrC [2] (LemmaC `primrec-unroll`)) 0⋅ THENA Auto)
                      THEN AutoSplit)⋅))
   THEN D 0
   THEN Unfold `mutual-corec` 0) }
1
1. [k] : ℕ
2. [F] : (ℕk ⟶ Type) ⟶ ℕk ⟶ Type
3. [%] : k-Continuous(T.F[T])
4. [%1] : k-Monotone(T.F[T])
5. ∀n:ℕ. primrec(n + 1;λi.Top;λj,T. F[T]) ⊆ primrec(n;λi.Top;λj,T. F[T])
⊢ ⋂n. primrec(n;λi.Top;λ,T. F[T]) ⊆ F[⋂n. primrec(n;λi.Top;λ,T. F[T])]
2
1. [k] : ℕ
2. [F] : (ℕk ⟶ Type) ⟶ ℕk ⟶ Type
3. [%] : k-Continuous(T.F[T])
4. [%1] : k-Monotone(T.F[T])
5. ∀n:ℕ. primrec(n + 1;λi.Top;λj,T. F[T]) ⊆ primrec(n;λi.Top;λj,T. F[T])
⊢ F[⋂n. primrec(n;λi.Top;λ,T. F[T])] ⊆ ⋂n. primrec(n;λi.Top;λ,T. F[T])
Latex:
Latex:
\mforall{}[k:\mBbbN{}].  \mforall{}[F:(\mBbbN{}k  {}\mrightarrow{}  Type)  {}\mrightarrow{}  \mBbbN{}k  {}\mrightarrow{}  Type].
    (mutual-corec(T.F[T])  \mequiv{}  F[mutual-corec(T.F[T])])  supposing 
          (k-Monotone(T.F[T])  and 
          k-Continuous(T.F[T]))
By
Latex:
(Intros
  THEN  (Assert  \mforall{}n:\mBbbN{}.  primrec(n  +  1;\mlambda{}i.Top;\mlambda{}j,T.  F[T])  \msubseteq{}  primrec(n;\mlambda{}i.Top;\mlambda{}j,T.  F[T])  BY
                          (InductionOnNat\mcdot{}
                            THEN  Reduce  0
                            THEN  Try  (Complete  ((D  0  THEN  Auto)))
                            THEN  (RW  (AddrC  [2]  (LemmaC  `primrec-unroll`))  0\mcdot{}  THENA  Auto)
                            THEN  AutoSplit
                            THEN  ((Subst'  (n  +  1)  -  1  \msim{}  n  0  THENA  Auto)
                                        THEN  Unfold  `k-monotone`  4
                                        THEN  (FHyp  4  [-1]  THENA  Auto)
                                        THEN  NthHypEq  (-1)
                                        THEN  EqCD
                                        THEN  Auto
                                        THEN  (RW  (AddrC  [2]  (LemmaC  `primrec-unroll`))  0\mcdot{}  THENA  Auto)
                                        THEN  AutoSplit)\mcdot{}))
  THEN  D  0
  THEN  Unfold  `mutual-corec`  0)
Home
Index