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