Defines a command wrapper that prints the number of heartbeats used in the enclosed command.

For example

```
count_heartbeats in
theorem foo : 42 = 6 * 7 := rfl
```

will produce an info message containing a number around 51.
If this number is above the current `maxHeartbeats`

, we also print a `Try this:`

suggestion.

Run a tactic, optionally restoring the original state, and report just the number of heartbeats.

## Equations

- One or more equations did not get rendered due to their size.

## Instances For

Given a `List Nat`

, log an info message with the minimum, maximum, and standard deviation.

## Equations

- One or more equations did not get rendered due to their size.

## Instances For

Count the heartbeats used by a tactic, e.g.: `count_heartbeats simp`

.

## Equations

- One or more equations did not get rendered due to their size.

## Instances For

`count_heartbeats! in tac`

runs a tactic 10 times, counting the heartbeats used, and logs the range
and standard deviation. The tactic `count_heartbeats! n in tac`

runs it `n`

times instead.

## Equations

- One or more equations did not get rendered due to their size.

## Instances For

Count the heartbeats used in the enclosed command.

This is most useful for setting sufficient but reasonable limits via `set_option maxHeartbeats`

for long running declarations.

If you do so, please resist the temptation to set the limit as low as possible.
As the `simp`

set and other features of the library evolve,
other contributors will find that their (likely unrelated) changes
have pushed the declaration over the limit.
`count_heartbearts in`

will automatically suggest a `set_option maxHeartbeats`

via "Try this:"
using the least number of the form `2^k * 200000`

that suffices.

Note that that internal heartbeat counter accessible via `IO.getNumHeartbeats`

has granularity 1000 times finer that the limits set by `set_option maxHeartbeats`

.
As this is intended as a user command, we divide by 1000.

## Equations

- One or more equations did not get rendered due to their size.

## Instances For

Run a command, optionally restoring the original state, and report just the number of heartbeats.

## Equations

- One or more equations did not get rendered due to their size.

## Instances For

`count_heartbeats! in cmd`

runs a command `10`

times, reporting the range in heartbeats, and the
standard deviation. The command `count_heartbeats! n in cmd`

runs it `n`

times instead.

Example usage:

```
count_heartbeats! in
def f := 37
```

displays the info message `Min: 7 Max: 8 StdDev: 14%`

.

## Equations

- One or more equations did not get rendered due to their size.