Contracts Design by Contract for Elixir Usage requires x > 0 ensures (result * result) <= x && (result+1) * (result+1) > x def sqrt(x) do :math.sqrt(x) end