code: def check(self) -> z3.CheckSatResult:
          
          dependence_map = DependenceMap()
          for constraint in self.constraints:
              dependence_map.add_condition(constraint)
  
          self.models = []
          for bucket in dependence_map.buckets:
              self.raw.reset()
              self.raw.append(*bucket.conditions)
              check_result = self.raw.check()
              if check_result == z3.sat:
                  self.models.append(self.raw.model())
              else:
                  return check_result
  
          return z3.sat
docs: Returns z3 smt check result.