Step * 2 of Lemma bl-exists-append


1. : ℤ
2. j ≠ 0
3. 0 < j
4. ∀L1,P,v:Top.
     ((λlist_ind,L. eval in
                    if is pair then let a,as' 
                                        in P[a] ∨b(list_ind as') otherwise if Ax then ff otherwise ⊥^j 
       ⊥ 
       L1)
      ∨bv ≤ fix((λlist_ind,L. eval v@0 in
                              if v@0 is pair then let a,as' v@0 
                                                    in P[a] ∨b(list_ind as') otherwise if v@0 Ax then otherwise ⊥)) 
            L1)
5. L1 Top
6. Top
7. Top
⊢ eval L1 in
  if is pair then let a,as' 
                      in P[a]
                         ∨blist_ind,L. eval in
                                         if is pair then let a,as' 
                                                             in P[a] ∨b(list_ind as')
                                         otherwise if Ax then ff otherwise ⊥^j 
                            ⊥ 
                            as') otherwise if Ax then ff otherwise ⊥
  ∨bv ≤ fix((λlist_ind,L. eval v@0 in
                          if v@0 is pair then let a,as' v@0 
                                                in P[a] ∨b(list_ind as') otherwise if v@0 Ax then otherwise ⊥)) 
        L1
BY
(RW (AddrC [2] UnrollLoopsOnceC) 0
   THEN RepeatFor (UnfoldAtAddr [1] 0)
   THEN (RW LiftAllC THEN Try (MemTop))
   THEN Fold `it` 0
   THEN Fold `btrue` 0
   THEN Fold `ifthenelse` 0
   THEN Fold `bor` 0
   THEN RepeatFor ((SqLeCD THEN Try (Complete ((RepUR ``bor bfalse ifthenelse`` THEN Strictness THEN Auto)))))
   THEN (RWO "bor_assoc" THENA Auto)
   THEN All (RepUR ``so_apply``)
   THEN (SqLeCD THEN Try (Complete (Auto)))
   THEN BackThruSomeHyp) }


Latex:


Latex:

1.  j  :  \mBbbZ{}
2.  j  \mneq{}  0
3.  0  <  j
4.  \mforall{}L1,P,v:Top.
          ((\mlambda{}list$_{ind}$,L.  eval  v  =  L  in
                                      if  v  is  a  pair  then  let  a,as'  =  v 
                                                                              in  P[a]  \mvee{}\msubb{}(list$_{ind}$  as')
                                      otherwise  if  v  =  Ax  then  ff  otherwise  \mbot{}\^{}j  -  1 
              \mbot{} 
              L1)
            \mvee{}\msubb{}v  \mleq{}  fix((\mlambda{}list$_{ind}$,L.  eval  v@0  =  L  in
                                                          if  v@0  is  a  pair  then  let  a,as'  =  v@0 
                                                                                                      in  P[a]  \mvee{}\msubb{}(list$_{ind}$  as')
                                                          otherwise  if  v@0  =  Ax  then  v  otherwise  \mbot{})) 
                        L1)
5.  L1  :  Top
6.  P  :  Top
7.  v  :  Top
\mvdash{}  eval  v  =  L1  in
    if  v  is  a  pair  then  let  a,as'  =  v 
                                            in  P[a]
                                                  \mvee{}\msubb{}(\mlambda{}list$_{ind}$,L.  eval  v  =  L  in
                                                                                if  v  is  a  pair  then  let  a,as'  =  v 
                                                                                                                        in  P[a]  \mvee{}\msubb{}(list$_{ind}\mbackslash{}f\000Cf24  as')
                                                                                otherwise  if  v  =  Ax  then  ff  otherwise  \mbot{}\^{}j  -  1 
                                                        \mbot{} 
                                                        as')  otherwise  if  v  =  Ax  then  ff  otherwise  \mbot{}
    \mvee{}\msubb{}v  \mleq{}  fix((\mlambda{}list$_{ind}$,L.  eval  v@0  =  L  in
                                                  if  v@0  is  a  pair  then  let  a,as'  =  v@0 
                                                                                              in  P[a]  \mvee{}\msubb{}(list$_{ind}$  as')
                                                  otherwise  if  v@0  =  Ax  then  v  otherwise  \mbot{})) 
                L1


By


Latex:
(RW  (AddrC  [2]  UnrollLoopsOnceC)  0
  THEN  RepeatFor  2  (UnfoldAtAddr  [1]  0)
  THEN  (RW  LiftAllC  0  THEN  Try  (MemTop))
  THEN  Fold  `it`  0
  THEN  Fold  `btrue`  0
  THEN  Fold  `ifthenelse`  0
  THEN  Fold  `bor`  0
  THEN  RepeatFor  2  ((SqLeCD
                                        THEN  Try  (Complete  ((RepUR  ``bor  bfalse  ifthenelse``  0
                                                                                  THEN  Strictness
                                                                                  THEN  Auto)))
                                        ))
  THEN  (RWO  "bor\_assoc"  0  THENA  Auto)
  THEN  All  (RepUR  ``so\_apply``)
  THEN  (SqLeCD  THEN  Try  (Complete  (Auto)))
  THEN  BackThruSomeHyp)




Home Index