text:
\section{Overview}
We present the basic version of the Temporal Logic Synthesis Format (TLSF)
in \secref{sec:basicformat}. In
\secref{sec:semantics} we discuss the intended semantics of a
specification, defined in terms of different implementation models.
The full format is introduced in
\secref{sec:format}. The full format can be compiled automatically to
the basic format. Thus, while it is more convenient to write
specifications in the full format, for a synthesis tool it is
sufficient to support the basic format. We illustrate the main
features of the format in an example in \secref{sec:example}.  In
\secref{sec:tool}, we give an overview of the SyFCo Tool, which can
interpret the specification, possibly with respect to given parameter
values, and transform it to the basic format, as well as a number of
existing specification formats for backwards compatibility. Finally,
we discuss possible extensions of the format in
\secref{sec:extensions}.

\section{The Basic Format}
\label{sec:basicformat}

A specification in the basic format consists of an INFO section and a
MAIN section:
\begin{equation*}
  \tlsfsec{info} \tlsfsec{main}
\end{equation*}

\subsection{The INFO Section}
\label{sec:basicinfo}

The INFO section contains the meta data of the specification, like a
title and some description\footnote{We use colored verbatim font to
  identify the syntactic elements of the specification.}. Furthermore,
it defines the underlying semantics of the specification (Mealy or
Moore / standard or strict implication) and the target model of the
synthesized implementation. Detailed information about supported
semantics and targets can be found in \secref{sec:semantics}.
Finally, a comma separated list of tags can be specified to identify
features of the specification, e.g., the restriction to a specific
fragment of LTL. A \tlsfid{tag} can be any string literal and is not
restricted to any predefined keywords.

\goodbreak

\vspace{1em}

\noindent
\lstinline!  INFO {!\\%
\lstinline!    TITLE:       "!$ \tlsfid{some title} $\lstinline!"!\\%
\lstinline!    DESCRIPTION: "!$ \tlsfid{some description} $\lstinline!"!\\%
\lstinline!    SEMANTICS:   !$ \tlsfid{semantics} $\\%
\lstinline!    TARGET:      !$ \tlsfid{target} $\\%
\lstinline!    TAGS:        !$ \tlsfid{tag} $%
\lstinline!,! $ \tlsfid{tag} $\lstinline!,!$ \ \ldots $\\%
\lstinline!  }!

\subsection{The MAIN Section}

The specification is completed by the MAIN section, which contains the
partitioning of input and output signals, as well as the main
specification, separated into environment assumptions, system invariants
and system guarantees. Multiple declarations and expressions need
to be separated by a '\lstinline!;!'.

\vspace{1em}

\noindent
\lstinline!  MAIN {!\\%
\lstinline!    INPUTS      { !%
$ ( \tlsfsec{boolean signal declaration} $\lstinline!;!$ )^{*} $\lstinline! }!\\%
\lstinline!    OUTPUTS     { !%
$ ( \tlsfsec{boolean signal declaration} $\lstinline!;!$ )^{*} $\lstinline! }!\\%
\lstinline!    ASSUMPTIONS { !%
$ ( \tlsfsec{basic LTL expression} $\lstinline!;!$ )^{*} $\lstinline! }!\\%
\lstinline!    INVARIANTS  { !%
$ ( \tlsfsec{basic LTL expression} $\lstinline!;!$ )^{*} $\lstinline! }!\\%
\lstinline!    GUARANTEES  { !%
$ ( \tlsfsec{basic LTL expression} $\lstinline!;!$ )^{*} $\lstinline! }!\\%
\lstinline!  }!

\vspace{1em}

\noindent
The ASSUMPTIONS, INVARIANTS and GUARANTEES subsections are optional.

\subsection{Basic Expressions}

A basic expression~$ e $ is either a boolean signal or a basic LTL
expression. Each basic expression has a corresponding type that is
$ \ensuremath{\mathbb{S}} $ for boolean signals and $ \ensuremath{\mathbb{T}} $ for LTL
expressions.  Basic expressions can be composed to larger expressions
using operators.  An overview over the different types of expressions
and operators is given below.

\subsubsection{Boolean Signal Declarations}
A signal identifier is represented by a string consisting of lowercase
and uppercase letters~\mbox{('\lstinline!a!'-'\lstinline!z!'},
\mbox{'\lstinline!A!'-'\lstinline!Z!')},
numbers~\mbox{('\lstinline!0!'-'\lstinline!9!')},
underscores~\mbox{('\lstinline!_!')}, primes~\mbox{('\lstinline!'!')},
and at-signs~\mbox{('\lstinline!@!')} and does not start with a number
or a prime. Additionally, keywords like \lstinline!X!, \lstinline!G!
or \lstinline!U!, as defined in the rest of this document, are
forbidden.
An identifier is declared as either an input or an output signal. We
denote the set of declared input signals as $ \ensuremath{\mathcal{I}} $ and the set of
declared output signals as $ \ensuremath{\mathcal{O}} $, where
$ \ensuremath{\mathcal{I}} \cap \ensuremath{\mathcal{O}} = \emptyset $.  Then, a boolean signal
declaration simply consists of a signal identifier \tlsfid{name} from
$ \ensuremath{\mathcal{I}} \cup \ensuremath{\mathcal{O}} $.

\subsubsection{Basic LTL Expressions}
A basic LTL expression conforms to the following grammar, including
truth values, signals, boolean operators and temporal operators. For
easy parsing of the basic format, we require fully parenthesized
expressions, as expressed by the first of the following lines:
\begin{eqnarray*}
  \varphi & \equiv &
  \text{\lstinline|(|} \varphi' \text{\lstinline|)|} \\
  \varphi' & \equiv &
  \text{\lstinline|true|} \ensuremath{\ \ | \ \ }
  \text{\lstinline!false!} \ensuremath{\ \ | \ \ }
  s \text{\ \ \ for } s \in \ensuremath{\mathcal{I}} \cup \ensuremath{\mathcal{O}} \ensuremath{\ \ | \ \ }
  \\ & &
  \text{\lstinline|!|} \varphi \ensuremath{\ \ | \ \ }
  \varphi \ \text{\lstinline!&&!} \ \varphi \ensuremath{\ \ | \ \ }
  \varphi \ \text{\lstinline!||!} \ \varphi \ensuremath{\ \ | \ \ }
  \varphi \ \text{\lstinline!->!} \ \varphi \ensuremath{\ \ | \ \ }
  \varphi \ \text{\lstinline!<->!} \ \varphi
  \\ & &
  \text{\lstinline!X!} \ \varphi \ensuremath{\ \ | \ \ }
  \text{\lstinline!G!} \ \varphi \ensuremath{\ \ | \ \ }
  \text{\lstinline!F!} \ \varphi \ensuremath{\ \ | \ \ }
  \varphi \ \text{\lstinline!U!} \ \varphi \ensuremath{\ \ | \ \ }
  \varphi \ \text{\lstinline!R!} \ \varphi \ensuremath{\ \ | \ \ }
  \varphi \ \text{\lstinline!W!} \ \varphi
\end{eqnarray*}
Thus, a basic LTL expression is based on the expressions
true, false, and signals, composed with boolean operators (negation,
conjunction, disjunction, implication, equivalence) and temporal
operators (next, globally, eventually, until, release, weak until).
The semantics are defined in the usual way.  A formal definition of
the semantics of the temporal operators can be found in
Appendix~\ref{apx_ltl}.

\newpage

\include{semantics}

\section{The Full Format}
\label{sec:format}

In the full format, a specification consists of three sections: the
INFO section, the GLOBAL section and the MAIN section. The GLOBAL
section is optional.
\begin{equation*}
  \tlsfsec{info} [\tlsfsec{global}] \tlsfsec{main}
\end{equation*}
The INFO section is the same as in the basic format, defined in
\secref{sec:basicinfo}. The GLOBAL section can be used to define
parameters, and to bind identifiers to expressions that can be used
later in the specification. The MAIN section is used as before, but
can use extended sets of declarations and expressions.

We define the GLOBAL section in \secref{sec:global}, and the changes
to the MAIN section compared to the basic format in
\secref{sec:main-full}. The extended set of expressions that can be
used in the full format is introduced in \secref{sec:expressions},
extended signal and function declarations in
Sections~\ref{sec:signals} and \ref{sec:functions}, and additional
notation in Sections~\ref{sec:bigoperator}--\ref{sec:comments}.

\subsection{The GLOBAL Section}
\label{sec:global}

The GLOBAL section consists of the PARAMETERS subsection, defining the
identifiers that parameterize the specification, and the DEFINITIONS
subsection, that allows to define functions and bind identifiers to
complex expressions. Multiple declarations need to be separated by a
'\lstinline!;!'. The section and its subsections are optional.

\vspace{1em}

\noindent
\lstinline!  GLOBAL {!\\%
\lstinline!    PARAMETERS { !\\%
\lstinline!      !$ ( \tlsfid{identifier} $\lstinline! = !%
$ \tlsfsec{numerical expression} $\lstinline!;!$ )^{*} $\\%
\lstinline!    }!\\%
\lstinline!    DEFINITIONS  { !\\%
\lstinline!      !%
$ ((\tlsfid{function declaration} \ensuremath{\ \ | \ \ } \tlsfid{identifier} $%
\lstinline! = !$ \tlsfsec{expression}) $\lstinline!;!$ )^{*} $\\%
\lstinline!    }!\\%
\lstinline!  }!

\subsection{The MAIN Section}
\label{sec:main-full}

Like in the basic format, the MAIN section contains the partitioning
of input and output signals, as well as the main
specification. However, signal declarations can now contain signal
buses, and LTL expressions can use parameters, functions, and
identifiers defined in the GLOBAL section.

\vspace{1em}

\noindent
\lstinline!  MAIN {!\\%
\lstinline!    INPUTS      { !%
$ ( \tlsfsec{signal declaration} $\lstinline!;!$ )^{*} $\lstinline! }!\\%
\lstinline!    OUTPUTS     { !%
$ ( \tlsfsec{signal declaration} $\lstinline!;!$ )^{*} $\lstinline! }!\\%
\lstinline!    ASSUMPTIONS { !%
$ ( \tlsfsec{LTL expression} $\lstinline!;!$ )^{*} $\lstinline! }!\\%
\lstinline!    INVARIANTS  { !%
$ ( \tlsfsec{LTL expression} $\lstinline!;!$ )^{*} $\lstinline! }!\\%
\lstinline!    GUARANTEES  { !%
$ ( \tlsfsec{LTL expression} $\lstinline!;!$ )^{*} $\lstinline! }!\\%
\lstinline!  }!

\vspace{1em}

\noindent
As before, the ASSUMPTIONS, INVARIANTS and GUARANTEES subsections are
optional.

\subsection{Expressions}
\label{sec:expressions}

An expression~$ e $ is either a boolean signal, an $ n $-ary signal
(called bus), a numerical expression, a boolean expression, an LTL
expression, or a set expression. Each expression has a corresponding
type that is either one of the basic types:
$ \ensuremath{\mathbb{S}}, \ensuremath{\mathbb{U}}, \ensuremath{\mathbb{N}}, \ensuremath{\mathbb{B}}, \ensuremath{\mathbb{T}} $, or a recursively
defined set type $ \mathcal{S}_{\ensuremath{\mathbb{X}}} $ for some type
$ \ensuremath{\mathbb{X}} $.

As before, an identifier is represented by a string consisting of
lowercase and uppercase
letters~(\mbox{'\lstinline!a!'-'\lstinline!z!'},
\mbox{'\lstinline!A!'-'\lstinline!Z!'}),
numbers~('\lstinline!0!'-'\lstinline!9!'),
underscores~('\lstinline!_!'), primes~('\lstinline!'!'), and
at-signs~('\lstinline!@!') and does not start with a number or a
prime.  In the full format, identifiers are bound to expressions of
different type. We denote the respective sets of identifiers by
$ \ensuremath{\Gamma_{\signals}} $, $ \ensuremath{\Gamma_{\busses}} $, $ \ensuremath{\Gamma_{\nats}} $, $ \ensuremath{\Gamma_{\bools}} $,
$ \ensuremath{\Gamma_{\temporals}} $, and $ \ensuremath{\Gamma_{\mathcal{S}_{\arbitrary}}} $.  Finally, basic expressions can
be composed to larger expressions using operators. In the full format,
we do not require fully parenthesized expressions. If an expression is
not fully parenthesized, we use the precedence order given in
Appendix~\ref{apx_precedence}. An overview over the all types of
expressions and operators is given below.

\subsubsection{Numerical Expressions}
A numerical expression~$ e_{\ensuremath{\mathbb{N}}} $ conforms to the following
grammar:
\begin{eqnarray*}
  e_{\ensuremath{\mathbb{N}}} & \equiv &
  i \text{\ \ \ for } i \in \ensuremath{\Gamma_{\nats}} \ensuremath{\ \ | \ \ }
  n  \text{\ \ \ for } n \in \ensuremath{\mathbb{N}} \ensuremath{\ \ | \ \ }
  e_{\ensuremath{\mathbb{N}}} \ \text{\lstinline!+!} \ e_{\ensuremath{\mathbb{N}}} \ensuremath{\ \ | \ \ }
  e_{\ensuremath{\mathbb{N}}} \ \text{\lstinline!-!} \ e_{\ensuremath{\mathbb{N}}} \ensuremath{\ \ | \ \ }
  e_{\ensuremath{\mathbb{N}}} \ \text{\lstinline!*!} \ e_{\ensuremath{\mathbb{N}}} \ensuremath{\ \ | \ \ }
  e_{\ensuremath{\mathbb{N}}} \ \text{\lstinline!/!} \ e_{\ensuremath{\mathbb{N}}} \ensuremath{\ \ | \ \ }
  e_{\ensuremath{\mathbb{N}}} \ \, \text{\lstinline!\%!} \ \, e_{\ensuremath{\mathbb{N}}} \\
  & &
  \text{\lstinline!|!} e_{\mathcal{S}_{\ensuremath{\mathbb{X}}}} \text{\lstinline!|!} \ensuremath{\ \ | \ \ }
  \text{\lstinline!MIN!} \ e_{\mathcal{S}_{\ensuremath{\mathbb{N}}}} \ensuremath{\ \ | \ \ }
  \text{\lstinline!MAX!} \ e_{\mathcal{S}_{\ensuremath{\mathbb{N}}}} \ensuremath{\ \ | \ \ }
  \text{\lstinline!SIZEOF!} \ s \ \ \text{ for } s \in \ensuremath{\Gamma_{\busses}}
\end{eqnarray*}
Thus, a numerical expression either represents an identifier (bound to
a numerical value), a numerical constant, an addition, a subtraction, a
multiplication, an integer division, a modulo operation, the size of a
set, the minimal/maximal value of a set of naturals, or the size (i.e., width) of a
bus, respectively. The semantics are defined in the usual way.

\subsubsection{Set Expressions}
A set expression~$ e_{\mathcal{S}_{\ensuremath{\mathbb{X}}}} $, containing elements
of type $ \mathbb{X} $, conforms to the following grammar:
\begin{eqnarray*}
  e_{\mathcal{S}_{\ensuremath{\mathbb{X}}}} & \equiv &
  i  \text{\ \ \ for } i \in \ensuremath{\Gamma_{\mathcal{S}_{\arbitrary}}} \ensuremath{\ \ | \ \ }
  \text{\lstinline!\{!} \, e_{\ensuremath{\mathbb{X}}} \text{\lstinline!,!} \, e_{\ensuremath{\mathbb{X}}}
  \text{\lstinline!,!} \ldots \text{\lstinline!,!} \, e_{\ensuremath{\mathbb{X}}} \,
  \text{\lstinline!\}!} \ensuremath{\ \ | \ \ }
  \text{\lstinline!\{!} \, e_{\ensuremath{\mathbb{N}}} \text{\lstinline!,!} \, e_{\ensuremath{\mathbb{N}}} \,
  \text{\lstinline!..!}\,  e_{\ensuremath{\mathbb{N}}} \, \text{\lstinline!\}!} \ensuremath{\ \ | \ \ }
  \\ &&
  e_{\mathcal{S}_{\ensuremath{\mathbb{X}}}} \, \text{\lstinline!(+)!} \ e_{\mathcal{S}_{\ensuremath{\mathbb{X}}}} \ensuremath{\ \ | \ \ }
  e_{\mathcal{S}_{\ensuremath{\mathbb{X}}}} \, \text{\lstinline!(*)!} \ e_{\mathcal{S}_{\ensuremath{\mathbb{X}}}} \ensuremath{\ \ | \ \ }
  e_{\mathcal{S}_{\ensuremath{\mathbb{X}}}} \, \text{\lstinline!(\\)!} \ e_{\mathcal{S}_{\ensuremath{\mathbb{X}}}}
\end{eqnarray*}
Thus, the expression~$ e_{\mathcal{S}_{\ensuremath{\mathbb{X}}}} $ either
represents an identifier (bound to a set of values of type
$ \ensuremath{\mathbb{X}} $), an explicit list of elements of type $ \ensuremath{\mathbb{X}} $,
a list of elements specified by a range (for $ \ensuremath{\mathbb{X}} = \ensuremath{\mathbb{N}} $),
a union of two sets, an intersection or a difference,
respectively. The semantics of a range expression
\lstinline!{!$ x $\lstinline!,!$ y $\lstinline!..!$ z $\lstinline!}!
are defined for $ x < y $ via:
\begin{equation*}
  \{ n \in \ensuremath{\mathbb{N}} \mid x \leq n \leq z \wedge \exists j.\ n = x +
  j \cdot (y-x) \}.
\end{equation*}
The semantics of all other expressions is defined as usual. Sets
contain either positive integers, boolean expressions, LTL
expressions, buses, signals, or other sets of a specific type.

\subsubsection{Boolean Expressions}
A boolean expression~$ e_{\ensuremath{\mathbb{B}}} $ conforms to the following
grammar:
\begin{eqnarray*}
  e_{\ensuremath{\mathbb{B}}} & \equiv &
  i  \text{\ \ \ for } i \in \ensuremath{\Gamma_{\bools}} \ensuremath{\ \ | \ \ }
  e_{\ensuremath{\mathbb{X}}} \ \text{\lstinline!IN!} \ e_{\mathcal{S}_{\ensuremath{\mathbb{X}}}} \ensuremath{\ \ | \ \ }
  \text{\lstinline|true|} \ensuremath{\ \ | \ \ }
  \text{\lstinline!false!} \ensuremath{\ \ | \ \ }
  \text{\lstinline|!|}\,e_{\ensuremath{\mathbb{B}}} \ensuremath{\ \ | \ \ }
  \\ & &
  e_{\ensuremath{\mathbb{B}}} \ \text{\lstinline!&&!} \ e_{\ensuremath{\mathbb{B}}} \ensuremath{\ \ | \ \ }
  e_{\ensuremath{\mathbb{B}}} \ \text{\lstinline!||!} \ e_{\ensuremath{\mathbb{B}}} \ensuremath{\ \ | \ \ }
  e_{\ensuremath{\mathbb{B}}} \ \text{\lstinline!->!} \ e_{\ensuremath{\mathbb{B}}} \ensuremath{\ \ | \ \ }
  e_{\ensuremath{\mathbb{B}}} \ \text{\lstinline!<->!} \ e_{\ensuremath{\mathbb{B}}} \ensuremath{\ \ | \ \ }
  \\ & &
  e_{\ensuremath{\mathbb{N}}} \ \text{\lstinline!==!} \ e_{\ensuremath{\mathbb{N}}} \ensuremath{\ \ | \ \ }
  e_{\ensuremath{\mathbb{N}}} \ \text{\lstinline~!=~} \ e_{\ensuremath{\mathbb{N}}} \ensuremath{\ \ | \ \ }
  e_{\ensuremath{\mathbb{N}}} \ \text{\lstinline!<!} \ e_{\ensuremath{\mathbb{N}}} \ensuremath{\ \ | \ \ }
  e_{\ensuremath{\mathbb{N}}} \ \text{\lstinline!<=!} \ e_{\ensuremath{\mathbb{N}}} \ensuremath{\ \ | \ \ }
  e_{\ensuremath{\mathbb{N}}} \ \text{\lstinline!>!} \ e_{\ensuremath{\mathbb{N}}} \ensuremath{\ \ | \ \ }
  e_{\ensuremath{\mathbb{N}}} \ \text{\lstinline!>=!} \ e_{\ensuremath{\mathbb{N}}}
\end{eqnarray*}
Thus, a boolean expression either represents an identifier (bound to a
boolean value), a membership test, true, false, a negation, a
conjunction, a disjunction, an implication, an equivalence, or an
equation between two positive integers (equality, inequality, less
than, less or equal than, greater than, greater or equal than),
respectively. The semantics are defined in the usual way. Note that
signals are not allowed in a boolean expression, but only in an LTL
expression.

\subsubsection{LTL Expressions}
An LTL expression~$ \varphi $ conforms to the same grammar as a
boolean expression, except that it additionally includes signals and
temporal operators.
\begin{equation*}
  \varphi \ \, \equiv \ \, \ldots \ensuremath{\ \ | \ \ }
  i \text{\ \ for } i \in \ensuremath{\Gamma_{\temporals}} \ensuremath{\ \ | \ \ }
  s \text{\ \ for } s \in \ensuremath{\Gamma_{\signals}} \ensuremath{\ \ | \ \ }
  b \text{\lstinline![!} e_{\ensuremath{\mathbb{N}}}
  \text{\lstinline!]!} \text{ for } b
  \in \ensuremath{\Gamma_{\busses}} \ensuremath{\ \ | \ \ }
  \text{\lstinline!X!} \ \varphi \ensuremath{\ \ | \ \ }
  \text{\lstinline!G!} \ \varphi \ensuremath{\ \ | \ \ }
  \text{\lstinline!F!} \ \varphi \ensuremath{\ \ | \ \ }
  \varphi \ \text{\lstinline!U!} \ \varphi \ensuremath{\ \ | \ \ }
  \varphi \ \text{\lstinline!R!} \ \varphi \ensuremath{\ \ | \ \ }
  \varphi \ \text{\lstinline!W!} \ \varphi
\end{equation*}
\goodbreak
\noindent
Thus, an LTL expression additionally can represent an identifier bound
to an LTL formula, a signal, an $e_{\ensuremath{\mathbb{N}}} $-th signal of a bus, a
next operation, a globally operation, an eventually operation, an
until operation, a release operation, or a weak until operation,
respectively. Note that every boolean expression is also an LTL
expression, thus we allow the use of identifiers that are bound to
boolean expressions as well. A formal definition of the semantics of
the temporal operators can be found in Appendix~\ref{apx_ltl}.

\subsection{Signals and Buses}
\label{sec:signals}

A signal declaration consists of the name of the signal.  As for the
basic format, signals are declared as either input or output signals,
denoted by $ \ensuremath{\mathcal{I}} $ and $ \ensuremath{\mathcal{O}} $, respectively. A bus
declaration additionally specifies a signal width, i.e., a bus
represents a finite set of signals.
\begin{equation*}
  \langle \text{\textit{name}} \rangle \ensuremath{\ \ | \ \ }
  \langle \text{\textit{name}} \rangle \text{\lstinline![!}
  e_{\ensuremath{\mathbb{N}}} \text{\lstinline!]!}
\end{equation*}
In other words, a signal declaration \lstinline!s! specifies a signal
$ s \in \ensuremath{\mathcal{I}} \cup \ensuremath{\mathcal{O}} $, where a bus declaration
\lstinline!b[n]! specifies $ n $ signals~\lstinline!b[0]!,
\lstinline!b[1]!, $ \ldots $, \lstinline!b[n-1]!, with either
\lstinline!b[i]!$ \in \ensuremath{\mathcal{I}} $ for all $ i $, or
\lstinline!b[i]!$ \in \ensuremath{\mathcal{O}} $ for all $ i $.

Consider that we use \lstinline!b[i]! to access the $ i $-th value of
$ b $, i.e., we use the same syntax as for the declaration
itself\footnote{C-Array Syntax Style}. Also note that for the declared
signals~$ s $, we have
$ s \in \ensuremath{\mathcal{I}} \cup \ensuremath{\mathcal{O}} \subseteq \ensuremath{\Gamma_{\signals}} $, and for the
declared buses $ b $, we have $ b \in \ensuremath{\Gamma_{\busses}} $.

\subsection{Function Declarations}
\label{sec:functions}

As another feature, one can declare (recursive) functions of arbitrary
arity inside the DEFINITIONS section. Functions can be used to define
simple macros, but also to generate complex formulas from a given set
of parameters. A declaration of a function of arity~$ n $ has the form
\begin{equation*}
  \tlsfid{function name} \text{\lstinline!(!}
  \tlsfid{arg\ensuremath{_{1}}} \text{\lstinline!,!}
  \tlsfid{arg\ensuremath{_{2}}} \text{\lstinline!,!}
  \ldots \text{\lstinline!,!}
  \tlsfid{arg\ensuremath{_{n}}} \text{\lstinline!) =\ !}
  (e_{c})^{+},
\end{equation*}
where
$ \tlsfid{arg\ensuremath{_{1}}}, \tlsfid{arg\ensuremath{_{2}}},
\ldots, \tlsfid{arg\ensuremath{_{n}}} $
are fresh identifiers that can only be used inside the
sub-expressions~$ e_{c} $. An expression~$ e_{c} $ conforms to the
following grammar:
\begin{equation*}
  e_{c} \ \, \equiv \ \, e \ensuremath{\ \ | \ \ }
  e_{\ensuremath{\mathbb{B}}} \ \text{\lstinline!:!} \ e \ensuremath{\ \ | \ \ }
  e_{\mathbb{P}} \ \text{\lstinline!:!} \ e
  \qquad \qquad \text{where }
  \ \ e \ \, \equiv  \ \,
  e_{\ensuremath{\mathbb{N}}} \ensuremath{\ \ | \ \ }
  e_{\ensuremath{\mathbb{B}}} \ensuremath{\ \ | \ \ }
  e_{\mathcal{S}_{\ensuremath{\mathbb{X}}}} \ensuremath{\ \ | \ \ }
  \varphi
\end{equation*}
Thus, a function can be bound to any expression~$ e $, parameterized
in its arguments, which additionally may be guarded by some boolean
expression~$ e_{\ensuremath{\mathbb{B}}} $, or a pattern match~$ e_{\ensuremath{\mathbb{P}}} $. If the
regular expression~$ (e_{c})^{+} $ consists of more than one
expression~$ e_{c} $, then the function binds to the first expression
whose guard evaluates to \lstinline!true! (in the order of their
declaration). Furthermore, the special guard \lstinline!otherwise! can
be used, which evaluates to true if and only if all other guards
evaluate to \lstinline!false!. Expressions without a guard are
implicitly guarded by \lstinline!true!. All sub-expressions~$ e_{c} $
need to have the same type $ \ensuremath{\mathbb{X}} $. For every instantiation of
a function by given parameters, we view the resulting expression
$ e_{\ensuremath{\mathbb{X}}} $ as an identifier in~$ \Gamma_{\ensuremath{\mathbb{X}}} $, bound
to the result of the function application.

\subsubsection{Pattern Matching}
\label{sec_patterns}
Pattern matches are special guards of the form
\begin{equation*}
  e_{\ensuremath{\mathbb{P}}} \equiv \ \, \varphi \ {\ensuremath{\color{codecolor} \raisebox{-9pt}{\scalebox{1.7}{\textasciitilde}}}} \ \varphi' ,
  \vspace{-0.5em}
\end{equation*}
which can be used to describe different behavior depending on the
structure of an LTL expression. Hence, a guard~$ e_{\ensuremath{\mathbb{P}}} $ evaluates
to \lstinline!true! if and only if $ \varphi $ and $ \varphi' $ are
structurally equivalent, with respect to their boolean and temporal
connectives. Furthermore, identifier names that are used in
$ \varphi' $ need to be fresh, since every identifier expression that
appears in $ \varphi' $ is bound to the equivalent sub-expression in
$ \varphi $, which is only visible inside the right-hand-side of the
guard. Furthermore, to improve readability, the special
identifier~\lstinline!_! (wildcard) can be used,
which always remains unbound. To clarify this feature, consider the
following function declaration:

\vspace{0.6em}

\noindent
\lstinline!  fun(f) =!\\%
\vspace{-0.4em}%
\lstinline!    f !$ \hspace{-1.5pt} {\ensuremath{\color{codecolor} \raisebox{-9pt}{\scalebox{1.7}{\textasciitilde}}}} \hspace{-1.5pt} $%
\lstinline! a U _: a!\\%
\lstinline!    otherwise: X f!

\vspace{0.6em}

\noindent The function $ \textit{fun} $ gets an LTL formula $ f $ as a
parameter. If $ f $ is an until formula of the form
$ \varphi_{1} \LTLuntil \varphi_{2} $, then $ \textit{fun}(f) $ binds
to $ \varphi_{1} $, otherwise $ \textit{fun}(f) $ binds to
$ \LTLnext f $.

\subsection{Big Operator Notation}
\label{sec:bigoperator}

It is often useful to express parameterized expressions using ``big''
operators, e.g., we use $ \Sigma $ to denote a sum over multiple
sub-expressions, $ \Pi $ to denote a product, or $ \bigcup $ to denote
a union. It is also possible to use this kind of notion in this
specification format. The corresponding syntax looks as follows:
\begin{equation*}
  \tlsfid{op} \text{\lstinline![!} \,
  \tlsfid{id\ensuremath{_{0}}} \,
  \text{\lstinline!IN!} \; e_{\mathcal{S}_{\ensuremath{\mathbb{X}}_{0}}} \!
  \text{\lstinline!,!}\, \tlsfid{id\ensuremath{_{1}}} \,
  \text{\lstinline!IN!} \; e_{\mathcal{S}_{\ensuremath{\mathbb{X}}_{1}}} \!
  \text{\lstinline!,!}\, \ldots \,
  \text{\lstinline!,!} \,\tlsfid{id\ensuremath{_{n}}} \,
  \text{\lstinline!IN!} \; e_{\mathcal{S}_{\ensuremath{\mathbb{X}}_{n}}}
  \text{\lstinline!]!} \, e_{\ensuremath{\mathbb{X}}}
\end{equation*}
Let $ x_{j} $ and $ S_{j} $ be the identifier represented by
$ \tlsfid{id\ensuremath{_{j}}} $ and the set represented by
$ e_{\mathcal{S}_{\ensuremath{\mathbb{X}}_{j}}}\! $, respectively. Further, let
$ \bigoplus $ be the mathematical operator corresponding to
$ \tlsfid{op} $. Then, the above expression corresponds to the
mathematical expression:
\begin{equation*}
  \bigoplus\limits_{x_{0} \in S_{0}} \
  \bigoplus\limits_{x_{1} \in S_{1}} \ \cdots \
  \bigoplus\limits_{x_{n} \in S_{n}}
  \big( e_{\ensuremath{\mathbb{X}}} )
\end{equation*}
Note that $ \tlsfid{id\ensuremath{_{0}}} $ is already bound in
expression $ e_{\mathcal{S}_{\ensuremath{\mathbb{X}}_{1}}} \!$,
$ \tlsfid{id\ensuremath{_{1}}} $ is bound in
$ e_{\mathcal{S}_{\ensuremath{\mathbb{X}}_{2}}} \!$, and so forth. The syntax is
supported by every operator
$ \tlsfid{op} \in \{ \text{\lstinline!+!},
\text{\lstinline!*!}, \text{\lstinline!(+)!},
\text{\lstinline!(*)!}, \text{\lstinline!&&!},
\text{\lstinline!||!} \} $.

\subsection{Syntactic Sugar}
\label{sec:syntacticsugar}

To improve readability, there is additional syntactic sugar, which can
be used beside the standard syntax. Let $ n $ and $ m $ be numerical
expressions, then

\begin{itemize}

\item \lstinline!X[!$ n $\lstinline!]!$ \; \varphi $ denotes a stack
  of $ n $ next operations, e.g.: \\[0.5em]
  \lstinline!  X[3] a!$ \ \, \equiv \ \, $ \lstinline!X X X a!

\item \lstinline!F[!$ n $\lstinline!:!$ m $\lstinline!]!$ \; \varphi $
  denotes that $ \varphi $ holds somewhere between the next $ n $ and
  $ m $ steps, e.g.: \\[0.5em]
  \lstinline!  F[2:3] a!$ \ \, \equiv \ \, $\lstinline!X X(a || X a)!

\item \lstinline!G[!$ n $\lstinline!:!$ m $\lstinline!]!$ \; \varphi $
  denotes that $ \varphi $ holds everywhere between the next $ n $ and
  $ m $ steps, e.g.: \\[0.5em]
  \lstinline!  G[1:3] a!$ \ \, \equiv \ \, $\lstinline!X(a && X(a && X a))!

\item $ \tlsfid{op} $\lstinline![!$ \, \ldots $\lstinline!,!$ \, n \, \circ_{1}
  \tlsfid{id} \circ_{2} \, m \, $\lstinline!,!$ \ldots $\lstinline!]!$ \, e_{X} $
  denotes a big operator application, where  $ n \, \circ_{1} \tlsfid{id}
  \circ_{2} \, m $ with $ \circ_{1}, \circ_{2} \in \{ \text{\lstinline!<!},
  \text{\lstinline!<=!} \} $ denotes that \tlsfid{id} ranges from $ n $ to
  $ m $. Thereby, the inclusion of $ n $ and $ m $ depends on the
  choice of $ \circ_{1} $ and $ \circ_{2} $, respectively. Thus, the
  notation provides an alternative to membership in combination with
  set ranges, e.g.: \\[0.5em]
  \lstinline!  &&[0 <= i < n] b[i]!$ \ \, \equiv \ \,
  $\lstinline!&&[i IN {0,1..n-1}] b[i]!

\end{itemize}

\subsection{Comments}
\label{sec:comments}

It is possible to use C style comments anywhere in the specification,
i.e., there are single line comments initialized by \lstinline!//! and
multi line comments between \lstinline!/*! and
\lstinline!*/!.  Multi line comments can be nested.

\newpage

\section{Example: A Parameterized Arbiter}
\label{sec:example}

To get some feeling for the interplay of the aforementioned features,
consider the following example specification of a parameterized
arbiter.

\vspace{1em}

\noindent
\lstinline!  INFO!%
\lstinline[basicstyle=\ttfamily\color{black}]! {!\\%
\lstinline!    TITLE!%
\lstinline[basicstyle=\ttfamily\color{black}]!:       !%
\lstinline[stringstyle=\ttfamily\color{red!30!orange!80!black}]!"A Parameterized Arbiter"!\\%
\lstinline!    DESCRIPTION!%
\lstinline[basicstyle=\ttfamily\color{black}]!: !%
\lstinline[stringstyle=\ttfamily\color{red!30!orange!80!black}]!"An arbiter, parameterized in the number of clients"!\\%
\lstinline!    SEMANTICS!%
\lstinline[basicstyle=\ttfamily\color{black}]!:   !%
\lstinline[identifierstyle=\ttfamily\color{gray!70!black}]!Mealy!\\%
\lstinline!    TARGET!%
\lstinline[basicstyle=\ttfamily\color{black}]!:      !%
\lstinline[identifierstyle=\ttfamily\color{gray!70!black}]!Mealy!\\%
\lstinline[basicstyle=\ttfamily\color{black}]!  }!\\%
\lstinline!  !\\%
\lstinline!  GLOBAL !%
\lstinline[basicstyle=\ttfamily\color{black}]!{!\\%
\lstinline!    PARAMETERS !%
\lstinline[basicstyle=\ttfamily\color{black}]!{!\\%
\lstinline[commentstyle=\ttfamily\color{orange!60!black}]!      // two clients!\\%
\lstinline[identifierstyle=\ttfamily\color{green!50!black}]!      n!%
\lstinline[basicstyle=\ttfamily\color{black}]! = 2;!\\%
\lstinline[basicstyle=\ttfamily\color{black}]!    }!\\%
\lstinline!    DEFINITIONS!%
\lstinline[basicstyle=\ttfamily\color{black}]! {!\\%
\lstinline[commentstyle=\ttfamily\color{orange!60!black}]!      // mutual exclusion!\\%
\lstinline[identifierstyle=\ttfamily\color{green!50!black}]!      mutual!%
\lstinline[identifierstyle=\ttfamily\color{black},basicstyle=\ttfamily\color{black}]!(b) =!\\%
\lstinline[basicstyle=\ttfamily\color{cyan!50!black}]!        ||!%
\lstinline[identifierstyle=\ttfamily\color{black},basicstyle=\ttfamily\color{black}]![i !%
\lstinline[identifierstyle=\ttfamily\color{cyan!50!black}]!IN!%
\lstinline[basicstyle=\ttfamily\color{black},identifierstyle=\ttfamily\color{black}]! {0,1..n-1}]!\\%
\lstinline[basicstyle=\ttfamily\color{cyan!50!black}]!          &&!%
\lstinline[identifierstyle=\ttfamily\color{black},basicstyle=\ttfamily\color{black}]![j !%
\lstinline[identifierstyle=\ttfamily\color{cyan!50!black}]!IN!%
\lstinline[basicstyle=\ttfamily\color{black},identifierstyle=\ttfamily\color{black}]! {0,1..n-1} !%
\lstinline[basicstyle=\ttfamily\color{cyan!50!black}]!(\)!%
\lstinline[basicstyle=\ttfamily\color{black},identifierstyle=\ttfamily\color{black}]! {i}]!\\%
\lstinline[basicstyle=\ttfamily\color{cyan!50!black}]~            !~%
\lstinline[basicstyle=\ttfamily\color{black},identifierstyle=\ttfamily\color{black}]!(b[i] !%
\lstinline[basicstyle=\ttfamily\color{cyan!50!black}]!&&!%
\lstinline[basicstyle=\ttfamily\color{black},identifierstyle=\ttfamily\color{black}]! b[j]);!\\%
\lstinline[commentstyle=\ttfamily\color{orange!60!black}]!      // the Request-Response condition!\\%
\lstinline[identifierstyle=\ttfamily\color{green!50!black}]!      reqres!%
\lstinline[basicstyle=\ttfamily\color{black},identifierstyle=\ttfamily\color{black}]!(req,res) =!\\%
\lstinline[identifierstyle=\ttfamily\color{cyan!50!black}]!        G!%
\lstinline[basicstyle=\ttfamily\color{black},identifierstyle=\ttfamily\color{black}]! (req !%
\lstinline[basicstyle=\ttfamily\color{cyan!50!black},identifierstyle=\ttfamily\color{cyan!50!black}]!-> F!%
\lstinline[basicstyle=\ttfamily\color{black},identifierstyle=\ttfamily\color{black}]! res);!\\%
\lstinline[basicstyle=\ttfamily\color{black}]!    }!\\%
\lstinline[basicstyle=\ttfamily\color{black}]!  }!\\%
\lstinline!  !\\%
\lstinline[commentstyle=\ttfamily\color{orange!60!black}]!  /* Ensure mutual exclusion on the output bus and guarantee!\\%
\lstinline[basicstyle=\ttfamily\color{orange!60!black},identifierstyle=\ttfamily\color{orange!60!black}]!     that each request on the input bus is eventually granted */!\\%
\lstinline!  MAIN!%
\lstinline[basicstyle=\ttfamily\color{black}]! {!\\%
\lstinline!    INPUTS!%
\lstinline[basicstyle=\ttfamily\color{black}]! {!\\%
\lstinline[identifierstyle=\ttfamily\color{green!50!black}]!      r!%
\lstinline[basicstyle=\ttfamily\color{black},identifierstyle=\ttfamily\color{black}]![n];!\\%
\lstinline[basicstyle=\ttfamily\color{black}]!    }!\\%
\lstinline!    OUTPUTS!%
\lstinline[basicstyle=\ttfamily\color{black}]! {!\\%
\lstinline[identifierstyle=\ttfamily\color{green!50!black}]!      g!%
\lstinline[basicstyle=\ttfamily\color{black},identifierstyle=\ttfamily\color{black}]![n];!\\%
\lstinline[basicstyle=\ttfamily\color{black}]!    }!\\%
\lstinline!    INVARIANTS!%
\lstinline[basicstyle=\ttfamily\color{black}]! {!\\%
\lstinline[basicstyle=\ttfamily\color{black},identifierstyle=\ttfamily\color{black}]!      mutual(g);!\\%
\lstinline[basicstyle=\ttfamily\color{black}]!    }!\\%
\lstinline!    GUARANTEES!%
\lstinline[basicstyle=\ttfamily\color{black}]! {!\\%
\lstinline[basicstyle=\ttfamily\color{cyan!50!black}]!      &&!%
\lstinline[basicstyle=\ttfamily\color{black},identifierstyle=\ttfamily\color{black}]![0 <= i < n]!\\%
\lstinline[basicstyle=\ttfamily\color{black},identifierstyle=\ttfamily\color{black}]!        reqres(r[i],g[i]);!\\%
\lstinline[basicstyle=\ttfamily\color{black}]!    }!\\
\lstinline[basicstyle=\ttfamily\color{black}]!  }!

\vspace{1em}

\noindent The example is parameterized in the number of clients~$ n $
(here: $ n = 2 $). Furthermore, it uses two functions:
$ \textit{mutual}(b) $, which ensures mutual exclusions on the signals
of a bus~$ b $ of width~$ n $, and
$ \textit{reqres}(\textit{req}, \textit{res}) $, which ensures that
every request~$ \textit{req} $ is eventually followed by some
response~$ \textit{res} $. In the final specification, both conditions
are then combined over the inputs $ r_{i} $ and outputs $ g_{i} $.

\section{The SyFCo Tool}
\label{sec:tool}

We created a Synthesis Format Conversion Tool (SyFCo)~\cite{SyFCo}
that can interpret the high level constructs of the format and
supports transformation of the specification back to plain LTL. The
tool has been designed to be modular with respect to the supported
output formats and semantics. Furthermore, the tool can identify and
manipulate parameters, targets and semantics of a specification on the
fly, and thus allows comparative studies, as it is for example needed
in the Synthesis Competition.

\vspace{1em}

\noindent The main features of the tool can be summarized as follows:

\begin{itemize}

\item Evaluation of high level constructs in the full format to reduce
  full TLSF to basic TLSF.

\item Transformation to other existing specification formats, like
  Promela LTL~\cite{PromelaLTL}, PSL~\cite{EF2006},
  Unbeast~\cite{E2010}, or Wring~\cite{SomenziB00}.

\item On the fly adjustment of parameters, semantics or targets.

\item Preprocessing of the resulting LTL formula

\begin{itemize}

\item[$ \circ $] conversion to negation normal form

\item[$ \circ $] replacement of derived operators

\item[$ \circ $] pushing/pulling next, eventually, or globally operators inwards/outwards

\item[$ \circ $] $ \ldots $ \raisebox{-8pt}{\ }

\end{itemize}

\end{itemize}

\section{Extensions}
\label{sec:extensions}

The format remains open for further extensions, which allow more fine
grained control over the specification with respect to a particular
synthesis problem. At the current time of writing, the following
extensions were under consideration:

\begin{itemize}

\item Compositionality: The possibility to separate specifications
  into multiple components, which then can be used as building blocks
  to specify larger components.

\item Partial Implementations: a specification that is separated into
  multiple components might also contain components that are already
  implemented. Implemented components could be given in the AIGER
  format that is already used in SYNTCOMP~\cite{SYNTCOMP-format}.

\item Additional syntactic sugar, like enumerations or arithmetic on
  busses.

\end{itemize}

\section*{Acknowledgments}

We thank Sebastian Schirmer, who supported us with the results of his
Bachelor Thesis~\cite{THSEBSCH}, to resolve many design decisions
that came up during the development of this format. We thank Roderick Bloem,
R\"udiger Ehlers, Bernd Finkbeiner, Ayrat Khalimov, Robert K\"onighofer, Nir
Piterman, and Leander Tentrup for comments on the TSLF and drafts of this
document.

\bibliographystyle{plain}

\section{Targets and Semantics}
\label{sec:semantics}

The TARGET of the specification defines the implementation model that
a solution should adhere to. Currently supported targets are Mealy
automata \mbox{(\lstinline!Mealy!)}, whose output depends on the
current state and input, and Moore automata
\mbox{(\lstinline!Moore!)}, whose output only depends on the current
state. The differentiation is necessary since realizability of a
specification depends on the target system model. For example, every
specification that is realizable
under Moore semantics is also realizable under Mealy semantics, but
not vice versa. A formal description
of both automata models can be found in Appendix~\ref{apx_memo}.

The SEMANTICS of the specification defines how the formula
was intended to be evaluated, which also depends on the target
implementation model.  We currently support four different semantics:
standard Mealy semantics \mbox{(\lstinline!Mealy!)}, standard Moore
semantics \mbox{(\lstinline!Moore!)}, strict Mealy semantics
\mbox{(\lstinline!Mealy,Strict!)}, and strict Moore semantics
\mbox{(\lstinline!Moore,Strict!)}.

\subsection{Basic cases}

\subsubsection{Standard semantics}
If the semantics is (non-strict) \mbox{\lstinline!Mealy!} or
\mbox{\lstinline!Moore!}, and the TARGET coincides with the semantics system
model, then the specification is simply interpreted as an LTL formula. That is,
if ASSUMPTIONS contains the LTL formula $\varphi_e$, INVARIANTS contains the
formula $\psi_s$, and GUARANTEES contains the formula $\varphi_s$, then the
specification is interpreted as
\begin{equation*}
  \varphi_e \rightarrow \LTLglobally \psi_s \land \varphi_s
\end{equation*}
in standard LTL semantics (see Appendix~\ref{apx_ltl}).

\subsubsection{Strict semantics}
If the semantics is \mbox{\lstinline!Mealy,Strict!} or
\mbox{\lstinline!Moore,Strict!}, and the TARGET coincides with the semantics
system
model, then the specification is interpreted under strict implication
semantics (as used in the synthesis of GR(1) specifications). Essentially,
this means that the system is only allowed to violate safety
properties if the environment has violated the safety assumptions at an
earlier time. This is in contrast to the standard LTL semantics, where the
specification is satisfied if the environment violates the assumptions at any
time, regardless of the system behavior. For details, see Klein and
Pnueli~\cite{KleinP10} and Bloem et al.~\cite{DBLP:journals/jcss/BloemJPPS12}.

\subsection{Derived cases}

\subsubsection{Conversion between system models}
If the implementation model of the SEMANTICS differs from the TARGET of a
specification, we use a simple conversion to get a specification that is
realizable in the target system model iff the original specification is
realizable in the original system model: a specification in
Moore semantics can be converted into Mealy semantics by prefixing all
occurrences of input atomic propositions with an additional
$\LTLnext$-operator. Similarly, we can convert from Mealy semantics to Moore
semantics by prefixing outputs with an $ \LTLnext $-operator.

\subsubsection{Conversion from strict to non-strict}
Finally, a specification in strict semantics can also be converted to an
equivalent specification in standard semantics. Consider a specification with
assumptions~$ \rho_{e} $, invariants~$ \psi_{s} $, and guarantees~$ \varphi_{s} $.
Assume that $\rho_e$ can be written as $\theta_e \land \LTLglobally \psi_e
\land \varphi_e$, where $\theta_e$ is an \emph{initial constraint} (that
only talks about the initial values of inputs), $\psi_e$ is a \emph{safety
constraint}  (we assume that it is an invariant over the current and next
value of inputs at any time), and $\varphi_e$ a \emph{liveness constraint}.
Similarly, assume that $\psi_s$ is a safety constraint, and separate $\varphi_s$
into an initial constraint $\theta_s$ and a liveness constraint $\varphi_s'$.
Then the formula~$ \theta_e \land \LTLglobally \psi_{e} \land \varphi_{e}
\rightarrow
\theta_s \land \LTLglobally \psi_{s} \land \varphi_{s} $
under strict implication semantics can be converted to the following formula
in standard semantics\footnote{Note that in the conversion of
  \cite{DBLP:journals/jcss/BloemJPPS12}, the formula is strengthened by
  adding the
  formula~$ \LTLglobally (\LTLpastglobally \psi_{e} \rightarrow
  \psi_{s})$,
  where $ \LTLpastglobally \varphi $ is a Past-LTL formula and denotes
  that $ \varphi $ holds everywhere in the past. However, it is easy
  to show that our definition of strict semantics matches the
  definition of \cite{DBLP:journals/jcss/BloemJPPS12}. We prefer this
  notion, since it avoids the introduction of Past-LTL.}:
\begin{equation*}
  \theta_e \rightarrow \left( \theta_s \land (\psi_{s} \LTLweakuntil \neg \psi_{e}) \land (\LTLglobally \psi_{e} \land \varphi_{e} \rightarrow \LTLglobally \psi_{s} \wedge \varphi_{s}) \right).
\end{equation*}


CONCORD, N.C. (May 19, 2018) – There were loads of lead changes, plenty of pack racing and a plethora of passing, but no one could stop Kevin Harvick when the chips were down in Saturday night's Monster Energy NASCAR All-Star Race at Charlotte Motor Speedway. Harvick held off Daniel Suarez – who advanced out of the Monster Energy Open – and Joey Logano on a restart with two laps to go to claim his first all-star win since 2007. A new aerodynamics package which pushed cars closer together made for a scintillating spectacle of three- and four-wide racing action around America's Home for Racing.
Harvick, the driver of the No. 4 Jimmy John's Ford Fusion, led a race-high 36 laps and assumed the lead for good on the last lap of Stage 3. His drive to victory was far from assured, though, after a melee eliminated favorites including Martin Truex Jr., Kyle Busch and Brad Keselowski from contention. Suarez's Toyota, on the final restart of Stage 4, moved beside Harvick thanks to a push from Joe Gibbs Racing teammate Denny Hamlin. Harvick held station coming to the white flag and powered his Stewart-Haas Racing machine to the team's first All-Star Race win since 2009. Suarez finished second with Logano third, Hamlin fourth and Chase Elliott fifth.
Jimmie Johnson was sixth with Kyle Larson – who spun out in the final laps – rebounding to seventh. A.J. Allmendinger, Kyle Busch and Kasey Kahne completed the top 10.
Tickets, pre-race pit passes and camping packages for next Sunday's Coca-Cola 600 are available by visiting online. Kids 13 and under get in for just $10. Race tickets are also available at the gates or by calling 1-800-455-FANS (3267).
Connect with Charlotte Motor Speedway by following on Twitter, Instagram or Facebook. Keep up with all the latest news and information with the Charlotte Motor Speedway mobile app.


text:
Q: Problems with the object ( dictionary ) I get from NSUserDefaults Although the app works well I still get this warning message on two of my code lines. What I am trying to do is to get the previous scores from two players:
The Global Variables:
// Player 1 has an initial score of 0 , the player 2 as well.
var countWins:Dictionary = ["1":0,"2":0]

The Warning:

Treating a forced downcast to 'Int' as optional will never produce
  'nil'

on the lines ->
countWins["1"] = defaults.objectForKey("scoreOne") as! Int
countWins["2"] = defaults.objectForKey("scoreTwo") as! Int

The Whole Function:
func loadScores()
{

    let defaults = NSUserDefaults.standardUserDefaults()

    if defaults.objectForKey("scoreOne") != nil &&

    defaults.objectForKey("scoreTwo") != nil

{
    countWins["1"] = defaults.objectForKey("scoreOne") as! Int
    countWins["2"] = defaults.objectForKey("scoreTwo") as! Int

        scorePlayerOne.text = String(countWins["1"]!)
        scorePlayerTwo.text = String(countWins["2"]!)

    }
}

I do not know if it matters but I call the function from func viewDidLoad() , as it is logic I try to load the previous scores when the app is back.
It must be a error of concept. Optional Objects are getting me in trouble all the time. ;)
Thanks in advance

A: You could treat it as a conditional downcast to Int instead of optional:
countWins["1"] = defaults.objectForKey("scoreOne") as? Int
countWins["2"] = defaults.objectForKey("scoreTwo") as? Int

Otherwise if you need optional then add parentheses around it to silence the warning:
countWins["1"] = (defaults.objectForKey("scoreOne") as! Int)
countWins["2"] = (defaults.objectForKey("scoreTwo") as! Int)

A: Don't use optionals in user defaults if the keys don't change
In AppDelegate register the keys with default values, put the code in awakeFromNib() or better in init()
let defaults = NSUserDefaults.standardUserDefaults()
let defaultValues = ["scoreOne" : 0, "scoreTwo" : 0];
defaults.registerDefaults(defaultValues)

If none of the keys has been written to disk yet, user defaults takes the default values otherwise the actual values.
Now you can load the values as non optionals
func loadScores()
{
  let defaults = NSUserDefaults.standardUserDefaults()
  let scoreOne = defaults.integerForKey("scoreOne")
  let scoreTwo = defaults.integerForKey("scoreTwo")
  countWins["1"] = scoreOne
  countWins["2"] = scoreTwo

  scorePlayerOne.text = String(scoreOne)
  scorePlayerTwo.text = String(scoreTwo)
}

No optional bindings - no type casting.

A: You should really be using optional binding. It will get rid of your warnings, and increase the safety of your application.
var countWins:Dictionary = ["1":0,"2":0]

func loadScores() {

    let defaults = NSUserDefaults.standardUserDefaults()

    if let scoreOne = defaults.objectForKey("scoreOne") as? Int,
       let scoreTwo = defaults.objectForKey("scoreTwo") as? Int {

        countWins["1"] = scoreOne
        countWins["2"] = scoreTwo

        scorePlayerOne.text = "\(scoreOne)"
        scorePlayerTwo.text = "\(scoreTwo)"
    }
    else {
        scorePlayerOne.text = "\(0)"
        scorePlayerTwo.text = "\(0)"
    }
}

A: You'll be better off pulling the integervalue straight from userdefaults
countWins["1"] = defaults.integerForKey("scoreOne")
countWins["2"] = defaults.integerForKey("scoreTwo")

redpajama_set_name: RedPajamaStackExchange


(1885-1952) Author. Karen Horney was born in Blankenese, Germany, and died in New York City.
Karen Danielsen was born in Blankenese, Germany, on September 16, 1885.
Karen Horney died in New York City on December 4, 1952.
Karen Horney was interred at Ferncliff Cemetery and Mausoleum in Hartsdale, New York.
Ms. Horney met Oscar Horney and married him in 1909.
In about 1930 Ms. Horney and her daughters moved to the United States and settled in Brooklyn, New York.
Ms. Horney taught at The New School in Manhattan, New York.
Ms. Horney taught at the New York Medical College in Valhalla, New York.


This LM 4 content CD turbo-charges your LM 4 with additional high class acoustic Drum Kits like Funk and Rock plus special Wizoo Chromatic Kits featuring up to 20 dynamic levels and variations per instrument. All sounds were recorded digitally in 24-bit stereo and processed with high-end equipment to assure maximum punch and transparency.
You may buy LM-4 Wizoo Kit Connection - Acoustic Drums or download it on our site. This product was added to our catalog on Wednesday 20 May, 2009.


text:
Bonded Vehicle Title
Bond Requirements
Court Notification
2017 Nevada Legislature
You may apply for a bonded vehicle title if you do not have an existing title or other adequate proof of ownership of a vehicle and you are unable to contact the previous owner for the necessary documentation.
Bonded Title Brand
A vehicle title issued under a bond will contain the disclaimer pictured here and the phrase "Bonded Vehicle Title" across the top.
Ownership can be transferred with a bonded title in Nevada. Ownership transfer outside Nevada may not be allowed. Check to verify transfer is allowed if you plan to buy or sell the vehicle for use in another state.
Any person damaged by the issuance of a bonded certificate of title has a right of action to recover on the surety bond for any breach of its conditions. The bond must remain in force for three years from the date of issuance even if the vehicle is sold.
How to Apply Top ↑
You must be a Nevada resident and the vehicle must be present in Nevada.
Applications are not accepted at DMV Field Services offices.
Bonded vehicle titles are processed by the Title Research Section in Carson City only. Affidavits and forms are available only through Title Research.
Do not purchase a bond prior to receiving documentation from the Department authorizing the bonded title and the bond amount required.
Here are the steps in the process:
Contact the Department's Title Research Section, in Carson City, (775) 684-4810.
Complete parts 1 and 2 of the Affidavit for Bonded Vehicle Title (VP 271). Vehicle inspections may be completed at DMV Full Service offices, by a sworn law enforcement officer or by a business authorized by the DMV in accordance with NRS 482.220.
Send the Affidavit for Bonded Vehicle Title (VP 271) and copies of all ownership documents to the Title Research Section.
The Department will conduct a vehicle theft and brand history search.
The Department will calculate the bond amount based on the original Manufacturer's Retail Price (MRP).
The Department will return the bond amount, listing of required documents and any additional requirements.
Obtain the bond and complete the Vehicle Bond Affidavit (VP 272).
Complete all areas in full, either typed or printed in ink.
Part 4 of the Affidavit for Bonded Vehicle Title (VP 271) must be notarized or witnessed by an authorized DMV employee.
Return all original documentation and fees to the Title Research Section in Carson City.
Title Research Section
Please use traceable mail or a service that tracks your package. You may wish to use certified or registered mail when sending original documents.
The title will be mailed to you once issued or to the lienholder, if any. Dealers and financial institutions are required to use the DMV's Electronic Lien and Title system.
Once the title has been issued, you may register the vehicle. All normal registration requirements apply. If the title is issued on a salvage vehicle, you must follow the salvage vehicle procedures to rebuild the vehicle before it can be registered or sold.
Bond Requirements Top ↑
The bond must be:
Executed by the applicant as principal and by a corporation qualified under the laws of Nevada as surety;
In an amount equal to one and one-half times the value of the vehicle Manufacturer's Suggested Retail Price (MSRP) or 25% of MSRP if a salvage vehicle; and
Conditioned to indemnify any:
Prior owner or lienholder of the vehicle, and his or her successors in interest;
Subsequent purchaser of the vehicle, and his or her successors in interest; or
Person acquiring a security interest in the vehicle, and his or her successors in interest, against any expense, loss or damage because of the issuance of the certificate of title or because of any defect in or undisclosed security interest in the applicant's right or title to the vehicle or the applicant's interest in the vehicle.
The bond that is purchased for the bonded title must be in force for three (3) years even if the vehicle is sold.
Any claim of ownership for the vehicle is referred to the bond company for review and decision. The DMV does not make any designation/decision on claims against the bond. If a claim against a bond is denied, the claimant must proceed via civil court.
Court Notification Top ↑
Bonded titles are an alternative to court rulings on ownership of vehicles. The following is a notification sent to Nevada courts:
Passed and approved during the 2017 Legislative Session, Senate Bill (S.B.) 452 set forth a new bonded titling process for those individuals or entities who are unable to provide the Department of Motor Vehicles (DMV) with sufficient documentation of ownership to issue them a vehicle title. In years past, it was customary for the DMV to receive a petition for a writ of mandamus from a person in these circumstances seeking that the court issue an order declaring them the owner of the vehicle and asking the court to order the DMV to issue them a vehicle title. As a result of the passage of the S.B. 452 bonded title process, there is now a statutory provision authorizing the DMV to issue a bonded vehicle title to a person in these circumstances. The following information highlights newly effectuated policies emanating from the passage of S.B. 452.
Signed into law on June 5, 2017 and becoming effective on July 1, 2018, S.B. 452 made changes to Chapter 482 of Nevada Revised Statute (codified as NRS 482.2605). As written, S.B. 452 provides the DMV with the statutory authority necessary to issue a new "bonded" certificate of title in situations wherein the constructive owner of a vehicle is unable to satisfactorily demonstrate to the DMV they possess legal ownership of a vehicle. Previously, the DMV required a court order before it would issue a vehicle title. However, this new streamlined process, is an optional service and means of acquiring ownership documents directly from the DMV.
Those seeking a bonded title must be residents of Nevada; in addition, the vehicle must also be located within the borders of the state. The amount required to bond is based on one-and-a-half times the original Manufacturer's Suggested Retail Price. Bonded titles issued in connection with this process, carry a brand indicating the vehicle has a bond associated with the ownership interest. Once executed, the bond is required to remain in force for a period of three years. Upon successful completion of the waiting period, the brand and bond requirements will be lifted and a new title, without the brand, may then be requested.
It's important to note, subsequent transfers of ownership during the bonding period may prove restrictive. Should a claim be filed against the bond, all such claims will be referred to the respective bonding company for a review and decision. The DMV does not hold the bond and the DMV will not make any designation and/or decisions regarding claims against a bond.
Bonded vehicle title transactions cannot be processed by the DMV's field service locations; however, transactions can be facilitated by the DMV's Title Research Section in Carson City. Representatives from the Title Research Section are available Monday through Friday, 8 AM to 5 PM and may be reached at (775) 684-4810.

redpajama_set_name: RedPajamaCommonCrawl


ATX Armory low profile hand stop for MLOK handguards. Machined from billet 6061 aluminum and hard coat anodized. Includes MLOK mounting hardware.
ATX Armory RSD Angled Fore Grip for MLOK handguards. Provides exceptional weapon stability and has a machine textured barricade stop. Machined from billet 6061 aluminum and hard coat anodized. Includes MLOK mounting hardware.


Cave sent up the official Japanese website for its new Xbox 360 side-scroller Mushihimesama HD today. The game will be available in regular and limited editions with the limited edition being accompanied by a soundtrack and a special case jacket. Either version will include a special download code for the "Cave Festival" version of the game and the game will include at least three unique modes: beginner mode, high resolution visual mode, and arranged version mode. The Japanese release date for the currently Xbox 360 exclusive Mushihimesama HD is May 27th. Cave had success with the localization of DeathSmiles so perhaps this game will reach North America.


Startup SEO and Digital Marketing Services Company/Agency | Best Digital Marketing and SEO Services Company Hyderabad, Vijayawada and Visakhapatnam - Siri Digital Media Inc.
Siri Digital Media Inc – We are Leading SEO and Digital Marketing Services and Solutions Company/Agency for Startup Business from India. We Provide Global range International SEO and Digital Marketing Services for Startups, Small, Medium and Large Business(SMB's). Our Expanded Best SEO and Digital marketing Services that not only we serve for Startups and as well as SME's As well Our motive is to help the Startups to grow up in the Market with our Brand New Affordable Startup SEO Services to compete with in the Market as a Startup Business or Company in the Targeted Segment Market.
We provide Cheap and Best Affordable Quality and Ethical Startup SEO and Digital Marketing Services help to expand the Brand and Market Value in the targeted Industry. We are best Online Digital Marketing Services Company/Agency providing SEO and Digital Marketing Services for Startups.
Those who are looking into grow up online for their business with a passion and vision to achieve huge rate of success with in their competing Market. Siri Digital Media Inc – We are the perfect solution with Providing Genuine SEO and Digital Marketing Services for Startups. Our Marketing Strategy and Planning for Businesses in the Aspect of SEO and Digital Marketing Services Startups will make you on the Top Position for the Search and Keeps you at First on results and Rankings.
So Why are you waiting just make a Decision and Start your Journey into a Successive World with our Startup SEO and Digital Marketing Services. Let's make a path to Success Online Together with a Collaborating long lasting Journey.


text:
package com.ibm.liberty.starter.service.persistence.api.v1.it;

import static org.junit.Assert.assertTrue;

import javax.ws.rs.client.Client;
import javax.ws.rs.client.ClientBuilder;
import javax.ws.rs.client.Invocation;
import javax.ws.rs.client.WebTarget;
import javax.ws.rs.core.Response;

import com.fasterxml.jackson.databind.ObjectMapper;

public class EndpointTest {

	//use this to give the REST endpoint a chance to come up after the server has reported it's started
	public void checkAvailability(String endpoint) {
		String ep = getEndPoint(endpoint);
		for(int x = 0; x < 3; x++) {
			Response response = null;
	        try {
		        response = sendRequest(ep, "GET");
		        if(response.getStatus() == 200) {
		        	return;
		        }
	        } finally {
        		if(response != null) {
        			response.close();
        		}
	        }
	        try {
				Thread.sleep(3000);
			} catch (InterruptedException e) {
				//just exit
			}
		}
	}

	private String getEndPoint(String endpoint) {
		String port = System.getProperty("liberty.test.port");
        String war = System.getProperty("war.name");
        return "http://localhost:" + port + "/" + war + endpoint;
	}

    @SuppressWarnings("unchecked")
	public <T> T testEndpoint(String endpoint, Class<?> entity) throws Exception {
        String url = getEndPoint(endpoint);
        System.out.println("Testing " + url);
        Response response = null;
        try {
	        response = sendRequest(url, "GET");
	        int responseCode = response.getStatus();
	        assertTrue("Incorrect response code for " + url + ": " + responseCode,
	                   responseCode == 200);
	        String json = response.readEntity(String.class);
	        ObjectMapper mapper = new ObjectMapper();
	       return (T) mapper.readValue(json, entity);
        } finally {
        	if(response != null) {
        		response.close();
        	}
        }
    }

    public Response sendRequest(String url, String requestType) {
        Client client = ClientBuilder.newClient();
        System.out.println("Testing " + url);
        WebTarget target = client.target(url);
        Invocation.Builder invoBuild = target.request();
        Response response = invoBuild.build(requestType).invoke();
        return response;
    }
}

redpajama_set_name: RedPajamaGithub


The Imahot -- the Jewish matriarchs -- and other prominent holy women make up the Prophetesses of the Hebrew Bible.
Wives and mothers, most of them, the joy and sorrow of their lives call out to modern readers. We'll meet each of them individually in future postings.
I love this site. Your research is awesome!
Why is Eve considered a prophetess? What did you find in your research?
I appreciate the feedback, so thanks!
Eve is honored as a prophetess by our liberal application of the term because 1) she is the Mother of All Living, and 2) because she stands as a Type of Mary, or as a messianic forerunner. There are religious traditions that honor her and respect her for those reasons, and because she taught her children about reverencing G-d.


text:
Home / Clarinet / 8 Best Professional Clarinets 2023, Individual Models & Top Brands Compared
Clarinet | Music Instruments And Tools
Music Industry How To is supported by readers. When you buy via a link on our site, we'll possibly earn an affiliate commission at no additional cost to you.
As a professional clarinet player, you should be prepared to spend more on a pro level instrument.
After all, you may already have a clarinet or two that has served you well to this point. Taking it to the next level means being willing to invest more in your passion.
In this guide, we'll compare individual models and top brands. Let's start with a few pro level instruments worth looking at.
Yamaha YCL-CSVR Series Professional Bb Clarinet
Buffet Crampon Prestige RC Professional Bb Clarinet
Buffet Crampon Tradition Professional Bb Clarinet With Nickel-Plated Keys
Yamaha YCL-650 Bb Clarinet
Buffet Crampon R13 Green Line Professional Bb Clarinet With Nickel Plated Keys (Standard)
Backun Beta Bb Clarinet Silver Keys
Yamaha YCL-450 Clarinet With Nickel Keys
Yamaha YCL-255 Standard Bb Clarinet
What Should I Look For In A Professional Clarinet?
Quality Parts & Manufacturing
Nice Appearance
What Exactly Is A Professional Level Clarinet?
What Types Of Clarinets Are There?
What Type Of Clarinet Should I Buy?
Does Price Matter?
What Are The Best Clarinet Brands?
Backun
Patricola
Honorary Mentions
Best Professional Clarinets, Conclusion
The Yamaha YCL-CSVR clarinet features a select grenadilla wood body, barrel and bell, poly-cylindrical bore, silver-plated keys and rings and hand-tapered, undercut toneholes.
This is a simple, basic, quality clarinet, making it a great choice for beginners all the way up to experienced professionals.
This is an instrument you can play however you want to play to achieve the tones you want to achieve without having to make any adjustments.
That's good news, because with some clarinets, you must wrestle it to the ground to get the sound you want.
There is something to be said for achieving that level of artistry, but all things being equal, it's nice to have an instrument that responds to the player.
The manufacturing quality is also consistent, so you won't have to play multiple CSVR instruments to find the right one.
It's a sturdy instrument that should last you for a long time to come.
There is always a price on quality, but the Yamaha is a superb instrument that won't disappoint.
As you can guess by the name, the Prestige RC is a professional clarinet and is one of the top models in the RC bore family.
It comes with 18 silver-plated keys and six rings, nickel silver keywork, pre-plated in copper. It has fine-tuned silver-plated, cold power forged rods and screws in stainless steel. The rings help prevent cracking.
It's made with carefully chosen grenadilla wood for its acoustic qualities as well as appearance.
This easy and fun to play clarinet has incredible warmth, darkness and thickness that some players will find particularly appealing.
The Buffet Crampon is a fantastic instrument with great tone.
The Buffet Crampon Tradition has a pure and rich sound. It has a vocal-like quality in the higher register and roundness across its tonal spectrum.
It's evenly intonated in pitch and sound, which means making your playing sound good is effortless. The design makes it easy to play and requires less force on behalf of the player.
Buffet Crampon has a wide range of fantastic clarinets, and this model is no exception. In a way, the Tradition is the meeting place of past innovations with other Buffet models.
It comes with carefully selected, natural grenadilla wood, a poly-cylindrical bore, 19 keys and six rings and adjustable thumb rest.
There are plenty of skeptics and based on the price range but that's hardly surprising.
If you've settled on a Buffet Crampon, then compare this one against the others mentioned on this list and find the one that's right for you. It may be the Tradition, or it may be another model.
Either way, there's no denying that this is a great instrument.
The YCL-650 is an intermediate-professional grade clarinet that comes with a grenadilla wood body and silver-plated key work. The natural finish makes it an attractive instrument too.
The cylindrical bore design makes it free blowing and it has precise intonation with a responsive and consistent tone. To me, it has a clear, full, beautiful and whimsical tone.
This may have something to do with the bell design, which features a resonance chamber.
This lightweight clarinet comes with a Yamaha 4C clarinet mouthpiece, case and Yamaha care accessories.
The YCL-650 is a popular clarinet – you may come across it in school orchestras, wind bands, orchestra pits, big bands and more.
This Yamaha is a bargain. The woods may not be seasoned, but it's great for the price. Worth a look.
The Buffet Crampon R13 can withstand extreme temperature and humidity changes and will not crack.
That might have something to do with its 95% grenadilla wood and 5% polycarbonate and epoxy resin body. It still features the same level of finishing as wooden clarinets.
The hand-burnished bore helps with intonation and centers the tone. It also has warmth and great projection.
The Green Line, in case you're wondering, is Buffet Crampon's eco-friendly line. So, if you're environmentally conscious, you might be inclined to check this one out.
It should be noted that this is an expensive clarinet, and if you aren't serious about playing, this one might not be for you. The Green Line also costs more than a standard R13.
The Buffet Crampon is essentially the clarinet all other clarinets were based on so it's a solid choice for professionals.
Made with premium aged grenadilla wood, the Backun Beta is considered an intermediate level instrument.
The Beta has silver ergonomic keywork and synthetic pads, which helps with longevity. It's free blowing, comfortable and easy to play.
It has a nice, round sound to it making it great for any musical setting.
It's a little on the expensive side for an intermediate clarinet but the quality in craftsmanship is there. I'd suggest having a look at the Backun to decide for yourself.
Another superb entry via Yamaha, the YCL-450 would be considered an intermediate level instrument. But pros on a budget might consider it a worthy proposition and that's why it's on this list.
Overall, it sounds and responds great. The bell and barrel shape offer precise intonation and projection at the lower register, and it has a bright, full tone. It has good projection too, especially in the lower register.
Made of grenadilla wood, the YCL-450 is a joy to play.
This instrument has great reviews, and most buyers seem completely satisfied with it.
So, the YCL-450 should be added to your shortlist.
Modeled after professional Yamaha clarinets, the YCL-255 is a good quality instrument for those who can't afford to spend several thousand dollars on a clarinet.
This instrument is well-made and easy to play. It comes with a 4C mouthpiece, which is great for beginners. It's also lightweight and feels just like a pro level instrument.
Overall, it has a full, warm tone but is lacking some of that clarity you'd get with a more expensive instrument. But it sounds amazing for the price point.
And, that's also not surprising considering it's made of plastic. But that means it requires less care and maintenance.
The YCL-255 comes with an adjustable thumb rest and a belt ring.
This is an incredibly practical instrument for live performance because it's so easy to play.
Great for students, pros and teachers alike, the Yamaha is worth a look if you're on a tighter budget.
As a professional or someone advancing from intermediate to pro, you probably have a good sense of what you like in a clarinet already.
Your instincts and experience should serve you well in determining what clarinet to buy.
With that in mind, here are a few criteria worth paying attention to.
There are many elements that make up what we might qualify as good sound, including tone, consistency, projection and intonation.
Some clarinets offer a warm, thick, full tone. Others give you a cutting, clear tone. Some will even give you all the above.
As well, some instruments are consistent across their entire tonal spectrum. Others are more inconsistent regardless of your technique.
And, we can't forget that different players have different ways of playing and different preferences for what they like to hear from their clarinet.
I can't tell you what good sound is. I know what I like but that may not be what you like.
So, if you're trying to find a clarinet with a great tone, check out YouTube demos and reviews. See if you can find a clarinet that satisfies your ears.
Being in complete control of your instrument is a good feeling.
That generally comes with practice and experience. But that doesn't mean some clarinets don't play better than others, and it's worth exploring your options before you commit.
The more experience you have, the better you'll be able to tell whether a specific instrument suits you, your fingers and playing style.
Generally, there is no need to compromise here. You can find an instrument that feels great to you.
If you can borrow or rent a few clarinets and try them out, that's ideal. This option isn't always available, so it may come down to research.
But it's fair to say that, at this price point, most instruments should meet a baseline standard.
Not all clarinets are created equal. Even two clarinets made up of the same materials may not be on par, depending on the manufacturing process and attention to detail.
You certainly do get what you pay for, but clarinets aren't all about price. Build quality is what determines many important factors, like sound, durability and ease of use.
If you're going to be playing a lot, it's worth finding a sturdy instrument, though durability isn't always the barometer for a quality instrument.
Instruments should always be treated with care regardless, and the more expensive it is, the more likely you are to handle it with care.
Again, we can lean on demos and online reviews for a sense of which instruments are created with care and which aren't.
At the professional level, however, most instruments are of a high quality.
Esthetics aren't everything. But you might end up spending several thousand dollars on your professional level clarinet. That being the case, it's preferable to have an instrument that looks good too.
We'll take a closer look at a few of the top clarinet brands a little later but it's safe to say they all create instruments that look a little different. It depends on the materials it's made of too.
So, it's entirely possible you'll end up buying based on which brand appeals to you most. Or, at the very least, you might consider it a factor.
Generally, it's a clarinet made of grenadilla or rosewood as opposed to plastic. But some professional grade clarinets are made with ABS plastic. The difference in tone is noticeable.
The wood selection has to do with resonance and tone. So, it makes sense that even the best quality plastic usually can't compete, even though it can produce a nice tone that rivals wooden instruments.
The main advantage of a plastic instrument is that it doesn't require the level of care and maintenance a wooden instrument does.
Changes in humidity and temperature can affect wood, and that is the case with any instrument made of wood.
From a broader perspective there are effectively five types of clarinets. But that doesn't mean that's all there is.
Some of the most common clarinets are the Bb, Ab and Eb soprano clarinets and the contra-alto and contra-bass in the bass clarinet category.
Among these, Bb and bass clarinets are the most popular, but professionals are known to use multiple instruments depending on the type of performance they're playing.
A and Eb clarinets are more common at the professional level as they can be more challenging to play.
You may know all this already, but just in case, it's worth reviewing.
The clarinets featured on this list are all Bb.
Other clarinets, like the Ab and Eb clarinets sometimes carry a higher price tag than their counterparts and are generally considered harder to play.
The bass family of clarinets, as you can imagine, are designed for playing harmony or holding down the rhythmic pulse in whatever situation it's played in.
Bass clarinets sound a lot lower that Bb clarinets, if that wasn't already obvious.
But that doesn't mean more complex pieces aren't played on bass clarinets because they certainly are. I've seen videos of people playing the "Flight of the Bumblebee" on a bass clarinet.
Since pros often have multiple clarinets, you might be looking to fill a gap in your collection. Or, you might be looking for a better clarinet than the one you already have.
Ultimately, I can't tell you want clarinet you should buy. If in doubt, ask your band leader, conductor or band.
Price certainly matters to the extent that your budget matters.
If you don't have a lot of money to spend on an instrument, you should stay within your budget and not go into debt in pursuit of your passion.
But when it comes to clarinets, price isn't everything. The materials and quality of construction is what matters most.
So, it's not all about how much you spend on the instrument, because it is possible to find a quality clarinet for less.
As with cars, computer monitors or anything else, sometimes you pay a little more for the brand name. That's not wrong – just something to be mindful of.
There is a finite number of reputable clarinet brands out there.
I'm not saying there are an infinite selection of makers for other instruments, but the clarinet is not as popular as an instrument like the guitar.
So, it stands to reason that there wouldn't be as many companies competing in this space.
You can see that our list is primarily dominated by brands like Yamaha and Buffet Crampon, which have clarinet manufacturing dialed in.
Since our focus here is professional grade instruments, we'll look at the best manufacturers of pro level clarinets.
Here are the best clarinet brands.
Yamaha is considered one of the best clarinet brands out there and is trusted among a wide range of instrumentalists.
They offer clarinets for every level of player and even their beginner level instruments are quality.
Yamaha instruments are generally durable, making them great for students and even professionals who play out often.
That level of quality, consistency and attention to detail usually comes at a price, and even their beginner level clarinets aren't necessarily cheap.
But that means even their cheaper clarinets can be great for pros.
So, as you hunt for the ideal clarinet, Yamaha should certainly be on your radar.
Buffet Crampon is a top-rated clarinet brand and they offer one of the best beginner clarinets on the market.
Their beginner models are lightweight, easy to use, durable and sound great. But as with Yamaha, even at the beginner level you will pay more.
Intermediate Buffet Crampons also offer a great sound and are high quality. But they are pricey and less durable.
And, at the pro level, they are sturdier and project well. But they generally don't allow for much customization, and again, the price tag they carry can be high.
But the idea that you get what you pay for carries some weight, and professionals should certainly consider Buffet Crampon clarinets.
Canadian manufacturer Backun offers top of the line clarinets and even the uninitiated are sometimes wowed by their appearance, quality and build.
Not only do their products look good, professionals around the world love using them too.
If you're not ready to invest in one of their professional or custom level instruments, you'll be glad to know they have a selection of beginner and intermediate clarinets too.
The Beta mentioned in this guide is more on the affordable end of the spectrum, with their custom level instruments reaching the five-figure range.
For those looking for the Lamborghini of the clarinet world, you'll want to check out Backun.
Henri Selmer Paris specializes in top shelf saxophones and clarinets. Unsurprisingly, their instruments come with a higher price tag.
It's apparent that their instruments are of a high quality and their attention to detail and precision is astounding.
As with Backun, investing in a Henri Selmer Paris is more like committing to the craft of playing clarinet as opposed to picking it up as a hobby.
Professionals should certainly have a look at their offerings and check out online reviews and videos for more information.
Patricola instruments carry a high price tag.
First and foremost, they are amazing to look at. And, they sound good and are a wonder to play too.
There are skeptics of Patricola, citing that while European players are using them while US players are not. I can't confirm or deny that and that shouldn't necessarily be a factor in your buying decision.
What I can say is that Patricola players seem to love their instruments – even those who upgraded from a Buffet Crampon.
I can't tell you one way or another, but as a professional player looking for a new clarinet, I would be inclined to check out Patricola instruments too.
Brands like Rossi, Fox, Horwath, Eaton, Wurlitzer, Hammersmith and others also tend to come up in the discussion concerning professional level clarinets.
If you want to do some deeper digging, start there.
There are also other brands making beginner and intermediate level clarinets like Vento, Roy Benson, Nuvo, Jean Paul USA and others.
If you're curious, go check these out for yourself. You might come across an instrument or two that strikes your fancy.
In general, however, the brands mentioned earlier are among the best and have more clarinets suited to professional players.
Take your time and have fun finding your perfect instrument.
There's no need to rush the process and since you'll be spending a pretty penny on a pro level clarinet, you may as well be patient, do your research and shop around.
Finding your ideal clarinet should be a joyful process. Once you've found "the one", you're going to have a lot of fun practicing and playing out.
How To Play Piano With Both Hands At The Same Time
10 Best Classical Guitars 2023, Compared And Reviewed So You Don't Waste Money
9 Best Tenor Saxophone Reeds 2023, Get A Great Sound With These
While the saxophone reed is just a small part of the saxophone, it has huge effect on the sound. Every player knows that when you have a reed that feels just right your tone and playing get better. Choosing the right reed for your saxophone, skill level, and playing style is essential. Players will go…
Read More 9 Best Tenor Saxophone Reeds 2023, Get A Great Sound With TheseContinue
7 Best Drumming Shoes 2023
ByBrett Clur Last updated on January 1, 2023
With your feet being so involved when you play the drums, it's vital to have a good pair of shoes that feel comfortable when playing. Some shoes are incredibly restricting, while others will feel like a breeze. It's good to know which shoes work the best so that you can put those on whenever you…
Read More 7 Best Drumming Shoes 2023Continue
10 Best Electric Guitar Strings As Of 2023 & What To Look For When Buying
Guitar strings. Various known and respected brands, such as Gibson and Fender, produce strings with a variety of different materials and gauges. Some guitarists say, "strings are all the same." But those who say that clearly haven't tried many different kinds. Some strings have a brighter, twangier sound. Others are more robust and last longer….
Read More 10 Best Electric Guitar Strings As Of 2023 & What To Look For When BuyingContinue
3 Best Boss Guitar Wireless Systems 2023
ByAlexander J Hastedt Last updated on January 1, 2023
Playing the guitar on stage can be a laborious process, particularly when it comes to setting up your gear. Cables can prove to be quite the limitation. This is especially true if you're the kind of guitarist that likes to move around on stage. You could very well end up wrapped inside of a tangled…
Read More 3 Best Boss Guitar Wireless Systems 2023Continue
11 Best Telecaster Pickups 2023 Compared [Guide With Full Specs]
Although there are many components you can swap out on your guitar that will have a noticeable effect on its tone and playability, none are quite as important as pickups. Pickups have a near direct relationship to the tone that comes out of your guitar. This doesn't mean that your Tele will sound like an…
Read More 11 Best Telecaster Pickups 2023 Compared [Guide With Full Specs]Continue
11 Best Quiet Drum Sets 2023; Get Silent Practice In With These Kits
Drums too loud? Scared of bugging your neighbors? Can't stand listening to your wild child practice? Whatever the situation, the if you've experienced the pain of a loud drumkit, you understand the situation well. If this is a problem you're looking to solve, it may be time to consider a quiet drum set. In this…
Read More 11 Best Quiet Drum Sets 2023; Get Silent Practice In With These KitsContinue


text:
Tag Archives: Sasha Regan
Tom Brown's Schooldays
Union Theatre
January 9, 2020 ReviewsAdam Braham, Alex Kirstukas, Alex McKeon, Ben Bull, Craig Glenday, Hudson Brown, Hugh Tappin, Jack Donald, Jacob Seelochan, Joe Goodhead, Joseph O'Gorman, Maison Kelley, Mark Senior, Mikko Juan, Oliver Humphries, Penn O'Gara, Phil Willmott Company, Phil Wilmott, Ralph Warman, Rebecca Crankshaw, Reuben Speed, Robert Hughes, Sam James Page, Sasha Regan, Stephen Louis, Thomas Hughes, Toby Burbidge, Tom Brown's Schooldays, Union Theatrethespyinthestalls
Reviewed – 7th January 2020
"a floundering production that simply doesn't know what it is"
Tom Brown's School Days is a semi-autobiographical novel by Thomas Hughes, first published in 1857. This production is the latest in a long line of adaptations, and director Phil Wilmott has chosen to set it in WWII, presumably to shoehorn it into the Essential Classics season at the Union, which this year takes this war as its theme. The idea of the season, to quote the programme notes, is to present work 'in which great writers of the past reflect on the issues we face today'. This seems a stretch for this particular piece. For starters, Hughes can in no way be described as a great writer, and secondly, the script that has been put together by the company (there is no accredited playwright) is thin and uninspiring; devoid of any intellectual or emotional gravitas. At its best it is well-worn pastiche, and at its worst a paeon to all that is wrong with British public school culture.
The plot (such as it is) is a simple one. A new boy – Tom Brown – joins Rugby School at a time when many of the masters are absent, serving in the war, and the old Head has come back from retirement. This Head – Dr. Arnold – wants to eradicate bullying in the school and produce boys who are fit to be the new generation of leaders of the country. Tom and his fellows face down the bullies, and many of them go on to serve in the same squadron, under their former Head Boy. Lest we forget, the programme notes helpfully remind us that these are the 'upper class young men who'd go on to lead the armed forces to victory'. There is one woman in the play, the resourceful working class cook, who cheerfully helps our boys out when they use their fathers' money to fund black market feasts for one another, and takes being called a 'stupid woman' by our hero on the chin. In Britain 2020, after the most divisive election there has been in decades, and one in which 'the vast majority of the British people bewilderingly voted to continue to be governed by upper class millionaires' (programme notes again), the uncritical way in which this story is presented leaves a deeply unpleasant taste in the mouth.
This is a floundering production that simply doesn't know what it is. The staging – endless and bizarre use of direct address, and plenty of choreographed stage pictures – is pure musical theatre, but it isn't a musical. And yet…. There are hymns of course, fitting the Rugby setting, but then there are two extraordinary and ill-judged bursts of song which tie in with neither plot nor period: a Jerry Lee Lewis style piano number, and a plaintive guitar solo. There are also jarring moments of melodramatic piano underscore throughout. Reuben Speed's set looks good, and is well-designed for the space and Penn O'Gara's period costumes also fit the bill. Unfortunately, the performances are uniformly flat and disconnected. Press Night stumbles aside, which are to be expected and are in no way problematic, this was a production in which not a single actor shone. In the rare high-stakes moments, there was simply no emotional connection in the performances. The words never took flight, and as such, the audience had no investment in the characters whatsoever. This was a thoroughly forgettable evening. Would that the stewardship of Boris and his chums could be similarly consigned to history's wastepaper basket without consequence.
Reviewed by Rebecca Crankshaw
Photography by Mark Senior
Union Theatre until 2nd February
Last ten shows reviewed at this venue:
Midnight | ★★★★★ | September 2018
Brass | ★★★★ | November 2018
Striking 12 | ★★★★ | December 2018
An Enemy of the People | ★★ | January 2019
Can-Can! | ★★★★ | February 2019
Othello | ★★★★ | March 2019
Elegies For Angels, Punks And Raging Queens | ★★★ | May 2019
Daphne, Tommy, The Colonel And Phil | ★ | July 2019
Showtune | ★★★★ | August 2019
Gentlemen Prefer Blondes | ★★★★ | October 2019
Click here to see our most recent reviews
October 9, 2019 ReviewsAaron Bannister-Davies, Abigayle Honeywill, Adam Braham, Anita Loos, Arran Bell, Ashlee Young, Eleanor Lakin, Esme Bacalla-Hayes, Florence Beaumont, Freddie King, Gentlemen Prefer Blondes, George Lennan, Henry Brennan, Jasmine Davis, Jo Bird, Joseph Fields, Jule Styne, Justin Williams, Leo Robin, Lewis Rimmer, Liam Dean, Maison Kelley, Maria Mosquera, Mark Senior, Miriam Sallon, Patrick Cook, Penn O'Gara, Sasha Regan, Stephen Loriot, Tom Murphy, Union Theatre, Virge Gilchrist, Zak Nemorinthespyinthestalls
Reviewed – 8th October 2019
"a spectacularly over-the-top production and a monumentally good time"
Whilst originally a Broadway show (based on the novel by Anita Loos) starring Carol Channing, it's Marilyn Monroe and Jane Russell's killer pairing in the iconic 1953 film adaptation that's kept this story live and kicking in the musical canon. Even if you haven't seen it, you're sure to be familiar with the glorious fuchsia-scarlet clash in Miss Monroe's absurdly decadent number, 'Diamonds are a Girl's Best Friend'. Much like most of Marilyn's back-catalogue, the play's plot isn't quite besides the point, but it's third to the big showstopper numbers, and whoever has the daunting task of filling her inimitable shoes.
Lorelai (Abigayle Honeywill), a small town girl with a penchant for diamonds, has her eye set on a sugar daddy to provide her a life-time supply of the sparkling little gems. When her deep-pocketed fiancé (Aaron Bannister-Davies) catches wind of her sordid past, she feels certain that he'll break off their engagement, so she immediately goes in search of a wealthy replacement, with the help of her friend and 'chaperone', Dorothy (Eleanor Lakin).
Honeywill is a perfect Marilyn type: white blonde, strikingly beautiful and a small hip wag away from charming most anyone out of their life savings. Presumably, though, she doesn't want to be accused of merely playing Marylin rather than the character herself, so in an act of defiance she's taken on this Lina Lamont-type nasal squeal. Whilst it proves comic at times, it's not sustainable, particularly when singing. Honeywill has a beautiful singing voice and she can't resist giving it her all, but she ends up sounding schizophrenic, swapping between a bold, sometimes husky tone to an insufferable screech, and back again.
The principals are all perfectly cast. Lakin's Dorothy is brilliantly mocking and tongue-in-cheek, and Freddie King, playing Henry Spofford, finds an endearing balance between being charmingly artless and just plain charming. The chorus is brimming with triple threats, and it seems they've been as carefully cast as the main characters.
With the amazing Sasha Regan once again directing, the production is quite spectacular. With such a small stage, and the accompanying piano (Henry Brennan) and drums taking up a good chunk of it, it seems dangerous to have so many high-kicking, split-leaping, almost gymnastic dance numbers with a cast of eighteen. But choreographer Zak Nemorin seems determined to present the high production value that this show deserves, regardless of whether the drummer gets disturbingly close to getting kicked in the face on several occasions.
Justin Williams has cleverly pared the set right back so at least there are no tables and chairs for the chorus to break their necks on. Instead, a scarlet red carpet runs dramatically down the back wall and all the way to the front, preparing us for the big number we all know and love. Unfortunately, 'Diamonds are a Girl's Best Friend' falls a little short when the time comes. The lighting (Hector Murray), though otherwise beautiful executed, on this occasion blacks out the red back-drop and simultaneously washes out Lorelei's pink gown. The song itself is a little quiet and the only occasion during the entire production when I remember thinking the band could do with a couple of muted trumpets. This is the only disappointing number, and really only because the '53 version is so vivid.
What with the set not providing much atmosphere, the costumes (Penn O'Gara) certainly make up for it, with gorgeous silhouettes aplenty and fringe for days.
There's an amazing amount of songs packed in (music by Jule Styne and lyrics by Leo Robin), and to ensure they're all covered, the plot in the second half gets a little lost. But as I said, no-one's here for a gripping twist, or an emotional think piece. We're here for a spectacularly over-the-top production and a monumentally good time, and 'Gentlemen Prefer Blondes' delivers in spades.
Reviewed by Miriam Sallon
Union Theatre until 26th October
Around the World in Eighty Days | ★★★ | August 2018


The Moonlight Library is open to submissions.
An honest review in our own words.
The source of the copy of the novel is cited at the beginning of every review. We accept no compensation for our reviews.
I take review requests for self-published works ONLY IF they have been professionally edited.
All reviews will be posted on The Moonlight Library, Goodreads, and Booklikes, with automatic updates sent to Facebook, Twitter and Tumblr. I do not post reviews on Amazon but will do so on Barnes and Noble by special request.
Unfortunately I cannot guarantee any kind of time frame. I normally try to post ARC reviews within two weeks of its release, or the week before. Reviews are posted on the blog, Goodreads and Booklikes on the same day or as close to as possible.
I have a strong preference for Young Adult high fantasy told in first person point of view with a strong female protagonist. If it's set in another world with magic, no dragons or elves or wizards in pointy hats, I've either read it or it's on my to-read list. I have a particular affinity for stories about assassins and healers.
or any mash-ups of the previous, so long as it's for Young Adults.
I don't review adult fiction, including erotica, non-fiction, memoirs/biographies, poetry or short stories.
Note: If you would like me to review a sequel, I may need the previous book/s in the series.
We are open to review requests.
If you are an author or publisher that would like to see your book reviewed, please use the contact page to get in touch with your preferred blogger. Please do not tweet or use Facebook or Goodreads to submit review requests.
We would like to stress that we are not a professional reviewers, we are a book bloggers. We read and review books for fun and personal enjoyment and our reviews contain our completely honest thoughts and feelings. While we very rarely rate books 1 star, we have done so in the past and we have written negative reviews. We do not take particular pleasure in criticising somebody's work but we will be honest.
We do not guarantee to review all books sent to us.
We am happy to participate in blog tours and love to host authors for guest posts and interviews.
If you are an author interested in doing an interview or guest post on Young Adult at Heart, we would be happy to host you. However we do ask that you send the book and give us time to read the book before the questions are submitted. Also, please let us know if you are interested in an interview/guest post when you contact us.
The Moonlight Library is a NetGalley Approved Professional Reader.
Returned at least 50 book reviews.
Return rate: at least 80% of approved requests.
The Moonlight Library is an APPROVED Edelweiss reviewer.
The Moonlight library is part of the Australian Young Adult Bloggers network.


The Ricoh Unified Communication System P3500 Video Conferencing System is the complete all in one media system with speaker, microphone and camera. All in a portable hand-held device, the P3500 is a lightweight, A4 sheet size device that allow easy connectivity anywhere. With an HD quality 2MP camera that promises as 720p display with 30fps output rate and 4x the zoom, the Ricoh P3500 offers superb video streaming. Along with wide 125° viewing angle and automatic exposure control and adjustment according to the surrounding light, the P3500 Video Conferencing System offers high performance in a small package. It also supports up to 20 multiple user connections of which 9 simultaneous displays with audio and video support can be entertained. The Ricoh P3500 Video Conferencing System supports scalable video coding for high quality video streaming along with secure data sharing by audio and video encryption. With HDMI in/out connection ports along with USB type A/B ports, wire/wireless LAN, external mic/speaker supports, the P3500 is the exceptional video conferencing tool for businesses. Easy feasibility with Windows and Mac OS, Ricoh's P3500 is the ideal solution for efficient collaborative meetings.


text:
Q: .htaccess rewrite where url basename is same as a directory name I have a directory in my file structure named "finder" and I want to rewrite a url that has finder as the basename.  For example take www.mysite.com/finder.
Here is the rewrite rule I'm trying:
RewriteRule ^finder/?$ /finder/directory/listings.php [NC,L]

Instead of succeeding with a rewrite i'm getting a 404 Page Not Found message.  For what it's worth I have a rewrite rule that is taking this url www.mysite.com/finder/california with this rule...
RewriteRule ^finder/([a-zA-Z0-9+\-]*)/?$ /finder/directory/listings.php?s=$1 [NC,L]

.. and it's working.
I have tried DirectorySlash Off to my .htaccess but that's not working either.  Any clues about what I'm missing?  Thanks.

A: I see two potential troublesome areas:

*

*The htaccess file with this rule cannot be in the finder folder. Make sure it is in the DOCUMENT_ROOT directory.

*There could be an issue with the forward slash in the rewrite.

Tested on Apache 2.2 and 2.4:

*

*RewriteRule ^finder/?$ directory/listings.php [NC,L]

*URL in browser: http://www.example.com/finder

*Redirected to: http://www.example.com/directory/listings.php
Let me know if this works.


text:
Q: How to insert quotation mark in a string containg variables in C# I want to generate a string like the one mentioned below in C# code behind:

The code which I am using right now is shown below:
string url= string.Format("\"~/Online Exam/Question.aspx?id={0}\"", id);
td.Text = "" + id + "";

but I am not able to get the desired output with the above code. please help me out with this.

A: Use
string url= String.Format("~/Online Exam/Question.aspx?id={0}", id);
td.Text = String.Format("{1}", url, id);

or if you care about String.Format() performance (because of culture-specificity):
string url= String.Concat("~/Online Exam/Question.aspx?id=", id);
td.Text = String.Format("{1}", url, id);

Right! Because  doesn't parse ~ as application root, only <asp:HyperLink> does. So
td.Controls.Add(new HyperLink { Text = id, NavigateUrl= url });

A: You can try to set the quotation mark in the last line, like:
string url= string.Format("~/Online Exam/Question.aspx?id={0}", id);
td.Text = "" + id + "";

Makes the code more logical as well, since your variable url is now really containing only the url.
(not tested)


This entry was posted in General News and tagged College of Liberal Arts, hotel at auburn unviersity, writers conference on July 13, 2011 by Wire Eagle.
AUBURN – Auburn University will welcome writers, readers and interested others to its 2011 Writers Conference Oct. 7-8 at The Hotel at Auburn University and Dixon Conference Center. Using "Myth, Memory and the Haunted Muse" as its theme, the conference will lead participants in an exploration of how writers use the idea of "the haunted" to move their characters forward.
Auburn's College of Liberal Arts' Caroline Marshall Draughon Center for the Arts and Humanities and the Department of English will host the conference in partnership with the College of Education's Truman Pierce Institute.