Step * 1 1 of Lemma list-max-map


1. Type
2. Type
3. A ⟶ T
4. T ⟶ ℤ
5. A
6. u1 A
7. List
8. ∀Z:{x:ℤ × Top| ↑isl(x)} 
     (outl(accumulate (with value and list item x):
            eval f[g x] in
            case of inl(p) => if fst(p) <then inl <n, x> else fi  inr(q) => inl <n, x>
           over list:
             v
           with starting value:
            p.(inl <fst(outl(p)), (snd(outl(p)))>)) Z))
     = <fst(outl(accumulate (with value and list item x):
                  eval f[g x] in
                  case of inl(p) => if fst(p) <then inl <n, x> else fi  inr(q) => inl <n, x>
                 over list:
                   v
                 with starting value:
                  Z)))
       
         (snd(outl(accumulate (with value and list item x):
                    eval f[g x] in
                    case of inl(p) => if fst(p) <then inl <n, x> else fi  inr(q) => inl <n, x>
                   over list:
                     v
                   with starting value:
                    Z))))
       >
     ∈ (i:ℤ × T))
9. {x:ℤ × Top| ↑isl(x)} @i
⊢ outl(accumulate (with value and list item x):
        eval f[g x] in
        case of inl(p) => if fst(p) <then inl <n, x> else fi  inr(q) => inl <n, x>
       over list:
         v
       with starting value:
        eval f[g u1] in
        if fst(outl(Z)) <then inl <n, u1> else inl <fst(outl(Z)), (snd(outl(Z)))> fi ))
= <fst(outl(accumulate (with value and list item x):
             eval f[g x] in
             case of inl(p) => if fst(p) <then inl <n, x> else fi  inr(q) => inl <n, x>
            over list:
              v
            with starting value:
             eval f[g u1] in
             case of inl(p) => if fst(p) <then inl <n, u1> else fi  inr(q) => inl <n, u1>)))
  
    (snd(outl(accumulate (with value and list item x):
               eval f[g x] in
               case of inl(p) => if fst(p) <then inl <n, x> else fi  inr(q) => inl <n, x>
              over list:
                v
              with starting value:
               eval f[g u1] in
               case of inl(p) => if fst(p) <then inl <n, u1> else fi  inr(q) => inl <n, u1>))))
  >
∈ (i:ℤ × T)
BY
TACTIC:(D -1 THEN -2 THEN Reduce (-1) THEN Auto) }

1
1. Type
2. Type
3. A ⟶ T
4. T ⟶ ℤ
5. A
6. u1 A
7. List
8. ∀Z:{x:ℤ × Top| ↑isl(x)} 
     (outl(accumulate (with value and list item x):
            eval f[g x] in
            case of inl(p) => if fst(p) <then inl <n, x> else fi  inr(q) => inl <n, x>
           over list:
             v
           with starting value:
            p.(inl <fst(outl(p)), (snd(outl(p)))>)) Z))
     = <fst(outl(accumulate (with value and list item x):
                  eval f[g x] in
                  case of inl(p) => if fst(p) <then inl <n, x> else fi  inr(q) => inl <n, x>
                 over list:
                   v
                 with starting value:
                  Z)))
       
         (snd(outl(accumulate (with value and list item x):
                    eval f[g x] in
                    case of inl(p) => if fst(p) <then inl <n, x> else fi  inr(q) => inl <n, x>
                   over list:
                     v
                   with starting value:
                    Z))))
       >
     ∈ (i:ℤ × T))
9. : ℤ × A@i
10. True
⊢ outl(accumulate (with value and list item x):
        eval f[g x] in
        case of inl(p) => if fst(p) <then inl <n, x> else fi  inr(q) => inl <n, x>
       over list:
         v
       with starting value:
        eval f[g u1] in
        if fst(outl(inl x)) <then inl <n, u1> else inl <fst(outl(inl x)), (snd(outl(inl x)))> fi ))
= <fst(outl(accumulate (with value and list item x):
             eval f[g x] in
             case of inl(p) => if fst(p) <then inl <n, x> else fi  inr(q) => inl <n, x>
            over list:
              v
            with starting value:
             eval f[g u1] in
             case inl of inl(p) => if fst(p) <then inl <n, u1> else inl fi  inr(q) => inl <n, u1>)))
  
    (snd(outl(accumulate (with value and list item x):
               eval f[g x] in
               case of inl(p) => if fst(p) <then inl <n, x> else fi  inr(q) => inl <n, x>
              over list:
                v
              with starting value:
               eval f[g u1] in
               case inl of inl(p) => if fst(p) <then inl <n, u1> else inl fi  inr(q) => inl <n, u1>))))
  >
∈ (i:ℤ × T)


Latex:


Latex:

1.  T  :  Type
2.  A  :  Type
3.  g  :  A  {}\mrightarrow{}  T
4.  f  :  T  {}\mrightarrow{}  \mBbbZ{}
5.  u  :  A
6.  u1  :  A
7.  v  :  A  List
8.  \mforall{}Z:\{x:\mBbbZ{}  \mtimes{}  A  +  Top|  \muparrow{}isl(x)\} 
          (outl(accumulate  (with  value  a  and  list  item  x):
                        eval  n  =  f[g  x]  in
                        case  a  of  inl(p)  =>  if  fst(p)  <z  n  then  inl  <n,  g  x>  else  a  fi    |  inr(q)  =>  inl  <n,  g  x>
                      over  list:
                          v
                      with  starting  value:
                        (\mlambda{}p.(inl  <fst(outl(p)),  g  (snd(outl(p)))>))  Z))
          =  <fst(outl(accumulate  (with  value  a  and  list  item  x):
                                    eval  n  =  f[g  x]  in
                                    case  a  of  inl(p)  =>  if  fst(p)  <z  n  then  inl  <n,  x>  else  a  fi    |  inr(q)  =>  inl  <n,  \000Cx>
                                  over  list:
                                      v
                                  with  starting  value:
                                    Z)))
              ,  g 
                  (snd(outl(accumulate  (with  value  a  and  list  item  x):
                                        eval  n  =  f[g  x]  in
                                        case  a  of  inl(p)  =>  if  fst(p)  <z  n  then  inl  <n,  x>  else  a  fi    |  inr(q)  =>  inl  <n\000C,  x>
                                      over  list:
                                          v
                                      with  starting  value:
                                        Z))))
              >)
9.  Z  :  \{x:\mBbbZ{}  \mtimes{}  A  +  Top|  \muparrow{}isl(x)\}  @i
\mvdash{}  outl(accumulate  (with  value  a  and  list  item  x):
                eval  n  =  f[g  x]  in
                case  a  of  inl(p)  =>  if  fst(p)  <z  n  then  inl  <n,  g  x>  else  a  fi    |  inr(q)  =>  inl  <n,  g  x>
              over  list:
                  v
              with  starting  value:
                eval  n  =  f[g  u1]  in
                if  fst(outl(Z))  <z  n  then  inl  <n,  g  u1>  else  inl  <fst(outl(Z)),  g  (snd(outl(Z)))>  fi  ))
=  <fst(outl(accumulate  (with  value  a  and  list  item  x):
                          eval  n  =  f[g  x]  in
                          case  a  of  inl(p)  =>  if  fst(p)  <z  n  then  inl  <n,  x>  else  a  fi    |  inr(q)  =>  inl  <n,  x>
                        over  list:
                            v
                        with  starting  value:
                          eval  n  =  f[g  u1]  in
                          case  Z  of  inl(p)  =>  if  fst(p)  <z  n  then  inl  <n,  u1>  else  Z  fi    |  inr(q)  =>  inl  <n,  u1>)\000C))
    ,  g 
        (snd(outl(accumulate  (with  value  a  and  list  item  x):
                              eval  n  =  f[g  x]  in
                              case  a  of  inl(p)  =>  if  fst(p)  <z  n  then  inl  <n,  x>  else  a  fi    |  inr(q)  =>  inl  <n,  x>
                            over  list:
                                v
                            with  starting  value:
                              eval  n  =  f[g  u1]  in
                              case  Z  of  inl(p)  =>  if  fst(p)  <z  n  then  inl  <n,  u1>  else  Z  fi    |  inr(q)  =>  inl  <n,  u1\000C>))))
    >


By


Latex:
TACTIC:(D  -1  THEN  D  -2  THEN  Reduce  (-1)  THEN  Auto)




Home Index