Step
*
2
of Lemma
process-ordered-message_wf
1. M : Type
2. n : ℕ
3. L : {L:({n + 1...} × M) List| sorted-by(λx,y. fst(x) < fst(y);L)} 
4. k1 : ℕ
5. k2 : M
6. ¬n < k1
⊢ if (k1) < (n)
     then <[], n, L>
     else eval sn = n + 1 in
          if null(L) ∨bsn <z fst(hd(L))
          then <[<k1, k2>], sn, L>
          else let L1,L2 = split-maximal-consecutive(λp.(fst(p));L) 
               in eval n' = fst(last(L1)) in
                  <[<k1, k2> / L1], n', L2>
          fi  ∈ {tr:({n...} × M) List × n:{n...} × (({n + 1...} × M) List)| 
                 let out,n',L' = tr in 
                 sorted-by(λx,y. fst(x) < fst(y);L')
                 ∧ (0 < ||out|| 
⇒ ((k1 = n ∈ ℤ) ∧ (hd(out) = <k1, k2> ∈ (ℕ × M))))
                 ∧ ((n = k1 ∈ ℤ) 
⇒ ([<k1, k2> / L] = (out @ L') ∈ (({n...} × M) List)))
                 ∧ (n < k1 
⇒ (insert-ordered-message(L;<k1, k2>) = (out @ L') ∈ (({n + 1...} × M) List)))
                 ∧ (k1 < n 
⇒ ((↑null(out)) ∧ (L' = L ∈ (({n + 1...} × M) List))))} 
BY
{ ((CallByValueReduce 0 THENA Auto) THEN (Decide ⌈k1 < n⌉⋅ THENA Auto) THEN (Reduce 0 THENA Auto)) }
1
1. M : Type
2. n : ℕ
3. L : {L:({n + 1...} × M) List| sorted-by(λx,y. fst(x) < fst(y);L)} 
4. k1 : ℕ
5. k2 : M
6. ¬n < k1
7. k1 < n
⊢ <[], n, L> ∈ {tr:({n...} × M) List × n:{n...} × (({n + 1...} × M) List)| 
                let out,n',L' = tr in 
                sorted-by(λx,y. fst(x) < fst(y);L')
                ∧ (0 < ||out|| 
⇒ ((k1 = n ∈ ℤ) ∧ (hd(out) = <k1, k2> ∈ (ℕ × M))))
                ∧ ((n = k1 ∈ ℤ) 
⇒ ([<k1, k2> / L] = (out @ L') ∈ (({n...} × M) List)))
                ∧ (n < k1 
⇒ (insert-ordered-message(L;<k1, k2>) = (out @ L') ∈ (({n + 1...} × M) List)))
                ∧ (k1 < n 
⇒ ((↑null(out)) ∧ (L' = L ∈ (({n + 1...} × M) List))))} 
2
1. M : Type
2. n : ℕ
3. L : {L:({n + 1...} × M) List| sorted-by(λx,y. fst(x) < fst(y);L)} 
4. k1 : ℕ
5. k2 : M
6. ¬n < k1
7. ¬k1 < n
⊢ if null(L) ∨bn + 1 <z fst(hd(L))
  then <[<k1, k2>], n + 1, L>
  else let L1,L2 = split-maximal-consecutive(λp.(fst(p));L) 
       in eval n' = fst(last(L1)) in
          <[<k1, k2> / L1], n', L2>
  fi  ∈ {tr:({n...} × M) List × n:{n...} × (({n + 1...} × M) List)| 
         let out,n',L' = tr in 
         sorted-by(λx,y. fst(x) < fst(y);L')
         ∧ (0 < ||out|| 
⇒ ((k1 = n ∈ ℤ) ∧ (hd(out) = <k1, k2> ∈ (ℕ × M))))
         ∧ ((n = k1 ∈ ℤ) 
⇒ ([<k1, k2> / L] = (out @ L') ∈ (({n...} × M) List)))
         ∧ (n < k1 
⇒ (insert-ordered-message(L;<k1, k2>) = (out @ L') ∈ (({n + 1...} × M) List)))
         ∧ (k1 < n 
⇒ ((↑null(out)) ∧ (L' = L ∈ (({n + 1...} × M) List))))} 
Latex:
Latex:
1.  M  :  Type
2.  n  :  \mBbbN{}
3.  L  :  \{L:(\{n  +  1...\}  \mtimes{}  M)  List|  sorted-by(\mlambda{}x,y.  fst(x)  <  fst(y);L)\} 
4.  k1  :  \mBbbN{}
5.  k2  :  M
6.  \mneg{}n  <  k1
\mvdash{}  if  (k1)  <  (n)
          then  <[],  n,  L>
          else  eval  sn  =  n  +  1  in
                    if  null(L)  \mvee{}\msubb{}sn  <z  fst(hd(L))
                    then  <[<k1,  k2>],  sn,  L>
                    else  let  L1,L2  =  split-maximal-consecutive(\mlambda{}p.(fst(p));L) 
                              in  eval  n'  =  fst(last(L1))  in
                                    <[<k1,  k2>  /  L1],  n',  L2>
                    fi    \mmember{}  \{tr:(\{n...\}  \mtimes{}  M)  List  \mtimes{}  n:\{n...\}  \mtimes{}  ((\{n  +  1...\}  \mtimes{}  M)  List)| 
                                  let  out,n',L'  =  tr  in 
                                  sorted-by(\mlambda{}x,y.  fst(x)  <  fst(y);L')
                                  \mwedge{}  (0  <  ||out||  {}\mRightarrow{}  ((k1  =  n)  \mwedge{}  (hd(out)  =  <k1,  k2>)))
                                  \mwedge{}  ((n  =  k1)  {}\mRightarrow{}  ([<k1,  k2>  /  L]  =  (out  @  L')))
                                  \mwedge{}  (n  <  k1  {}\mRightarrow{}  (insert-ordered-message(L;<k1,  k2>)  =  (out  @  L')))
                                  \mwedge{}  (k1  <  n  {}\mRightarrow{}  ((\muparrow{}null(out))  \mwedge{}  (L'  =  L)))\} 
By
Latex:
((CallByValueReduce  0  THENA  Auto)  THEN  (Decide  \mkleeneopen{}k1  <  n\mkleeneclose{}\mcdot{}  THENA  Auto)  THEN  (Reduce  0  THENA  Auto))
Home
Index