 
   """
   defmacro assert(expected) do
-    translate_assertion(expected)
+    translate_assertion(expected, fn ->
+      quote do
+        value = unquote(expected)
+        assert value, "Expected #{inspect value} to be true"
+      end
+    end)
+  end
+
+  @doc """
+  Refutes the `expected` value is true.
+
+  `refute` in general tries to be smart and provide a good
+  reporting whenever there is a failure.
+
+  ## Examples
+
+      refute false
+
+  """
+  defmacro refute(expected) do
+    contents = translate_assertion({ :!, 0, [expected] }, fn ->
+      quote do
+        value = unquote(expected)
+        assert !value, "Expected #{inspect value} to be false"
+      end
+    end)
+
+    { :!, 0, [contents] }
   end
 
   @doc """

    end
  end

  defp translate_assertion({ op, _, [{ :access, _, [container, base] }] }) when negation?(op) do
    quote do
      container = unquote(container)
      base = unquote(base)

    end
  end

  defp translate_assertion(_expected, fallback) do
    fallback.()
  end

  defp guess_expected_and_actual(left, right) do
