JJohn Baez and Bob Coecke (Eds.): Applied Category Theory 2019EPTCS 323, 2020, pp. 183–195, doi:10.4204/EPTCS.323.13 c (cid:13)
Bryce ClarkeThis work is licensed under theCreative Commons Attribution License.
Internal lenses as functors and cofunctors
Bryce Clarke ∗ Centre of Australian Category TheoryMacquarie University, Australia [email protected]
Lenses may be characterised as objects in the category of algebras over a monad, however theyare often understood instead as morphisms, which propagate updates between systems. Workinginternally to a category with pullbacks, we define lenses as simultaneously functors and cofunctorsbetween categories. We show that lenses may be canonically represented as a particular commutingtriangle of functors, and unify the classical state-based lenses with both c-lenses and d-lenses in thisframework. This new treatment of lenses leads to considerable simplifications that are important inapplications, including a clear interpretation of lens composition.
Lenses form a mathematical structure that aims to capture the fundamental aspects of certain synchro-nisations between pairs of systems. The central goal of such synchronisation is to coherently propagateupdates in one system to updates in another, and vice versa. The precise nature of the synchronisationprocess depends closely on the type of system being studied, and thus many different kinds of lenseshave been defined to characterise various applications and examples.Although a relatively recent subject for detailed abstract study, lenses are an impressive exampleof applied category theory, playing major roles in database view updating, in Haskell programs of manykinds, and in diverse examples of Systems Interoperations, Data Sharing, and Model-Driven Engineering.Thus, further clarifying the category-theoretic status and systematising the use of lenses, as this paperaims to do, is an important part of applied category theory.Lenses were originally introduced [8] to provide a solution to the view-update problem [3]. In treat-ments of the view-update problem systems are generally modelled as a set of states, where it is possibleto update from one state of the system to any other, and the only information retained about this updateare its initial and final states. Thus a system may be understood as a codiscrete category on its set ofstates A with set of updates A × A given by a pair of initial and final states.Lenses have long been recognised to be some kind of morphism between systems. An obvious notionof morphism between systems is simply a function f : A → B between their sets of states. Since systemsmay be modelled as codiscrete categories, there is also an induced function f × f : A × A → B × B between the sets of updates of these systems. The map f : A → B is called the Get function and providesthe first component of a lens between the systems A and B , often called the source and view .The second component of a lens is called the Put function p : A × B → A whose role is less obvious.The set A × B may be interpreted as the set of anchored view updates via the induced function f × B : A × B → B × B which produces a view update whose initial state is given by the Get function. The inducedfunction h π , p i : A × B → A × A may be regarded as the Put function, propagating every anchored view ∗ The author is supported by the Australian Government Research Training Program Scholarship.
84 Internal lenses asfunctors and cofunctorsupdate to a source update, illustrated in the diagram below.
A a p ( a , b ) B f a b f ... ...Frequently the Get and
Put functions of a lens are required to satisfy three additional axioms, calledthe lens laws , which ensure the synchronisation of updates between systems is well-behaved. A × B AB p π f A A × BA h A , f i A p A × B × B A × BA × B A π , p × B pp In order from left to right: the
Put-Get law ensures that the systems A and B are indeed synchronisedunder the Get and
Put functions; the
Get-Put law ensures that anchored view updates which are identitiesare preserved by the
Put function; the
Put-Put law ensures that composite anchored view updates arepreserved under the
Put function.In summary, a state-based lens [8], denoted ( f , p ) : A ⇋ B , consists of a Get function f : A → B and a Put function p : A × B → A satisfying the lens laws. Early mathematical work [14] characterisedstate-based lenses as algebras for a well-known monad, Set (cid:30) B −→ Set (cid:30) Bf : A → B π : A × B → B which may be generalised to any category with finite products. It was later shown that lenses are alsocoalgebras for a comonad [9] and may be defined inside any cartesian closed category. While theseworks took the first steps towards internalisation of lenses, they characterised lenses as objects in thecategory of Eilenberg-Moore (co)algebras, rather than morphisms between sets, and did not account forcomposition of lenses.A significant shortcoming of state-based lenses in many applications is they only describe synchro-nisation between systems as a set of states, or codiscrete categories, ignoring the information on howstates are updated. This motivated the independent development of both c-lenses [15] and d-lenses [7]between systems modelled as arbitrary categories. Making use of comma categories instead of products,c-lenses were defined as algebras for a classical KZ-monad [18], and may be also understood as splitGrothendieck opfibrations. In contrast d-lenses were shown [12] to be more general, as split opfibra-tions without the usual universal property, and could only be characterised as algebras for a semi-monad satisfying an additional axiom.Later work [13] showed that the category of state-based lenses (as morphisms) is a full subcategoryof the category of d-lenses (which also contains a subcategory of c-lenses). Despite this unification ofcategory-based lenses, composition was still defined in an ad hoc fashion, and there was no mathematicalexplanation as to why lenses characterised as algebras should be understood as morphisms. Summary of Paper
The contribution of this paper may be summarised as follows:ryce Clarke 185 • Generalise the theory of lenses to be internal to any category E with pullbacks. • Define an internal lens as an internal functor and an internal cofunctor, which provide the appro-priate notion of
Get and
Put , respectively. • Characterise internal lenses as diagrams of internal functors, using the span representation of aninternal cofunctor. • Show there is a well-defined category
Lens ( E ) whose objects are internal categories and whosemorphisms are internal lenses. • Demonstrate state-based lenses, c-lenses, and d-lenses as examples of internal lenses.
This section provides a brief review of the relevant internal category theory required for the paper, mostof which can be found in standard references such as [4, 16, 17]. Throughout we work internal to acategory E with pullbacks, with the main examples being E = Set , Cat .The idea is that a system may be defined as an internal category with an object of states and an object of updates . An internal functor will later be interpreted as the
Get component of an internal lens,while internal discrete opfibrations will also be central in defining the
Put component of an internal lens.Codiscrete categories and arrow categories are presented as examples and will later be used to defineinternal versions of state-based lenses and c-lenses.
Definition 1. An internal category A consists of an object of objects A and an object of morphisms A together with a span, A A A d d (1)where d : A → A is the domain map and d : A → A is the codomain map , and the pullbacks, A A A A d d d d y A A A A d d d d y (2)where A is the object of composable pairs and A is the object of composable triples , as well as an iden-tity map i : A → A and composition map d : A → A satisfying the following commutative diagrams: A A A A i i A d d A A A A A A d d d d d d d A A A A i i A d d A A A A d d d d (3)The morphisms i , i : A → A and d , d : A → A appearing in (3) are defined using the universalproperty of the pullback A .86 Internal lenses asfunctors and cofunctors Example 2. A small category is an internal category in Set . Thus a small category consists of a set ofobjects and a set of morphisms, together with functions specifying the domain, codomain, identity, andcomposition.
Example 3.
A (small) double category is an internal category in
Cat , the category of small categoriesand functors. Thus a double category consists of a category of objects and a category of morphisms,together with functors specifying the domain, codomain, identity, and composition.
Example 4.
Assume E has finite limits. A codiscrete category on an object A ∈ E is an internal categorywhose object of objects is A and whose object of morphisms is the product A × A , with domain andcodomain maps given by the left and right projections: A × AA A π π The identity map is given by the diagonal h A , A i : A → A × A , the object of composable pairs is givenby the product A × A × A , and the composition map is given by the following universal morphism: A × A × AA A × A A π π π , π π Example 5.
Let A be an internal category. The arrow category Φ A has an object of objects A and anobject of morphisms A : = A × A A defined by the pullback, A A A A A A π π d d d d y with domain map d π : A → A and codomain map d π : A → A . The pullback A may be un-derstood as the object of commutative squares in A . The identity and composition maps require tediousnotation to define precisely, however we note they are induced from the diagrams (3). Definition 6.
Let A and B be internal categories. An internal functor f : A → B consists of morphisms, f : A −→ B f : A −→ B satisfying the following commutative diagrams: A A A B B B f d d f f d d A A B B i f f i A A B B d f f d (4)The morphism f : A → B appearing in (4) is defined using the universal property of the pullback B .ryce Clarke 187 Remark.
Given an internal category A , the identity functor consists of a pair of morphisms:1 A : A −→ A A : A −→ A Given internal functors f : A → B and g : B → C , their composite functor g ◦ f : A → C consists of a pairof morphisms: g f : A −→ C g f : A −→ C Composition of internal functors is both unital and associative, as it is induced by composition of mor-phisms in E . Definition 7.
Let
Cat ( E ) be the category whose objects are internal categories and whose morphismsare internal functors. Example 8.
The category of sets and functions
Set has pullbacks, thus we obtain the familiar example
Cat = Cat ( Set ) of small categories and functors between them. Example 9.
The category
Cat has pullbacks, so we obtain the category
Dbl = Cat ( Cat ) of doublecategories and double functors between them. Remark.
The category
Cat ( E ) has all pullbacks. Given internal functors f : A → B and g : C → B , theirpullback is the category A × B C constructed from the pullbacks, A × B C A C B f g y A × B C A C B f g y which define the object of objects and object of morphisms, respectively. The rest of the structure isdefined using the universal property of the pullback. Therefore internal double categories may be definedas categories internal to Cat ( E ) . Example 10. An internal discrete opfibration is an internal functor f : A → B such that the followingdiagram is a pullback: A A B B d f f d Note the identity functor is a discrete opfibration, and the composite of discrete opfibrations is a discreteopfibration, by the Pullback Pasting Lemma.
Definition 11.
Let
DOpf ( E ) be the category whose objects are internal categories and whose morphismsare discrete opfibrations. This section introduces the notion of an internal cofunctor and proves a useful representation of internalcofunctors as certain spans of internal functors. Since their introduction [1, 10] there has been almost88 Internal lenses asfunctors and cofunctorsno work on cofunctors, apart from the recent reference [2]. To avoid confusion, we explicitly note that acofunctor is not a contravariant functor.The idea of a cofunctor is to generalise discrete opfibrations, providing a way to lift certain mor-phisms while preserving identities and composition. Cofunctors are dual to functors in the sense thatthey lift morphisms in the opposite direction to the object assignment, while functors push-forward mor-phisms in the same direction. In the context of synchronisation, a cofunctor will later be interpreted asthe
Put component of an internal lens which lifts anchored view updates in the pullback Λ : = A × B B to source updates in A . Definition 12.
Let A and B be internal categories. An internal cofunctor ϕ : B A consists of mor-phisms, ϕ : A −→ B ϕ : Λ −→ A p : Λ −→ A together with the pullbacks, Λ A B B d ϕ ϕ d y Λ Λ B B d ϕ ϕ d y (5)such that the following diagrams commute: Λ A B B p ϕ ϕ d A Λ A A A A A d p ϕ A d d A Λ A A i A ϕ i Λ Λ A A d ϕ ϕ d (6) Remark.
The pullback projections in (5) will play different roles which prompt different notational con-ventions. The projection d : Λ → A should be understood as the domain map for an internal categorywith object of morphisms Λ which will be defined in Proposition 17. The projection ϕ : Λ → B should be understood as morphism assignment for a discrete opfibration ϕ which will be defined inTheorem 18. The projections d and ϕ for Λ may be understood similarly. Notation.
The commutative diagrams (6) include morphisms defined using the universal property of thepullback via the diagrams below: A B Λ A B B A ϕ i i d ϕ ϕ d y Λ Λ B Λ A B B d ϕ d d d d ϕ ϕ d y Λ Λ B Λ A B B d ϕ p p d d ϕ ϕ d y Λ Λ Λ A A A A d p ϕ ϕ ϕ d d d d y (7) Remark.
Strictly speaking, the morphism p : Λ → A is not required for the definition of a cofunctor.Instead the two commutative diagrams in (6) which contain it may be replaced with the commutativeryce Clarke 189diagram: Λ A A B B ϕ ϕ d ϕ d (8) Example 13.
An internal cofunctor with ϕ : Λ ∼ = A is a discrete opfibration. Example 14.
An internal cofunctor between monoids, as categories with one object, is a monoid homo-morphism.
Example 15.
An internal cofunctor with ϕ = A is an identity-on-objects functor. Remark.
Given an internal category A , the identity cofunctor consists of morphisms:1 A : A −→ A A : A −→ A d : A −→ A Given internal cofunctors ϕ : B A and γ : C B , consisting of triples ( ϕ , ϕ , p ) and ( γ , γ , q ) respectively, their composite cofunctor ϕ ◦ γ : C → A consists of the morphism, γ ϕ : A −→ C together with the pullback A × C C and the morphisms, ϕ h π , γ ( ϕ × C ) i : A × C C −→ A p h π , γ ( ϕ × C ) i : A × C C −→ A (9)where the universal morphisms are defined via the following commutative diagram: A × C C Ω C Λ B A A B C h π , γ ( ϕ × C ) i ϕ × C y γ γ d d ϕ ϕ d d d ϕ γ (10)Composition of cofunctors is both unital and associative, however we omit the diagram-chasing requiredfor the proof. Definition 16.
Let
Cof ( E ) be the category whose objects are internal categories and whose morphismsare internal cofunctors. Proposition 17. If ϕ : B A is an internal cofunctor, then there exists an internal category Λ withobject of objects A and object of morphisms Λ , together with domain map d : Λ → A , codomainmap p : Λ → A , identity map i : A → Λ , and composition map d : Λ → Λ .
90 Internal lenses asfunctors and cofunctors
Proof.
We give a partial proof and show the first pair of diagrams in (3) are satisfied. Using the relevantdiagrams from Definition 1 and Definition 12 we have the following commutative diagram: A A A Λ A A i i A d ϕ d p This shows that the identity map i : A → Λ is well-defined.To show that Λ is well-defined as the the pullback of the domain and codomain maps (left-mostsquare below) we use the Pullback Pasting Lemma, noting that the outer rectangles below are equal: Λ Λ B Λ A B d p d ϕ y d p ϕ = Λ B B Λ B B d ϕ y y d d d ϕ d Again using the relevant diagrams from Definition 1 and Definition 12 we have the following com-mutative diagram: Λ Λ Λ A A A A A Λ A d d p d ϕ ϕ p d d d d d p ϕ This shows that the composition map d : Λ → Λ is well-defined. Remark.
Proposition 17 may be understood as showing that a cofunctor induces a category whose objectsare source states and whose morphisms are anchored view updates. The internal category Λ is shown inTheorem 18 to mediate between the source and the view, and reduces the complexity of Definition 12 toa simple statement concerning internal categories and functors. Theorem 18. If ϕ : B A is an internal cofunctor, then there is an internal discrete opfibration ϕ : Λ → B consisting of the morphisms, ϕ : A −→ B ϕ : Λ −→ B and an identity-on-objects internal functor ϕ : Λ → A consisting of morphisms: A : A −→ A ϕ : Λ −→ A Thus every internal cofunctor ϕ : B A may be represented as a span of internal functors: Λ B A ϕ ϕ ryce Clarke 191
Proof.
To show that ϕ : Λ → B is a well-defined internal discrete opfibration, we note from (5), (6), and(7) that the following diagrams commute: A Λ A B B B ϕ d p ϕ x ϕ d d A Λ B B ϕ i ϕ i Λ Λ B B ϕ d ϕ d To show that ϕ : Λ → A is a well-defined identity-on-objects internal functor, we again note from (5),(6), and (7) that the following diagrams commute: A Λ A A A A A d p ϕ A d d A Λ A A A i ϕ i Λ Λ A A ϕ d ϕ d Thus every internal cofunctor may be represented as a span of internal functors, with left-leg an internaldiscrete opfibration, and right-leg an identity-on-objects internal functor.
In this section we define an internal lens to consist of an internal
Get functor and an internal
Put cofunctorsatisfying a simple axiom akin to the
Put-Get law. An immediate corollary of Theorem 18 is that everyinternal lens may be understood as a particular commuting triangle (13) of internal functors. We alsoconstruct a category whose objects are internal categories and whose morphisms are internal lenses. Thesection concludes with a unification of discrete opfibrations, state-based lenses, c-lenses, and d-lenses inthis internal framework, based upon results in [5].
Definition 19. An internal lens ( f , ϕ ) : A ⇋ B consists of an internal functor f : A → B comprised ofmorphisms, f : A −→ B f : A −→ B and an internal cofunctor ϕ : B A comprised of morphisms, ϕ : A −→ B ϕ : Λ −→ A p : Λ −→ A such that ϕ = f and the following diagram commutes: Λ A Λ ϕ Λ h d , f i (11) Remark.
Alternatively, the commutative diagram (11) for an internal lens may be replaced with therequirement that the following diagram commutes: Λ A B ϕ ϕ f (12)92 Internal lenses asfunctors and cofunctorsIn either case, this axiom for an internal lens ensures that the functor and cofunctor parts interact asexpected. Explicitly it states that lifting a morphism by the cofunctor then pushing-forward by the functorshould return the original morphism. Corollary 20.
Every internal lens ( f , ϕ ) : A ⇋ B may be represented as a commuting triangle of internalfunctors, Λ A B ϕ ϕ f (13) where ϕ : Λ → B is an internal discrete opfibration, and ϕ : Λ → A is an identity-on-objects internalfunctor.
Corollary 21.
Given a pair of internal lenses ( f , ϕ ) : A ⇋ B and ( g , γ ) : B ⇋ C, their composite internallens may be computed via the composition of the respective functor and cofunctor parts, and has a simplerepresentation using the pullback of internal functors: Λ × B ΩΛ Ω
A B C y ϕ ϕ γ γ f g (14) Definition 22.
Let
Lens ( E ) be the category whose objects are internal categories and whose morphismsare internal lenses. Composition of internal lenses is determined by composition of the correspondingfunctor and cofunctor parts. Example 23.
Every discrete opfibration is both an internal functor and an internal cofunctor, hence alsoan internal lens. Therefore
DOpf ( E ) is a wide subcategory of Lens ( E ) . Example 24. If E = Set , then the category
Lens ( Set ) is the category of d-lenses [7]. The Get of a d-lens A ⇋ B is given by a functor f : A → B , while the Put of a d-lens is given by a cofunctor ϕ : B A .In particular, the function ϕ : Λ → A takes each pair ( a , u : f a → b ) ∈ Λ to a morphism ϕ ( a , u ) : a → p ( a , u ) ∈ A , as illustrated in the diagram below. A a p ( a , u ) B f a b f ϕ ... ϕ ( a , u ) ... u (15)The Put-Get law is satisfied by (11), which corresponds in the above diagram to the morphism ϕ ( a , u ) being a genuine lift of u : f a → b with respect to the functor acting on morphisms. The Get-Put and
Put-Put laws are satisfied as ϕ : Λ → A is a functor, which respects identities and composition by definition. Example 25.
Every state-based lens (see [8]) consisting of
Get function f : A → B and Put function p : A × B → A induces a lens in Lens ( Set ) .Let b A and b B be the small codiscrete categories induced by the sets A and B , respectively, and let f : b A → b B be the canonical functor, A A × A AB B × B B f π π f × f f π π ryce Clarke 193induced by the Get function. Let Λ be the category with domain and codomain maps described by thespan: A × BA A π p The category Λ is well-defined by the lens laws. The functor ϕ : Λ → b B is induced using the Put-Get law,
A A × B AB B × B B f x π pf × B f π π while the functor ϕ : Λ → b A is induced for free: A A × B AA A × A A A π p h π , p i A π π This example may be instantiated internal to any category E with finite limits. Example 26.
Given a pair of state-based lenses ( f , p ) : A ⇋ B and ( g , q ) : B ⇋ C , their composite isa lens whose Get function is given by g f : A → C and whose Put function may be computed from theformula (9): p h π , q ( f × C ) i : A × C −→ A Example 27.
Every c-lens (also known as a split opfibration, see [15]) consisting of a
Get functor f : A → B and Put functor p : f ↓ B → A induces a lens in Lens ( Cat ) .Let B be the double category of squares, whose category of objects is B and whose category ofmorphisms is the arrow category Φ B , together with domain and codomain functors l , r : Φ B → B givenby, B B B B B B d d π d π d π d d d B B B B B B d d π d π d π d d d using the same notation from the diagram in Example 5; define A similarly. Construct the functor Φ f : Φ A → Φ B between the arrow categories, A A A B B B f d π d π f × f f d π d π induced by the Get functor, which forms a canonical double functor f : A → B .94 Internal lenses asfunctors and cofunctorsLet Λ be the double category with domain and codomain functors described by the span: f ↓ BA A l p
Note that the comma category f ↓ B may defined as the pullback, f ↓ B Φ B BA B l rl rf y where l : f ↓ B → A and r : f ↓ B → B are the usual comma category projections. The double category Λ is well-defined by the c-lens laws, and we may show with further reasoning that there exist uniquedouble functors ϕ : Λ → A and ϕ : Λ → B . In this paper it was shown that lenses may be defined internal to any category E with pullbacks, providinga significantly generalised yet minimal framework to understand the notion of synchronisation betweensystems. It was demonstrated that the enigmatic Put of a lens may be understood as a cofunctor, whichhas a simple description as a span of a discrete opfibration and an identity-on-objects functor. Thesurprising characterisation of a lens as a functor/cofunctor pair both promotes the prevailing attitude oflenses as morphisms between categories, and yields a straightforward definition for composition in thecategory
Lens ( E ) , which fits within a diagram of forgetful functors. Cof ( E ) op DOpf ( E ) Lens ( E ) E Cat ( E ) The success of internal lenses in unifying the known examples of state-based lenses, c-lenses, and d-lenses promotes the effectiveness of this perspective for use in applications such programming, databases,and Model-Driven Engineering, and also anticipates many future mathematical developments. Currentwork in progress indicates that
Lens ( E ) may be enhanced to a 2-category through incorporating naturaltransformations between lenses, while consideration of spans in Lens ( E ) leads towards a clarified un-derstanding of symmetric lenses; both ideas which have been shown to be important in applications andthe literature [6, 11]. In future work we will investigate examples of lenses internal to a diverse range ofcategories, as well as taking steps towards a theory of lenses between enriched categories. Acknowledgements
The author is grateful to Michael Johnson and the anonymous reviewers for providing helpful feedbackon this work. The author would also like to thank the organisers of the ACT2019 conference.ryce Clarke 195
References [1] Marcelo Aguiar (1997):
Internal Categories and Quantum Groups . Ph.D. thesis, Cornell University. Avail-able at http://pi.math.cornell.edu/~maguiar/thesis2.pdf .[2] Danel Ahman & Tarmo Uustalu (2017):
Taking Updates Seriously . In: Proceedingsof the 6 th InternationalWorkshop on Bidirectional Transformations, CEUR Workshop Proceedings 1827, pp. 59–73. Available at http://ceur-ws.org/Vol-1827/paper11.pdf .[3] F. Bancilhon & N. Spyratos (1981):
Update Semantics of Relational Views . ACMTransactionsonDatabaseSystems 6(4), pp. 557–575, doi:10.1145/319628.319634.[4] Francis Borceux (1994):
Handbook of Categorical Algebra . Encyclopediaof Mathematicsand its Applica-tions, Cambridge University Press, Cambridge, doi:10.1017/CBO9780511525858.[5] Bryce Clarke (2018):
Characterising Asymmetric Lenses using Internal Categories . Master’s thesis, Mac-quarie University. Available at http://hdl.handle.net/1959.14/1268984 .[6] Zinovy Diskin (2017):
Compositionality of Update Propagation: Laxed PutPut . In: Proceedingsof the 6 th International Workshop on Bidirectional Transformations, CEUR Workshop Proceedings 1827, pp. 74–89.Available at http://ceur-ws.org/Vol-1827/paper12.pdf .[7] Zinovy Diskin, Yingfei Xiong & Krzysztof Czarnecki (2011):
From State- to Delta-Based Bidirec-tional Model Transformations: the Asymmetric Case . Journal of Object Technology 10, pp. 6:1–25,doi:10.5381/jot.2011.10.1.a6.[8] J. Nathan Foster, Michael B. Greenwald, Jonathan T. Moore, Benjamin C. Pierce & Alan Schmitt (2007):
Combinators for Bidirectional Tree Transformations: A Linguistic Approach to the View-Update Problem .ACMTransactionsonProgrammingLanguagesandSystems 29(3), doi:10.1145/1232420.1232424.[9] Jeremy Gibbons & Michael Johnson (2012):
Relating Algebraic and Coalgebraic Descriptions of Lenses . In:Proceedingsofthe1 st InternationalWorkshoponBidirectionalTransformations, ElectronicCommunicationsoftheEASST 49, doi:10.14279/tuj.eceasst.49.726.[10] Philip J. Higgins & Kirill C. H. Mackenzie (1993):
Duality for base-changing morphisms of vector bundles,modules, Lie algebroids and Poisson structures . MathematicalProceedingsoftheCambridgePhilosophicalSociety 114(3), pp. 471–488, doi:10.1017/S0305004100071760.[11] Martin Hofmann, Benjamin Pierce & Daniel Wagner (2011):
Symmetric Lenses . SIGPLAN Not. 46(1),doi:10.1145/1925844.1926428.[12] Michael Johnson & Robert Rosebrugh (2013):
Delta Lenses and Opfibrations . ElectronicCommunicationsoftheEASST 57, doi:10.14279/tuj.eceasst.57.875.[13] Michael Johnson & Robert Rosebrugh (2016):
Unifying Set-Based, Delta-Based and Edit-Based Lenses . In:Proceedingsofthe5 th InternationalWorkshoponBidirectionalTransformations, CEURWorkshopProceed-ings 1571, pp. 1–13. Available at http://ceur-ws.org/Vol-1571/paper_13.pdf .[14] Michael Johnson, Robert Rosebrugh & Richard Wood (2010):
Algebras and Update Strategies . Journal ofUniversalComputerScience 16(5), pp. 729–748, doi:10.3217/jucs-016-05-0729.[15] Michael Johnson, Robert Rosebrugh & Richard Wood (2012):
Lenses, Fibrations and Universal Transla-tions . MathematicalStructuresinComputerScience 22(1), pp. 25–42, doi:10.1017/S0960129511000442.[16] Peter T Johnstone (2002):
Sketches of an Elephant: A Topos Theory Compendium . Oxford University Press.[17] Saunders Mac Lane (1998):
Categories for the Working Mathematician , 2nd edition. Graduate Texts inMathematics 5, Springer-Verlag, New York, doi:10.1007/978-1-4757-4721-8.[18] Ross Street (1974):