diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -50,4 +50,8 @@
 
 # 1.3.0.0 -- 2022-07-28
 
-* Correction of cartesianProductOfSet
+* Correction of cartesianProductOfSet
+
+# 1.3.1.0 -- 2022-08-29
+
+* Addition of first and second functions for PureSet.
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.3.0.0
+version:            1.3.1.0
 
 -- A short (one-line) description of the package.
 synopsis:
diff --git a/src/Data/WeakSet.hs b/src/Data/WeakSet.hs
--- a/src/Data/WeakSet.hs
+++ b/src/Data/WeakSet.hs
@@ -480,7 +480,7 @@
 -- Either interactions
 
 
--- | /O(n)/. Map a function to a set and separate Left and Right values.
+-- | /O(n)/. Take a set of Either and separate Left and Right values.
 catEither :: Set (Either a b) -> (Set a, Set b)
 catEither (Set []) = (empty,empty)
 catEither (Set (x:xs))
diff --git a/src/Math/PureSet.hs b/src/Math/PureSet.hs
--- a/src/Math/PureSet.hs
+++ b/src/Math/PureSet.hs
@@ -24,6 +24,8 @@
     emptySet,
     singleton,
     pair,
+    first,
+    second,
     cartesianProduct,
     numberToSet,
     (||||),
@@ -68,6 +70,29 @@
     -- | Construct an ordered pair from two sets according to Kuratowski's definition of a tuple.
     pair :: PureSet -> PureSet -> PureSet
     pair x y = PureSet $ set [singleton x, pureSet $ [x,y]]
+    
+    -- | Return the first element of a pair according to Kuratowski's definition of a tuple.
+    first :: PureSet -> PureSet
+    first (PureSet s)
+        | length l /= 2 = error $ "Math.PureSet.first : malformed pair " ++ (show s)
+        | otherwise = anElement f
+        where
+            l = setToList s
+            a = l !! 0
+            b = l !! 1
+            PureSet f = if card a == 1 then a else b
+            
+    -- | Return the second element of a pair according to Kuratowski's definition of a tuple.
+    second :: PureSet -> PureSet
+    second i@(PureSet s)
+        | length l /= 2 = error $ "Math.PureSet.second : malformed pair " ++ (show s)
+        | otherwise = if r2 !! 0 == first i then r2 !! 1 else r2 !! 0
+        where
+            l = setToList s
+            a = l !! 0
+            b = l !! 1
+            PureSet r = if card a == 2 then a else b
+            r2 = setToList r
     
     -- | Construct the cartesian product of two sets.
     cartesianProduct :: PureSet -> PureSet -> PureSet
