SysML1.0, 10 Constraint Blocks:
'A constraint block is defined by a keyword of «constraint» applied to a block definition. The properties of this block define the parameters of the constraint.'
The above does not make clear that parameters are properties that can be typed by a ValueType (yet are not value properties), and it does not exclude nested contraints, which are properties typed by a <<ConstraintBlock>> (although other sentences elsewhere in the specification do make that clearer). Also, it is not clear whether a constraint parameter can be typed by a block (although there are no examples of such in the figures).
Rewrite to specify what constraint parameters are:
'A constraint block is defined by a keyword of «constraint» applied to a block definition. The properties of this block typed by a ValueType, Unit, or DataType define the parameters of the constraint.'
SysML1.0, 10.3.2.1 ConstraintBlock:
'.. A constraint block typically defines one or more constraint parameters, which are bound to properties of other blocks in a surrounding context where the constraint is used.'
Rewrite to explain what constraint parameters are:
'.. A constraint block typically defines one or more constraint parameters, which are bound to properties of other blocks in a surrounding context where the constraint is used. Constraint parameters are properties of a Constraint Block that are typed by either a ValueType, a Unit, or a DataType.'
(NB: the resolutions suggested here depends on the unit, value, dimension metamodel being changed to admit the application of Unit as a type.)
This matter could be greatly simplified by including a ConstraintParameter stereotype as a point of documentation and specification.
