Step * 1 1 of Lemma sqle-list_ind


1. Base
2. strict1(λx.F[x])
3. Base
4. strict1(λx.G[x])
5. Base
6. Base
7. ∀x,y,r1,r2:Base.  ((F[r1] ≤ G[r2])  (F[H[x;y;r1]] ≤ G[J[x;y;r2]]))
8. : ℤ
9. 0 < j
10. ∀as,b1,b2:Base.
      ((F[b1] ≤ G[b2])
       (F[λlist_ind,L. eval in
                         if is pair then let h,t 
                                             in H[h;t;list_ind t] otherwise if Ax then b1 otherwise ⊥^j 
            ⊥ 
            as] ≤ G[λlist_ind,L. eval in
                                 if is pair then let h,t 
                                                     in J[h;t;list_ind t] otherwise if Ax then b2 otherwise ⊥^j 
                    ⊥ 
                    as]))
11. as Base@i
12. b1 Base@i
13. b2 Base@i
14. F[b1] ≤ G[b2]@i
⊢ F[λlist_ind,L. eval in
                 if is pair then let h,t 
                                     in H[h;t;list_ind t] otherwise if Ax then b1 otherwise ⊥^j 
    ⊥ 
    as] ≤ G[λlist_ind,L. eval in
                         if is pair then let h,t 
                                             in J[h;t;list_ind t] otherwise if Ax then b2 otherwise ⊥^j 
            ⊥ 
            as]
BY
((RWO "fun_exp_unroll_1" THENA Auto)
   THEN Reduce 0
   THEN ((InstLemma `lifting-strict-callbyvalue` 
          [⌜so_lambda(x,y,z,w.F[x])⌝;⌜⋅⌝;⌜⋅⌝;⌜⋅⌝]⋅
          THENA (Auto THEN BLemma `strict1-strict4` THEN Auto)
          )
   THENM (RWW "-1" THENA Auto)
   )
   THEN ((InstLemma `lifting-strict-callbyvalue` 
          [⌜so_lambda(x,y,z,w.G[x])⌝;⌜⋅⌝;⌜⋅⌝;⌜⋅⌝]⋅
          THENA (Auto THEN BLemma `strict1-strict4` THEN Auto)
          )
   THENM (RWW "-1" THENA Auto)
   )
   THEN UseCbvSqle
   THEN ((InstLemma `lifting-strict-ispair` 
          [⌜so_lambda(x,y,z,w.F[x])⌝;⌜⋅⌝;⌜⋅⌝;⌜⋅⌝]⋅
          THENA (Auto THEN BLemma `strict1-strict4` THEN Auto)
          )
   THENM (RWO "-1" THENA Auto)
   )
   THEN ((InstLemma `lifting-strict-ispair` 
          [⌜so_lambda(x,y,z,w.G[x])⌝;⌜⋅⌝;⌜⋅⌝;⌜⋅⌝]⋅
          THENA (Auto THEN BLemma `strict1-strict4` THEN Auto)
          )
   THENM (RWO "-1" THENA Auto)
   )
   THEN ((InstLemma `lifting-strict-isaxiom` 
          [⌜so_lambda(x,y,z,w.F[x])⌝;⌜⋅⌝;⌜⋅⌝;⌜⋅⌝]⋅
          THENA (Auto THEN BLemma `strict1-strict4` THEN Auto)
          )
   THENM (RWO "-1" THENA Auto)
   )
   THEN ((InstLemma `lifting-strict-isaxiom` 
          [⌜so_lambda(x,y,z,w.G[x])⌝;⌜⋅⌝;⌜⋅⌝;⌜⋅⌝]⋅
          THENA (Auto THEN BLemma `strict1-strict4` THEN Auto)
          )
   THENM ((RWO "-1" THENA Auto)
          THEN AssumeHasValue
          THEN (HasValueD (-1) ORELSE (ExceptionCases (-1) THEN Try (Complete (SameException))))
          THEN (HVimplies2 [1] THEN (RWO  "-1" THENA MemTop) THEN Reduce 0)
          THEN Try ((HVimplies2 [1] THEN (RWO  "-1" THENA MemTop) THEN Reduce 0)))
   )) }

1
1. Base
2. strict1(λx.F[x])
3. Base
4. strict1(λx.G[x])
5. Base
6. Base
7. ∀x,y,r1,r2:Base.  ((F[r1] ≤ G[r2])  (F[H[x;y;r1]] ≤ G[J[x;y;r2]]))
8. : ℤ
9. 0 < j
10. ∀as,b1,b2:Base.
      ((F[b1] ≤ G[b2])
       (F[λlist_ind,L. eval in
                         if is pair then let h,t 
                                             in H[h;t;list_ind t] otherwise if Ax then b1 otherwise ⊥^j 
            ⊥ 
            as] ≤ G[λlist_ind,L. eval in
                                 if is pair then let h,t 
                                                     in J[h;t;list_ind t] otherwise if Ax then b2 otherwise ⊥^j 
                    ⊥ 
                    as]))
11. as Base@i
12. b1 Base@i
13. b2 Base@i
14. F[b1] ≤ G[b2]@i
15. ∀[a,B:Top].  (F[eval in B[x]] eval in F[B[x]])
16. ∀[a,B:Top].  (G[eval in B[x]] eval in G[B[x]])
17. 0 ≤ 0@i
18. ∀[a,b,c:Top].  (F[if is pair then otherwise c] if is pair then F[b] otherwise F[c])
19. ∀[a,b,c:Top].  (G[if is pair then otherwise c] if is pair then G[b] otherwise G[c])
20. ∀[a,b,c:Top].  (F[if Ax then otherwise c] if Ax then F[b] otherwise F[c])
21. ∀[a,b,c:Top].  (G[if Ax then otherwise c] if Ax then G[b] otherwise G[c])
22. (F[H[fst(as);snd(as);λlist_ind,L. eval in
                                      if is pair then let h,t 
                                                          in H[h;t;list_ind t] otherwise if Ax then b1 otherwise ⊥^j\000C 
                         ⊥ 
                         (snd(as))]])↓
23. 0 ≤ 0
24. as ~ <fst(as), snd(as)>
⊢ F[H[fst(as);snd(as);λlist_ind,L. eval in
                                   if is pair then let h,t 
                                                       in H[h;t;list_ind t] otherwise if Ax then b1 otherwise ⊥^j \000C1 
                      ⊥ 
                      (snd(as))]] ≤ G[J[fst(as);snd(as);λlist_ind,L. eval in
                                                                     if is pair then let h,t 
                                                                                         in J[h;t;list_ind t]
                                                                     otherwise if Ax then b2 otherwise ⊥^j 
                                                        ⊥ 
                                                        (snd(as))]]

2
1. Base
2. strict1(λx.F[x])
3. Base
4. strict1(λx.G[x])
5. Base
6. Base
7. ∀x,y,r1,r2:Base.  ((F[r1] ≤ G[r2])  (F[H[x;y;r1]] ≤ G[J[x;y;r2]]))
8. : ℤ
9. 0 < j
10. ∀as,b1,b2:Base.
      ((F[b1] ≤ G[b2])
       (F[λlist_ind,L. eval in
                         if is pair then let h,t 
                                             in H[h;t;list_ind t] otherwise if Ax then b1 otherwise ⊥^j 
            ⊥ 
            as] ≤ G[λlist_ind,L. eval in
                                 if is pair then let h,t 
                                                     in J[h;t;list_ind t] otherwise if Ax then b2 otherwise ⊥^j 
                    ⊥ 
                    as]))
11. as Base@i
12. b1 Base@i
13. b2 Base@i
14. F[b1] ≤ G[b2]@i
15. ∀[a,B:Top].  (F[eval in B[x]] eval in F[B[x]])
16. ∀[a,B:Top].  (G[eval in B[x]] eval in G[B[x]])
17. (as)↓@i
18. ∀[a,b,c:Top].  (F[if is pair then otherwise c] if is pair then F[b] otherwise F[c])
19. ∀[a,b,c:Top].  (G[if is pair then otherwise c] if is pair then G[b] otherwise G[c])
20. ∀[a,b,c:Top].  (F[if Ax then otherwise c] if Ax then F[b] otherwise F[c])
21. ∀[a,b,c:Top].  (G[if Ax then otherwise c] if Ax then G[b] otherwise G[c])
22. (F[⊥])↓
23. (as)↓
24. ∀a,b:Top.  (if as is pair then otherwise b)
25. ∀a,b:Top.  (if as Ax then otherwise b)
⊢ F[⊥] ≤ G[⊥]

3
1. Base
2. strict1(λx.F[x])
3. Base
4. strict1(λx.G[x])
5. Base
6. Base
7. ∀x,y,r1,r2:Base.  ((F[r1] ≤ G[r2])  (F[H[x;y;r1]] ≤ G[J[x;y;r2]]))
8. : ℤ
9. 0 < j
10. ∀as,b1,b2:Base.
      ((F[b1] ≤ G[b2])
       (F[λlist_ind,L. eval in
                         if is pair then let h,t 
                                             in H[h;t;list_ind t] otherwise if Ax then b1 otherwise ⊥^j 
            ⊥ 
            as] ≤ G[λlist_ind,L. eval in
                                 if is pair then let h,t 
                                                     in J[h;t;list_ind t] otherwise if Ax then b2 otherwise ⊥^j 
                    ⊥ 
                    as]))
11. as Base@i
12. b1 Base@i
13. b2 Base@i
14. F[b1] ≤ G[b2]@i
15. ∀[a,B:Top].  (F[eval in B[x]] eval in F[B[x]])
16. ∀[a,B:Top].  (G[eval in B[x]] eval in G[B[x]])
17. 0 ≤ 0@i
18. ∀[a,b,c:Top].  (F[if is pair then otherwise c] if is pair then F[b] otherwise F[c])
19. ∀[a,b,c:Top].  (G[if is pair then otherwise c] if is pair then G[b] otherwise G[c])
20. ∀[a,b,c:Top].  (F[if Ax then otherwise c] if Ax then F[b] otherwise F[c])
21. ∀[a,b,c:Top].  (G[if Ax then otherwise c] if Ax then G[b] otherwise G[c])
22. is-exception(F[H[fst(as);snd(as);λlist_ind,L. eval in
                                                  if is pair then let h,t 
                                                                      in H[h;t;list_ind t]
                                                  otherwise if Ax then b1 otherwise ⊥^j 
                                     ⊥ 
                                     (snd(as))]])
23. 0 ≤ 0
24. as ~ <fst(as), snd(as)>
⊢ F[H[fst(as);snd(as);λlist_ind,L. eval in
                                   if is pair then let h,t 
                                                       in H[h;t;list_ind t] otherwise if Ax then b1 otherwise ⊥^j \000C1 
                      ⊥ 
                      (snd(as))]] ≤ G[J[fst(as);snd(as);λlist_ind,L. eval in
                                                                     if is pair then let h,t 
                                                                                         in J[h;t;list_ind t]
                                                                     otherwise if Ax then b2 otherwise ⊥^j 
                                                        ⊥ 
                                                        (snd(as))]]

4
1. Base
2. strict1(λx.F[x])
3. Base
4. strict1(λx.G[x])
5. Base
6. Base
7. ∀x,y,r1,r2:Base.  ((F[r1] ≤ G[r2])  (F[H[x;y;r1]] ≤ G[J[x;y;r2]]))
8. : ℤ
9. 0 < j
10. ∀as,b1,b2:Base.
      ((F[b1] ≤ G[b2])
       (F[λlist_ind,L. eval in
                         if is pair then let h,t 
                                             in H[h;t;list_ind t] otherwise if Ax then b1 otherwise ⊥^j 
            ⊥ 
            as] ≤ G[λlist_ind,L. eval in
                                 if is pair then let h,t 
                                                     in J[h;t;list_ind t] otherwise if Ax then b2 otherwise ⊥^j 
                    ⊥ 
                    as]))
11. as Base@i
12. b1 Base@i
13. b2 Base@i
14. F[b1] ≤ G[b2]@i
15. ∀[a,B:Top].  (F[eval in B[x]] eval in F[B[x]])
16. ∀[a,B:Top].  (G[eval in B[x]] eval in G[B[x]])
17. (as)↓@i
18. ∀[a,b,c:Top].  (F[if is pair then otherwise c] if is pair then F[b] otherwise F[c])
19. ∀[a,b,c:Top].  (G[if is pair then otherwise c] if is pair then G[b] otherwise G[c])
20. ∀[a,b,c:Top].  (F[if Ax then otherwise c] if Ax then F[b] otherwise F[c])
21. ∀[a,b,c:Top].  (G[if Ax then otherwise c] if Ax then G[b] otherwise G[c])
22. is-exception(F[⊥])
23. (as)↓
24. ∀a,b:Top.  (if as is pair then otherwise b)
25. ∀a,b:Top.  (if as Ax then otherwise b)
⊢ F[⊥] ≤ G[⊥]


Latex:


Latex:

1.  F  :  Base
2.  strict1(\mlambda{}x.F[x])
3.  G  :  Base
4.  strict1(\mlambda{}x.G[x])
5.  H  :  Base
6.  J  :  Base
7.  \mforall{}x,y,r1,r2:Base.    ((F[r1]  \mleq{}  G[r2])  {}\mRightarrow{}  (F[H[x;y;r1]]  \mleq{}  G[J[x;y;r2]]))
8.  j  :  \mBbbZ{}
9.  0  <  j
10.  \mforall{}as,b1,b2:Base.
            ((F[b1]  \mleq{}  G[b2])
            {}\mRightarrow{}  (F[\mlambda{}list$_{ind}$,L.  eval  v  =  L  in
                                                if  v  is  a  pair  then  let  h,t  =  v 
                                                                                        in  H[h;t;list$_{ind}$  t]
                                                otherwise  if  v  =  Ax  then  b1  otherwise  \mbot{}\^{}j  -  1 
                        \mbot{} 
                        as]  \mleq{}  G[\mlambda{}list$_{ind}$,L.  eval  v  =  L  in
                                                                if  v  is  a  pair  then  let  h,t  =  v 
                                                                                                        in  J[h;t;list$_{ind}$  t]
                                                                otherwise  if  v  =  Ax  then  b2  otherwise  \mbot{}\^{}j  -  1 
                                        \mbot{} 
                                        as]))
11.  as  :  Base@i
12.  b1  :  Base@i
13.  b2  :  Base@i
14.  F[b1]  \mleq{}  G[b2]@i
\mvdash{}  F[\mlambda{}list$_{ind}$,L.  eval  v  =  L  in
                                if  v  is  a  pair  then  let  h,t  =  v 
                                                                        in  H[h;t;list$_{ind}$  t]  otherwise  if  v  =  Ax\000C  then  b1  otherwise  \mbot{}\^{}j 
        \mbot{} 
        as]  \mleq{}  G[\mlambda{}list$_{ind}$,L.  eval  v  =  L  in
                                                if  v  is  a  pair  then  let  h,t  =  v 
                                                                                        in  J[h;t;list$_{ind}$  t]
                                                otherwise  if  v  =  Ax  then  b2  otherwise  \mbot{}\^{}j 
                        \mbot{} 
                        as]


By


Latex:
((RWO  "fun\_exp\_unroll\_1"  0  THENA  Auto)
  THEN  Reduce  0
  THEN  ((InstLemma  `lifting-strict-callbyvalue` 
                [\mkleeneopen{}so\_lambda(x,y,z,w.F[x])\mkleeneclose{};\mkleeneopen{}\mcdot{}\mkleeneclose{};\mkleeneopen{}\mcdot{}\mkleeneclose{};\mkleeneopen{}\mcdot{}\mkleeneclose{}]\mcdot{}
                THENA  (Auto  THEN  BLemma  `strict1-strict4`  THEN  Auto)
                )
  THENM  (RWW  "-1"  0  THENA  Auto)
  )
  THEN  ((InstLemma  `lifting-strict-callbyvalue` 
                [\mkleeneopen{}so\_lambda(x,y,z,w.G[x])\mkleeneclose{};\mkleeneopen{}\mcdot{}\mkleeneclose{};\mkleeneopen{}\mcdot{}\mkleeneclose{};\mkleeneopen{}\mcdot{}\mkleeneclose{}]\mcdot{}
                THENA  (Auto  THEN  BLemma  `strict1-strict4`  THEN  Auto)
                )
  THENM  (RWW  "-1"  0  THENA  Auto)
  )
  THEN  UseCbvSqle
  THEN  ((InstLemma  `lifting-strict-ispair` 
                [\mkleeneopen{}so\_lambda(x,y,z,w.F[x])\mkleeneclose{};\mkleeneopen{}\mcdot{}\mkleeneclose{};\mkleeneopen{}\mcdot{}\mkleeneclose{};\mkleeneopen{}\mcdot{}\mkleeneclose{}]\mcdot{}
                THENA  (Auto  THEN  BLemma  `strict1-strict4`  THEN  Auto)
                )
  THENM  (RWO  "-1"  0  THENA  Auto)
  )
  THEN  ((InstLemma  `lifting-strict-ispair` 
                [\mkleeneopen{}so\_lambda(x,y,z,w.G[x])\mkleeneclose{};\mkleeneopen{}\mcdot{}\mkleeneclose{};\mkleeneopen{}\mcdot{}\mkleeneclose{};\mkleeneopen{}\mcdot{}\mkleeneclose{}]\mcdot{}
                THENA  (Auto  THEN  BLemma  `strict1-strict4`  THEN  Auto)
                )
  THENM  (RWO  "-1"  0  THENA  Auto)
  )
  THEN  ((InstLemma  `lifting-strict-isaxiom` 
                [\mkleeneopen{}so\_lambda(x,y,z,w.F[x])\mkleeneclose{};\mkleeneopen{}\mcdot{}\mkleeneclose{};\mkleeneopen{}\mcdot{}\mkleeneclose{};\mkleeneopen{}\mcdot{}\mkleeneclose{}]\mcdot{}
                THENA  (Auto  THEN  BLemma  `strict1-strict4`  THEN  Auto)
                )
  THENM  (RWO  "-1"  0  THENA  Auto)
  )
  THEN  ((InstLemma  `lifting-strict-isaxiom` 
                [\mkleeneopen{}so\_lambda(x,y,z,w.G[x])\mkleeneclose{};\mkleeneopen{}\mcdot{}\mkleeneclose{};\mkleeneopen{}\mcdot{}\mkleeneclose{};\mkleeneopen{}\mcdot{}\mkleeneclose{}]\mcdot{}
                THENA  (Auto  THEN  BLemma  `strict1-strict4`  THEN  Auto)
                )
  THENM  ((RWO  "-1"  0  THENA  Auto)
                THEN  AssumeHasValue
                THEN  (HasValueD  (-1)  ORELSE  (ExceptionCases  (-1)  THEN  Try  (Complete  (SameException))))
                THEN  (HVimplies2  0  [1]  THEN  (RWO    "-1"  0  THENA  MemTop)  THEN  Reduce  0)
                THEN  Try  ((HVimplies2  0  [1]  THEN  (RWO    "-1"  0  THENA  MemTop)  THEN  Reduce  0)))
  ))




Home Index