Version: pre-0.1, editing in progress
Basically one-way transformation (lens) between source $X$ and
view $Y$, but with positional browsing of (some visible part of) the view. That
is, $Y$ is generated from $X$, and you may modify $X$ and
thus need to change $Y$. In $Y$, the only thing you may change is
which bit you're looking at, and then you want to view the part of $X$
that that came from.
More or less any reasonable $X$ and $Y$, each of which support
a notion of “editable position”, $xp$ a pointer into $X$,
and similarly $yp$ into $Y$.
So we have $M = (X,xp)$ and $N = (Y,yp)$.
A user may modify X (but not xp?). Some convention needed to agree the
new (default?) position xp after such an update.
A user may modify yp (which changes xp, and hence the Y-view of (X,xp)) but not Y itself.
Given a notion R' of consistency on the actual states, say XR'Y, what we
want informally is that
(X,xp) R (Y, yp) iff XR'Y and xp and yp correspond appropriately.
What appropriately means may vary…
If X changes need to regenerate Y and will need a way to say that the
position shouldn't change.
If either position changes, the other's position should change to
match without modifying the underlying models.
(What about Y? Surely, if Y is a derived view of X, a modification to
either xp or yp should stimulate regeneration of Y from the new
Properties [optional section]
Variants [optional section]
The classic example is the scrollable window Y onto file contents X,
with yp the scrollbar position corresponding to a cursor position xp in
More generally, (suitably restricted instances of)
Model-View-Controller might be usefully regarded in this light.
References [optional section]
Rentschler, Noorshams, Happe, Reussner, Interactive Visual Analytics
for Efficient Maintenance of Model Transformations, Proceedings of ICMT13. .bib
Perdita Stevens and James McKinna