code: def alive_in_range(asset, start, end, include_asset_start_date=False):
      """
      Check if an asset was alive in the range from start to end.
  
      Parameters
      ----------
      asset : Asset
          The asset to check
      start : pd.Timestamp
          Start of the interval.
      end : pd.Timestamp
          End of the interval.
      include_asset_start_date : bool
          Whether to include the start date of the asset when checking liveness.
  
      Returns
      -------
      was_alive : bool
          Whether or not ``asset`` was alive for any days in the range from
          ``start`` to ``end``.
      """
      if include_asset_start_date:
          asset_start = asset.start_date
      else:
          asset_start = asset.start_date + pd.Timedelta("1 day")
      return intervals_overlap(
          (asset_start, asset.end_date), (start, end)
      )
  
imports: from itertools import cycle, islice
  from nose_parameterized import parameterized
  import numpy
  import pandas
  from trading_calendars import get_calendar
  from zipline.assets.synthetic import make_rotating_equity_info
  from zipline.data.in_memory_daily_bars import InMemoryDailyBarReader
  from zipline.pipeline.domain import CA_EQUITIES, GB_EQUITIES, US_EQUITIES
  from zipline.pipeline import Pipeline
  from zipline.pipeline.data import EquityPricing, USEquityPricing
  from zipline.pipeline.engine import SimplePipelineEngine
  from zipline.pipeline.loaders.equity_pricing_loader import EquityPricingLoader
  from zipline.pipeline.loaders.synthetic import NullAdjustmentReader
  from zipline.testing.predicates import assert_equal
  from zipline.testing.core import parameter_space, random_tick_prices
  import zipline.testing.fixtures
label_desc: Use image node_id 2 for calling a global function with example usage: alive_in_range(asset, start, end, include_asset_start_date) and returns: intervals_overlap