+ return K.linear_subspace().dimension()
+
+
+def codim(K):
+ r"""
+ Compute the codimension of this cone.
+
+ The codimension of a cone is the dimension of the space of all
+ elements perpendicular to every element of the cone. In other words,
+ the codimension is the difference between the dimension of the
+ ambient space and the dimension of the cone itself.
+
+ OUTPUT:
+
+ A nonnegative integer representing the dimension of the space of all
+ elements perpendicular to this cone.
+
+ .. seealso::
+
+ :meth:`dim`, :meth:`lattice_dim`
+
+ EXAMPLES:
+
+ The codimension of the nonnegative orthant is zero, since the span of
+ its generators equals the entire ambient space::
+
+ sage: K = Cone([(1,0,0), (0,1,0), (0,0,1)])
+ sage: codim(K)
+ 0
+
+ However, if we remove a ray so that the entire cone is contained
+ within the `x-y`-plane, then the resulting cone will have
+ codimension one, because the `z`-axis is perpendicular to every
+ element of the cone::
+
+ sage: K = Cone([(1,0,0), (0,1,0)])
+ sage: codim(K)
+ 1
+
+ If our cone is all of `\mathbb{R}^{2}`, then its codimension is zero::
+
+ sage: K = Cone([(1,0), (-1,0), (0,1), (0,-1)])
+ sage: codim(K)
+ 0
+
+ And if the cone is trivial in any space, then its codimension is
+ equal to the dimension of the ambient space::