Step
*
of Lemma
first_index_cons
∀[T:Type]. ∀[L:T List]. ∀[a:T]. ∀[P:T ⟶ 𝔹].
  (index-of-first x in [a / L].P[x] ~ if P[a] then 1
  if 0 <z index-of-first x in L.P[x] then index-of-first x in L.P[x] + 1
  else 0
  fi )
BY
{ ((Unfold `first_index` 0 THEN Auto) THEN Reduce 0) }
1
1. T : Type
2. L : T List
3. a : T
4. P : T ⟶ 𝔹
⊢ search(||L|| + 1;λi.P[[a / L][i]])
= if P[a] then 1
  if 0 <z search(||L||;λi.P[L[i]]) then search(||L||;λi.P[L[i]]) + 1
  else 0
  fi 
∈ ℕ(||L|| + 1) + 1
Latex:
Latex:
\mforall{}[T:Type].  \mforall{}[L:T  List].  \mforall{}[a:T].  \mforall{}[P:T  {}\mrightarrow{}  \mBbbB{}].
    (index-of-first  x  in  [a  /  L].P[x]  \msim{}  if  P[a]  then  1
    if  0  <z  index-of-first  x  in  L.P[x]  then  index-of-first  x  in  L.P[x]  +  1
    else  0
    fi  )
By
Latex:
((Unfold  `first\_index`  0  THEN  Auto)  THEN  Reduce  0)
Home
Index