Module docstring
{"# Binary map of options
This file defines the binary map of Option. This is mostly useful to define pointwise operations
on intervals.
Main declarations
Option.map₂: Binary map of options.
Notes
This file is very similar to the n-ary section of Mathlib.Data.Set.Basic, to
Mathlib.Data.Finset.NAry and to Mathlib.Order.Filter.NAry. Please keep them in sync.
We do not define Option.map₃ as its only purpose so far would be to prove properties of
Option.map₂ and casing already fulfills this task.
","### Algebraic replacement rules
A collection of lemmas to transfer associativity, commutativity, distributivity, ... of operations
to the associativity, commutativity, distributivity, ... of Option.map₂ of those operations.
The proof pattern is map₂_lemma operation_lemma. For example, map₂_comm mul_comm proves that
map₂ (*) a b = map₂ (*) g f in a CommSemigroup.
","The following symmetric restatement are needed because unification has a hard time figuring all the
functions if you symmetrize on the spot. This is also how the other n-ary APIs do it.
"}