\newcommand{\bnfeq}{\mathrel{::=}\;}
\newcommand{\bnfor}{\mathrel{\vert}}

\newcommand{\paramrel}[3]{#2 \mathrel{\approx_{#1}} #3}
\newcommand{\vrel}[2]{\paramrel{\mathsf{val}}{#1}{#2}}
\newcommand{\trel}[2]{\paramrel{\mathsf{term}}{#1}{#2}}

\newcommand{\sem}[1]{{\llbracket{#1}\rrbracket}}

\newcommand{\Fam}[2]{{(#2)}^{#1}}

\newcommand{\match}[2]{\mathtt{match}(#1,#2)}

\newcommand{\var}[1]{\mathtt{#1}}
\newcommand{\pK}{\mathtt{K}}
\newcommand{\any}{\mathtt{\_}}

% \equiv is already taken
\newcommand{\Equiv}[4]{\mathsf{equiv}(#1, #2, #3, #4)}
\newcommand{\Equivrel}[4]{#1 \vdash_{#4} #2 \approx #3}

\newcommand{\covers}[2]{#1 \mathrel{\mathsf{covers}} #2}

\newcommand{\Yes}{\mathsf{Yes}}
\newcommand{\No}[2]{\mathsf{No}(#1, #2)}

\newcommand{\Leaf}[1]{\mathsf{Leaf}(#1)}
\newcommand{\Failure}{\mathsf{Failure}}
\newcommand{\Switch}[3]{\mathsf{Switch}(#1, #2, #3)}
\newcommand{\Guard}[3]{\mathsf{Guard}(#1, #2, #3)}

\newcommand{\emptyqueue}{\mathord{[]}}

\newcommand{\Cfb}{C_{\mathsf{fb}}}

\newcommand{\trim}[2]{\mathsf{trim}(#1, #2)}