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