The hard inclusive lower bound, from Range/IntRange, or null.
double? get hardMin => constraint<Range>()?.min ?? constraint<IntRange>()?.min?.toDouble();