diff --git a/CHANGELOG.markdown b/CHANGELOG.markdown
--- a/CHANGELOG.markdown
+++ b/CHANGELOG.markdown
@@ -1,3 +1,8 @@
+0.10.1 [2018.07.02]
+-------------------
+* Allow building with GHC 8.6.
+* Add three axioms about `(+)` and `(-)` to `Data.Constraint.Nat`.
+
 0.10
 ----
 * Adapt to the `Semigroup`–`Monoid` Proposal (introduced in `base-4.11`):
diff --git a/constraints.cabal b/constraints.cabal
--- a/constraints.cabal
+++ b/constraints.cabal
@@ -1,6 +1,6 @@
 name:          constraints
 category:      Constraints
-version:       0.10
+version:       0.10.1
 license:       BSD2
 cabal-version: >= 1.10
 license-file:  LICENSE
@@ -17,7 +17,12 @@
   This package provides a vocabulary for working with them.
 
 build-type:    Simple
-tested-with:   GHC == 7.8.4, GHC == 7.10.3, GHC == 8.0.2, GHC == 8.2.2, GHC == 8.4.1
+tested-with:   GHC == 7.8.4
+             , GHC == 7.10.3
+             , GHC == 8.0.2
+             , GHC == 8.2.2
+             , GHC == 8.4.3
+             , GHC == 8.6.1
 extra-source-files: README.markdown
                   , CHANGELOG.markdown
 
@@ -43,14 +48,14 @@
 
   build-depends:
     base >= 4.7 && < 5,
-    binary >= 0.7.3 && < 0.9,
+    binary >= 0.7.1 && < 0.9,
     deepseq >= 1.3 && < 1.5,
     ghc-prim,
     hashable >= 1.2 && < 1.3,
-    mtl >= 2 && < 2.3,
-    semigroups >= 0.11 && < 0.19,
-    transformers >= 0.2 && < 0.6,
-    transformers-compat >= 0.4 && < 1
+    mtl >= 2.1.2 && < 2.3,
+    semigroups >= 0.17 && < 0.19,
+    transformers >= 0.3.0.0 && < 0.6,
+    transformers-compat >= 0.5 && < 1
 
   exposed-modules:
     Data.Constraint
diff --git a/src/Data/Constraint.hs b/src/Data/Constraint.hs
--- a/src/Data/Constraint.hs
+++ b/src/Data/Constraint.hs
@@ -42,7 +42,7 @@
 --
 -- The need for this extension was first publicized in the paper
 --
--- <http://research.microsoft.com/pubs/67439/gmap3.pdf Scrap your boilerplate with class: extensible generic functions>
+-- <https://www.microsoft.com/en-us/research/wp-content/uploads/2016/07/gmap3.pdf Scrap your boilerplate with class: extensible generic functions>
 --
 -- by Ralf Lämmel and Simon Peyton Jones in 2005, which shoehorned all the
 -- things they needed into a custom 'Sat' typeclass.
@@ -79,7 +79,9 @@
 import Control.Monad
 import Data.Complex
 import Data.Ratio
+#if !MIN_VERSION_base(4,11,0)
 import Data.Semigroup
+#endif
 import Data.Data
 import qualified GHC.Exts as Exts (Any)
 import GHC.Exts (Constraint)
diff --git a/src/Data/Constraint/Nat.hs b/src/Data/Constraint/Nat.hs
--- a/src/Data/Constraint/Nat.hs
+++ b/src/Data/Constraint/Nat.hs
@@ -10,6 +10,9 @@
 {-# LANGUAGE ScopedTypeVariables #-}
 {-# LANGUAGE AllowAmbiguousTypes #-}
 {-# LANGUAGE Trustworthy #-}
+#if __GLASGOW_HASKELL__ >= 805
+{-# LANGUAGE NoStarIsType #-}
+#endif
 -- | Utilities for working with 'KnownNat' constraints.
 --
 -- This module is only available on GHC 8.0 or later.
@@ -39,6 +42,7 @@
   , timesDiv
   , eqLe, leEq, leId, leTrans
   , leZero, zeroLe
+  , plusMinusInverse1, plusMinusInverse2, plusMinusInverse3
   ) where
 
 import Data.Constraint
@@ -151,6 +155,15 @@
 
 zeroLe :: forall a. Dict (0 <= a)
 zeroLe = Dict
+
+plusMinusInverse1 :: forall n m. Dict (((m + n) - n) ~ m)
+plusMinusInverse1 = axiom
+
+plusMinusInverse2 :: forall n m. (m <= n) :- (((m + n) - m) ~ n)
+plusMinusInverse2 = Sub axiom
+
+plusMinusInverse3 :: forall n m. (n <= m) :- (((m - n) + n) ~ m)
+plusMinusInverse3 = Sub axiom
 
 plusMonotone1 :: forall a b c. (a <= b) :- (a + c <= b + c)
 plusMonotone1 = Sub axiom
