Step
*
of Lemma
evalall-append-sqle
∀a,b:Top.  (evalall(a @ b) ≤ eval u = evalall(a) in eval v = evalall(b) in   evalall(u @ v))
BY
{ TACTIC:((Auto THEN SqLeTopToBase)
          THEN RW (AddrC [1] (UnfoldC `append`)) 0
          THEN Unfold `list_ind` 0
          THEN OneFixpointLeast
          THEN RepeatFor 2 (MoveToConcl 1)
          THEN NatInd 1
          THEN Reduce 0
          THEN Strictness
          THEN (UnivCD THENA Auto)
          THEN ((RWO "fun_exp_unroll_1" 0 THENA Auto) ORELSE Auto)
          THEN (RW (AddrC [1] RecUnfoldTopAbC) 0 THEN Reduce 0)
          THEN (RW (AddrC [2;1] RecUnfoldTopAbC) 0 THEN Reduce 0)
          THEN RW (SubC (LiftC true)) 0
          THEN UseCbvSqle
          THEN HVimplies2 0 [1;1]
          THEN ((RWO "-1" 0 THENA Complete (Auto)) ORELSE (RW (SubC (LiftC true)) 0 THEN UseCbvSqle))) }
1
1. j : ℤ
2. 0 < j
3. ∀a,b:Base.
     (evalall(λlist_ind,L. eval v = L in
                           if v is a pair then let a,as' = v 
                                               in [a / (list_ind as')] otherwise if v = Ax then b otherwise ⊥^j - 1 
              ⊥ 
              a) ≤ eval u = evalall(a) in
                   eval v = evalall(b) in
                     evalall(u @ v))
4. a : Base
5. b : Base
6. 0 ≤ 0
7. a ~ <fst(a), snd(a)>
8. (evalall(fst(a)))↓
⊢ eval b' = evalall(λlist_ind,L. eval v = L in
                                 if v is a pair then let a,as' = v 
                                                     in [a / (list_ind as')] otherwise if v = Ax then b otherwise ⊥^j - \000C1 
                    ⊥ 
                    (snd(a))) in
  <evalall(fst(a)), b'> ≤ eval u = eval b' = evalall(snd(a)) in
                                   <evalall(fst(a)), b'> in
                          eval v = evalall(b) in
                            evalall(u @ v)
2
1. j : ℤ
2. 0 < j
3. ∀a,b:Base.
     (evalall(λlist_ind,L. eval v = L in
                           if v is a pair then let a,as' = v 
                                               in [a / (list_ind as')] otherwise if v = Ax then b otherwise ⊥^j - 1 
              ⊥ 
              a) ≤ eval u = evalall(a) in
                   eval v = evalall(b) in
                     evalall(u @ v))
4. a : Base
5. b : Base
6. (a)↓
7. ∀a@0,b:Top.  (if a is a pair then a@0 otherwise b ~ b)
⊢ eval v = if a = Ax then b otherwise ⊥ in
  if v is a pair then let a,b = v 
                      in eval a' = evalall(a) in
                         eval b' = evalall(b) in
                           <a', b'> otherwise if v is inl then eval y = evalall(outl(v)) in
                                                               inl y
                                              else if v is inr then eval y = evalall(outr(v)) in
                                                                    inr y 
                                                   else v ≤ eval u = if a is inl then eval y = evalall(outl(a)) in
                                                                                      inl y
                                                                     else if a is inr then eval y = evalall(outr(a)) in
                                                                                           inr y 
                                                                          else a in
                                                            eval v = evalall(b) in
                                                              evalall(u @ v)
Latex:
Latex:
\mforall{}a,b:Top.    (evalall(a  @  b)  \mleq{}  eval  u  =  evalall(a)  in  eval  v  =  evalall(b)  in      evalall(u  @  v))
By
Latex:
TACTIC:((Auto  THEN  SqLeTopToBase)
                THEN  RW  (AddrC  [1]  (UnfoldC  `append`))  0
                THEN  Unfold  `list\_ind`  0
                THEN  OneFixpointLeast
                THEN  RepeatFor  2  (MoveToConcl  1)
                THEN  NatInd  1
                THEN  Reduce  0
                THEN  Strictness
                THEN  (UnivCD  THENA  Auto)
                THEN  ((RWO  "fun\_exp\_unroll\_1"  0  THENA  Auto)  ORELSE  Auto)
                THEN  (RW  (AddrC  [1]  RecUnfoldTopAbC)  0  THEN  Reduce  0)
                THEN  (RW  (AddrC  [2;1]  RecUnfoldTopAbC)  0  THEN  Reduce  0)
                THEN  RW  (SubC  (LiftC  true))  0
                THEN  UseCbvSqle
                THEN  HVimplies2  0  [1;1]
                THEN  ((RWO  "-1"  0  THENA  Complete  (Auto))  ORELSE  (RW  (SubC  (LiftC  true))  0  THEN  UseCbvSqle)))
Home
Index