Step
*
of Lemma
select-map2
∀[T:Type]
  ∀[A,B:Type]. ∀[f:A ⟶ B ⟶ T]. ∀[as:A List]. ∀[bs:B List].
    ∀[i:ℕ||as||]. (map2(f;as;bs)[i] = (f as[i] bs[i]) ∈ T) supposing ||as|| = ||bs|| ∈ ℤ 
  supposing value-type(T)
BY
{ (RepeatFor 2 (InductionOnList) THEN RecUnfold `map2` 0 THEN Reduce 0 THEN 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
⊢ eval x = f u u1 in eval L = map2(f;v;v1) in   [x / L][i] = (f [u / v][i] [u1 / v1][i]) ∈ T
Latex:
Latex:
\mforall{}[T:Type]
    \mforall{}[A,B:Type].  \mforall{}[f:A  {}\mrightarrow{}  B  {}\mrightarrow{}  T].  \mforall{}[as:A  List].  \mforall{}[bs:B  List].
        \mforall{}[i:\mBbbN{}||as||].  (map2(f;as;bs)[i]  =  (f  as[i]  bs[i]))  supposing  ||as||  =  ||bs|| 
    supposing  value-type(T)
By
Latex:
(RepeatFor  2  (InductionOnList)  THEN  RecUnfold  `map2`  0  THEN  Reduce  0  THEN  Auto)
Home
Index