code: def check_param_constraints(
      linear_constraints: Tuple[np.ndarray, np.ndarray],
      point: np.ndarray,
  ) -> Tuple[bool, np.ndarray]:
      """Check if a point satisfies parameter constraints.
  
      Args:
          linear_constraints: A tuple of (A, b). For k linear constraints on
              d-dimensional x, A is (k x d) and b is (k x 1) such that
              A x <= b.
          point: A candidate point in d-dimensional space, as a (1 x d) matrix.
  
      Returns:
          2-element tuple containing
  
          - Flag that is True if all constraints are satisfied by the point.
          - Indices of constraints which are violated by the point.
      """
      constraints_satisfied = (
          linear_constraints[0] @ np.expand_dims(point, axis=1)
          <= linear_constraints[1]
      )
      if np.all(constraints_satisfied):
          return True, np.array([])
      else:
          return (False, np.where(constraints_satisfied == False)[0])
  
imports: from __future__ import annotations
  import itertools
  import warnings
  from typing import Callable, Dict, List, Optional, Protocol, Set, Tuple, Union
  import numpy
  import torch
  from ax.core.search_space import SearchSpaceDigest
  from ax.exceptions.core import SearchSpaceExhausted, UnsupportedError
  from ax.models.types import TConfig
  from ax.utils.common.typeutils import checked_cast
  from botorch.acquisition.risk_measures import RiskMeasureMCObjective
  from torch import Tensor
label_desc: Use image node_id 4 for calling a global function with example usage: check_param_constraints(linear_constraints, point) and returns: True,  np, False,  np