Step
*
1
1
3
1
of Lemma
run-event-cases
1. [M] : Type ─→ Type
2. S0 : System(P.M[P])@i
3. r : pRunType(P.M[P])@i
4. n : ℕ@i
5. x : Id@i
6. m : ℕ@i
7. n ≤ m
8. ↑is-run-event(r;m;x)
9. ↑is-run-event(r;n;x)
10. L1 : {tx:ℕn × {i:Id| i = x ∈ Id} | ↑is-run-event(r;fst(tx);snd(tx))} List@i
11. ¬(L1 = [] ∈ ({tx:ℕn × {i:Id| i = x ∈ Id} | ↑is-run-event(r;fst(tx);snd(tx))} List))
12. mapfilter(λt.<t, x>;λt.is-run-event(r;t;x);[0, n))
= L1
∈ ({tx:ℕn × {i:Id| i = x ∈ Id} | ↑is-run-event(r;fst(tx);snd(tx))} List)@i
13. L2 : {tx:{n..m-} × {i:Id| i = x ∈ Id} | ↑is-run-event(r;fst(tx);snd(tx))} List@i
14. mapfilter(λt.<t, x>;λt.is-run-event(r;t;x);[n, m))
= L2
∈ ({tx:{n..m-} × {i:Id| i = x ∈ Id} | ↑is-run-event(r;fst(tx);snd(tx))} List)@i
15. ↑is-run-event(r;m;x)
16. ↑null(L2)
⊢ (((inl last(L1 @ L2)) = (inl last(L1)) ∈ ({tx:ℕ × Id| ↑is-run-event(r;fst(tx);snd(tx))} ?))
∧ ((L2 @ [<m, x>]) = [<m, x>] ∈ ({tx:ℕ × Id| ↑is-run-event(r;fst(tx);snd(tx))} List)))
∨ (∃e:{tx:ℕ × Id| ↑is-run-event(r;fst(tx);snd(tx))}
(fst(e) < m
∧ (n ≤ (fst(e)))
∧ ((x = (snd(e)) ∈ Id) ∧ ((inl last(L1 @ L2)) = (inl e) ∈ ({tx:ℕ × Id| ↑is-run-event(r;fst(tx);snd(tx))} ?)))
∧ ((L2 @ [<m, x>])
= (map(λt.<t, x>;filter(λt.is-run-event(r;t;x);[n, (fst(e)) + 1))) @ [<m, x>])
∈ ({tx:ℕ × Id| ↑is-run-event(r;fst(tx);snd(tx))} List))))
BY
{ (DVar `L2'
THEN All Reduce
THEN Try (Trivial)
THEN (RWO "append-nil" 0 THENA Auto)
THEN ((GenConcl ⌈last(L1) = X ∈ {tx:ℕn × {i:Id| i = x ∈ Id} | ↑is-run-event(r;fst(tx);snd(tx))} ⌉⋅
THENA (Auto THEN RW assert_pushdownC 0 THEN Auto)
)
THEN Fold `mapfilter` 0
THEN OrLeft
THEN Auto)⋅) }
Latex:
Latex:
1. [M] : Type {}\mrightarrow{} Type
2. S0 : System(P.M[P])@i
3. r : pRunType(P.M[P])@i
4. n : \mBbbN{}@i
5. x : Id@i
6. m : \mBbbN{}@i
7. n \mleq{} m
8. \muparrow{}is-run-event(r;m;x)
9. \muparrow{}is-run-event(r;n;x)
10. L1 : \{tx:\mBbbN{}n \mtimes{} \{i:Id| i = x\} | \muparrow{}is-run-event(r;fst(tx);snd(tx))\} List@i
11. \mneg{}(L1 = [])
12. mapfilter(\mlambda{}t.<t, x>\mlambda{}t.is-run-event(r;t;x);[0, n)) = L1@i
13. L2 : \{tx:\{n..m\msupminus{}\} \mtimes{} \{i:Id| i = x\} | \muparrow{}is-run-event(r;fst(tx);snd(tx))\} List@i
14. mapfilter(\mlambda{}t.<t, x>\mlambda{}t.is-run-event(r;t;x);[n, m)) = L2@i
15. \muparrow{}is-run-event(r;m;x)
16. \muparrow{}null(L2)
\mvdash{} (((inl last(L1 @ L2)) = (inl last(L1))) \mwedge{} ((L2 @ [<m, x>]) = [<m, x>]))
\mvee{} (\mexists{}e:\{tx:\mBbbN{} \mtimes{} Id| \muparrow{}is-run-event(r;fst(tx);snd(tx))\}
(fst(e) < m
\mwedge{} (n \mleq{} (fst(e)))
\mwedge{} ((x = (snd(e))) \mwedge{} ((inl last(L1 @ L2)) = (inl e)))
\mwedge{} ((L2 @ [<m, x>])
= (map(\mlambda{}t.<t, x>filter(\mlambda{}t.is-run-event(r;t;x);[n, (fst(e)) + 1))) @ [<m, x>]))))
By
Latex:
(DVar `L2'
THEN All Reduce
THEN Try (Trivial)
THEN (RWO "append-nil" 0 THENA Auto)
THEN ((GenConcl \mkleeneopen{}last(L1) = X\mkleeneclose{}\mcdot{} THENA (Auto THEN RW assert\_pushdownC 0 THEN Auto))
THEN Fold `mapfilter` 0
THEN OrLeft
THEN Auto)\mcdot{})
Home
Index