Step
*
of Lemma
equiv-on-corec
∀F:Type ⟶ Type
  (ContinuousMonotone(T.F[T])
  
⇒ (∀G:⋂T:Type. ((T ⟶ T ⟶ ℙ) ⟶ F[T] ⟶ F[T] ⟶ ℙ)
        ((∀T:Type. ∀E:T ⟶ T ⟶ ℙ.  (EquivRel(T;x,y.E x y) 
⇒ EquivRel(F[T];x,y.G E x y)))
        
⇒ EquivRel(corec(T.F[T]);x,y.corec-rel(G) x y))))
BY
{ ((Auto
    THEN (Assert ∀n:ℕ. (G^n (λx,y. True) ∈ primrec(n;Top;λ,T. F[T]) ⟶ primrec(n;Top;λ,T. F[T]) ⟶ ℙ) BY
                (InductionOnNat
                 THEN (RWO "fun_exp_unroll" 0 THENA Auto)
                 THEN (RWO "primrec-unroll" 0 THENA Auto)
                 THEN Reduce 0
                 THEN Try ((((Subst' (n =z 0) ~ ff 0 THENA Complete (Auto))
                             THEN (Subst' n <z 1 ~ ff 0 THENA Complete (Auto))
                             )
                            THEN Reduce 0
                            THEN Auto))
                 THEN Auto))
    )
   THEN (Assert ∀n:ℕ. EquivRel(primrec(n;Top;λ,T. F[T]);x,y.G^n (λx,y. True) x y) BY
               ((InductionOnNat
                 THENW (Auto THEN ((InstHyp [⌜n1⌝] 5⋅ THEN Auto) ORELSE (InstHyp [⌜n - 1⌝] 5⋅ THEN Auto)))
                 )
                THEN (RWO "fun_exp_unroll" 0 THENA Auto)
                THEN (RWO "primrec-unroll" 0 THENA Auto)
                THEN Reduce 0
                THEN Try ((((Subst' (n =z 0) ~ ff 0 THENA Complete (Auto))
                            THEN (Subst' n <z 1 ~ ff 0 THENA Complete (Auto))
                            )
                           THEN Reduce 0
                           THEN Auto))
                THEN Auto))
   ) }
1
1. F : Type ⟶ Type
2. ContinuousMonotone(T.F[T])
3. G : ⋂T:Type. ((T ⟶ T ⟶ ℙ) ⟶ F[T] ⟶ F[T] ⟶ ℙ)
4. ∀T:Type. ∀E:T ⟶ T ⟶ ℙ.  (EquivRel(T;x,y.E x y) 
⇒ EquivRel(F[T];x,y.G E x y))
5. ∀n:ℕ. (G^n (λx,y. True) ∈ primrec(n;Top;λ,T. F[T]) ⟶ primrec(n;Top;λ,T. F[T]) ⟶ ℙ)
6. ∀n:ℕ. EquivRel(primrec(n;Top;λ,T. F[T]);x,y.G^n (λx,y. True) x y)
⊢ EquivRel(corec(T.F[T]);x,y.corec-rel(G) x y)
Latex:
Latex:
\mforall{}F:Type  {}\mrightarrow{}  Type
    (ContinuousMonotone(T.F[T])
    {}\mRightarrow{}  (\mforall{}G:\mcap{}T:Type.  ((T  {}\mrightarrow{}  T  {}\mrightarrow{}  \mBbbP{})  {}\mrightarrow{}  F[T]  {}\mrightarrow{}  F[T]  {}\mrightarrow{}  \mBbbP{})
                ((\mforall{}T:Type.  \mforall{}E:T  {}\mrightarrow{}  T  {}\mrightarrow{}  \mBbbP{}.    (EquivRel(T;x,y.E  x  y)  {}\mRightarrow{}  EquivRel(F[T];x,y.G  E  x  y)))
                {}\mRightarrow{}  EquivRel(corec(T.F[T]);x,y.corec-rel(G)  x  y))))
By
Latex:
((Auto
    THEN  (Assert  \mforall{}n:\mBbbN{}.  (G\^{}n  (\mlambda{}x,y.  True)  \mmember{}  primrec(n;Top;\mlambda{},T.  F[T])  {}\mrightarrow{}  primrec(n;Top;\mlambda{},T.  F[T])  {}\mrightarrow{}  \mBbbP{})  \000CBY
                            (InductionOnNat
                              THEN  (RWO  "fun\_exp\_unroll"  0  THENA  Auto)
                              THEN  (RWO  "primrec-unroll"  0  THENA  Auto)
                              THEN  Reduce  0
                              THEN  Try  ((((Subst'  (n  =\msubz{}  0)  \msim{}  ff  0  THENA  Complete  (Auto))
                                                      THEN  (Subst'  n  <z  1  \msim{}  ff  0  THENA  Complete  (Auto))
                                                      )
                                                    THEN  Reduce  0
                                                    THEN  Auto))
                              THEN  Auto))
    )
  THEN  (Assert  \mforall{}n:\mBbbN{}.  EquivRel(primrec(n;Top;\mlambda{},T.  F[T]);x,y.G\^{}n  (\mlambda{}x,y.  True)  x  y)  BY
                          ((InductionOnNat
                              THENW  (Auto
                                            THEN  ((InstHyp  [\mkleeneopen{}n1\mkleeneclose{}]  5\mcdot{}  THEN  Auto)  ORELSE  (InstHyp  [\mkleeneopen{}n  -  1\mkleeneclose{}]  5\mcdot{}  THEN  Auto))
                                            )
                              )
                            THEN  (RWO  "fun\_exp\_unroll"  0  THENA  Auto)
                            THEN  (RWO  "primrec-unroll"  0  THENA  Auto)
                            THEN  Reduce  0
                            THEN  Try  ((((Subst'  (n  =\msubz{}  0)  \msim{}  ff  0  THENA  Complete  (Auto))
                                                    THEN  (Subst'  n  <z  1  \msim{}  ff  0  THENA  Complete  (Auto))
                                                    )
                                                  THEN  Reduce  0
                                                  THEN  Auto))
                            THEN  Auto))
  )
Home
Index