data Nat = Z | S Nat data NonZeroNat = OnePlus Nat data NonZeroInt = Negative NonZeroNat | Positive NonZeroNat
struct nonzero_t { int is_negative; unsigned int one_less_than_the_absolute_value; };