On Wed, 6 Nov 2013, mockturtle wrote: > type Matlab_Name is new > String > with Dynamic_Predicate => > (for all I in Matlab_Name'Range => > Is_Alphanumeric (Matlab_Name (I)) or Matlab_Name (I) = '_') > and > Is_Letter (Matlab_Name (Matlab_Name'First)); I suggest to write the following. with Dynamic_Predicate => ( Natlab_Name'Length > 0 and then Is_Letter (Matlab_Name (Matlab_Name'First) and then for all I in Matlab_Name'First+1 .. Matlab'Last => Is_Alphanumeric (Matlab_Name (I)) or Matlab_Name (I) = '_') ); (Warning: not syntax checked!) The "Natlab_Name'Length > 0 and then" part is important -- your code would raise Constraint_Error if the Matlab_Name is the empty string. The other modifications are a matter of taste. For me, first checking the first character, and then checking the other characters is more intuitive than doing it the other way. Also, I rather avoid the redundant check for the first letter being alphanumeric or '_', since the first character is checked for being a letter, anyway. And I wouldn't bother to replace the second "and then" by "and", as it has been in your code. However, mixing "and then" and "and" requires additional brackets, which I would prefer to avoid. ------ I love the taste of Cryptanalysis in the morning! ------ --Stefan.Lucks (at) uni-weimar.de, Bauhaus-Universität Weimar, Germany--