Step
*
of Lemma
longest-prefix-decomp
∀[T:Type]. ∀[L:T List]. ∀[P:(T List) ⟶ 𝔹]. (L ~ longest-prefix(P;L) @ nth_tl(||longest-prefix(P;L)||;L))
BY
{ (InductionOnList
THEN RecUnfold `longest-prefix` 0
THEN (Reduce 0 THEN Try (Complete ((Reduce 0 THEN Auto))))
THEN (D 0 THENA Auto)
THEN Try (Complete (Auto))
THEN RepUR ``let`` 0
THEN (InstHyp [⌜λL'.(P [u / L'])⌝] (-2)⋅ THENA Auto)
THEN AutoSplit
THEN Try (RepeatFor 2 (AutoSplit))
THEN EqCD
THEN Try (Trivial)
THEN NthHypSq (-1)
THEN RepeatFor 2 (EqCD)
THEN Try (Trivial)) }
1
1. T : Type
2. u : T
3. v : T List
4. ∀[P:(T List) ⟶ 𝔹]. (v ~ longest-prefix(P;v) @ nth_tl(||longest-prefix(P;v)||;v))
5. P : (T List) ⟶ 𝔹
6. ¬(longest-prefix(λL'.(P [u / L']);v) = [] ∈ (T List))
7. v ~ longest-prefix(λL'.(P [u / L']);v) @ nth_tl(||longest-prefix(λL'.(P [u / L']);v)||;v)
⊢ nth_tl(||longest-prefix(λL'.(P [u / L']);v)|| + 1;[u / v]) ~ nth_tl(||longest-prefix(λL'.(P [u / L']);v)||;v)
Latex:
Latex:
\mforall{}[T:Type]. \mforall{}[L:T List]. \mforall{}[P:(T List) {}\mrightarrow{} \mBbbB{}].
(L \msim{} longest-prefix(P;L) @ nth\_tl(||longest-prefix(P;L)||;L))
By
Latex:
(InductionOnList
THEN RecUnfold `longest-prefix` 0
THEN (Reduce 0 THEN Try (Complete ((Reduce 0 THEN Auto))))
THEN (D 0 THENA Auto)
THEN Try (Complete (Auto))
THEN RepUR ``let`` 0
THEN (InstHyp [\mkleeneopen{}\mlambda{}L'.(P [u / L'])\mkleeneclose{}] (-2)\mcdot{} THENA Auto)
THEN AutoSplit
THEN Try (RepeatFor 2 (AutoSplit))
THEN EqCD
THEN Try (Trivial)
THEN NthHypSq (-1)
THEN RepeatFor 2 (EqCD)
THEN Try (Trivial))
Home
Index