\newcommand{\ws}[1]{\phantom{#1}}

\newcommand{\event}{\ensuremath{F}}
\newcommand{\glob}{\ensuremath{G}}
\newcommand{\nex}{\ensuremath{X}}
\newcommand{\unt}{\ensuremath{U}}
\newcommand{\release}{\ensuremath{R}}
\newcommand{\wrelease}{\ensuremath{W}}

\newenvironment{ltltabular}[1]
  {\begin{tabular}{ |l|*{#1}{c|} } \hline}
  {\end{tabular}}

\ExplSyntaxOn
\NewDocumentCommand{\ltlrow}{m} {
   \seq_set_split:Nnn \ltl_row {|} { #1 }
   \seq_use:Nn \ltl_row { & }
   \\
   \hline
  }
\seq_new:N \ltl_row % allocate a sequence
\ExplSyntaxOff

\ExplSyntaxOn
\NewDocumentCommand{\ltlSteps}{+m +m} {
  \int_set:Nn \l_end {#1}
  \int_set:Nn \l_iter {0}
  \int_do_until:nNnn {\l_iter} = {\l_end} {
    \seq_put_right:Nx \ltl_steps { \int_use:N \l_iter}
    \int_incr:N \l_iter
  }
  \seq_put_right:Nn \ltl_steps { \multicolumn{#2}{c|}{ $\omega$ } }
  \seq_put_left:Nn \ltl_steps { Step }
  \seq_use:Nn \ltl_steps { & }
  \\
  \hline
}
\int_new:N \l_end
\int_new:N \l_iter
\seq_new:N \ltl_steps % allocate a sequence
\ExplSyntaxOff

\newcommand{\ltlTrace}[2]{
  \def\VARIABLE{#1}%
  \VARIABLE & \ltlrow{#2}
}

\newcommand{\ltlFormula}[2]{
  \def\FORMULA{#1}%
  \FORMULA & \ltlrow{#2}
}
