The @CheckBoxFor() method only work for a boolean property. The signature of the method is
public static MvcHtmlString CheckBoxFor<TModel>(this HtmlHelper<TModel> htmlHelper, Expression<Func<TModel, bool>> expression)
Note the TResult in Func is bool. The reason that a checkbox has only 2 states - check or unchecked which equates to true or false.
If your property PType1 is bool? (nullable), you need to use
@Html.EditorFor(m => m.PType1)
which will generate a dropdownlist with 3 values, "Not Set" (which equates to null), "True" and "False".
Side note: "observation: there is no checkbox control that can be used with a corresponding sql type of bit". Yes there is. @Html.CheckBox() can be use with bit so long as the field is NOT NULL which equates to bool. If you only want to store true or false then set the field to be NOT NULL