Step
*
2
2
2
of Lemma
process-ordered-message_wf
1. M : Type
2. n : ℕ
3. u : {n + 1...} × M
4. v : ({n + 1...} × M) List
5. sorted-by(λx,y. fst(x) < fst(y);[u / v])
6. k1 : ℕ
7. k2 : M
8. ¬n < k1
9. ¬k1 < n
⊢ if n + 1 <z fst(u)
  then <[<k1, k2>], n + 1, [u / v]>
  else let L1,L2 = split-maximal-consecutive(λp.(fst(p));[u / v]) 
       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> [u / v]] = (out @ L') ∈ (({n...} × M) List)))
         ∧ (n < k1 
⇒ (insert-ordered-message([u / v];<k1, k2>) = (out @ L') ∈ (({n + 1...} × M) List)))
         ∧ (k1 < n 
⇒ ((↑null(out)) ∧ (L' = [u / v] ∈ (({n + 1...} × M) List))))} 
BY
{ (((Subst' k1 ~ n 0 THENA Auto') THEN ThinVar `k1')
   THEN DVar `u'
   THEN Reduce 0
   THEN (BoolCase ⌈n + 1 <z u1⌉⋅ THENA Auto)) }
1
1. M : Type
2. n : ℕ
3. u1 : {n + 1...}
4. u2 : M
5. v : ({n + 1...} × M) List
6. sorted-by(λx,y. fst(x) < fst(y);[<u1, u2> / v])
7. k2 : M
8. n + 1 < u1
⊢ <[<n, k2>], n + 1, [<u1, u2> / v]> ∈ {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|| 
⇒ ((n = n ∈ ℤ) ∧ (hd(out) = <n, k2> ∈ (ℕ × M))))
                                      ∧ ((n = n ∈ ℤ) 
⇒ ([<n, k2> [<u1, u2> / v]] = (out @ L') ∈ (({n...} × M) List)))
                                      ∧ (n < n 
⇒ (insert-ordered-message([<u1, u2> / v];<n, k2>) = (out @ L') ∈ (({n + \000C1...} × M) List)))
                                      ∧ (n < n 
⇒ ((↑null(out)) ∧ (L' = [<u1, u2> / v] ∈ (({n + 1...} × M) List))))} 
2
1. M : Type
2. n : ℕ
3. u1 : {n + 1...}
4. ¬n + 1 < u1
5. u2 : M
6. v : ({n + 1...} × M) List
7. sorted-by(λx,y. fst(x) < fst(y);[<u1, u2> / v])
8. k2 : M
⊢ let L1,L2 = split-maximal-consecutive(λp.(fst(p));[<u1, u2> / v]) 
  in eval n' = fst(last(L1)) in
     <[<n, k2> / L1], n', L2> ∈ {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|| 
⇒ ((n = n ∈ ℤ) ∧ (hd(out) = <n, k2> ∈ (ℕ × M))))
                                 ∧ ((n = n ∈ ℤ) 
⇒ ([<n, k2> [<u1, u2> / v]] = (out @ L') ∈ (({n...} × M) List)))
                                 ∧ (n < n 
⇒ (insert-ordered-message([<u1, u2> / v];<n, k2>) = (out @ L') ∈ (({n + 1...}\000C × M) List)))
                                 ∧ (n < n 
⇒ ((↑null(out)) ∧ (L' = [<u1, u2> / v] ∈ (({n + 1...} × M) List))))} 
Latex:
Latex:
1.  M  :  Type
2.  n  :  \mBbbN{}
3.  u  :  \{n  +  1...\}  \mtimes{}  M
4.  v  :  (\{n  +  1...\}  \mtimes{}  M)  List
5.  sorted-by(\mlambda{}x,y.  fst(x)  <  fst(y);[u  /  v])
6.  k1  :  \mBbbN{}
7.  k2  :  M
8.  \mneg{}n  <  k1
9.  \mneg{}k1  <  n
\mvdash{}  if  n  +  1  <z  fst(u)
    then  <[<k1,  k2>],  n  +  1,  [u  /  v]>
    else  let  L1,L2  =  split-maximal-consecutive(\mlambda{}p.(fst(p));[u  /  v]) 
              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>  [u  /  v]]  =  (out  @  L')))
                  \mwedge{}  (n  <  k1  {}\mRightarrow{}  (insert-ordered-message([u  /  v];<k1,  k2>)  =  (out  @  L')))
                  \mwedge{}  (k1  <  n  {}\mRightarrow{}  ((\muparrow{}null(out))  \mwedge{}  (L'  =  [u  /  v])))\} 
By
Latex:
(((Subst'  k1  \msim{}  n  0  THENA  Auto')  THEN  ThinVar  `k1')
  THEN  DVar  `u'
  THEN  Reduce  0
  THEN  (BoolCase  \mkleeneopen{}n  +  1  <z  u1\mkleeneclose{}\mcdot{}  THENA  Auto))
Home
Index