Step
*
1
2
of Lemma
last-mapfilter2
1. A : Type
2. B : Type
3. f : A ⟶ B
4. P : A ⟶ 𝔹
5. u : A
6. v : A List
7. ¬(v = [] ∈ (A List))
8. (¬(filter(P;v) = [] ∈ (A List)))
⇒ (¬False)
⇒ (¬↑null(mapfilter(f;P;v)))
⇒ (↑(P last(v)))
⇒ (last(filter(P;v)) = last(v) ∈ A)
9. ↑(P u)
10. filter(P;v) = [] ∈ (A List)
11. ¬([u / filter(P;v)] = [] ∈ (A List))
12. ¬False
13. ¬↑null(mapfilter(f;P;[u / v]))
14. ↑(P last(v))
⊢ u = last(v) ∈ A
BY
{ ((Assert ⌜↑null(filter(P;v))⌝⋅ THENA (RW assert_pushdownC 0 THEN Auto))
   THEN (RW ListC (-1) THENA Auto)
   THEN (RWO "l_all_iff" (-1) THENA Auto)
   THEN InstHyp [⌜last(v)⌝] (-1)⋅
   THEN Auto) }
Latex:
Latex:
1.  A  :  Type
2.  B  :  Type
3.  f  :  A  {}\mrightarrow{}  B
4.  P  :  A  {}\mrightarrow{}  \mBbbB{}
5.  u  :  A
6.  v  :  A  List
7.  \mneg{}(v  =  [])
8.  (\mneg{}(filter(P;v)  =  []))
{}\mRightarrow{}  (\mneg{}False)
{}\mRightarrow{}  (\mneg{}\muparrow{}null(mapfilter(f;P;v)))
{}\mRightarrow{}  (\muparrow{}(P  last(v)))
{}\mRightarrow{}  (last(filter(P;v))  =  last(v))
9.  \muparrow{}(P  u)
10.  filter(P;v)  =  []
11.  \mneg{}([u  /  filter(P;v)]  =  [])
12.  \mneg{}False
13.  \mneg{}\muparrow{}null(mapfilter(f;P;[u  /  v]))
14.  \muparrow{}(P  last(v))
\mvdash{}  u  =  last(v)
By
Latex:
((Assert  \mkleeneopen{}\muparrow{}null(filter(P;v))\mkleeneclose{}\mcdot{}  THENA  (RW  assert\_pushdownC  0  THEN  Auto))
  THEN  (RW  ListC  (-1)  THENA  Auto)
  THEN  (RWO  "l\_all\_iff"  (-1)  THENA  Auto)
  THEN  InstHyp  [\mkleeneopen{}last(v)\mkleeneclose{}]  (-1)\mcdot{}
  THEN  Auto)
Home
Index