`Information[TraditionalForm]` indicates that `TraditionalForm` is `ReadProtected` (and `Protected`). We can remove that with `ClearAttributes[TraditionalForm, {Protected, ReadProtected}]`.
Then `Information[TraditionalForm]` shows only a few definitions: besides some for dots and for `InactiveDTraditional`, there are definitions for use within `MakeExpression` or `MakeBoxes`,
MakeBoxes[BoxForm`apat$_,TraditionalForm]^:=BoxForm`BoxFormAutoLoad[
MakeBoxes,
BoxForm`apat$,
TraditionalForm,
"Typeset`TraditionalForm`",
{{TraditionalForm,MakeBoxes},{TraditionalForm,MakeExpression}}]
MakeExpression[BoxForm`apat$_,TraditionalForm]^:=BoxForm`BoxFormAutoLoad[
MakeExpression,
BoxForm`apat$,
TraditionalForm,
"Typeset`TraditionalForm`",
{{TraditionalForm,MakeBoxes},{TraditionalForm,MakeExpression}}]
Digging a bit, <code>BoxForm\`BoxFormAutoLoad</code> loads the file
<code>System\`Private\`$SystemFileDir<>System\`Dump\`fixfile[#4]<>"x"</code> then the definition that called <code>BoxForm\`BoxFormAutoLoad</code> is <code>UnSet</code> to avoid loading the file twice. In our case, <code>#4</code> is <code>"Typeset\`TraditionalForm`"</code>, leading on my system to loading the <code>.mx</code> file
C:\Program Files\Wolfram Research\Mathematica\10.0\SystemFiles\Kernel\SystemResources\Windows-x86-64\Typeset\TraditionalForm.mx
Files with the extension `.mx` are binary files that contain definitions of some symbols and can be read with <code>Get</code>. Unfortunately, `Trace[Get[filename]]` does not show what is going on when *Mathematica* reads the file. More elaborate tricks redefining `Set` or `SetDelayed` using code from ["Overriding a built-in function with custom coded procedures"][1] do not help. As far as I can tell, when reading an `.mx` file, *Mathematica* directly injects the stored definitions without invoking `Set` or `SetDelayed`. So we cannot see rules as they are added.
After failing in that direction (and staring for an hour at the irrelevant `Trace[Import[filename]]`), I realized we can simply look at `Information[TraditionalForm]` again. It now gives a rather lengthy output: 64 `FormatValues`. For instance, a simple rule
HoldPattern[MakeBoxes[Function[x_, y_], TraditionalForm]] :>
RowBox[{Parenthesize[x, TraditionalForm, Set, Left],
"\[Function]",
Parenthesize[y, TraditionalForm, Set, Right]}]
defining how a function f:x->y should be converted to boxes. (There are rules with `MakeExpression` which do the opposite transformation from boxes to an expression.) However, this is not the end, as there are still some rules which call <code>BoxForm\`BoxFormAutoLoad</code>. For such rules, *Mathematica* loads yet another `.mx` file and the only way to know its contents is to load it and take another look at `FormatValues[TraditionalForm]`.
Depending on our aim, it can be worth loading all files
Get /@ FileNames["*.mx",
DirectoryName[
System`Private`$SystemFileDir <>
System`Dump`fixfile["Typeset`TraditionalForm`"] <> "x"]];
However, this does not run the code in <code>BoxForm\`BoxFormAutoLoad</code> that removes definitions involving it. One way that seems to work is to `TagUnset` the `FormatValues` that involve <code>BoxForm\`BoxFormAutoLoad</code>, but I wouldn't trust that in production code.
Unprotect[TraditionalForm];
Scan[(If[Not[FreeQ[Hold[#[[2]]], BoxForm`BoxFormAutoLoad]],
TagUnset[TraditionalForm,
Evaluate[(#[[1]] /. Verbatim[HoldPattern][x_] :> Hold[x] /.
Verbatim[HoldPattern][y_] :> y /. Hold :> HoldPattern)]]]) &,
FormatValues[TraditionalForm]];
Sorry for the ugly code as the second argument of `TagUnset`: there, `#[[1]]` is the left-hand side of a rule, but it takes the form `HoldPattern[somename:HoldPattern[somepattern___]]` and I had to remove the inner `HoldPattern`.
[1]: https://mathematica.stackexchange.com/a/95720/39260