Step
*
1
of Lemma
filter-upto-length
1. T : Type
2. P : T ⟶ 𝔹
3. u : T
4. v : T List
5. filter(P;v) ~ map(λi.v[i];filter(λi.(P v[i]);upto(||v||)))
⊢ if P u then [u / filter(P;v)] else filter(P;v) fi  ~ map(λi.[u / v][i];filter(λi.(P [u / v][i]);upto(||v|| + 1)))
BY
{ ((InstLemma `upto_decomp` [⌜||v|| + 1⌝;⌜1⌝]⋅ THENA Auto') THEN Subst' upto(1) ~ [0] -1) }
1
.....equality..... 
1. T : Type
2. P : T ⟶ 𝔹
3. u : T
4. v : T List
5. filter(P;v) ~ map(λi.v[i];filter(λi.(P v[i]);upto(||v||)))
6. upto(||v|| + 1) ~ upto(1) @ map(λx.(x + 1);upto((||v|| + 1) - 1))
⊢ upto(1) ~ [0]
2
1. T : Type
2. P : T ⟶ 𝔹
3. u : T
4. v : T List
5. filter(P;v) ~ map(λi.v[i];filter(λi.(P v[i]);upto(||v||)))
6. upto(||v|| + 1) ~ [0] @ map(λx.(x + 1);upto((||v|| + 1) - 1))
⊢ if P u then [u / filter(P;v)] else filter(P;v) fi  ~ map(λi.[u / v][i];filter(λi.(P [u / v][i]);upto(||v|| + 1)))
Latex:
Latex:
1.  T  :  Type
2.  P  :  T  {}\mrightarrow{}  \mBbbB{}
3.  u  :  T
4.  v  :  T  List
5.  filter(P;v)  \msim{}  map(\mlambda{}i.v[i];filter(\mlambda{}i.(P  v[i]);upto(||v||)))
\mvdash{}  if  P  u  then  [u  /  filter(P;v)]  else  filter(P;v)  fi   
\msim{}  map(\mlambda{}i.[u  /  v][i];filter(\mlambda{}i.(P  [u  /  v][i]);upto(||v||  +  1)))
By
Latex:
((InstLemma  `upto\_decomp`  [\mkleeneopen{}||v||  +  1\mkleeneclose{};\mkleeneopen{}1\mkleeneclose{}]\mcdot{}  THENA  Auto')  THEN  Subst'  upto(1)  \msim{}  [0]  -1)
Home
Index