\DOC MAP2_CONV \TYPE {MAP2_CONV : conv -> conv} \SYNOPSIS Compute the result of mapping a binary function down two lists. \KEYWORDS conversion, list. \DESCRIBE The function {MAP2_CONV} is a conversion for computing the result of mapping a binary function {f:ty1->ty2->ty3} down two lists {--`[l11;...;l1n]`--} whose elements are of type {ty1} and {--`[l21;...;l2n]`--} whose elements are of type {ty2}. The lengths of the two lists must be identical. The first argument to {MAP2_CONV} is expected to be a conversion that computes the result of applying the function {f} to a pair of corresponding elements of these lists. When applied to a term {--`f l1i l2i`--}, this conversion should return a theorem of the form {|- (f l1i l2i) = ri}, where {ri} is the result of applying the function {f} to the elements {l1i} and {l2i}. Given an appropriate {conv}, the conversion {MAP2_CONV conv} takes a term of the form {--`MAP2 f [l11;...;dl2tn] [l21;...;l2n]`--} and returns the theorem { |- MAP2 f [l11;...;l1n] [l21;...;l2n] = [r1;...;rn] } where {conv (--`f l1i l2i`--)} returns {|- (f l1i l2i) = ri} for {i} from {1} to {n}. \EXAMPLE The following is a very simple example in which the corresponding elements from the two lists are summed to form the resulting list: { - load_library_in_place num_lib; - MAP2_CONV Num_lib.ADD_CONV (--`MAP2 $+ [1;2;3] [1;2;3]`--); |- MAP2 $+ [1;2;3] [1;2;3] = [2;4;6] } \FAILURE {MAP2_CONV conv} fails if applied to a term not of the form described above. An application of {MAP2_CONV conv} to a term {--`MAP2 f [l11;...;l1n] [l21;...;l2n]`--} fails unless for all {i} where {1<=i<=n} evaluating {conv (--`f l1i l2i`--)} returns {|- (f l1i l2i) = ri} for some {ri}. \SEEALSO MAP_CONV \ENDDOC