Skip to content

Elementary Lifting Operations for Realm-Like Structures

Florian's thoughts about lifting operations:

Many data structures admit a lifting operation that allows to map a function over the values "stored" in that data structure. Examples:

  1. Lists
  2. Tuples
  3. Functions (by applying another function to the values of the first function)

-> Any type in Haskell in the Functor class (via fmap :: (a -> b) -> f a -> f b) should admit such a data structure

Some non-Functor-like examples:

  1. a\mapsto\{a\}
  2. \{a\}\mapsto a
  3. list \mapsto bag \mapsto set
  4. partial function f\mapsto total function over the domain of definition of f
  5. total function \mapsto partial functon over a larger domain
  6. algebraic structure A\mapsto carrier set of A
  7. list/vector/... \mapsto its i-th entry
  8. function defined on a generating set (e.g. basis of a vector space) \mapsto function on the whole structure (e.g. whole vector space)
  9. function defined on the constants of a theory \mapsto theory morphism
  10. a\mapsto[a] (modding out an equivalence relation on a set)
Edited by Marcel Schütz