Chronoscope, a cross-platform matplotlib-based observability tool
$$\mathcal{S} \subset \mathbb{N}.$$
$$\mathcal{T} = \left\langle \mathbb{T},\prec \right\rangle.$$
$$\mathcal{A}:\mathcal{S}\times\Sigma^{c}\times\Sigma^{c}.$$
$$\mathcal{K}:\mathcal{S}\times\mathcal{S}\times\Sigma^{c}.$$
$$\mathcal{R}:\mathcal{S}\times\mathcal{S}.$$
$$relation \triangleq \left\langle origin: \mathcal{S}, dest: \mathcal{S} \right\rangle.$$
$$tick \triangleq \left\langle sm: \mathcal{S}, time: \mathcal{T}, event: \Sigma^{c} \right\rangle.$$
$$attr \triangleq \left\langle sm: \mathcal{S}, key: \Sigma^{c}, val: \Sigma^{c} \right\rangle.$$
$$iter_1: \mathcal{S} \to \left\{ \mathcal{S^{1}}, ... \mathcal{S^{p}} \right\},$$
$$iter_1(sm) = \left\{ dest(related\_sm) | related\_sm \in \left\{ rel \in \mathcal{R} | origin(rel) = sm \right\} \right\},$$
$$p = \left| iter_1(sm) \right|.$$
$$height: \mathcal{S} \to \mathbb{N},$$
$$height(sm_i) = 1 + max(\left\{ height(sm_i) | sm_i \in iter_1(sm_i) \right\}),$$
$$max(\varnothing) = 0.$$
$$iter: \mathcal{S} \to \left\{ \mathcal{S^{1}}, ... \mathcal{S^{r}} \right\},$$
$$iter(sm_i) = \left\{ sm_i \right\} \cup \bigcup_{i=1}^{height(sm_i)-1}\left( \left\{ iter_1(sm_{i+1}) | iter_1(sm_{i+1}) \in iter_1(sm_i)\right\} \right),$$
$$r = \sum_{i=0}^{height(sm_i)}\left| iter_1(sm_i) \right|.$$
$$timeline: \mathcal{S} \to \left\{ \mathcal{K^{1}}, ... \mathcal{K^{q}} \right\},$$
$$timeline(sm_i) = \left\{ tick \in \mathcal{K} | sm(tick)=sm_i \right\},$$
$$q=\left| timeline(sm_i) \right|.$$
$$chart: \mathcal{S} \to \left\{ \left\{ \mathcal{K^{1}}, ... \mathcal{K^{q}} \right\}^{1}, ... \left\{ \mathcal{K^{1}}, ... \mathcal{K^{q}} \right\}^{r} \right\}$$
$$chart(sm_i) = \left\{ timeline(sm) | sm \in iter(sm_i) \right\},$$