Step
*
1
of Lemma
select-map2
1. T : Type
2. value-type(T)
3. A : Type
4. B : Type
5. f : A ⟶ B ⟶ T
6. u : A
7. v : A List
8. ∀[bs:B List]. ∀[i:ℕ||v||]. (map2(f;v;bs)[i] = (f v[i] bs[i]) ∈ T) supposing ||v|| = ||bs|| ∈ ℤ
9. u1 : B
10. v1 : B List
11. ∀[i:ℕ||[u / v]||]. (map2(f;[u / v];v1)[i] = (f [u / v][i] v1[i]) ∈ T) supposing ||[u / v]|| = ||v1|| ∈ ℤ
12. (||v|| + 1) = (||v1|| + 1) ∈ ℤ
13. i : ℕ||v|| + 1
⊢ eval x = f u u1 in eval L = map2(f;v;v1) in   [x / L][i] = (f [u / v][i] [u1 / v1][i]) ∈ T
BY
{ RepeatFor 2 ((CallByValueReduce 0 THENA Auto)) }
1
1. T : Type
2. value-type(T)
3. A : Type
4. B : Type
5. f : A ⟶ B ⟶ T
6. u : A
7. v : A List
8. ∀[bs:B List]. ∀[i:ℕ||v||]. (map2(f;v;bs)[i] = (f v[i] bs[i]) ∈ T) supposing ||v|| = ||bs|| ∈ ℤ
9. u1 : B
10. v1 : B List
11. ∀[i:ℕ||[u / v]||]. (map2(f;[u / v];v1)[i] = (f [u / v][i] v1[i]) ∈ T) supposing ||[u / v]|| = ||v1|| ∈ ℤ
12. (||v|| + 1) = (||v1|| + 1) ∈ ℤ
13. i : ℕ||v|| + 1
⊢ [f u u1 / map2(f;v;v1)][i] = (f [u / v][i] [u1 / v1][i]) ∈ T
Latex:
Latex:
1.  T  :  Type
2.  value-type(T)
3.  A  :  Type
4.  B  :  Type
5.  f  :  A  {}\mrightarrow{}  B  {}\mrightarrow{}  T
6.  u  :  A
7.  v  :  A  List
8.  \mforall{}[bs:B  List].  \mforall{}[i:\mBbbN{}||v||].  (map2(f;v;bs)[i]  =  (f  v[i]  bs[i]))  supposing  ||v||  =  ||bs||
9.  u1  :  B
10.  v1  :  B  List
11.  \mforall{}[i:\mBbbN{}||[u  /  v]||].  (map2(f;[u  /  v];v1)[i]  =  (f  [u  /  v][i]  v1[i]))  supposing  ||[u  /  v]||  =  ||v1||
12.  (||v||  +  1)  =  (||v1||  +  1)
13.  i  :  \mBbbN{}||v||  +  1
\mvdash{}  eval  x  =  f  u  u1  in  eval  L  =  map2(f;v;v1)  in      [x  /  L][i]  =  (f  [u  /  v][i]  [u1  /  v1][i])
By
Latex:
RepeatFor  2  ((CallByValueReduce  0  THENA  Auto))
Home
Index