```python
def match_at(grid: list, row: int, column: int, value: int) -> bool:
    """Return True if the cell at the given row and column contains the specified value."""
    if not (0 <= row < len(grid) and 0 <= column < len(grid[0])):
        raise ValueError("Row or column out of bounds")
    return grid[row][column] == value


def grid_find(grid: list, value: int) -> list:
    """Return the row and column of the first occurrence of the specified value in the grid."""
    for i, row in enumerate(grid):
        try:
            j = row.index(value)
            return [i, j]
        except ValueError:
            continue
    raise ValueError("Value not found in the grid")
```