diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -18,4 +18,8 @@
 
 # 1.1.2.0 -- 2022-07-19
 
-* Addition of weakMapFromSet and correction of WeakMap Show instance.
+* Addition of weakMapFromSet and correction of WeakMap Show instance.
+
+# 1.1.3.0 -- 2022-07-20
+
+* Addition of inverse and pseudoInverse functions.
diff --git a/WeakSets.cabal b/WeakSets.cabal
--- a/WeakSets.cabal
+++ b/WeakSets.cabal
@@ -14,7 +14,7 @@
 -- PVP summary:      +-+------- breaking API changes
 --                   | | +----- non-breaking API additions
 --                   | | | +--- code changes with no API change
-version:            1.1.2.0
+version:            1.1.3.0
 
 -- A short (one-line) description of the package.
 synopsis:
diff --git a/src/Data/WeakMap.hs b/src/Data/WeakMap.hs
--- a/src/Data/WeakMap.hs
+++ b/src/Data/WeakMap.hs
@@ -207,6 +207,8 @@
     -- * Others
     , idFromSet
     , memorizeFunction
+    , inverse
+    , pseudoInverse
 ) where
 import           Prelude  hiding      (lookup, map, filter, drop, take, splitAt)
 import           Data.WeakSet         (Set)
@@ -253,6 +255,7 @@
 weakMap :: AssociationList k v -> Map k v
 weakMap al = Map $ set $ al
 
+-- | /O(1)/. Construct a 'Map' from a 'Set' of pairs (key,value).
 weakMapFromSet :: Set (k,v) -> Map k v
 weakMapFromSet s = Map s
 
@@ -907,5 +910,13 @@
 memorizeFunction :: (k -> v) -> Set k -> Map k v
 memorizeFunction f xs = Map $ (\k -> (k, f k)) <$> xs
 
-
+-- | /O(n^2)/. Try to construct an inverse map.
+inverse :: (Eq k, Eq v) => Map k v -> Maybe (Map v k)
+inverse m@(Map al)
+    | (cardinal.image $ m) == (cardinal.domain $ m) = Just $ Map $ (\(k,v) -> (v,k)) <$> al
+    | otherwise = Nothing
+    
+-- | /O(n)/. Return a pseudo inverse /g/ of a 'Map' /f/ such that @f |.| g |.| f == f@.
+pseudoInverse :: Map k v -> Map v k
+pseudoInverse (Map al) = Map $ (\(k,v) -> (v,k)) <$> al
 
diff --git a/src/Data/WeakMap/Safe.hs b/src/Data/WeakMap/Safe.hs
--- a/src/Data/WeakMap/Safe.hs
+++ b/src/Data/WeakMap/Safe.hs
@@ -22,6 +22,8 @@
     , keys'
     , domain
     , image
+    , inverse
+    , pseudoInverse
 )
 where
     import              Data.WeakMap
