execute abstract method
drivenSignals are used by the caller to determine if signals
were driven an appropriate number of times.
guard function should be called on drivers prior to any execution
which consumes the current value of those drivers. It is used to check
that signals are not "written after read", for example.
@protected void execute(Set<Logic> drivenSignals, void Function(Logic toGuard)? guard);