<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def check_num(self, checks, radl):
 """ Check types, operators and units in features with numbers. Args: - checks(dict of dict of str:tuples):
 keys are property name prefixes, and the values are dict with keys are property name suffixes and values are iterable as in ``_check_feature``. - radl: passed to ``_check_feature``. """


        prefixes = {}
        for f in self.features:
            if not isinstance(f, Feature):
                continue
            (prefix, sep, tail) = f.prop.partition(".")
            if not sep or prefix not in checks:
                continue
            checks0 = checks[prefix]
            (num, sep, suffix) = tail.partition(".")
            try:
                num = int(num)
            except:
                raise RADLParseException(
                    "Invalid property name; expected an index.", line=f.line)
            if not sep or suffix not in checks0:
                continue
            f._check(checks0[suffix], radl)
            if prefix not in prefixes:
                prefixes[prefix] = set()
            prefixes[prefix].add(num)

        # Check consecutive indices for num properties.
        for prefix, nums in prefixes.items():
            if min(nums) != 0 or max(nums) != len(nums) - 1:
                raise RADLParseException(
                    "Invalid indices values in properties '%s'" % prefix)

        return prefixes