Presenter: Meng Wang

Bidirectional (Bx) programming typically involves two operations obeying the following laws:

put (get s, s) = s get (put (a,s)) = a

Conventional bidirectional systems consider updates on the abstract values as blackboxes, without any knowledge of the updating process. This makes the expressing of some bidirectional properties difficult:

1. Minimum changes This property is yet to be developed in Bx. Edit distance and alignment distance seem to be very related. In database research, the problem is more related to minimum side effects. 2. Undoability Not observed by lenses. Generally not observed by any system with create function. Having editing information makes the difference explicit. 3. Alignment Boomerang (lenses for String) targets at the alignment problem for linear data. It relies on locality (chunks).

It is folklore knowledge that edits of structured data break down to a small set of atomic operations (insert, delete...). The hope is that by adding this additional information into a bidirectional framework, we can obtain `better' results.

Knowing the editing process typically gives us the knowledge of the exact components of an abstract value (abstrat component) that are changed. It becomes desirable to understand which corresponding components of the input source value contribute to the construction of a particular abstract component, which are the parts that will be updated. This is related to the problem of Provenance in database research.