-<!-- MARK -->
-
-This means there is something to *manually prove* about unsafe code: It has to behave as if it were well-typed.
-This is a notion that can actually be captured formally.
-Besides the merely syntactic notion of well-typedness that relies on a type checker matching the syntax of the program against a bunch of rules, one can define a *semantic* notion of well-typedess that is defined solely in terms of what one can *do* with a piece of code.
-For example, for a function to be syntactically well-typed, one goes ahead and looks at its code, and makes sure that code is written the right way.
-For a function to be *semantically* well-typed, however, one checks what the function does on every possible input, how the output looks like.
-The actual code doing this, does not matter.
+This is something that safe code and properly written unsafe code have in common: If you consider only their externally observable behavior, for all means and purposes, both are well-typed.
+We call this *semantic well-typedness*.
+The core idea is that we can define the inhabitants of a type solely in terms of what one can do to them.
+For example, to check that a function is semantically well-typed, you check what it does on every well-typed input, and make sure the output makes sense.
+It doesn't matter *how* the function performs these operations.
+This is in contrast to the *syntactic* notion of well-typedness of a function, which involves looking at the *code* of the function and checking it against a bunch of rules.