Write a function `left_insertion(a, x)` that takes a sorted list `a` and a value `x`, and returns the index where `x` should be inserted to maintain sorted order. If `x` is already present, the function should return the index of the first occurrence of `x`.
#### Example Usage
```python [main.nopy]
print(left_insertion([1, 2, 4, 5], 6)) # Output: 4
print(left_insertion([1, 2, 4, 5], 3)) # Output: 2
print(left_insertion([1, 2, 4, 5], 7)) # Output: 4
```
#### Constraints
- The input list `a` is guaranteed to be sorted in ascending order.
- The function should have a time complexity of O(log n).
- You may use the `bisect` module for this task.