DataVisor's rule evaluation components may need to process alert scores while repeatedly querying the smallest active score. Design a Min Stack that supports push, pop, top, and getMin, with each operation running in O(1) time.
Implement min_stack(operations). Each operation is represented as a list: ['push', value] for insertion, or ['pop'], ['top'], and ['getMin'] for other operations. The function must return a list containing the results of pop, top, and getMin operations in encounter order. push produces no result. For valid inputs, pop, top, and getMin are never called on an empty stack.
Values are integers. Duplicate values must be handled correctly.
def min_stack(operations):