Is there a more general name for it?  Here's what I'm thinking of.  I would think there's a name for it rather than "inversion", which I made up.

module Builders where

import Test.QuickCheck

-- | Takes a single value, x.  Applies a function to that value,
-- and then applies a second function to the result of the
-- application of the first function.  Passes if the result of the
-- second function equals the original value.

inversion
  :: (Eq a, Show a)
  => (a -> b)
  -- ^ Apply this function to the original value
  -> (b -> a)
  -- ^ Apply this function to the result of the first function
  -> a
  -> Property
inversion f1 f2 a = f2 (f1 a) === a



On Wed, Jun 4, 2014 at 10:42 AM, David Thomas <davidleothomas@gmail.com> wrote:
If you have associativity, this seems roughly the same as saying there
is an additive inverse for every x, because x + x - x = x => x + (x -
x) = x => x + 0 = x.

On Wed, Jun 4, 2014 at 7:34 AM, Omari Norman <omari@smileystation.com> wrote:
> It's not quite idempotence, because more than one function is involved.
>
> It's a common property and I figure I can write a higher order function to
> build QuickCheck tests for it.  I was just wondering if it has a name.
>
> _______________________________________________
> Haskell-Cafe mailing list
> Haskell-Cafe@haskell.org
> http://www.haskell.org/mailman/listinfo/haskell-cafe
>