Step
*
2
1
of Lemma
select-indices-aux_wf
1. A : Type
2. f : A ─→ 𝔹
3. u : A
4. v : A List
5. select-indices-aux(f;v) ∈ ℕ ─→ (ℕ List)
⊢ if f u
  then λn.[n / 
           (rec-case(v) of [] => λn.[] | h::t => r.if f h then λn.[n / (r (n + 1))] else λn.(r (n + 1)) fi  (n + 1))]
  else λn.(rec-case(v) of [] => λn.[] | h::t => r.if f h then λn.[n / (r (n + 1))] else λn.(r (n + 1)) fi  (n + 1))
  fi  ∈ ℕ ─→ (ℕ List)
BY
{ Fold `select-indices-aux` 0 }
1
1. A : Type
2. f : A ─→ 𝔹
3. u : A
4. v : A List
5. select-indices-aux(f;v) ∈ ℕ ─→ (ℕ List)
⊢ if f u then λn.[n / (select-indices-aux(f;v) (n + 1))] else λn.(select-indices-aux(f;v) (n + 1)) fi  ∈ ℕ ─→ (ℕ List)
Latex:
Latex:
1.  A  :  Type
2.  f  :  A  {}\mrightarrow{}  \mBbbB{}
3.  u  :  A
4.  v  :  A  List
5.  select-indices-aux(f;v)  \mmember{}  \mBbbN{}  {}\mrightarrow{}  (\mBbbN{}  List)
\mvdash{}  if  f  u
    then  \mlambda{}n.[n  / 
                      (rec-case(v)  of
                        []  =>  \mlambda{}n.[]
                        h::t  =>
                          r.if  f  h  then  \mlambda{}n.[n  /  (r  (n  +  1))]  else  \mlambda{}n.(r  (n  +  1))  fi   
                        (n  +  1))]
    else  \mlambda{}n.(rec-case(v)  of
                      []  =>  \mlambda{}n.[]
                      h::t  =>
                        r.if  f  h  then  \mlambda{}n.[n  /  (r  (n  +  1))]  else  \mlambda{}n.(r  (n  +  1))  fi   
                      (n  +  1))
    fi    \mmember{}  \mBbbN{}  {}\mrightarrow{}  (\mBbbN{}  List)
By
Latex:
Fold  `select-indices-aux`  0
Home
Index