I like to show you the immense beauty of the Agda standard library: http://agda.github.io/agda-stdlib/html/README.html (all clickable and…you'd better have proper unicode fonts).
I love to look at unicode, but is it a pain to type it in practice, even given emacs?
[0] http://wiki.portal.chalmers.se/agda/pmwiki.php?n=Docs.Unicod...
What happens in Data.Bool is that we have the function from values to types `T` such that `T true` and `T false` are types equal to top and bottom respectively. This value-to-type encoding is called a "universe" and allows us to talk about propositions which are based on boolean function results like
theorem1 : T (1 - 1 == 0)
which is somewhat interestingly different from theorem2 : 1 - 1 = 0
in that the first will reflect upon the definitions of the (recursive) functions (-) and (==) while the second reflects only upon the definition of (-).