Step * 2 of Lemma filter-index_wf


1. Type
2. T ⟶ 𝔹
3. T
4. List
5. ∀i:ℕ||v||. ((↑(P v[i]))  (filter-index(P;v) i ∈ {j:ℕ||filter(P;v)||| filter(P;v)[j] v[i] ∈ T} ))
6. : ℕ||v|| 1
⊢ (↑(P [u v][i]))
 (filter-index(P;[u v]) i ∈ {j:ℕ||if then [u filter(P;v)] else filter(P;v) fi ||| 
                                 if then [u filter(P;v)] else filter(P;v) fi [j] [u v][i] ∈ T} )
BY
((SplitOnConclITE THENA Auto)
   THEN CaseNat `i'
   THEN Reduce 0
   THEN (D THENA Auto)
   THEN Try (Trivial)
   THEN ((RWO "select_cons_tl" (-1) THENA Auto) ORELSE (RepUR ``filter-index`` THEN Auto))
   THEN (Assert filter-index(P;v) (i 1) ∈ {j:ℕ||filter(P;v)||| filter(P;v)[j] v[i 1] ∈ T}  BY
               Auto)
   THEN Unfold `filter-index` 0
   THEN Reduce 0
   THEN Fold `filter-index` 0
   THEN (GenConclTerm ⌜filter-index(P;v) (i 1)⌝⋅ THENA Auto)
   THEN -2
   THEN (MemTypeCD THENW (All Thin THEN Auto))
   THEN Thin (-1)
   THEN RepeatFor (AutoSplit)) }


Latex:


Latex:

1.  T  :  Type
2.  P  :  T  {}\mrightarrow{}  \mBbbB{}
3.  u  :  T
4.  v  :  T  List
5.  \mforall{}i:\mBbbN{}||v||.  ((\muparrow{}(P  v[i]))  {}\mRightarrow{}  (filter-index(P;v)  i  \mmember{}  \{j:\mBbbN{}||filter(P;v)|||  filter(P;v)[j]  =  v[i]\}  ))
6.  i  :  \mBbbN{}||v||  +  1
\mvdash{}  (\muparrow{}(P  [u  /  v][i]))
{}\mRightarrow{}  (filter-index(P;[u  /  v])  i  \mmember{}  \{j:\mBbbN{}||if  P  u  then  [u  /  filter(P;v)]  else  filter(P;v)  fi  ||| 
                                                                  if  P  u  then  [u  /  filter(P;v)]  else  filter(P;v)  fi  [j]
                                                                  =  [u  /  v][i]\}  )


By


Latex:
((SplitOnConclITE  THENA  Auto)
  THEN  CaseNat  0  `i'
  THEN  Reduce  0
  THEN  (D  0  THENA  Auto)
  THEN  Try  (Trivial)
  THEN  ((RWO  "select\_cons\_tl"  (-1)  THENA  Auto)  ORELSE  (RepUR  ``filter-index``  0  THEN  Auto))
  THEN  (Assert  filter-index(P;v)  (i  -  1)  \mmember{}  \{j:\mBbbN{}||filter(P;v)|||  filter(P;v)[j]  =  v[i  -  1]\}    BY
                          Auto)
  THEN  Unfold  `filter-index`  0
  THEN  Reduce  0
  THEN  Fold  `filter-index`  0
  THEN  (GenConclTerm  \mkleeneopen{}filter-index(P;v)  (i  -  1)\mkleeneclose{}\mcdot{}  THENA  Auto)
  THEN  D  -2
  THEN  (MemTypeCD  THENW  (All  Thin  THEN  Auto))
  THEN  Thin  (-1)
  THEN  RepeatFor  2  (AutoSplit))




Home Index