<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE article SYSTEM "http://jats.nlm.nih.gov/archiving/1.2/JATS-archivearticle1.dtd"><article xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:xlink="http://www.w3.org/1999/xlink" dtd-version="1.2" article-type="research-article" xml:lang="en"><?properties open_access?><front><journal-meta><journal-id journal-id-type="publisher-id">236</journal-id><journal-id journal-id-type="doi">10.1007/236.1432-0525</journal-id><journal-title-group><journal-title>Acta Informatica</journal-title><abbrev-journal-title abbrev-type="publisher">Acta Informatica</abbrev-journal-title></journal-title-group><issn pub-type="ppub">0001-5903</issn><issn pub-type="epub">1432-0525</issn><publisher><publisher-name>Springer Berlin Heidelberg</publisher-name><publisher-loc>Berlin/Heidelberg</publisher-loc></publisher></journal-meta><article-meta><article-id pub-id-type="publisher-id">s00236-019-00359-1</article-id><article-id pub-id-type="manuscript">359</article-id><article-id pub-id-type="doi">10.1007/s00236-019-00359-1</article-id><article-categories><subj-group subj-group-type="heading"><subject>Original Article</subject></subj-group></article-categories><title-group><article-title xml:lang="en">Automated formal synthesis of provably safe digital controllers for continuous plants</article-title></title-group><contrib-group><contrib contrib-type="author" id="Au1"><contrib-id contrib-id-type="orcid">http://orcid.org/0000-0002-5627-9093</contrib-id><name><surname>Abate</surname><given-names>Alessandro</given-names></name><xref ref-type="aff" rid="Aff2">2</xref></contrib><contrib contrib-type="author" id="Au2"><contrib-id contrib-id-type="orcid">http://orcid.org/0000-0002-6603-3476</contrib-id><name><surname>Bessa</surname><given-names>Iury</given-names></name><xref ref-type="aff" rid="Aff3">3</xref></contrib><contrib contrib-type="author" id="Au3"><contrib-id contrib-id-type="orcid">http://orcid.org/0000-0002-6235-4272</contrib-id><name><surname>Cordeiro</surname><given-names>Lucas</given-names></name><xref ref-type="aff" rid="Aff4">4</xref></contrib><contrib contrib-type="author" id="Au4"><contrib-id contrib-id-type="orcid">http://orcid.org/0000-0002-9106-934X</contrib-id><name><surname>David</surname><given-names>Cristina</given-names></name><xref ref-type="aff" rid="Aff5">5</xref></contrib><contrib contrib-type="author" id="Au5"><contrib-id contrib-id-type="orcid">http://orcid.org/0000-0003-0300-5598</contrib-id><name><surname>Kesseli</surname><given-names>Pascal</given-names></name><xref ref-type="aff" rid="Aff6">6</xref></contrib><contrib contrib-type="author" id="Au6"><contrib-id contrib-id-type="orcid">http://orcid.org/0000-0002-6681-5283</contrib-id><name><surname>Kroening</surname><given-names>Daniel</given-names></name><xref ref-type="aff" rid="Aff2">2</xref></contrib><contrib contrib-type="author" corresp="yes" id="Au7"><contrib-id contrib-id-type="orcid">http://orcid.org/0000-0001-9032-7661</contrib-id><name><surname>Polgreen</surname><given-names>Elizabeth</given-names></name><xref ref-type="aff" rid="Aff1">1</xref><xref ref-type="corresp" rid="IDs00236019003591_cor7">g</xref></contrib><aff id="Aff1"><label>1</label><institution-wrap><institution-id institution-id-type="GRID">grid.47840.3f</institution-id><institution-id institution-id-type="ISNI">0000 0001 2181 7878</institution-id><institution content-type="org-name">University of California</institution></institution-wrap><addr-line content-type="city">Berkeley</addr-line><country country="US">USA</country></aff><aff id="Aff2"><label>2</label><institution-wrap><institution-id institution-id-type="GRID">grid.4991.5</institution-id><institution-id institution-id-type="ISNI">0000 0004 1936 8948</institution-id><institution content-type="org-division">Department of Computer Science</institution><institution content-type="org-name">University of Oxford</institution></institution-wrap><addr-line content-type="city">Oxford</addr-line><country country="GB">UK</country></aff><aff id="Aff3"><label>3</label><institution-wrap><institution-id institution-id-type="GRID">grid.411181.c</institution-id><institution-id institution-id-type="ISNI">0000 0001 2221 0517</institution-id><institution content-type="org-division">Department of Electricity</institution><institution content-type="org-name">Federal University of Amazonas</institution></institution-wrap><addr-line content-type="city">Manaus</addr-line><country country="BR">Brazil</country></aff><aff id="Aff4"><label>4</label><institution-wrap><institution-id institution-id-type="GRID">grid.5379.8</institution-id><institution-id institution-id-type="ISNI">0000000121662407</institution-id><institution content-type="org-division">Department of Computer Science</institution><institution content-type="org-name">University of Manchester</institution></institution-wrap><addr-line content-type="city">Manchester</addr-line><country country="GB">UK</country></aff><aff id="Aff5"><label>5</label><institution-wrap><institution-id institution-id-type="GRID">grid.5335.0</institution-id><institution-id institution-id-type="ISNI">0000000121885934</institution-id><institution content-type="org-name">University of Cambridge</institution></institution-wrap><addr-line content-type="city">Cambridge</addr-line><country country="GB">UK</country></aff><aff id="Aff6"><label>6</label><institution-wrap><institution content-type="org-name">DiffBlue Ltd</institution></institution-wrap><addr-line content-type="city">Oxford</addr-line><country country="GB">UK</country></aff></contrib-group><author-notes><corresp id="IDs00236019003591_cor7"><label>g</label><email>epolgreen@berkeley.edu</email></corresp></author-notes><pub-date date-type="pub" publication-format="electronic"><day>6</day><month>12</month><year>2019</year></pub-date><pub-date date-type="pub" publication-format="print"><month>4</month><year>2020</year></pub-date><volume>57</volume><issue seq="9">1-2</issue><issue-title>Special Issue on Synthesis </issue-title><fpage>223</fpage><lpage>244</lpage><history><date date-type="registration"><day>25</day><month>11</month><year>2019</year></date><date date-type="received"><day>1</day><month>2</month><year>2019</year></date><date date-type="accepted"><day>25</day><month>11</month><year>2019</year></date><date date-type="online"><day>6</day><month>12</month><year>2019</year></date></history><permissions><copyright-statement>© The Author(s) 2019</copyright-statement><copyright-year>2019</copyright-year><license license-type="open-access" xlink:href="http://creativecommons.org/licenses/by/4.0/"><license-p><bold>Open Access</bold>This article is licensed under a Creative Commons Attribution 4.0 International License, which permits use, sharing, adaptation, distribution and reproduction in any medium or format, as long as you give appropriate credit to the original author(s) and the source, provide a link to the Creative Commons licence, and indicate if changes were made. The images or other third party material in this article are included in the article’s Creative Commons licence, unless indicated otherwise in a credit line to the material. If material is not included in the article’s Creative Commons licence and your intended use is not permitted by statutory regulation or exceeds the permitted use, you will need to obtain permission directly from the copyright holder. To view a copy of this licence, visit http://creativecommons.org/licenses/by/4.0/.</license-p></license></permissions><abstract id="Abs1" xml:lang="en"><title>Abstract</title><p id="Par1">
We present a sound and automated approach to synthesizing safe, digital controllers for physical plants represented as time-invariant models. Models are linear differential equations with inputs, evolving over a continuous state space. The synthesis precisely accounts for the effects of finite-precision arithmetic introduced by the controller. The approach uses counterexample-guided inductive synthesis: an inductive generalization phase produces a controller that is known to stabilize the model but that may not be safe for all initial conditions of the model. Safety is then verified via bounded model checking: if the verification step fails, a counterexample is provided to the inductive generalization, and the process further iterates until a safe controller is obtained. We demonstrate the practical value of this approach by automatically synthesizing safe controllers for physical plant models from the digital control literature.</p></abstract><funding-group><award-group><funding-source><institution-wrap><institution>Engineering and Physical Sciences Research Council</institution><institution-id institution-id-type="doi" vocab="open-funder-registry">http://dx.doi.org/10.13039/501100000266</institution-id></institution-wrap></funding-source><award-id award-type="FundRef grant">EP/J012564/1</award-id><principal-award-recipient><name><surname>Kroening</surname><given-names>Daniel</given-names></name></principal-award-recipient></award-group><award-group><funding-source><institution-wrap><institution>European Research Council</institution><institution-id institution-id-type="doi" vocab="open-funder-registry">http://dx.doi.org/10.13039/501100000781</institution-id></institution-wrap></funding-source><award-id award-type="FundRef grant">280053</award-id><principal-award-recipient><name><surname>Kroening</surname><given-names>Daniel</given-names></name></principal-award-recipient></award-group><award-group><funding-source><institution-wrap><institution>H2020 Future and Emerging Technologies</institution><institution-id institution-id-type="doi" vocab="open-funder-registry">http://dx.doi.org/10.13039/100010664</institution-id></institution-wrap></funding-source><award-id award-type="FundRef grant">280053</award-id><principal-award-recipient><name><surname>Kroening</surname><given-names>Daniel</given-names></name></principal-award-recipient></award-group></funding-group><custom-meta-group><custom-meta><meta-name>publisher-imprint-name</meta-name><meta-value>Springer</meta-value></custom-meta><custom-meta><meta-name>volume-issue-count</meta-name><meta-value>6</meta-value></custom-meta><custom-meta><meta-name>issue-article-count</meta-name><meta-value>11</meta-value></custom-meta><custom-meta><meta-name>issue-toc-levels</meta-name><meta-value>0</meta-value></custom-meta><custom-meta><meta-name>issue-pricelist-year</meta-name><meta-value>2020</meta-value></custom-meta><custom-meta><meta-name>issue-copyright-holder</meta-name><meta-value>Springer-Verlag GmbH Germany, part of Springer Nature</meta-value></custom-meta><custom-meta><meta-name>issue-copyright-year</meta-name><meta-value>2020</meta-value></custom-meta><custom-meta><meta-name>article-contains-esm</meta-name><meta-value>No</meta-value></custom-meta><custom-meta><meta-name>article-numbering-style</meta-name><meta-value>ContentOnly</meta-value></custom-meta><custom-meta><meta-name>article-registration-date-year</meta-name><meta-value>2019</meta-value></custom-meta><custom-meta><meta-name>article-registration-date-month</meta-name><meta-value>11</meta-value></custom-meta><custom-meta><meta-name>article-registration-date-day</meta-name><meta-value>25</meta-value></custom-meta><custom-meta><meta-name>article-toc-levels</meta-name><meta-value>0</meta-value></custom-meta><custom-meta><meta-name>toc-levels</meta-name><meta-value>0</meta-value></custom-meta><custom-meta><meta-name>volume-type</meta-name><meta-value>Regular</meta-value></custom-meta><custom-meta><meta-name>journal-product</meta-name><meta-value>ArchiveJournal</meta-value></custom-meta><custom-meta><meta-name>numbering-style</meta-name><meta-value>ContentOnly</meta-value></custom-meta><custom-meta><meta-name>article-grants-type</meta-name><meta-value>OpenChoice</meta-value></custom-meta><custom-meta><meta-name>metadata-grant</meta-name><meta-value>OpenAccess</meta-value></custom-meta><custom-meta><meta-name>abstract-grant</meta-name><meta-value>OpenAccess</meta-value></custom-meta><custom-meta><meta-name>bodypdf-grant</meta-name><meta-value>OpenAccess</meta-value></custom-meta><custom-meta><meta-name>bodyhtml-grant</meta-name><meta-value>OpenAccess</meta-value></custom-meta><custom-meta><meta-name>bibliography-grant</meta-name><meta-value>OpenAccess</meta-value></custom-meta><custom-meta><meta-name>esm-grant</meta-name><meta-value>OpenAccess</meta-value></custom-meta><custom-meta><meta-name>online-first</meta-name><meta-value>false</meta-value></custom-meta><custom-meta><meta-name>pdf-file-reference</meta-name><meta-value>BodyRef/PDF/236_2019_Article_359.pdf</meta-value></custom-meta><custom-meta><meta-name>pdf-type</meta-name><meta-value>Typeset</meta-value></custom-meta><custom-meta><meta-name>target-type</meta-name><meta-value>OnlinePDF</meta-value></custom-meta><custom-meta><meta-name>issue-online-date-year</meta-name><meta-value>2020</meta-value></custom-meta><custom-meta><meta-name>issue-online-date-month</meta-name><meta-value>3</meta-value></custom-meta><custom-meta><meta-name>issue-online-date-day</meta-name><meta-value>4</meta-value></custom-meta><custom-meta><meta-name>issue-print-date-year</meta-name><meta-value>2020</meta-value></custom-meta><custom-meta><meta-name>issue-print-date-month</meta-name><meta-value>3</meta-value></custom-meta><custom-meta><meta-name>issue-print-date-day</meta-name><meta-value>4</meta-value></custom-meta><custom-meta><meta-name>issue-type</meta-name><meta-value>Combined</meta-value></custom-meta><custom-meta><meta-name>article-type</meta-name><meta-value>OriginalPaper</meta-value></custom-meta><custom-meta><meta-name>journal-subject-primary</meta-name><meta-value>Computer Science</meta-value></custom-meta><custom-meta><meta-name>journal-subject-secondary</meta-name><meta-value>Logics and Meanings of Programs</meta-value></custom-meta><custom-meta><meta-name>journal-subject-secondary</meta-name><meta-value>Computer Systems Organization and Communication Networks</meta-value></custom-meta><custom-meta><meta-name>journal-subject-secondary</meta-name><meta-value>Software Engineering/Programming and Operating Systems</meta-value></custom-meta><custom-meta><meta-name>journal-subject-secondary</meta-name><meta-value>Data Structures and Information Theory</meta-value></custom-meta><custom-meta><meta-name>journal-subject-secondary</meta-name><meta-value>Theory of Computation</meta-value></custom-meta><custom-meta><meta-name>journal-subject-secondary</meta-name><meta-value>Information Systems and Communication Service</meta-value></custom-meta><custom-meta><meta-name>journal-subject-collection</meta-name><meta-value>Computer Science</meta-value></custom-meta><custom-meta><meta-name>open-access</meta-name><meta-value>true</meta-value></custom-meta></custom-meta-group></article-meta></front><body><sec id="Sec1"><title>Introduction</title><p id="Par2">Modern implementations of embedded control systems have proliferated with the availability of low-cost devices that can perform highly non-trivial control tasks, with significant impact in numerous application areas such as process and industrial engineering, high-precision control, automotive and robotics [<xref ref-type="bibr" rid="CR7">7</xref>, <xref ref-type="bibr" rid="CR20">20</xref>]. However, provably correct synthesis of control software for such platforms, needed if certification is in order, is non-trivial even in cases with unsophisticated system dynamics.</p><p id="Par3">In this paper, we examine the case of physical systems (known as ‘plants’ in the control literature) that are mathematically described as linear time invariant (LTI) models, for which the classical synthesis of controllers is well understood. However, the use of digital control architectures adds new challenges caused by artefacts that are specific to digital control, such as the effects of finite-precision arithmetic and quantization errors introduced by A/D and D/A conversion. Given an LTI model, we develop an automatic technique for generating correct-by-design digital controllers that addresses these challenges. Specifically, moving beyond classical literature in digital control [<xref ref-type="bibr" rid="CR7">7</xref>, <xref ref-type="bibr" rid="CR20">20</xref>], we automatically synthesize safe, software-implemented embedded controllers for physical plants.</p><p id="Par4">Our work addresses challenging aspects of control synthesis: we perform automated control synthesis over a model encompassing both a plant exhibiting continuous behavior and a controller operating in discrete time and over a quantized domain. In particular, our model evaluates the effects of the quantizers (A/D and D/A converters), as well as representation errors introduced by the controller working in a finite-precision domain. Our model also accounts for representation errors introduced by our modelling of the plant using finite-precision arithmetic. We reason about specific safety requirements, which are frequently overlooked in conventional feedback control synthesis, but which nevertheless play a key role in safety-critical applications, of clear concern in numerous modern contexts, e.g. autonomy in robotics, avionics, and automotive.</p><p id="Par5">We present a novel approach for the synthesis of digital controllers that makes use of a recently investigated framework known as counterexample-guided inductive synthesis (CEGIS) [<xref ref-type="bibr" rid="CR23">23</xref>, <xref ref-type="bibr" rid="CR43">43</xref>], a technique from formal methods that has recently shown much promise and which we export in this work to a control engineering setup. CEGIS is an iterative process, where each iteration performs inductive generalization based on counterexamples provided by a verification oracle (see Sect. <xref rid="Sec14" ref-type="sec">3.9</xref>). The inductive generalization uses information about a limited number of inputs to compute a candidate solution for the entire range of possible inputs.<fig id="Fig1"><label>Fig. 1</label><caption xml:lang="en"><p>CEGIS with multi-staged verification for digital controller synthesis. We synthesise <italic>K</italic></p></caption><p><graphic specific-use="HTML" mime-subtype="PNG" xlink:href="MediaObjects/236_2019_359_Fig1_HTML.png" id="MO22"/></p></fig></p><p id="Par6">Our approach uses a multi-staged technique, shown in Fig. <xref rid="Fig1" ref-type="fig">1</xref>: it starts by devising a digital controller that stabilizes the plant model while remaining safe for a pre-selected time horizon and a single initial state; then, it verifies an unbounded-time safety requirement by unfolding the model dynamics, considering the full set of initial states, and checking a <italic>completeness threshold</italic> [<xref ref-type="bibr" rid="CR27">27</xref>]: this is the number of stages required to sufficiently unwind the closed-loop model such that the safety boundaries (which are assumed to be a compact set) are not violated for any larger number of iterations, as illustrated in Fig. <xref rid="Fig2" ref-type="fig">2</xref>.<fig id="Fig2"><label>Fig. 2</label><caption xml:lang="en"><p>Completeness threshold for multi-staged verification (quantity <inline-formula id="IEq1"><alternatives><mml:math><mml:msub><mml:mi>T</mml:mi><mml:mi>s</mml:mi></mml:msub></mml:math><tex-math id="IEq1_TeX">\documentclass[12pt]{minimal}
				\usepackage{amsmath}
				\usepackage{wasysym}
				\usepackage{amsfonts}
				\usepackage{amssymb}
				\usepackage{amsbsy}
				\usepackage{mathrsfs}
				\usepackage{upgreek}
				\setlength{\oddsidemargin}{-69pt}
				\begin{document}$$T_s$$\end{document}</tex-math><inline-graphic xlink:href="236_2019_359_Article_IEq1.gif"/></alternatives></inline-formula> is the time discretization step)</p></caption><p><graphic specific-use="HTML" mime-subtype="PNG" xlink:href="MediaObjects/236_2019_359_Fig2_HTML.png" id="MO23"/></p></fig></p><p id="Par7">We provide experimental results showing that we are able to efficiently synthesize safe controllers for a set of intricate physical plant models taken from the digital control literature.</p><p id="Par8">In summary this paper, which is an extension of [<xref ref-type="bibr" rid="CR3">3</xref>], puts forward the following contributions:<list list-type="order"><list-item><p id="Par9">We automatically generate <italic>correct-by-construction</italic> digital controllers using an inductive synthesis approach (CEGIS). The automatically computed state-feedback controllers guarantee the validity of a given safety specification. This objective, unlike existing methods for controller synthesis that rely on transfer function representations, requires to consider a state-space representation of the physical system. Such a representation ensures the validity of the specification over actual traces of the state-space model, alongside the numerical soundness required by the effects of discretisation and finite-precision errors.</p></list-item><list-item><p id="Par10">We present a novel multi-staged approach to synthesizing digital controllers, using an unfolding of the dynamics up to a completeness threshold. We employ bit-precise bounded model checking to account for fixed-point arithmetic used in the implementation of the digital control algorithm, and interval arithmetic to account for the imprecision in the modelling of the plant.</p></list-item><list-item><p id="Par11">A limitation of the work in [<xref ref-type="bibr" rid="CR3">3</xref>], which this contribution extends, is its restriction to fixed-point arithmetic, meaning that fixed-point numbers are employed for the representation of both the plant and the controller, as well as for the operations performed by each of them. Conversely, in the current paper we also make use of floating-point arithmetic.</p></list-item></list></p></sec><sec id="Sec2"><title>Related work</title><sec id="Sec3"><title>CEGIS</title><p id="Par12">Program synthesis is the problem of computing correct-by-design programs from high-level specifications. Algorithms for this task have made substantial progress over recent years, in particular the architecture known as CEGIS, which is a recent approach to inductive synthesis.</p><p id="Par13">Program synthesizers are an ideal fit for the synthesis of digital controllers, since the semantics of programs precisely capture the effects of finite-precision arithmetic. Surprisingly, the control literature has been oblivious to this relevant connection. A relevant exception is [<xref ref-type="bibr" rid="CR40">40</xref>], which employs CEGIS on the synthesis of switching controllers for stabilizing continuous-time plants. This work hinges on and is limited by the capacity of the state-of-the-art SMT solvers to reason over linear arithmetic problems. Since this contribution employs finite switching actions for the digital controller, it avoids problems related to finite-precision arithmetic, but potentially suffers from the state-space explosion. Moreover, in [<xref ref-type="bibr" rid="CR41">41</xref>] the same authors use a CEGIS-based approach for synthesizing continuous-time switching controllers that guarantee <italic>reach-while-stay</italic> properties of closed-loop systems, i.e., properties that specify both a set of goal states and safe states (this specification is also known as constrained reachability). This solution is based on synthesizing control Lyapunov functions for switched systems that yield switching controllers with a guaranteed minimum dwell time in each mode. However, both approaches are unsuitable for the kind of controllers that we seek to synthesize, which are not switching in nature but rather continuous (as further detailed later).</p><p id="Par14">The work in [<xref ref-type="bibr" rid="CR2">2</xref>] synthesizes stabilizing controllers for continuous plants given as transfer functions, by exploiting bit-accurate verification of software-implemented digital controllers [<xref ref-type="bibr" rid="CR9">9</xref>]. While this work also uses CEGIS, the approach is restricted to digital controllers for stable closed-loop systems expressed as transfer function models: this results in a static check on their coefficients. By contrast, in the current paper we consider a state-space representation of the physical system, which requires ensuring the specification over actual traces of the model, alongside the numerical soundness required by the effects of discretisation and the errors related to finite-precision arithmetic.</p><p id="Par15">Furthermore, unlike the approach in [<xref ref-type="bibr" rid="CR2">2</xref>], this work reasons over state-space models. A state-space model has well known advantages over the transfer function representation [<xref ref-type="bibr" rid="CR20">20</xref>], as it allows synthesis of controllers with guarantees on the internal dynamics, e.g., <italic>safety</italic>. Our work indeed focuses on the safety of internal states (which we assume to fully observe), which is by and large overlooked in the standard (digital) control literature, by default focussed on stability/regulation/tracking properties. Moreover, our work integrates an abstraction-refinement (CEGAR) step inside the main CEGIS loop.</p><p id="Par16">Beyond CEGIS-based architectures, there is an important line of research on provably correct control synthesis for dynamical models, which leverages formal abstractions. The approach underpinning tools such as Pessoa [<xref ref-type="bibr" rid="CR32">32</xref>], related extensions [<xref ref-type="bibr" rid="CR4">4</xref>, <xref ref-type="bibr" rid="CR30">30</xref>] and applications [<xref ref-type="bibr" rid="CR51">51</xref>] synthesizes correct-by-design embedded control software by formally abstracting the model to a finite-state machine, and on the formal control synthesis over safety- and reachability-based temporal properties thereon. Whilst in principle this formal abstraction can account for the errors that we can deal with, it is expected to provide a controller of different nature than the one we generate. The obtained finite controller software can then be implemented (refined) over the concrete LTI model. However, relying on state-space discretization, this class of approaches is likely to incur scalability limitations.</p></sec><sec id="Sec4"><title>Discretization effects in control design</title><p id="Par17">Recent results in digital control have focused on separate aspects of discretization, e.g. delayed response [<xref ref-type="bibr" rid="CR17">17</xref>] and finite-precision arithmetic, with the goal either to verify [<xref ref-type="bibr" rid="CR16">16</xref>] the correctness of the implementation or to optimize [<xref ref-type="bibr" rid="CR36">36</xref>] its design.</p><p id="Par18">There are two different problems that arise from finite-precision arithmetic in digital controllers. The first is the error caused by the inability to represent the exact state of the physical system, while the second relates to rounding and saturation errors during mathematical operations. In [<xref ref-type="bibr" rid="CR19">19</xref>], a stability measure based on the error of the digital dynamics ensures that the deviation introduced by finite-precision arithmetic does not lead to instability. Wu et al. [<xref ref-type="bibr" rid="CR50">50</xref>] uses <inline-formula id="IEq2"><alternatives><mml:math><mml:mi>μ</mml:mi></mml:math><tex-math id="IEq2_TeX">\documentclass[12pt]{minimal}
				\usepackage{amsmath}
				\usepackage{wasysym}
				\usepackage{amsfonts}
				\usepackage{amssymb}
				\usepackage{amsbsy}
				\usepackage{mathrsfs}
				\usepackage{upgreek}
				\setlength{\oddsidemargin}{-69pt}
				\begin{document}$$\mu $$\end{document}</tex-math><inline-graphic xlink:href="236_2019_359_Article_IEq2.gif"/></alternatives></inline-formula>-calculus to synthesise directly a digital controller, so that selected parameters result in stable model dynamics. The analyses in [<xref ref-type="bibr" rid="CR42">42</xref>, <xref ref-type="bibr" rid="CR49">49</xref>] rely on an invariant computation on the discrete dynamics using semi-definite programming (SDP): while the former contribution uses a bounded-input and bounded-output (BIBO) notion of stability, the latter employs Lyapunov-based quadratic invariants. In both cases, the SDP solver uses floating-point arithmetic and soundness is checked by bounding the obtained error. An alternative is [<xref ref-type="bibr" rid="CR37">37</xref>], where the verification of given control code is performed against a known model by extracting an LTI model of the code via symbolic execution: to account for rounding errors, upper bounds of their values are introduced in the verification phase. The work in [<xref ref-type="bibr" rid="CR38">38</xref>] introduces invariant sets as a mechanism to bound the effect of quantization error on stabilization. Similarly, [<xref ref-type="bibr" rid="CR29">29</xref>] evaluates the quantization error dynamics and calculates upper and lower bounds for the possible trajectory of the system, up to a finite time. Considering the problem of multi-modal dynamics, [<xref ref-type="bibr" rid="CR25">25</xref>] uses numerical optimization techniques to learn optimal switching logic for hybrid systems. The last three approaches can be placed within the research area known as “hybrid systems theory.” The present contribution distances itself from all these cognate results.</p><p id="Par19">A large body of work exists on evaluating fixed-point errors and bridging the gap between real value and fixed-point values in synthesis in other application areas and using other algorithmic techniques: Genetic programming has been used to minimise the error in synthesised fixed-point programs [<xref ref-type="bibr" rid="CR15">15</xref>]; Smoothed proof search reduces the problem of parameter synthesis under boolean and quantitative objectives to a sequence of optimisation problems [<xref ref-type="bibr" rid="CR12">12</xref>]; Synthesis of optimal fixed-point implementations of floating-point numerical software can be done using testing and induction [<xref ref-type="bibr" rid="CR24">24</xref>]. All of these works present potential future applications for CEGIS in synthesising implementations in fixed-point arithmetic.</p></sec></sec><sec id="Sec5"><title>Preliminaries</title><sec id="Sec6"><title>State-space representation of physical systems</title><p id="Par20">We consider models of physical plants expressed as ordinary differential equations, which we assume to be controllable [<xref ref-type="bibr" rid="CR5">5</xref>]:<disp-formula id="Equ1"><label>1</label><alternatives><mml:math display="block"><mml:mrow><mml:mtable><mml:mtr><mml:mtd columnalign="right"><mml:mrow><mml:mover accent="true"><mml:mi>x</mml:mi><mml:mo>˙</mml:mo></mml:mover><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mi>t</mml:mi><mml:mo stretchy="false">)</mml:mo></mml:mrow><mml:mo>=</mml:mo><mml:mi>A</mml:mi><mml:mi>x</mml:mi><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mi>t</mml:mi><mml:mo stretchy="false">)</mml:mo></mml:mrow><mml:mo>+</mml:mo><mml:mi>B</mml:mi><mml:mi>u</mml:mi><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mi>t</mml:mi><mml:mo stretchy="false">)</mml:mo></mml:mrow><mml:mo>,</mml:mo></mml:mrow></mml:mtd></mml:mtr></mml:mtable></mml:mrow></mml:math><tex-math id="Equ1_TeX">\documentclass[12pt]{minimal}
				\usepackage{amsmath}
				\usepackage{wasysym}
				\usepackage{amsfonts}
				\usepackage{amssymb}
				\usepackage{amsbsy}
				\usepackage{mathrsfs}
				\usepackage{upgreek}
				\setlength{\oddsidemargin}{-69pt}
				\begin{document}$$\begin{aligned} {\dot{x}}(t) = {A}{x}(t)+ {B} {u}(t), \end{aligned}$$\end{document}</tex-math><graphic position="anchor" xlink:href="236_2019_359_Article_Equ1.gif"/></alternatives></disp-formula>where <inline-formula id="IEq3"><alternatives><mml:math><mml:mrow><mml:mi>x</mml:mi><mml:mo>∈</mml:mo><mml:msup><mml:mrow><mml:mi mathvariant="double-struck">R</mml:mi></mml:mrow><mml:mi>n</mml:mi></mml:msup></mml:mrow></mml:math><tex-math id="IEq3_TeX">\documentclass[12pt]{minimal}
				\usepackage{amsmath}
				\usepackage{wasysym}
				\usepackage{amsfonts}
				\usepackage{amssymb}
				\usepackage{amsbsy}
				\usepackage{mathrsfs}
				\usepackage{upgreek}
				\setlength{\oddsidemargin}{-69pt}
				\begin{document}$${x} \in {\mathbb {R}}^n$$\end{document}</tex-math><inline-graphic xlink:href="236_2019_359_Article_IEq3.gif"/></alternatives></inline-formula>, <inline-formula id="IEq4"><alternatives><mml:math><mml:mrow><mml:mi>u</mml:mi><mml:mo>∈</mml:mo><mml:msup><mml:mrow><mml:mi mathvariant="double-struck">R</mml:mi></mml:mrow><mml:mi>p</mml:mi></mml:msup></mml:mrow></mml:math><tex-math id="IEq4_TeX">\documentclass[12pt]{minimal}
				\usepackage{amsmath}
				\usepackage{wasysym}
				\usepackage{amsfonts}
				\usepackage{amssymb}
				\usepackage{amsbsy}
				\usepackage{mathrsfs}
				\usepackage{upgreek}
				\setlength{\oddsidemargin}{-69pt}
				\begin{document}$${u} \in {\mathbb {R}}^p$$\end{document}</tex-math><inline-graphic xlink:href="236_2019_359_Article_IEq4.gif"/></alternatives></inline-formula>, <inline-formula id="IEq5"><alternatives><mml:math><mml:mrow><mml:mi>A</mml:mi><mml:mo>∈</mml:mo><mml:msup><mml:mrow><mml:mi mathvariant="double-struck">R</mml:mi></mml:mrow><mml:mrow><mml:mi>n</mml:mi><mml:mo>×</mml:mo><mml:mi>n</mml:mi></mml:mrow></mml:msup></mml:mrow></mml:math><tex-math id="IEq5_TeX">\documentclass[12pt]{minimal}
				\usepackage{amsmath}
				\usepackage{wasysym}
				\usepackage{amsfonts}
				\usepackage{amssymb}
				\usepackage{amsbsy}
				\usepackage{mathrsfs}
				\usepackage{upgreek}
				\setlength{\oddsidemargin}{-69pt}
				\begin{document}$${A} \in {\mathbb {R}}^{n \times n}$$\end{document}</tex-math><inline-graphic xlink:href="236_2019_359_Article_IEq5.gif"/></alternatives></inline-formula>, <inline-formula id="IEq6"><alternatives><mml:math><mml:mrow><mml:mi>B</mml:mi><mml:mo>∈</mml:mo><mml:msup><mml:mrow><mml:mi mathvariant="double-struck">R</mml:mi></mml:mrow><mml:mrow><mml:mi>n</mml:mi><mml:mo>×</mml:mo><mml:mi>p</mml:mi></mml:mrow></mml:msup></mml:mrow></mml:math><tex-math id="IEq6_TeX">\documentclass[12pt]{minimal}
				\usepackage{amsmath}
				\usepackage{wasysym}
				\usepackage{amsfonts}
				\usepackage{amssymb}
				\usepackage{amsbsy}
				\usepackage{mathrsfs}
				\usepackage{upgreek}
				\setlength{\oddsidemargin}{-69pt}
				\begin{document}$${B} \in {\mathbb {R}}^{n \times p}$$\end{document}</tex-math><inline-graphic xlink:href="236_2019_359_Article_IEq6.gif"/></alternatives></inline-formula>, and <inline-formula id="IEq7"><alternatives><mml:math><mml:mrow><mml:mi>t</mml:mi><mml:mo>∈</mml:mo><mml:msubsup><mml:mi mathvariant="double-struck">R</mml:mi><mml:mn>0</mml:mn><mml:mo>+</mml:mo></mml:msubsup></mml:mrow></mml:math><tex-math id="IEq7_TeX">\documentclass[12pt]{minimal}
				\usepackage{amsmath}
				\usepackage{wasysym}
				\usepackage{amsfonts}
				\usepackage{amssymb}
				\usepackage{amsbsy}
				\usepackage{mathrsfs}
				\usepackage{upgreek}
				\setlength{\oddsidemargin}{-69pt}
				\begin{document}$$t \in {\mathbb {R}}_0^+$$\end{document}</tex-math><inline-graphic xlink:href="236_2019_359_Article_IEq7.gif"/></alternatives></inline-formula> denotes continuous time. We denote with <italic>x</italic>(0) the model initial condition, which can be non-deterministic. We assume full observability of the states of the model, namely the output states correspond with the model variables, which we can thus fully access.</p><p id="Par21">Equation (<xref rid="Equ1" ref-type="disp-formula">1</xref>) is discretized in time [<xref ref-type="bibr" rid="CR33">33</xref>, <xref ref-type="bibr" rid="CR48">48</xref>] with constant sampling intervals, each of duration <inline-formula id="IEq8"><alternatives><mml:math><mml:msub><mml:mi>T</mml:mi><mml:mi>s</mml:mi></mml:msub></mml:math><tex-math id="IEq8_TeX">\documentclass[12pt]{minimal}
				\usepackage{amsmath}
				\usepackage{wasysym}
				\usepackage{amsfonts}
				\usepackage{amssymb}
				\usepackage{amsbsy}
				\usepackage{mathrsfs}
				\usepackage{upgreek}
				\setlength{\oddsidemargin}{-69pt}
				\begin{document}$$T_s$$\end{document}</tex-math><inline-graphic xlink:href="236_2019_359_Article_IEq8.gif"/></alternatives></inline-formula> (the sample time), into the difference equation<disp-formula id="Equ2"><label>2</label><alternatives><mml:math display="block"><mml:mrow><mml:mtable><mml:mtr><mml:mtd columnalign="right"><mml:mrow><mml:msub><mml:mi>x</mml:mi><mml:mrow><mml:mi>k</mml:mi><mml:mo>+</mml:mo><mml:mn>1</mml:mn></mml:mrow></mml:msub><mml:mo>=</mml:mo></mml:mrow></mml:mtd><mml:mtd columnalign="left"><mml:mrow><mml:msub><mml:mi>A</mml:mi><mml:mi>d</mml:mi></mml:msub><mml:msub><mml:mi>x</mml:mi><mml:mi>k</mml:mi></mml:msub><mml:mo>+</mml:mo><mml:msub><mml:mi>B</mml:mi><mml:mi>d</mml:mi></mml:msub><mml:msub><mml:mi>u</mml:mi><mml:mi>k</mml:mi></mml:msub><mml:mo>,</mml:mo></mml:mrow></mml:mtd></mml:mtr></mml:mtable></mml:mrow></mml:math><tex-math id="Equ2_TeX">\documentclass[12pt]{minimal}
				\usepackage{amsmath}
				\usepackage{wasysym}
				\usepackage{amsfonts}
				\usepackage{amssymb}
				\usepackage{amsbsy}
				\usepackage{mathrsfs}
				\usepackage{upgreek}
				\setlength{\oddsidemargin}{-69pt}
				\begin{document}$$\begin{aligned} {x}_{k+1} =&amp;{A}_d {x}_k+ {B}_d {u}_k, \end{aligned}$$\end{document}</tex-math><graphic position="anchor" xlink:href="236_2019_359_Article_Equ2.gif"/></alternatives></disp-formula>where <inline-formula id="IEq9"><alternatives><mml:math><mml:mrow><mml:msub><mml:mi>A</mml:mi><mml:mi>d</mml:mi></mml:msub><mml:mo>=</mml:mo><mml:msup><mml:mi>e</mml:mi><mml:mrow><mml:mi>A</mml:mi><mml:msub><mml:mi>T</mml:mi><mml:mi>s</mml:mi></mml:msub></mml:mrow></mml:msup></mml:mrow></mml:math><tex-math id="IEq9_TeX">\documentclass[12pt]{minimal}
				\usepackage{amsmath}
				\usepackage{wasysym}
				\usepackage{amsfonts}
				\usepackage{amssymb}
				\usepackage{amsbsy}
				\usepackage{mathrsfs}
				\usepackage{upgreek}
				\setlength{\oddsidemargin}{-69pt}
				\begin{document}$${A}_d=e^{{A}T_s}$$\end{document}</tex-math><inline-graphic xlink:href="236_2019_359_Article_IEq9.gif"/></alternatives></inline-formula> and <inline-formula id="IEq10"><alternatives><mml:math><mml:mrow><mml:msub><mml:mi>B</mml:mi><mml:mi>d</mml:mi></mml:msub><mml:mo>=</mml:mo><mml:msubsup><mml:mo>∫</mml:mo><mml:mrow><mml:mi>t</mml:mi><mml:mo>=</mml:mo><mml:mn>0</mml:mn></mml:mrow><mml:msub><mml:mi>T</mml:mi><mml:mi>s</mml:mi></mml:msub></mml:msubsup><mml:msup><mml:mi>e</mml:mi><mml:mrow><mml:mi mathvariant="italic">At</mml:mi></mml:mrow></mml:msup><mml:mi>d</mml:mi><mml:mi>t</mml:mi><mml:mspace width="4pt"/><mml:mi>B</mml:mi></mml:mrow></mml:math><tex-math id="IEq10_TeX">\documentclass[12pt]{minimal}
				\usepackage{amsmath}
				\usepackage{wasysym}
				\usepackage{amsfonts}
				\usepackage{amssymb}
				\usepackage{amsbsy}
				\usepackage{mathrsfs}
				\usepackage{upgreek}
				\setlength{\oddsidemargin}{-69pt}
				\begin{document}$${B}_d = \int _{t = 0}^{T_s} e^{{A} t} dt\ {B}$$\end{document}</tex-math><inline-graphic xlink:href="236_2019_359_Article_IEq10.gif"/></alternatives></inline-formula>, and where <inline-formula id="IEq11"><alternatives><mml:math><mml:mrow><mml:mi>k</mml:mi><mml:mo>∈</mml:mo><mml:mi mathvariant="double-struck">N</mml:mi></mml:mrow></mml:math><tex-math id="IEq11_TeX">\documentclass[12pt]{minimal}
				\usepackage{amsmath}
				\usepackage{wasysym}
				\usepackage{amsfonts}
				\usepackage{amssymb}
				\usepackage{amsbsy}
				\usepackage{mathrsfs}
				\usepackage{upgreek}
				\setlength{\oddsidemargin}{-69pt}
				\begin{document}$$k \in {\mathbb {N}}$$\end{document}</tex-math><inline-graphic xlink:href="236_2019_359_Article_IEq11.gif"/></alternatives></inline-formula> is a discrete counter and <inline-formula id="IEq12"><alternatives><mml:math><mml:mrow><mml:msub><mml:mi>x</mml:mi><mml:mn>0</mml:mn></mml:msub><mml:mo>=</mml:mo><mml:mi>x</mml:mi><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mn>0</mml:mn><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:mrow></mml:math><tex-math id="IEq12_TeX">\documentclass[12pt]{minimal}
				\usepackage{amsmath}
				\usepackage{wasysym}
				\usepackage{amsfonts}
				\usepackage{amssymb}
				\usepackage{amsbsy}
				\usepackage{mathrsfs}
				\usepackage{upgreek}
				\setlength{\oddsidemargin}{-69pt}
				\begin{document}$${x}_{0}={x}(0)$$\end{document}</tex-math><inline-graphic xlink:href="236_2019_359_Article_IEq12.gif"/></alternatives></inline-formula> denotes the initial state. We assume that specifications concern the model in (<xref rid="Equ2" ref-type="disp-formula">2</xref>), and we plan to devise controllers <inline-formula id="IEq13"><alternatives><mml:math><mml:msub><mml:mi>u</mml:mi><mml:mi>k</mml:mi></mml:msub></mml:math><tex-math id="IEq13_TeX">\documentclass[12pt]{minimal}
				\usepackage{amsmath}
				\usepackage{wasysym}
				\usepackage{amsfonts}
				\usepackage{amssymb}
				\usepackage{amsbsy}
				\usepackage{mathrsfs}
				\usepackage{upgreek}
				\setlength{\oddsidemargin}{-69pt}
				\begin{document}$${u}_k$$\end{document}</tex-math><inline-graphic xlink:href="236_2019_359_Article_IEq13.gif"/></alternatives></inline-formula> to meet them. (The more general problem of synthesising controllers <italic>u</italic>(<italic>t</italic>) for (<xref rid="Equ1" ref-type="disp-formula">1</xref>) fall outside the scope of the present work.)</p></sec><sec id="Sec7"><title>Digital control synthesis</title><p id="Par22">Models (<xref rid="Equ1" ref-type="disp-formula">1</xref>) and (<xref rid="Equ2" ref-type="disp-formula">2</xref>) depend on external non-determinism in the form of input signals <italic>u</italic>(<italic>t</italic>) and <inline-formula id="IEq14"><alternatives><mml:math><mml:msub><mml:mi>u</mml:mi><mml:mi>k</mml:mi></mml:msub></mml:math><tex-math id="IEq14_TeX">\documentclass[12pt]{minimal}
				\usepackage{amsmath}
				\usepackage{wasysym}
				\usepackage{amsfonts}
				\usepackage{amssymb}
				\usepackage{amsbsy}
				\usepackage{mathrsfs}
				\usepackage{upgreek}
				\setlength{\oddsidemargin}{-69pt}
				\begin{document}$$u_k$$\end{document}</tex-math><inline-graphic xlink:href="236_2019_359_Article_IEq14.gif"/></alternatives></inline-formula>, respectively. Feedback architectures can be employed to manipulate properties and behaviors of the plant: we are interested in the synthesis of digital feedback controllers <inline-formula id="IEq15"><alternatives><mml:math><mml:msub><mml:mi>u</mml:mi><mml:mi>k</mml:mi></mml:msub></mml:math><tex-math id="IEq15_TeX">\documentclass[12pt]{minimal}
				\usepackage{amsmath}
				\usepackage{wasysym}
				\usepackage{amsfonts}
				\usepackage{amssymb}
				\usepackage{amsbsy}
				\usepackage{mathrsfs}
				\usepackage{upgreek}
				\setlength{\oddsidemargin}{-69pt}
				\begin{document}$$u_k$$\end{document}</tex-math><inline-graphic xlink:href="236_2019_359_Article_IEq15.gif"/></alternatives></inline-formula>, as in Fig. <xref rid="Fig3" ref-type="fig">3</xref>, as practically implemented on field-programmable gate arrays or on digital signal processors, and as classically studied in [<xref ref-type="bibr" rid="CR7">7</xref>].</p><p id="Par23">Recall that the states of the model are fully accessible (namely, observable). We consider state feedback control architectures, where <inline-formula id="IEq16"><alternatives><mml:math><mml:msub><mml:mi>u</mml:mi><mml:mi>k</mml:mi></mml:msub></mml:math><tex-math id="IEq16_TeX">\documentclass[12pt]{minimal}
				\usepackage{amsmath}
				\usepackage{wasysym}
				\usepackage{amsfonts}
				\usepackage{amssymb}
				\usepackage{amsbsy}
				\usepackage{mathrsfs}
				\usepackage{upgreek}
				\setlength{\oddsidemargin}{-69pt}
				\begin{document}$$u_k$$\end{document}</tex-math><inline-graphic xlink:href="236_2019_359_Article_IEq16.gif"/></alternatives></inline-formula> (notice we work with the discretized signal) is <inline-formula id="IEq17"><alternatives><mml:math><mml:mrow><mml:msub><mml:mi>u</mml:mi><mml:mi>k</mml:mi></mml:msub><mml:mo>=</mml:mo><mml:msub><mml:mi>r</mml:mi><mml:mi>k</mml:mi></mml:msub><mml:mo>-</mml:mo><mml:mi>K</mml:mi><mml:msub><mml:mi>x</mml:mi><mml:mi>k</mml:mi></mml:msub></mml:mrow></mml:math><tex-math id="IEq17_TeX">\documentclass[12pt]{minimal}
				\usepackage{amsmath}
				\usepackage{wasysym}
				\usepackage{amsfonts}
				\usepackage{amssymb}
				\usepackage{amsbsy}
				\usepackage{mathrsfs}
				\usepackage{upgreek}
				\setlength{\oddsidemargin}{-69pt}
				\begin{document}$$u_k = r_{k} - K x_k$$\end{document}</tex-math><inline-graphic xlink:href="236_2019_359_Article_IEq17.gif"/></alternatives></inline-formula>. Here <inline-formula id="IEq18"><alternatives><mml:math><mml:mrow><mml:mi>K</mml:mi><mml:mo>∈</mml:mo><mml:msup><mml:mrow><mml:mi mathvariant="double-struck">R</mml:mi></mml:mrow><mml:mrow><mml:mi>p</mml:mi><mml:mo>×</mml:mo><mml:mi>n</mml:mi></mml:mrow></mml:msup></mml:mrow></mml:math><tex-math id="IEq18_TeX">\documentclass[12pt]{minimal}
				\usepackage{amsmath}
				\usepackage{wasysym}
				\usepackage{amsfonts}
				\usepackage{amssymb}
				\usepackage{amsbsy}
				\usepackage{mathrsfs}
				\usepackage{upgreek}
				\setlength{\oddsidemargin}{-69pt}
				\begin{document}$$K \in {\mathbb {R}}^{p \times n}$$\end{document}</tex-math><inline-graphic xlink:href="236_2019_359_Article_IEq18.gif"/></alternatives></inline-formula> is a state-feedback gain matrix, and <inline-formula id="IEq19"><alternatives><mml:math><mml:msub><mml:mi>r</mml:mi><mml:mi>k</mml:mi></mml:msub></mml:math><tex-math id="IEq19_TeX">\documentclass[12pt]{minimal}
				\usepackage{amsmath}
				\usepackage{wasysym}
				\usepackage{amsfonts}
				\usepackage{amssymb}
				\usepackage{amsbsy}
				\usepackage{mathrsfs}
				\usepackage{upgreek}
				\setlength{\oddsidemargin}{-69pt}
				\begin{document}$$r_{k}$$\end{document}</tex-math><inline-graphic xlink:href="236_2019_359_Article_IEq19.gif"/></alternatives></inline-formula> is a reference signal (again digital). We will assume <inline-formula id="IEq20"><alternatives><mml:math><mml:mrow><mml:msub><mml:mi>r</mml:mi><mml:mi>k</mml:mi></mml:msub><mml:mo>=</mml:mo><mml:mn>0</mml:mn></mml:mrow></mml:math><tex-math id="IEq20_TeX">\documentclass[12pt]{minimal}
				\usepackage{amsmath}
				\usepackage{wasysym}
				\usepackage{amsfonts}
				\usepackage{amssymb}
				\usepackage{amsbsy}
				\usepackage{mathrsfs}
				\usepackage{upgreek}
				\setlength{\oddsidemargin}{-69pt}
				\begin{document}$$r_k=0$$\end{document}</tex-math><inline-graphic xlink:href="236_2019_359_Article_IEq20.gif"/></alternatives></inline-formula> (meaning that the reference signal is just a zero signal), thus obtaining the closed-loop model <inline-formula id="IEq21"><alternatives><mml:math><mml:mrow><mml:msub><mml:mi>x</mml:mi><mml:mrow><mml:mi>k</mml:mi><mml:mo>+</mml:mo><mml:mn>1</mml:mn></mml:mrow></mml:msub><mml:mo>=</mml:mo><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:msub><mml:mi>A</mml:mi><mml:mi>d</mml:mi></mml:msub><mml:mo>-</mml:mo><mml:msub><mml:mi>B</mml:mi><mml:mi>d</mml:mi></mml:msub><mml:mi>K</mml:mi><mml:mo stretchy="false">)</mml:mo></mml:mrow><mml:msub><mml:mi>x</mml:mi><mml:mi>k</mml:mi></mml:msub></mml:mrow></mml:math><tex-math id="IEq21_TeX">\documentclass[12pt]{minimal}
				\usepackage{amsmath}
				\usepackage{wasysym}
				\usepackage{amsfonts}
				\usepackage{amssymb}
				\usepackage{amsbsy}
				\usepackage{mathrsfs}
				\usepackage{upgreek}
				\setlength{\oddsidemargin}{-69pt}
				\begin{document}$${x}_{k+1}=({A}_d-{B}_d{K}){x}_k$$\end{document}</tex-math><inline-graphic xlink:href="236_2019_359_Article_IEq21.gif"/></alternatives></inline-formula> with the origin as its equilibrium point.</p><p id="Par24">The gain matrix <italic>K</italic> can be set so that the closed-loop discrete dynamics are shaped as desired, for instance according to a specific stability goal or around a dynamical behavior of interest [<xref ref-type="bibr" rid="CR7">7</xref>]. As argued later in this work, we will target a less standard objective, namely a quantitative safety requirement defined over a convex set around the origin, which opens up to more complex specifications [<xref ref-type="bibr" rid="CR8">8</xref>, <xref ref-type="bibr" rid="CR45">45</xref>]. This is not typical in the digital control literature. We will further precisely account for the digital nature of the controller, which manipulates quantised signals as discrete quantities represented with finite precision. The new approach is fully automated and leverages an approach based on CEGIS, to be introduced shortly.<fig id="Fig3"><label>Fig. 3</label><caption xml:lang="en"><p>Closed-loop digital control setup, comprising an analogue model of the underlying real system, alongside a digital controller</p></caption><p><graphic specific-use="HTML" mime-subtype="PNG" xlink:href="MediaObjects/236_2019_359_Fig3_HTML.png" id="MO24"/></p></fig></p></sec><sec id="Sec8"><title>Stability of closed-loop models</title><p id="Par25">In this work we employ the notion of asymptotic stability within the CEGIS loop, as a means for reducing the search space of possible safe controllers, where the notion of a safe controller is defined in the following section. As discussed later, for linear models a safe controller is necessarily asymptotically stable, although the reverse is not true. Qualitatively, (local) asymptotic stability is a property denoting the convergence of the model executions towards an equilibrium point, starting from any states in a neighborhood of the point. In the case of linear systems considered with a zero reference signal (as assumed above), the equilibrium point of interest is the origin (see Fig. <xref rid="Fig2" ref-type="fig">2</xref> for the portrait of an asymptotically stable execution, converging to the origin).</p><p id="Par26">Of interest for this work, it can be shown that a discrete-time LTI model is asymptotically stable if all the roots of its characteristic polynomial (i.e., the eigenvalues of the closed-loop matrix <inline-formula id="IEq22"><alternatives><mml:math><mml:mrow><mml:msub><mml:mi>A</mml:mi><mml:mi>d</mml:mi></mml:msub><mml:mo>-</mml:mo><mml:msub><mml:mi>B</mml:mi><mml:mi>d</mml:mi></mml:msub><mml:mi>K</mml:mi></mml:mrow></mml:math><tex-math id="IEq22_TeX">\documentclass[12pt]{minimal}
				\usepackage{amsmath}
				\usepackage{wasysym}
				\usepackage{amsfonts}
				\usepackage{amssymb}
				\usepackage{amsbsy}
				\usepackage{mathrsfs}
				\usepackage{upgreek}
				\setlength{\oddsidemargin}{-69pt}
				\begin{document}$$A_d - B_d K$$\end{document}</tex-math><inline-graphic xlink:href="236_2019_359_Article_IEq22.gif"/></alternatives></inline-formula>) are inside the unit circle on the complex plane, i.e., if their absolute values are strictly less than one [<xref ref-type="bibr" rid="CR7">7</xref>]. Whilst this simple sufficient condition can be either generalized or strengthen to be necessary, this is not necessary in the context of this work. What is technically key is that in this paper we shall express this asymptotic stability as a specification <inline-formula id="IEq23"><alternatives><mml:math><mml:mrow><mml:msub><mml:mi>ϕ</mml:mi><mml:mi>s</mml:mi></mml:msub><mml:mi>t</mml:mi><mml:mi>a</mml:mi><mml:mi>b</mml:mi><mml:mi>i</mml:mi><mml:mi>l</mml:mi><mml:mi>i</mml:mi><mml:mi>t</mml:mi><mml:mi>y</mml:mi></mml:mrow></mml:math><tex-math id="IEq23_TeX">\documentclass[12pt]{minimal}
				\usepackage{amsmath}
				\usepackage{wasysym}
				\usepackage{amsfonts}
				\usepackage{amssymb}
				\usepackage{amsbsy}
				\usepackage{mathrsfs}
				\usepackage{upgreek}
				\setlength{\oddsidemargin}{-69pt}
				\begin{document}$$\phi _ stability $$\end{document}</tex-math><inline-graphic xlink:href="236_2019_359_Article_IEq23.gif"/></alternatives></inline-formula>, and encode it in terms of a check known as <italic>Jury’s criterion</italic> [<xref ref-type="bibr" rid="CR18">18</xref>]: this is an easy algebraic formula to check the entries of matrix <italic>K</italic>, so that the closed-loop dynamics are shaped as desired. We refer the interested reader to [<xref ref-type="bibr" rid="CR18">18</xref>] for further details about Jury’s criterion, which we omit for the sake of space and since it is a standard result in the control literature that we just leverage for our overall approach.</p></sec><sec id="Sec9"><title>Safety of closed-loop models</title><p id="Par27">We are not limited to the synthesis of digital stabilizing controllers—a well known task in the literature on digital control systems—but target safety requirements with an overall approach that is sound and automated. More specifically, we require that the closed-loop model meets a given safety specification that is characterised by a given set around the origin. A safety specification gives rise to a requirement on the states of the model, namely that they remain within the safe set at all times (that is, over an infinite number of time steps). So the feedback controller (namely the choice of the gain matrix <italic>K</italic>) must ensure that the state never violates the requirement. Note that an asymptotically stable, closed-loop system is not necessarily a safe system: indeed, the state values may leave the safe part of the state space while they converge to the equilibrium, which is typical in the case of oscillatory dynamics. In this work, the safety property is expressed as:<disp-formula id="Equ3"><label>3</label><alternatives><mml:math display="block"><mml:mrow><mml:mtable><mml:mtr><mml:mtd columnalign="right"><mml:mrow><mml:msub><mml:mi>ϕ</mml:mi><mml:mi>s</mml:mi></mml:msub><mml:mi>a</mml:mi><mml:mi>f</mml:mi><mml:mi>e</mml:mi><mml:mi>t</mml:mi><mml:mi>y</mml:mi><mml:mo>=</mml:mo><mml:mfenced close="}" open="{"><mml:mo>∀</mml:mo><mml:mi>k</mml:mi><mml:mo>≥</mml:mo><mml:mn>0</mml:mn><mml:mo>,</mml:mo><mml:mspace width="0.166667em"/><mml:munderover><mml:mo>⋀</mml:mo><mml:mrow><mml:mi>i</mml:mi><mml:mo>=</mml:mo><mml:mn>1</mml:mn></mml:mrow><mml:mi>n</mml:mi></mml:munderover><mml:mrow><mml:munder><mml:msub><mml:mi>x</mml:mi><mml:mi>i</mml:mi></mml:msub><mml:mo>̲</mml:mo></mml:munder><mml:mo>≤</mml:mo><mml:msub><mml:mi>x</mml:mi><mml:mrow><mml:mi>i</mml:mi><mml:mo>,</mml:mo><mml:mi>k</mml:mi></mml:mrow></mml:msub><mml:mo>≤</mml:mo><mml:mover><mml:msub><mml:mi>x</mml:mi><mml:mi>i</mml:mi></mml:msub><mml:mo>¯</mml:mo></mml:mover></mml:mrow></mml:mfenced><mml:mo>,</mml:mo></mml:mrow></mml:mtd></mml:mtr></mml:mtable></mml:mrow></mml:math><tex-math id="Equ3_TeX">\documentclass[12pt]{minimal}
				\usepackage{amsmath}
				\usepackage{wasysym}
				\usepackage{amsfonts}
				\usepackage{amssymb}
				\usepackage{amsbsy}
				\usepackage{mathrsfs}
				\usepackage{upgreek}
				\setlength{\oddsidemargin}{-69pt}
				\begin{document}$$\begin{aligned} \phi _ safety = \left\{ \forall k\ge 0,\, \bigwedge _{i=1}^{n}{\underline{x_{i}} \le x_{i,k} \le \overline{x_{i}}}\right\} , \end{aligned}$$\end{document}</tex-math><graphic position="anchor" xlink:href="236_2019_359_Article_Equ3.gif"/></alternatives></disp-formula>where <inline-formula id="IEq24"><alternatives><mml:math><mml:munder><mml:msub><mml:mi>x</mml:mi><mml:mi>i</mml:mi></mml:msub><mml:mo>̲</mml:mo></mml:munder></mml:math><tex-math id="IEq24_TeX">\documentclass[12pt]{minimal}
				\usepackage{amsmath}
				\usepackage{wasysym}
				\usepackage{amsfonts}
				\usepackage{amssymb}
				\usepackage{amsbsy}
				\usepackage{mathrsfs}
				\usepackage{upgreek}
				\setlength{\oddsidemargin}{-69pt}
				\begin{document}$$\underline{x_{i}}$$\end{document}</tex-math><inline-graphic xlink:href="236_2019_359_Article_IEq24.gif"/></alternatives></inline-formula> and <inline-formula id="IEq25"><alternatives><mml:math><mml:mover><mml:msub><mml:mi>x</mml:mi><mml:mi>i</mml:mi></mml:msub><mml:mo>¯</mml:mo></mml:mover></mml:math><tex-math id="IEq25_TeX">\documentclass[12pt]{minimal}
				\usepackage{amsmath}
				\usepackage{wasysym}
				\usepackage{amsfonts}
				\usepackage{amssymb}
				\usepackage{amsbsy}
				\usepackage{mathrsfs}
				\usepackage{upgreek}
				\setlength{\oddsidemargin}{-69pt}
				\begin{document}$$\overline{x_{i}}$$\end{document}</tex-math><inline-graphic xlink:href="236_2019_359_Article_IEq25.gif"/></alternatives></inline-formula> are lower and upper bounds for the <italic>i</italic>th coordinate <inline-formula id="IEq26"><alternatives><mml:math><mml:msub><mml:mi>x</mml:mi><mml:mi>i</mml:mi></mml:msub></mml:math><tex-math id="IEq26_TeX">\documentclass[12pt]{minimal}
				\usepackage{amsmath}
				\usepackage{wasysym}
				\usepackage{amsfonts}
				\usepackage{amssymb}
				\usepackage{amsbsy}
				\usepackage{mathrsfs}
				\usepackage{upgreek}
				\setlength{\oddsidemargin}{-69pt}
				\begin{document}$$x_{i}$$\end{document}</tex-math><inline-graphic xlink:href="236_2019_359_Article_IEq26.gif"/></alternatives></inline-formula> of state <inline-formula id="IEq27"><alternatives><mml:math><mml:mrow><mml:mi>x</mml:mi><mml:mo>∈</mml:mo><mml:msup><mml:mrow><mml:mi mathvariant="double-struck">R</mml:mi></mml:mrow><mml:mi>n</mml:mi></mml:msup></mml:mrow></mml:math><tex-math id="IEq27_TeX">\documentclass[12pt]{minimal}
				\usepackage{amsmath}
				\usepackage{wasysym}
				\usepackage{amsfonts}
				\usepackage{amssymb}
				\usepackage{amsbsy}
				\usepackage{mathrsfs}
				\usepackage{upgreek}
				\setlength{\oddsidemargin}{-69pt}
				\begin{document}$$x\in {\mathbb {R}}^n$$\end{document}</tex-math><inline-graphic xlink:href="236_2019_359_Article_IEq27.gif"/></alternatives></inline-formula> at the <italic>k</italic>th instant, respectively. This requires that the states will always be within an <italic>n</italic>-dimensional hyper-box.</p><p id="Par28">Beyond the main requirement on safety, it is practically relevant to consider the constraints <inline-formula id="IEq28"><alternatives><mml:math><mml:mrow><mml:msub><mml:mi>ϕ</mml:mi><mml:mi>i</mml:mi></mml:msub><mml:mi>n</mml:mi><mml:mi>p</mml:mi><mml:mi>u</mml:mi><mml:mi>t</mml:mi></mml:mrow></mml:math><tex-math id="IEq28_TeX">\documentclass[12pt]{minimal}
				\usepackage{amsmath}
				\usepackage{wasysym}
				\usepackage{amsfonts}
				\usepackage{amssymb}
				\usepackage{amsbsy}
				\usepackage{mathrsfs}
				\usepackage{upgreek}
				\setlength{\oddsidemargin}{-69pt}
				\begin{document}$$\phi _ input $$\end{document}</tex-math><inline-graphic xlink:href="236_2019_359_Article_IEq28.gif"/></alternatives></inline-formula> on the input signal <inline-formula id="IEq29"><alternatives><mml:math><mml:msub><mml:mi>u</mml:mi><mml:mi>k</mml:mi></mml:msub></mml:math><tex-math id="IEq29_TeX">\documentclass[12pt]{minimal}
				\usepackage{amsmath}
				\usepackage{wasysym}
				\usepackage{amsfonts}
				\usepackage{amssymb}
				\usepackage{amsbsy}
				\usepackage{mathrsfs}
				\usepackage{upgreek}
				\setlength{\oddsidemargin}{-69pt}
				\begin{document}$$u_{k}$$\end{document}</tex-math><inline-graphic xlink:href="236_2019_359_Article_IEq29.gif"/></alternatives></inline-formula> and <inline-formula id="IEq30"><alternatives><mml:math><mml:mrow><mml:msub><mml:mi>ϕ</mml:mi><mml:mi>i</mml:mi></mml:msub><mml:mi>n</mml:mi><mml:mi>i</mml:mi><mml:mi>t</mml:mi></mml:mrow></mml:math><tex-math id="IEq30_TeX">\documentclass[12pt]{minimal}
				\usepackage{amsmath}
				\usepackage{wasysym}
				\usepackage{amsfonts}
				\usepackage{amssymb}
				\usepackage{amsbsy}
				\usepackage{mathrsfs}
				\usepackage{upgreek}
				\setlength{\oddsidemargin}{-69pt}
				\begin{document}$$\phi _ init $$\end{document}</tex-math><inline-graphic xlink:href="236_2019_359_Article_IEq30.gif"/></alternatives></inline-formula> on the initial states <inline-formula id="IEq31"><alternatives><mml:math><mml:msub><mml:mi>x</mml:mi><mml:mn>0</mml:mn></mml:msub></mml:math><tex-math id="IEq31_TeX">\documentclass[12pt]{minimal}
				\usepackage{amsmath}
				\usepackage{wasysym}
				\usepackage{amsfonts}
				\usepackage{amssymb}
				\usepackage{amsbsy}
				\usepackage{mathrsfs}
				\usepackage{upgreek}
				\setlength{\oddsidemargin}{-69pt}
				\begin{document}$$x_0$$\end{document}</tex-math><inline-graphic xlink:href="236_2019_359_Article_IEq31.gif"/></alternatives></inline-formula>, which we assume have given bounds: <inline-formula id="IEq32"><alternatives><mml:math><mml:mrow><mml:msub><mml:mi>ϕ</mml:mi><mml:mi>i</mml:mi></mml:msub><mml:mi>n</mml:mi><mml:mi>p</mml:mi><mml:mi>u</mml:mi><mml:mi>t</mml:mi><mml:mo>=</mml:mo><mml:mrow><mml:mo stretchy="false">{</mml:mo><mml:mo>∀</mml:mo><mml:mi>k</mml:mi><mml:mo>≥</mml:mo><mml:mn>0</mml:mn><mml:mo>,</mml:mo><mml:msubsup><mml:mo>⋀</mml:mo><mml:mrow><mml:mi>i</mml:mi><mml:mo>=</mml:mo><mml:mn>1</mml:mn></mml:mrow><mml:mi>p</mml:mi></mml:msubsup><mml:munder><mml:mi>u</mml:mi><mml:mo>̲</mml:mo></mml:munder><mml:mo>≤</mml:mo><mml:msub><mml:mi>u</mml:mi><mml:mi>i</mml:mi></mml:msub><mml:mo>≤</mml:mo><mml:mover><mml:mi>u</mml:mi><mml:mo>¯</mml:mo></mml:mover><mml:mo stretchy="false">}</mml:mo></mml:mrow></mml:mrow></mml:math><tex-math id="IEq32_TeX">\documentclass[12pt]{minimal}
				\usepackage{amsmath}
				\usepackage{wasysym}
				\usepackage{amsfonts}
				\usepackage{amssymb}
				\usepackage{amsbsy}
				\usepackage{mathrsfs}
				\usepackage{upgreek}
				\setlength{\oddsidemargin}{-69pt}
				\begin{document}$$\phi _ input = \{\forall k \ge 0,\bigwedge _{i=1}^{p} {\underline{u}} \le u_{i} \le {\overline{u}}\} $$\end{document}</tex-math><inline-graphic xlink:href="236_2019_359_Article_IEq32.gif"/></alternatives></inline-formula>, and <inline-formula id="IEq33"><alternatives><mml:math><mml:mrow><mml:msub><mml:mi>ϕ</mml:mi><mml:mi>i</mml:mi></mml:msub><mml:mi>n</mml:mi><mml:mi>i</mml:mi><mml:mi>t</mml:mi><mml:mo>=</mml:mo><mml:mrow><mml:mo stretchy="false">{</mml:mo><mml:msubsup><mml:mo>⋀</mml:mo><mml:mrow><mml:mi>i</mml:mi><mml:mo>=</mml:mo><mml:mn>1</mml:mn></mml:mrow><mml:mi>n</mml:mi></mml:msubsup><mml:munder><mml:msub><mml:mi>x</mml:mi><mml:mrow><mml:mi>i</mml:mi><mml:mo>,</mml:mo><mml:mn>0</mml:mn></mml:mrow></mml:msub><mml:mo>̲</mml:mo></mml:munder><mml:mo>≤</mml:mo><mml:msub><mml:mi>x</mml:mi><mml:mrow><mml:mi>i</mml:mi><mml:mo>,</mml:mo><mml:mn>0</mml:mn></mml:mrow></mml:msub><mml:mo>≤</mml:mo><mml:mover><mml:msub><mml:mi>x</mml:mi><mml:mrow><mml:mi>i</mml:mi><mml:mo>,</mml:mo><mml:mn>0</mml:mn></mml:mrow></mml:msub><mml:mo>¯</mml:mo></mml:mover><mml:mo stretchy="false">}</mml:mo></mml:mrow></mml:mrow></mml:math><tex-math id="IEq33_TeX">\documentclass[12pt]{minimal}
				\usepackage{amsmath}
				\usepackage{wasysym}
				\usepackage{amsfonts}
				\usepackage{amssymb}
				\usepackage{amsbsy}
				\usepackage{mathrsfs}
				\usepackage{upgreek}
				\setlength{\oddsidemargin}{-69pt}
				\begin{document}$$\phi _ init = \{ \bigwedge _{i=1}^{n} \underline{x_{i,0}} \le x_{i,0} \le \overline{x_{i,0}}\}$$\end{document}</tex-math><inline-graphic xlink:href="236_2019_359_Article_IEq33.gif"/></alternatives></inline-formula>. The former constraint expresses that the control input, possibly shaped via state-feedback, might saturate in view of physical constraints. Notice that we will assume that the set of initial states lies within the safe set, since the contrary leads to dynamics that are trivially unsafe. Furthermore, whilst the problem can handle general hyper-boxes, we will in practice work with sets that contain the origin, particularly in view of the choice of the reference signal <inline-formula id="IEq34"><alternatives><mml:math><mml:mrow><mml:msub><mml:mi>r</mml:mi><mml:mi>k</mml:mi></mml:msub><mml:mo>=</mml:mo><mml:mn>0</mml:mn></mml:mrow></mml:math><tex-math id="IEq34_TeX">\documentclass[12pt]{minimal}
				\usepackage{amsmath}
				\usepackage{wasysym}
				\usepackage{amsfonts}
				\usepackage{amssymb}
				\usepackage{amsbsy}
				\usepackage{mathrsfs}
				\usepackage{upgreek}
				\setlength{\oddsidemargin}{-69pt}
				\begin{document}$$r_k = 0$$\end{document}</tex-math><inline-graphic xlink:href="236_2019_359_Article_IEq34.gif"/></alternatives></inline-formula>.</p></sec><sec id="Sec10"><title>Bounded model checking</title><p id="Par29">We employ the bounded model checking software tool CBMC [<xref ref-type="bibr" rid="CR28">28</xref>] to model the controller behavior on digital signals with finite-bit precision. We express the controller semantics as C programs, which is CBMC’s preferred input language. CBMC symbolically executes every instruction in an input program by translating it to a Boolean satisfiability problem, which is satisfiable iff a certain property about the program holds. CBMC’s API allows to specify these properties in the form of assertions in the input program: we set these properties to express that our controllers generate (asymptotically stable and) safe dynamics.</p></sec><sec id="Sec11"><title>Semantics of finite-precision arithmetic</title><p id="Par30">A key contribution of this work is that it precisely replicates the finite-precision arithmetic within the digital controller it synthesizes, thus guaranteeing that controllers implemented with finite-precision arithmetic are safe. The specific components of the model we are concerned with, shown in Fig. <xref rid="Fig3" ref-type="fig">3</xref>, are the ADC, the digital controller and the DAC. Details of how we model the behaviour of the finite-precision arithmetic in these components are in Sect. <xref rid="Sec17" ref-type="sec">5</xref>. We must model the semantics precisely, in order to capture the full behaviour of the model. More specifically, we encompass the following features:<list list-type="bullet"><list-item><p id="Par31">The ADC converts the analog signal <italic>x</italic>(<italic>t</italic>) into a digital signal <inline-formula id="IEq35"><alternatives><mml:math><mml:msub><mml:mi>x</mml:mi><mml:mi>k</mml:mi></mml:msub></mml:math><tex-math id="IEq35_TeX">\documentclass[12pt]{minimal}
				\usepackage{amsmath}
				\usepackage{wasysym}
				\usepackage{amsfonts}
				\usepackage{amssymb}
				\usepackage{amsbsy}
				\usepackage{mathrsfs}
				\usepackage{upgreek}
				\setlength{\oddsidemargin}{-69pt}
				\begin{document}$$x_k$$\end{document}</tex-math><inline-graphic xlink:href="236_2019_359_Article_IEq35.gif"/></alternatives></inline-formula>, which is then fed into the controller, converting a real value to a finite-precision value.</p></list-item><list-item><p id="Par32">The controller block performs arithmetic at finite precision. We assume the ADC represents numbers with at least the same precision as the controller, and thus focus on the precision as limited by the controller. This is a reasonable assumption based on commonly available hardware.</p></list-item><list-item><p id="Par33">The DAC converts finite-precision values back to real values. We assume that the input to the DAC has the same precision as the output of the controller. It would, however, be straightforward to account for a DAC or ADC of different precision than the controller in our algorithm, if necessary.</p></list-item></list></p></sec><sec id="Sec12"><title>Soundness of modelling</title><p id="Par34">In addition to precisely replicating the finite-precision arithmetic of the digital controller, we must consider that our <italic>model</italic> itself in (<xref rid="Equ2" ref-type="disp-formula">2</xref>) employs finite-precision arithmetic to represent the behaviour of the real system. In order to guarantee soundness, we therefore encompass the error that is due to modelling (as opposed to the nature of the digital controller): the representations used in the plant model and its arithmetic operations are carried out at finite precision. More specifically:<list list-type="bullet"><list-item><p id="Par35">We account for the error introduced by finite-precision arithmetic applied over the model variables <inline-formula id="IEq36"><alternatives><mml:math><mml:msub><mml:mi>x</mml:mi><mml:mi>k</mml:mi></mml:msub></mml:math><tex-math id="IEq36_TeX">\documentclass[12pt]{minimal}
				\usepackage{amsmath}
				\usepackage{wasysym}
				\usepackage{amsfonts}
				\usepackage{amssymb}
				\usepackage{amsbsy}
				\usepackage{mathrsfs}
				\usepackage{upgreek}
				\setlength{\oddsidemargin}{-69pt}
				\begin{document}$$x_k$$\end{document}</tex-math><inline-graphic xlink:href="236_2019_359_Article_IEq36.gif"/></alternatives></inline-formula> and <inline-formula id="IEq37"><alternatives><mml:math><mml:msub><mml:mi>u</mml:mi><mml:mi>k</mml:mi></mml:msub></mml:math><tex-math id="IEq37_TeX">\documentclass[12pt]{minimal}
				\usepackage{amsmath}
				\usepackage{wasysym}
				\usepackage{amsfonts}
				\usepackage{amssymb}
				\usepackage{amsbsy}
				\usepackage{mathrsfs}
				\usepackage{upgreek}
				\setlength{\oddsidemargin}{-69pt}
				\begin{document}$$u_k$$\end{document}</tex-math><inline-graphic xlink:href="236_2019_359_Article_IEq37.gif"/></alternatives></inline-formula>, which are actually continuous quantities. We guarantee that the precision we use to represent the model variables is at least as precise as the precision used in the digital controller, and we use interval arithmetic to bound the incurred errors, as further detailed in Sect. <xref rid="Sec17" ref-type="sec">5</xref>.</p></list-item></list></p></sec><sec id="Sec13"><title>Notation for fixed- and floating-point precision</title><p id="Par36">In this paper we will use <inline-formula id="IEq38"><alternatives><mml:math><mml:mrow><mml:msub><mml:mi mathvariant="script">F</mml:mi><mml:mrow><mml:mo stretchy="false">⟨</mml:mo><mml:mi>I</mml:mi><mml:mo>,</mml:mo><mml:mi>F</mml:mi><mml:mo stretchy="false">⟩</mml:mo></mml:mrow></mml:msub><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mi>x</mml:mi><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:mrow></mml:math><tex-math id="IEq38_TeX">\documentclass[12pt]{minimal}
				\usepackage{amsmath}
				\usepackage{wasysym}
				\usepackage{amsfonts}
				\usepackage{amssymb}
				\usepackage{amsbsy}
				\usepackage{mathrsfs}
				\usepackage{upgreek}
				\setlength{\oddsidemargin}{-69pt}
				\begin{document}$${\mathcal {F}}_{\langle I,F \rangle }(x)$$\end{document}</tex-math><inline-graphic xlink:href="236_2019_359_Article_IEq38.gif"/></alternatives></inline-formula> to denote a real number <italic>x</italic> expressed with a fixed-point precision, using <italic>I</italic> bits to represent the integer part of the number and <italic>F</italic> bits to represent its decimal part. In particular, <inline-formula id="IEq39"><alternatives><mml:math><mml:mrow><mml:msub><mml:mi mathvariant="script">F</mml:mi><mml:mrow><mml:mo stretchy="false">⟨</mml:mo><mml:msub><mml:mi>I</mml:mi><mml:mi>c</mml:mi></mml:msub><mml:mo>,</mml:mo><mml:msub><mml:mi>F</mml:mi><mml:mi>c</mml:mi></mml:msub><mml:mo stretchy="false">⟩</mml:mo></mml:mrow></mml:msub><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mi>x</mml:mi><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:mrow></mml:math><tex-math id="IEq39_TeX">\documentclass[12pt]{minimal}
				\usepackage{amsmath}
				\usepackage{wasysym}
				\usepackage{amsfonts}
				\usepackage{amssymb}
				\usepackage{amsbsy}
				\usepackage{mathrsfs}
				\usepackage{upgreek}
				\setlength{\oddsidemargin}{-69pt}
				\begin{document}$${\mathcal {F}}_{\langle I_c,F_c \rangle }(x)$$\end{document}</tex-math><inline-graphic xlink:href="236_2019_359_Article_IEq39.gif"/></alternatives></inline-formula> denotes a real number <italic>x</italic> represented at the fixed-point precision of the controller, and <inline-formula id="IEq40"><alternatives><mml:math><mml:mrow><mml:msub><mml:mi mathvariant="script">F</mml:mi><mml:mrow><mml:mo stretchy="false">⟨</mml:mo><mml:msub><mml:mi>I</mml:mi><mml:mi>p</mml:mi></mml:msub><mml:mo>,</mml:mo><mml:msub><mml:mi>F</mml:mi><mml:mi>p</mml:mi></mml:msub><mml:mo stretchy="false">⟩</mml:mo></mml:mrow></mml:msub><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mi>x</mml:mi><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:mrow></mml:math><tex-math id="IEq40_TeX">\documentclass[12pt]{minimal}
				\usepackage{amsmath}
				\usepackage{wasysym}
				\usepackage{amsfonts}
				\usepackage{amssymb}
				\usepackage{amsbsy}
				\usepackage{mathrsfs}
				\usepackage{upgreek}
				\setlength{\oddsidemargin}{-69pt}
				\begin{document}$${\mathcal {F}}_{\langle I_p,F_p \rangle }(x)$$\end{document}</tex-math><inline-graphic xlink:href="236_2019_359_Article_IEq40.gif"/></alternatives></inline-formula> denotes a real number <italic>x</italic> represented at the fixed-point precision of the plant model. <inline-formula id="IEq41"><alternatives><mml:math><mml:msub><mml:mi>I</mml:mi><mml:mi>c</mml:mi></mml:msub></mml:math><tex-math id="IEq41_TeX">\documentclass[12pt]{minimal}
				\usepackage{amsmath}
				\usepackage{wasysym}
				\usepackage{amsfonts}
				\usepackage{amssymb}
				\usepackage{amsbsy}
				\usepackage{mathrsfs}
				\usepackage{upgreek}
				\setlength{\oddsidemargin}{-69pt}
				\begin{document}$$I_c$$\end{document}</tex-math><inline-graphic xlink:href="236_2019_359_Article_IEq41.gif"/></alternatives></inline-formula> and <inline-formula id="IEq42"><alternatives><mml:math><mml:msub><mml:mi>F</mml:mi><mml:mi>c</mml:mi></mml:msub></mml:math><tex-math id="IEq42_TeX">\documentclass[12pt]{minimal}
				\usepackage{amsmath}
				\usepackage{wasysym}
				\usepackage{amsfonts}
				\usepackage{amssymb}
				\usepackage{amsbsy}
				\usepackage{mathrsfs}
				\usepackage{upgreek}
				\setlength{\oddsidemargin}{-69pt}
				\begin{document}$$F_c$$\end{document}</tex-math><inline-graphic xlink:href="236_2019_359_Article_IEq42.gif"/></alternatives></inline-formula> are determined by the controller. We pick <inline-formula id="IEq43"><alternatives><mml:math><mml:msub><mml:mi>I</mml:mi><mml:mi>p</mml:mi></mml:msub></mml:math><tex-math id="IEq43_TeX">\documentclass[12pt]{minimal}
				\usepackage{amsmath}
				\usepackage{wasysym}
				\usepackage{amsfonts}
				\usepackage{amssymb}
				\usepackage{amsbsy}
				\usepackage{mathrsfs}
				\usepackage{upgreek}
				\setlength{\oddsidemargin}{-69pt}
				\begin{document}$$I_p$$\end{document}</tex-math><inline-graphic xlink:href="236_2019_359_Article_IEq43.gif"/></alternatives></inline-formula> and <inline-formula id="IEq44"><alternatives><mml:math><mml:msub><mml:mi>F</mml:mi><mml:mi>p</mml:mi></mml:msub></mml:math><tex-math id="IEq44_TeX">\documentclass[12pt]{minimal}
				\usepackage{amsmath}
				\usepackage{wasysym}
				\usepackage{amsfonts}
				\usepackage{amssymb}
				\usepackage{amsbsy}
				\usepackage{mathrsfs}
				\usepackage{upgreek}
				\setlength{\oddsidemargin}{-69pt}
				\begin{document}$$F_p$$\end{document}</tex-math><inline-graphic xlink:href="236_2019_359_Article_IEq44.gif"/></alternatives></inline-formula> for our synthesis such that <inline-formula id="IEq45"><alternatives><mml:math><mml:mrow><mml:msub><mml:mi>I</mml:mi><mml:mi>p</mml:mi></mml:msub><mml:mo>≥</mml:mo><mml:msub><mml:mi>I</mml:mi><mml:mi>c</mml:mi></mml:msub></mml:mrow></mml:math><tex-math id="IEq45_TeX">\documentclass[12pt]{minimal}
				\usepackage{amsmath}
				\usepackage{wasysym}
				\usepackage{amsfonts}
				\usepackage{amssymb}
				\usepackage{amsbsy}
				\usepackage{mathrsfs}
				\usepackage{upgreek}
				\setlength{\oddsidemargin}{-69pt}
				\begin{document}$$I_p \ge I_c$$\end{document}</tex-math><inline-graphic xlink:href="236_2019_359_Article_IEq45.gif"/></alternatives></inline-formula> and <inline-formula id="IEq46"><alternatives><mml:math><mml:mrow><mml:msub><mml:mi>F</mml:mi><mml:mi>p</mml:mi></mml:msub><mml:mo>≥</mml:mo><mml:msub><mml:mi>F</mml:mi><mml:mi>c</mml:mi></mml:msub></mml:mrow></mml:math><tex-math id="IEq46_TeX">\documentclass[12pt]{minimal}
				\usepackage{amsmath}
				\usepackage{wasysym}
				\usepackage{amsfonts}
				\usepackage{amssymb}
				\usepackage{amsbsy}
				\usepackage{mathrsfs}
				\usepackage{upgreek}
				\setlength{\oddsidemargin}{-69pt}
				\begin{document}$$F_p \ge F_c$$\end{document}</tex-math><inline-graphic xlink:href="236_2019_359_Article_IEq46.gif"/></alternatives></inline-formula>, so that our controller can be represented accurately in the model domain. Thus any mathematical operations in our modelled digital controller will be in the range of <inline-formula id="IEq47"><alternatives><mml:math><mml:msub><mml:mi mathvariant="script">F</mml:mi><mml:mrow><mml:mo stretchy="false">⟨</mml:mo><mml:msub><mml:mi>I</mml:mi><mml:mi>c</mml:mi></mml:msub><mml:mo>,</mml:mo><mml:msub><mml:mi>F</mml:mi><mml:mi>c</mml:mi></mml:msub><mml:mo stretchy="false">⟩</mml:mo></mml:mrow></mml:msub></mml:math><tex-math id="IEq47_TeX">\documentclass[12pt]{minimal}
				\usepackage{amsmath}
				\usepackage{wasysym}
				\usepackage{amsfonts}
				\usepackage{amssymb}
				\usepackage{amsbsy}
				\usepackage{mathrsfs}
				\usepackage{upgreek}
				\setlength{\oddsidemargin}{-69pt}
				\begin{document}$${\mathcal {F}}_{\langle I_c,F_c \rangle }$$\end{document}</tex-math><inline-graphic xlink:href="236_2019_359_Article_IEq47.gif"/></alternatives></inline-formula>, and all other calculations in our model will be carried out in the range of <inline-formula id="IEq48"><alternatives><mml:math><mml:msub><mml:mi mathvariant="script">F</mml:mi><mml:mrow><mml:mo stretchy="false">⟨</mml:mo><mml:msub><mml:mi>I</mml:mi><mml:mi>p</mml:mi></mml:msub><mml:mo>,</mml:mo><mml:msub><mml:mi>F</mml:mi><mml:mi>p</mml:mi></mml:msub><mml:mo stretchy="false">⟩</mml:mo></mml:mrow></mml:msub></mml:math><tex-math id="IEq48_TeX">\documentclass[12pt]{minimal}
				\usepackage{amsmath}
				\usepackage{wasysym}
				\usepackage{amsfonts}
				\usepackage{amssymb}
				\usepackage{amsbsy}
				\usepackage{mathrsfs}
				\usepackage{upgreek}
				\setlength{\oddsidemargin}{-69pt}
				\begin{document}$${\mathcal {F}}_{\langle I_p,F_p \rangle }$$\end{document}</tex-math><inline-graphic xlink:href="236_2019_359_Article_IEq48.gif"/></alternatives></inline-formula>.</p><p id="Par37">We further employ <inline-formula id="IEq49"><alternatives><mml:math><mml:mrow><mml:msub><mml:mi mathvariant="script">F</mml:mi><mml:mrow><mml:mo stretchy="false">⟨</mml:mo><mml:mi>E</mml:mi><mml:mo>,</mml:mo><mml:mi>M</mml:mi><mml:mo stretchy="false">⟩</mml:mo></mml:mrow></mml:msub><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mi>x</mml:mi><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:mrow></mml:math><tex-math id="IEq49_TeX">\documentclass[12pt]{minimal}
				\usepackage{amsmath}
				\usepackage{wasysym}
				\usepackage{amsfonts}
				\usepackage{amssymb}
				\usepackage{amsbsy}
				\usepackage{mathrsfs}
				\usepackage{upgreek}
				\setlength{\oddsidemargin}{-69pt}
				\begin{document}$${\mathcal {F}}_{\langle E,M \rangle }(x)$$\end{document}</tex-math><inline-graphic xlink:href="236_2019_359_Article_IEq49.gif"/></alternatives></inline-formula> to denote a real number <italic>x</italic> represented in a floating-point domain, with <italic>E</italic> bits representing the exponent part and <italic>M</italic> bits representing the mantissa part. In particular, we use <inline-formula id="IEq50"><alternatives><mml:math><mml:mrow><mml:msub><mml:mi mathvariant="script">F</mml:mi><mml:mrow><mml:mo stretchy="false">⟨</mml:mo><mml:msub><mml:mi>E</mml:mi><mml:mi>c</mml:mi></mml:msub><mml:mo>,</mml:mo><mml:msub><mml:mi>M</mml:mi><mml:mi>c</mml:mi></mml:msub><mml:mo stretchy="false">⟩</mml:mo></mml:mrow></mml:msub><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mi>x</mml:mi><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:mrow></mml:math><tex-math id="IEq50_TeX">\documentclass[12pt]{minimal}
				\usepackage{amsmath}
				\usepackage{wasysym}
				\usepackage{amsfonts}
				\usepackage{amssymb}
				\usepackage{amsbsy}
				\usepackage{mathrsfs}
				\usepackage{upgreek}
				\setlength{\oddsidemargin}{-69pt}
				\begin{document}$${\mathcal {F}}_{\langle E_c,M_c \rangle }(x)$$\end{document}</tex-math><inline-graphic xlink:href="236_2019_359_Article_IEq50.gif"/></alternatives></inline-formula> to denote a real number represented at the floating-point precision of the controller, whereas <inline-formula id="IEq51"><alternatives><mml:math><mml:mrow><mml:msub><mml:mi mathvariant="script">F</mml:mi><mml:mrow><mml:mo stretchy="false">⟨</mml:mo><mml:msub><mml:mi>E</mml:mi><mml:mi>p</mml:mi></mml:msub><mml:mo>,</mml:mo><mml:msub><mml:mi>M</mml:mi><mml:mi>p</mml:mi></mml:msub><mml:mo stretchy="false">⟩</mml:mo></mml:mrow></mml:msub><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mi>x</mml:mi><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:mrow></mml:math><tex-math id="IEq51_TeX">\documentclass[12pt]{minimal}
				\usepackage{amsmath}
				\usepackage{wasysym}
				\usepackage{amsfonts}
				\usepackage{amssymb}
				\usepackage{amsbsy}
				\usepackage{mathrsfs}
				\usepackage{upgreek}
				\setlength{\oddsidemargin}{-69pt}
				\begin{document}$${\mathcal {F}}_{\langle E_p,M_p \rangle }(x)$$\end{document}</tex-math><inline-graphic xlink:href="236_2019_359_Article_IEq51.gif"/></alternatives></inline-formula> denotes a real number represented at the floating-point precision of the plant model.<fig id="Fig4"><label>Fig. 4</label><caption xml:lang="en"><p>The general CEGIS framework</p></caption><p><graphic specific-use="HTML" mime-subtype="PNG" xlink:href="MediaObjects/236_2019_359_Fig4_HTML.png" id="MO25"/></p></fig></p></sec><sec id="Sec14"><title>Counterexample-guided inductive synthesis (CEGIS)</title><p id="Par38">In this section, we give a brief description of the CEGIS framework [<xref ref-type="bibr" rid="CR23">23</xref>, <xref ref-type="bibr" rid="CR43">43</xref>], which is illustrated in Fig. <xref rid="Fig4" ref-type="fig">4</xref>. CEGIS has been recently developed for the automated synthesis of software programs, and its setup is naturally that of mathematical logic. We consider an input specification of the form<disp-formula id="Equ4"><alternatives><mml:math display="block"><mml:mrow><mml:mtable><mml:mtr><mml:mtd columnalign="right"><mml:mrow><mml:mo>∃</mml:mo><mml:mi>P</mml:mi><mml:mo>.</mml:mo><mml:mspace width="0.166667em"/><mml:mo>∀</mml:mo><mml:mi>a</mml:mi><mml:mo>.</mml:mo><mml:mspace width="0.166667em"/><mml:mi>ϕ</mml:mi><mml:mo stretchy="false">(</mml:mo><mml:mi>a</mml:mi><mml:mo>,</mml:mo><mml:mi>P</mml:mi><mml:mo stretchy="false">)</mml:mo><mml:mo>,</mml:mo></mml:mrow></mml:mtd></mml:mtr></mml:mtable></mml:mrow></mml:math><tex-math id="Equ4_TeX">\documentclass[12pt]{minimal}
				\usepackage{amsmath}
				\usepackage{wasysym}
				\usepackage{amsfonts}
				\usepackage{amssymb}
				\usepackage{amsbsy}
				\usepackage{mathrsfs}
				\usepackage{upgreek}
				\setlength{\oddsidemargin}{-69pt}
				\begin{document}$$\begin{aligned} \exists P .\, \forall a.\, \phi (a, P), \end{aligned}$$\end{document}</tex-math><graphic position="anchor" xlink:href="236_2019_359_Article_Equ4.gif"/></alternatives></disp-formula>where <italic>P</italic> ranges over functions (where a function is represented by the program computing it), <italic>a</italic> ranges over ground terms, and <inline-formula id="IEq52"><alternatives><mml:math><mml:mi>ϕ</mml:mi></mml:math><tex-math id="IEq52_TeX">\documentclass[12pt]{minimal}
				\usepackage{amsmath}
				\usepackage{wasysym}
				\usepackage{amsfonts}
				\usepackage{amssymb}
				\usepackage{amsbsy}
				\usepackage{mathrsfs}
				\usepackage{upgreek}
				\setlength{\oddsidemargin}{-69pt}
				\begin{document}$$\phi $$\end{document}</tex-math><inline-graphic xlink:href="236_2019_359_Article_IEq52.gif"/></alternatives></inline-formula> is a quantifier-free logical formula. We interpret the ground terms over some domain <inline-formula id="IEq53"><alternatives><mml:math><mml:mi mathvariant="script">D</mml:mi></mml:math><tex-math id="IEq53_TeX">\documentclass[12pt]{minimal}
				\usepackage{amsmath}
				\usepackage{wasysym}
				\usepackage{amsfonts}
				\usepackage{amssymb}
				\usepackage{amsbsy}
				\usepackage{mathrsfs}
				\usepackage{upgreek}
				\setlength{\oddsidemargin}{-69pt}
				\begin{document}$${\mathcal {D}}$$\end{document}</tex-math><inline-graphic xlink:href="236_2019_359_Article_IEq53.gif"/></alternatives></inline-formula>. This is a design problem, where the objective is to synthesise a valid <italic>P</italic> that satisfies <inline-formula id="IEq54"><alternatives><mml:math><mml:mi>ϕ</mml:mi></mml:math><tex-math id="IEq54_TeX">\documentclass[12pt]{minimal}
				\usepackage{amsmath}
				\usepackage{wasysym}
				\usepackage{amsfonts}
				\usepackage{amssymb}
				\usepackage{amsbsy}
				\usepackage{mathrsfs}
				\usepackage{upgreek}
				\setlength{\oddsidemargin}{-69pt}
				\begin{document}$$\phi $$\end{document}</tex-math><inline-graphic xlink:href="236_2019_359_Article_IEq54.gif"/></alternatives></inline-formula> over all the <italic>a</italic> terms.</p><p id="Par39">CEGIS breaks down this generally hard synthesis problem into two easier parts: an inductive synthesis phase (denoted by <sc>Synthesize</sc> in Fig. <xref rid="Fig4" ref-type="fig">4</xref>) and a verification phase (denoted by <sc>Verify</sc> in Fig. <xref rid="Fig4" ref-type="fig">4</xref>), which interacts via a finite set of tests <sc>inputs</sc> that is updated incrementally. Given the specification <inline-formula id="IEq55"><alternatives><mml:math><mml:mi>ϕ</mml:mi></mml:math><tex-math id="IEq55_TeX">\documentclass[12pt]{minimal}
				\usepackage{amsmath}
				\usepackage{wasysym}
				\usepackage{amsfonts}
				\usepackage{amssymb}
				\usepackage{amsbsy}
				\usepackage{mathrsfs}
				\usepackage{upgreek}
				\setlength{\oddsidemargin}{-69pt}
				\begin{document}$$\phi $$\end{document}</tex-math><inline-graphic xlink:href="236_2019_359_Article_IEq55.gif"/></alternatives></inline-formula>, the inductive synthesis procedure tries to find an existential witness <italic>P</italic> satisfying the specification <inline-formula id="IEq56"><alternatives><mml:math><mml:mrow><mml:mi>ϕ</mml:mi><mml:mo stretchy="false">(</mml:mo><mml:mi>a</mml:mi><mml:mo>,</mml:mo><mml:mi>P</mml:mi><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:math><tex-math id="IEq56_TeX">\documentclass[12pt]{minimal}
				\usepackage{amsmath}
				\usepackage{wasysym}
				\usepackage{amsfonts}
				\usepackage{amssymb}
				\usepackage{amsbsy}
				\usepackage{mathrsfs}
				\usepackage{upgreek}
				\setlength{\oddsidemargin}{-69pt}
				\begin{document}$$\phi (a, P)$$\end{document}</tex-math><inline-graphic xlink:href="236_2019_359_Article_IEq56.gif"/></alternatives></inline-formula> for all <italic>a</italic> in <sc>inputs</sc> (as opposed to all <inline-formula id="IEq57"><alternatives><mml:math><mml:mrow><mml:mi>a</mml:mi><mml:mo>∈</mml:mo><mml:mi mathvariant="script">D</mml:mi></mml:mrow></mml:math><tex-math id="IEq57_TeX">\documentclass[12pt]{minimal}
				\usepackage{amsmath}
				\usepackage{wasysym}
				\usepackage{amsfonts}
				\usepackage{amssymb}
				\usepackage{amsbsy}
				\usepackage{mathrsfs}
				\usepackage{upgreek}
				\setlength{\oddsidemargin}{-69pt}
				\begin{document}$$a \in {\mathcal {D}}$$\end{document}</tex-math><inline-graphic xlink:href="236_2019_359_Article_IEq57.gif"/></alternatives></inline-formula>). If the synthesis phase succeeds in finding a witness <italic>P</italic>, this witness is a candidate solution to the full synthesis formula. We pass this candidate solution to the verification phase, which checks whether it is a full solution (i.e., <italic>P</italic> satisfies the specification <inline-formula id="IEq58"><alternatives><mml:math><mml:mrow><mml:mi>ϕ</mml:mi><mml:mo stretchy="false">(</mml:mo><mml:mi>a</mml:mi><mml:mo>,</mml:mo><mml:mi>P</mml:mi><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:math><tex-math id="IEq58_TeX">\documentclass[12pt]{minimal}
				\usepackage{amsmath}
				\usepackage{wasysym}
				\usepackage{amsfonts}
				\usepackage{amssymb}
				\usepackage{amsbsy}
				\usepackage{mathrsfs}
				\usepackage{upgreek}
				\setlength{\oddsidemargin}{-69pt}
				\begin{document}$$\phi (a, P)$$\end{document}</tex-math><inline-graphic xlink:href="236_2019_359_Article_IEq58.gif"/></alternatives></inline-formula> for all <inline-formula id="IEq59"><alternatives><mml:math><mml:mrow><mml:mi>a</mml:mi><mml:mo>∈</mml:mo><mml:mi mathvariant="script">D</mml:mi></mml:mrow></mml:math><tex-math id="IEq59_TeX">\documentclass[12pt]{minimal}
				\usepackage{amsmath}
				\usepackage{wasysym}
				\usepackage{amsfonts}
				\usepackage{amssymb}
				\usepackage{amsbsy}
				\usepackage{mathrsfs}
				\usepackage{upgreek}
				\setlength{\oddsidemargin}{-69pt}
				\begin{document}$$a\in {\mathcal {D}}$$\end{document}</tex-math><inline-graphic xlink:href="236_2019_359_Article_IEq59.gif"/></alternatives></inline-formula>). If this is the case, then the algorithm terminates. Otherwise, additional information is provided to the inductive synthesis phase in the form of a new counterexample that is added to the <sc>inputs</sc> set and the loop iterates again. If the solution space is finite then the CEGIS loop is guaranteed to terminate by either finding a solution or showing that no solution exists.</p><p id="Par40">In the context of the formal synthesis of safe controllers, of interest for this work, the set of possible <sc>inputs</sc> corresponds to the set of possible initial states and the candidate program <italic>P</italic> is a candidate controller <italic>K</italic>. The synthesis block generates a candidate controller that works for a subset of the possible initial states, and the verifier checks whether the controller works for all possible initial states.</p></sec></sec><sec id="Sec15"><title>Formal specification of stability on a model</title><p id="Par41">Since we are interested in capturing safety [as encoded in Eq. (<xref rid="Equ3" ref-type="disp-formula">3</xref>) in Sect. <xref rid="Sec9" ref-type="sec">3.4</xref>], we use a stability specification to narrow the search space of possible controllers, as detailed in Sect. <xref rid="Sec16" ref-type="sec">4.1</xref>. Essentially, we employ stability as a precursor to safety.</p><sec id="Sec16"><title>Jury’s stability criterion</title><p id="Par42">There are a number of well known procedures to perform stability analysis of dynamical models [<xref ref-type="bibr" rid="CR5">5</xref>]. Here we select the classical <italic>Jury’s stability criterion</italic> [<xref ref-type="bibr" rid="CR7">7</xref>], in view of its efficiency and ease of integration within our implementation. This method checks the stability of a model working over the complex domain of its characteristic polynomial <italic>S</italic>(<italic>z</italic>), considered in its general form as<disp-formula id="Equ5"><alternatives><mml:math display="block"><mml:mrow><mml:mtable><mml:mtr><mml:mtd columnalign="right"><mml:mrow><mml:mi>S</mml:mi><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mi>z</mml:mi><mml:mo stretchy="false">)</mml:mo></mml:mrow><mml:mo>=</mml:mo><mml:msub><mml:mi>a</mml:mi><mml:mn>0</mml:mn></mml:msub><mml:msup><mml:mi>z</mml:mi><mml:mi>N</mml:mi></mml:msup><mml:mo>+</mml:mo><mml:msub><mml:mi>a</mml:mi><mml:mn>1</mml:mn></mml:msub><mml:msup><mml:mi>z</mml:mi><mml:mrow><mml:mi>N</mml:mi><mml:mo>-</mml:mo><mml:mn>1</mml:mn></mml:mrow></mml:msup><mml:mo>+</mml:mo><mml:mo>⋯</mml:mo><mml:mo>+</mml:mo><mml:msub><mml:mi>a</mml:mi><mml:mrow><mml:mi>N</mml:mi><mml:mo>-</mml:mo><mml:mn>1</mml:mn></mml:mrow></mml:msub><mml:mi>z</mml:mi><mml:mo>+</mml:mo><mml:msub><mml:mi>a</mml:mi><mml:mi>N</mml:mi></mml:msub><mml:mo>,</mml:mo><mml:mspace width="1em"/><mml:msub><mml:mi>a</mml:mi><mml:mn>0</mml:mn></mml:msub><mml:mo>≠</mml:mo><mml:mn>0</mml:mn><mml:mo>.</mml:mo></mml:mrow></mml:mtd></mml:mtr></mml:mtable></mml:mrow></mml:math><tex-math id="Equ5_TeX">\documentclass[12pt]{minimal}
				\usepackage{amsmath}
				\usepackage{wasysym}
				\usepackage{amsfonts}
				\usepackage{amssymb}
				\usepackage{amsbsy}
				\usepackage{mathrsfs}
				\usepackage{upgreek}
				\setlength{\oddsidemargin}{-69pt}
				\begin{document}$$\begin{aligned} S(z) = a_0z^N+a_1z^{N-1}+\cdots +a_{N-1}z+a_N,{\quad } a_0\ne 0. \end{aligned}$$\end{document}</tex-math><graphic position="anchor" xlink:href="236_2019_359_Article_Equ5.gif"/></alternatives></disp-formula>A standard result in Control theory [<xref ref-type="bibr" rid="CR5">5</xref>] states that this polynomial can be obtained as a function of the state-space matrices <inline-formula id="IEq60"><alternatives><mml:math><mml:mrow><mml:msub><mml:mi>A</mml:mi><mml:mi>d</mml:mi></mml:msub><mml:mo>,</mml:mo><mml:msub><mml:mi>B</mml:mi><mml:mi>d</mml:mi></mml:msub></mml:mrow></mml:math><tex-math id="IEq60_TeX">\documentclass[12pt]{minimal}
				\usepackage{amsmath}
				\usepackage{wasysym}
				\usepackage{amsfonts}
				\usepackage{amssymb}
				\usepackage{amsbsy}
				\usepackage{mathrsfs}
				\usepackage{upgreek}
				\setlength{\oddsidemargin}{-69pt}
				\begin{document}$$A_d,B_d$$\end{document}</tex-math><inline-graphic xlink:href="236_2019_359_Article_IEq60.gif"/></alternatives></inline-formula>, and in particular its order <italic>N</italic> corresponds to the dimensions of the state variables (above, <italic>n</italic>). A sufficient condition for asymptotic stability of the closed-loop LTI model [<xref ref-type="bibr" rid="CR7">7</xref>] is when all the roots of its characteristic polynomial <italic>S</italic>(<italic>z</italic>) (which correspond to the eigenvalues of the matrix <inline-formula id="IEq61"><alternatives><mml:math><mml:mrow><mml:msub><mml:mi>A</mml:mi><mml:mi>d</mml:mi></mml:msub><mml:mo>-</mml:mo><mml:msub><mml:mi>B</mml:mi><mml:mi>d</mml:mi></mml:msub><mml:mi>K</mml:mi></mml:mrow></mml:math><tex-math id="IEq61_TeX">\documentclass[12pt]{minimal}
				\usepackage{amsmath}
				\usepackage{wasysym}
				\usepackage{amsfonts}
				\usepackage{amssymb}
				\usepackage{amsbsy}
				\usepackage{mathrsfs}
				\usepackage{upgreek}
				\setlength{\oddsidemargin}{-69pt}
				\begin{document}$$A_d-B_dK$$\end{document}</tex-math><inline-graphic xlink:href="236_2019_359_Article_IEq61.gif"/></alternatives></inline-formula>) are inside the unit circle in the complex plane, i.e., when the absolute values of the roots are less than one.</p><p id="Par43">Skipping the full algebraic derivation for the sake of space (this can be found in [<xref ref-type="bibr" rid="CR7">7</xref>]), the following matrix <italic>M</italic> with dimension <inline-formula id="IEq62"><alternatives><mml:math><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mn>2</mml:mn><mml:mi>N</mml:mi><mml:mo>-</mml:mo><mml:mn>2</mml:mn><mml:mo stretchy="false">)</mml:mo><mml:mo>×</mml:mo><mml:mi>N</mml:mi></mml:mrow></mml:math><tex-math id="IEq62_TeX">\documentclass[12pt]{minimal}
				\usepackage{amsmath}
				\usepackage{wasysym}
				\usepackage{amsfonts}
				\usepackage{amssymb}
				\usepackage{amsbsy}
				\usepackage{mathrsfs}
				\usepackage{upgreek}
				\setlength{\oddsidemargin}{-69pt}
				\begin{document}$$(2N-2)\times N$$\end{document}</tex-math><inline-graphic xlink:href="236_2019_359_Article_IEq62.gif"/></alternatives></inline-formula> and elements <inline-formula id="IEq63"><alternatives><mml:math><mml:msub><mml:mi>m</mml:mi><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mo>·</mml:mo><mml:mo stretchy="false">)</mml:mo><mml:mo>,</mml:mo><mml:mo stretchy="false">(</mml:mo><mml:mo>·</mml:mo><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:msub></mml:math><tex-math id="IEq63_TeX">\documentclass[12pt]{minimal}
				\usepackage{amsmath}
				\usepackage{wasysym}
				\usepackage{amsfonts}
				\usepackage{amssymb}
				\usepackage{amsbsy}
				\usepackage{mathrsfs}
				\usepackage{upgreek}
				\setlength{\oddsidemargin}{-69pt}
				\begin{document}$$m_{(\cdot ),(\cdot )}$$\end{document}</tex-math><inline-graphic xlink:href="236_2019_359_Article_IEq63.gif"/></alternatives></inline-formula> is built from the coefficients of <italic>S</italic>(<italic>z</italic>) as:<disp-formula id="Equ6"><alternatives><mml:math display="block"><mml:mrow><mml:mtable><mml:mtr><mml:mtd columnalign="right"><mml:mrow><mml:mi>M</mml:mi><mml:mo>=</mml:mo><mml:mfenced close=")" open="("><mml:mrow><mml:mtable><mml:mtr><mml:mtd><mml:msup><mml:mi>V</mml:mi><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mn>0</mml:mn><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:msup></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mrow><mml:mrow/><mml:msup><mml:mi>V</mml:mi><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mn>1</mml:mn><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:msup></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mrow><mml:mrow/><mml:mo>⋮</mml:mo></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mrow><mml:mrow/><mml:msup><mml:mi>V</mml:mi><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mi>N</mml:mi><mml:mo>-</mml:mo><mml:mn>2</mml:mn><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:msup></mml:mrow></mml:mtd></mml:mtr></mml:mtable></mml:mrow></mml:mfenced><mml:mo>,</mml:mo></mml:mrow></mml:mtd></mml:mtr></mml:mtable></mml:mrow></mml:math><tex-math id="Equ6_TeX">\documentclass[12pt]{minimal}
				\usepackage{amsmath}
				\usepackage{wasysym}
				\usepackage{amsfonts}
				\usepackage{amssymb}
				\usepackage{amsbsy}
				\usepackage{mathrsfs}
				\usepackage{upgreek}
				\setlength{\oddsidemargin}{-69pt}
				\begin{document}$$\begin{aligned} M=\left( \begin{array}{c} V^{(0)}\\ V^{(1)}\\ \vdots \\ V^{(N-2)} \end{array} \right) , \end{aligned}$$\end{document}</tex-math><graphic position="anchor" xlink:href="236_2019_359_Article_Equ6.gif"/></alternatives></disp-formula>where <inline-formula id="IEq64"><alternatives><mml:math><mml:mrow><mml:msup><mml:mi>V</mml:mi><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mi>k</mml:mi><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:msup><mml:mo>=</mml:mo><mml:msub><mml:mrow><mml:mo stretchy="false">[</mml:mo><mml:msubsup><mml:mi>v</mml:mi><mml:mrow><mml:mi mathvariant="italic">ij</mml:mi></mml:mrow><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mi>k</mml:mi><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:msubsup><mml:mo stretchy="false">]</mml:mo></mml:mrow><mml:mrow><mml:mn>2</mml:mn><mml:mo>×</mml:mo><mml:mi>N</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:math><tex-math id="IEq64_TeX">\documentclass[12pt]{minimal}
				\usepackage{amsmath}
				\usepackage{wasysym}
				\usepackage{amsfonts}
				\usepackage{amssymb}
				\usepackage{amsbsy}
				\usepackage{mathrsfs}
				\usepackage{upgreek}
				\setlength{\oddsidemargin}{-69pt}
				\begin{document}$$V^{(k)} = [v^{(k)}_{ij} ]_{2\times N}$$\end{document}</tex-math><inline-graphic xlink:href="236_2019_359_Article_IEq64.gif"/></alternatives></inline-formula> is such that:<disp-formula id="Equ7"><alternatives><mml:math display="block"><mml:mrow><mml:mtable><mml:mtr><mml:mtd columnalign="right"><mml:mrow><mml:msubsup><mml:mi>v</mml:mi><mml:mrow><mml:mi mathvariant="italic">ij</mml:mi></mml:mrow><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mn>0</mml:mn><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:msubsup><mml:mo>=</mml:mo></mml:mrow></mml:mtd><mml:mtd columnalign="left"><mml:mrow><mml:mrow/><mml:mfenced open="{"><mml:mrow><mml:mtable columnspacing="1em"><mml:mtr><mml:mtd columnalign="left"><mml:mrow><mml:msub><mml:mi>a</mml:mi><mml:mrow><mml:mi>j</mml:mi><mml:mo>-</mml:mo><mml:mn>1</mml:mn></mml:mrow></mml:msub><mml:mo>,</mml:mo></mml:mrow></mml:mtd><mml:mtd columnalign="left"><mml:mrow><mml:mrow/><mml:mspace width="0.333333em"/><mml:mtext>if</mml:mtext><mml:mspace width="0.333333em"/><mml:mspace width="3.33333pt"/><mml:mi>i</mml:mi><mml:mo>=</mml:mo><mml:mn>1</mml:mn></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd columnalign="left"><mml:mrow><mml:mrow/><mml:msubsup><mml:mi>v</mml:mi><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mn>1</mml:mn><mml:mo stretchy="false">)</mml:mo><mml:mo stretchy="false">(</mml:mo><mml:mi>N</mml:mi><mml:mo>-</mml:mo><mml:mi>j</mml:mi><mml:mo>+</mml:mo><mml:mn>1</mml:mn><mml:mo stretchy="false">)</mml:mo></mml:mrow><mml:mn>0</mml:mn></mml:msubsup><mml:mo>,</mml:mo></mml:mrow></mml:mtd><mml:mtd columnalign="left"><mml:mrow><mml:mrow/><mml:mspace width="0.333333em"/><mml:mtext>if</mml:mtext><mml:mspace width="0.333333em"/><mml:mspace width="3.33333pt"/><mml:mi>i</mml:mi><mml:mo>=</mml:mo><mml:mn>2</mml:mn></mml:mrow></mml:mtd></mml:mtr></mml:mtable></mml:mrow></mml:mfenced></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd columnalign="right"><mml:mrow><mml:mrow/><mml:msubsup><mml:mi>v</mml:mi><mml:mrow><mml:mi mathvariant="italic">ij</mml:mi></mml:mrow><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mi>k</mml:mi><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:msubsup><mml:mo>=</mml:mo></mml:mrow></mml:mtd><mml:mtd columnalign="left"><mml:mrow><mml:mrow/><mml:mfenced open="{"><mml:mrow><mml:mtable columnspacing="1em"><mml:mtr><mml:mtd columnalign="left"><mml:mrow><mml:mn>0</mml:mn><mml:mo>,</mml:mo></mml:mrow></mml:mtd><mml:mtd columnalign="left"><mml:mrow><mml:mrow/><mml:mspace width="0.333333em"/><mml:mtext>if</mml:mtext><mml:mspace width="0.333333em"/><mml:mspace width="3.33333pt"/><mml:mi>j</mml:mi><mml:mo>&gt;</mml:mo><mml:mi>n</mml:mi><mml:mo>-</mml:mo><mml:mi>k</mml:mi></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd columnalign="left"><mml:mrow><mml:mrow/><mml:msubsup><mml:mi>v</mml:mi><mml:mrow><mml:mn>1</mml:mn><mml:mi>j</mml:mi></mml:mrow><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mi>k</mml:mi><mml:mo>-</mml:mo><mml:mn>1</mml:mn><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:msubsup><mml:mo>-</mml:mo><mml:msubsup><mml:mi>v</mml:mi><mml:mrow><mml:mn>2</mml:mn><mml:mi>j</mml:mi></mml:mrow><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mi>k</mml:mi><mml:mo>-</mml:mo><mml:mn>1</mml:mn><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:msubsup><mml:mo>.</mml:mo><mml:mfrac><mml:msubsup><mml:mi>v</mml:mi><mml:mrow><mml:mn>11</mml:mn></mml:mrow><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mi>k</mml:mi><mml:mo>-</mml:mo><mml:mn>1</mml:mn><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:msubsup><mml:msubsup><mml:mi>v</mml:mi><mml:mrow><mml:mn>21</mml:mn></mml:mrow><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mi>k</mml:mi><mml:mo>-</mml:mo><mml:mn>1</mml:mn><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:msubsup></mml:mfrac><mml:mo>,</mml:mo></mml:mrow></mml:mtd><mml:mtd columnalign="left"><mml:mrow><mml:mrow/><mml:mspace width="0.333333em"/><mml:mtext>if</mml:mtext><mml:mspace width="0.333333em"/><mml:mspace width="3.33333pt"/><mml:mi>j</mml:mi><mml:mo>≤</mml:mo><mml:mi>n</mml:mi><mml:mo>-</mml:mo><mml:mi>k</mml:mi><mml:mspace width="3.33333pt"/><mml:mspace width="0.333333em"/><mml:mtext>and</mml:mtext><mml:mspace width="0.333333em"/><mml:mspace width="3.33333pt"/><mml:mi>i</mml:mi><mml:mo>=</mml:mo><mml:mn>1</mml:mn></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd columnalign="left"><mml:mrow><mml:mrow/><mml:msubsup><mml:mi>v</mml:mi><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mn>1</mml:mn><mml:mo stretchy="false">)</mml:mo><mml:mo stretchy="false">(</mml:mo><mml:mi>N</mml:mi><mml:mo>-</mml:mo><mml:mi>j</mml:mi><mml:mo>+</mml:mo><mml:mn>1</mml:mn><mml:mo stretchy="false">)</mml:mo></mml:mrow><mml:mi>k</mml:mi></mml:msubsup><mml:mo>,</mml:mo></mml:mrow></mml:mtd><mml:mtd columnalign="left"><mml:mrow><mml:mrow/><mml:mspace width="0.333333em"/><mml:mtext>if</mml:mtext><mml:mspace width="0.333333em"/><mml:mspace width="3.33333pt"/><mml:mi>j</mml:mi><mml:mo>≤</mml:mo><mml:mi>n</mml:mi><mml:mo>-</mml:mo><mml:mi>k</mml:mi><mml:mspace width="3.33333pt"/><mml:mspace width="0.333333em"/><mml:mtext>and</mml:mtext><mml:mspace width="0.333333em"/><mml:mspace width="3.33333pt"/><mml:mi>i</mml:mi><mml:mo>=</mml:mo><mml:mn>2</mml:mn></mml:mrow></mml:mtd></mml:mtr></mml:mtable></mml:mrow></mml:mfenced></mml:mrow></mml:mtd></mml:mtr></mml:mtable></mml:mrow></mml:math><tex-math id="Equ7_TeX">\documentclass[12pt]{minimal}
				\usepackage{amsmath}
				\usepackage{wasysym}
				\usepackage{amsfonts}
				\usepackage{amssymb}
				\usepackage{amsbsy}
				\usepackage{mathrsfs}
				\usepackage{upgreek}
				\setlength{\oddsidemargin}{-69pt}
				\begin{document}$$\begin{aligned} v_{ij}^{(0)}= &amp; {} \left\{ \begin{array}{l@{\quad }l} a_{j-1}, &amp;{} \text{ if }~i=1\\ v_{(1)(N-j+1)}^{0},&amp;{}\text{ if }~i=2 \end{array} \right. \\ v_{ij}^{(k)}= &amp; {} \left\{ \begin{array}{l@{\quad }l} 0,&amp;{}\text{ if }~j&gt;n-k\\ v_{1j}^{(k-1)}-v_{2j}^{(k-1)} . \frac{v_{11}^{(k-1)}}{v_{21}^{(k-1)}}, &amp;{} \text{ if }~j\le n-k ~\text{ and }~i=1\\ v_{(1)(N-j+1)}^{k},&amp;{} \text{ if }~j\le n-k ~\text{ and }~i=2\\ \end{array} \right. \end{aligned}$$\end{document}</tex-math><graphic position="anchor" xlink:href="236_2019_359_Article_Equ7.gif"/></alternatives></disp-formula>and where <inline-formula id="IEq65"><alternatives><mml:math><mml:mrow><mml:mi>k</mml:mi><mml:mo>∈</mml:mo><mml:mi mathvariant="double-struck">Z</mml:mi></mml:mrow></mml:math><tex-math id="IEq65_TeX">\documentclass[12pt]{minimal}
				\usepackage{amsmath}
				\usepackage{wasysym}
				\usepackage{amsfonts}
				\usepackage{amssymb}
				\usepackage{amsbsy}
				\usepackage{mathrsfs}
				\usepackage{upgreek}
				\setlength{\oddsidemargin}{-69pt}
				\begin{document}$$k \in {\mathbb {Z}}$$\end{document}</tex-math><inline-graphic xlink:href="236_2019_359_Article_IEq65.gif"/></alternatives></inline-formula> is such that <inline-formula id="IEq66"><alternatives><mml:math><mml:mrow><mml:mn>0</mml:mn><mml:mo>&lt;</mml:mo><mml:mi>k</mml:mi><mml:mo>&lt;</mml:mo><mml:mi>N</mml:mi><mml:mo>-</mml:mo><mml:mn>2</mml:mn></mml:mrow></mml:math><tex-math id="IEq66_TeX">\documentclass[12pt]{minimal}
				\usepackage{amsmath}
				\usepackage{wasysym}
				\usepackage{amsfonts}
				\usepackage{amssymb}
				\usepackage{amsbsy}
				\usepackage{mathrsfs}
				\usepackage{upgreek}
				\setlength{\oddsidemargin}{-69pt}
				\begin{document}$$0&lt; k &lt; N - 2$$\end{document}</tex-math><inline-graphic xlink:href="236_2019_359_Article_IEq66.gif"/></alternatives></inline-formula>.</p><p id="Par44">We have that <italic>S</italic>(<italic>z</italic>) is the characteristic polynomial of an asymptotically stable system if and only if the following four conditions <inline-formula id="IEq67"><alternatives><mml:math><mml:mrow><mml:msub><mml:mi>R</mml:mi><mml:mi>i</mml:mi></mml:msub><mml:mo>,</mml:mo><mml:mi>i</mml:mi><mml:mo>=</mml:mo><mml:mn>1</mml:mn><mml:mo>,</mml:mo><mml:mn>2</mml:mn><mml:mo>,</mml:mo><mml:mn>3</mml:mn><mml:mo>,</mml:mo><mml:mn>4</mml:mn><mml:mo>,</mml:mo></mml:mrow></mml:math><tex-math id="IEq67_TeX">\documentclass[12pt]{minimal}
				\usepackage{amsmath}
				\usepackage{wasysym}
				\usepackage{amsfonts}
				\usepackage{amssymb}
				\usepackage{amsbsy}
				\usepackage{mathrsfs}
				\usepackage{upgreek}
				\setlength{\oddsidemargin}{-69pt}
				\begin{document}$$R_i, i = 1,2,3,4,$$\end{document}</tex-math><inline-graphic xlink:href="236_2019_359_Article_IEq67.gif"/></alternatives></inline-formula> hold [<xref ref-type="bibr" rid="CR7">7</xref>]: <inline-formula id="IEq68"><alternatives><mml:math><mml:mrow><mml:msub><mml:mi>R</mml:mi><mml:mn>1</mml:mn></mml:msub><mml:mo>:</mml:mo><mml:mi>S</mml:mi><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mn>1</mml:mn><mml:mo stretchy="false">)</mml:mo></mml:mrow><mml:mo>&gt;</mml:mo><mml:mn>0</mml:mn></mml:mrow></mml:math><tex-math id="IEq68_TeX">\documentclass[12pt]{minimal}
				\usepackage{amsmath}
				\usepackage{wasysym}
				\usepackage{amsfonts}
				\usepackage{amssymb}
				\usepackage{amsbsy}
				\usepackage{mathrsfs}
				\usepackage{upgreek}
				\setlength{\oddsidemargin}{-69pt}
				\begin{document}$$R_1: S(1) &gt; 0$$\end{document}</tex-math><inline-graphic xlink:href="236_2019_359_Article_IEq68.gif"/></alternatives></inline-formula>; <inline-formula id="IEq69"><alternatives><mml:math><mml:mrow><mml:msub><mml:mi>R</mml:mi><mml:mn>2</mml:mn></mml:msub><mml:mo>:</mml:mo><mml:msup><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mo>-</mml:mo><mml:mn>1</mml:mn><mml:mo stretchy="false">)</mml:mo></mml:mrow><mml:mi>N</mml:mi></mml:msup><mml:mi>S</mml:mi><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mo>-</mml:mo><mml:mn>1</mml:mn><mml:mo stretchy="false">)</mml:mo></mml:mrow><mml:mo>&gt;</mml:mo><mml:mn>0</mml:mn></mml:mrow></mml:math><tex-math id="IEq69_TeX">\documentclass[12pt]{minimal}
				\usepackage{amsmath}
				\usepackage{wasysym}
				\usepackage{amsfonts}
				\usepackage{amssymb}
				\usepackage{amsbsy}
				\usepackage{mathrsfs}
				\usepackage{upgreek}
				\setlength{\oddsidemargin}{-69pt}
				\begin{document}$$R_2: (-1)^N S(-1) &gt; 0$$\end{document}</tex-math><inline-graphic xlink:href="236_2019_359_Article_IEq69.gif"/></alternatives></inline-formula>; <inline-formula id="IEq70"><alternatives><mml:math><mml:mrow><mml:msub><mml:mi>R</mml:mi><mml:mn>3</mml:mn></mml:msub><mml:mo>:</mml:mo><mml:mrow><mml:mo stretchy="false">|</mml:mo><mml:msub><mml:mi>a</mml:mi><mml:mn>0</mml:mn></mml:msub><mml:mo stretchy="false">|</mml:mo></mml:mrow><mml:mo>&lt;</mml:mo><mml:msub><mml:mi>a</mml:mi><mml:mi>N</mml:mi></mml:msub></mml:mrow></mml:math><tex-math id="IEq70_TeX">\documentclass[12pt]{minimal}
				\usepackage{amsmath}
				\usepackage{wasysym}
				\usepackage{amsfonts}
				\usepackage{amssymb}
				\usepackage{amsbsy}
				\usepackage{mathrsfs}
				\usepackage{upgreek}
				\setlength{\oddsidemargin}{-69pt}
				\begin{document}$$R_3: |a_0| &lt; a_N$$\end{document}</tex-math><inline-graphic xlink:href="236_2019_359_Article_IEq70.gif"/></alternatives></inline-formula>; <inline-formula id="IEq71"><alternatives><mml:math><mml:mrow><mml:msub><mml:mi>R</mml:mi><mml:mn>4</mml:mn></mml:msub><mml:mo>:</mml:mo><mml:msub><mml:mi>m</mml:mi><mml:mn>11</mml:mn></mml:msub><mml:mo>&gt;</mml:mo><mml:mn>0</mml:mn><mml:mo>∧</mml:mo><mml:msub><mml:mi>m</mml:mi><mml:mn>31</mml:mn></mml:msub><mml:mo>&gt;</mml:mo><mml:mn>0</mml:mn><mml:mo>∧</mml:mo><mml:msub><mml:mi>m</mml:mi><mml:mn>51</mml:mn></mml:msub><mml:mo>&gt;</mml:mo><mml:mn>0</mml:mn><mml:mo>∧</mml:mo><mml:mo>…</mml:mo><mml:mo>∧</mml:mo><mml:msub><mml:mi>m</mml:mi><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mn>2</mml:mn><mml:mi>N</mml:mi><mml:mo>-</mml:mo><mml:mn>3</mml:mn><mml:mo stretchy="false">)</mml:mo><mml:mo stretchy="false">(</mml:mo><mml:mn>1</mml:mn><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:msub><mml:mo>&gt;</mml:mo><mml:mn>0</mml:mn></mml:mrow></mml:math><tex-math id="IEq71_TeX">\documentclass[12pt]{minimal}
				\usepackage{amsmath}
				\usepackage{wasysym}
				\usepackage{amsfonts}
				\usepackage{amssymb}
				\usepackage{amsbsy}
				\usepackage{mathrsfs}
				\usepackage{upgreek}
				\setlength{\oddsidemargin}{-69pt}
				\begin{document}$$R_4: m_{11}&gt; 0 \wedge m_{31}&gt;0 \wedge m_{51}&gt;0 \wedge \ldots \wedge m_{(2N{-}3)(1)}&gt;0$$\end{document}</tex-math><inline-graphic xlink:href="236_2019_359_Article_IEq71.gif"/></alternatives></inline-formula>, where <inline-formula id="IEq72"><alternatives><mml:math><mml:msub><mml:mi>m</mml:mi><mml:mrow><mml:mi mathvariant="italic">ij</mml:mi></mml:mrow></mml:msub></mml:math><tex-math id="IEq72_TeX">\documentclass[12pt]{minimal}
				\usepackage{amsmath}
				\usepackage{wasysym}
				\usepackage{amsfonts}
				\usepackage{amssymb}
				\usepackage{amsbsy}
				\usepackage{mathrsfs}
				\usepackage{upgreek}
				\setlength{\oddsidemargin}{-69pt}
				\begin{document}$$m_{ij}$$\end{document}</tex-math><inline-graphic xlink:href="236_2019_359_Article_IEq72.gif"/></alternatives></inline-formula> denotes the element in position (<italic>i</italic>, <italic>j</italic>) of the matrix <italic>M</italic>, as defined previously.</p><p id="Par45">Finally, the asymptotic stability property is finally encoded by a constraint expressed as the following formula: <inline-formula id="IEq73"><alternatives><mml:math><mml:mrow><mml:msub><mml:mi>ϕ</mml:mi><mml:mi>s</mml:mi></mml:msub><mml:mi>t</mml:mi><mml:mi>a</mml:mi><mml:mi>b</mml:mi><mml:mi>i</mml:mi><mml:mi>l</mml:mi><mml:mi>i</mml:mi><mml:mi>t</mml:mi><mml:mi>y</mml:mi><mml:mo>=</mml:mo><mml:mrow><mml:mo stretchy="false">{</mml:mo><mml:msub><mml:mi>R</mml:mi><mml:mn>1</mml:mn></mml:msub><mml:mo>∧</mml:mo><mml:msub><mml:mi>R</mml:mi><mml:mn>2</mml:mn></mml:msub><mml:mo>∧</mml:mo><mml:msub><mml:mi>R</mml:mi><mml:mn>3</mml:mn></mml:msub><mml:mo>∧</mml:mo><mml:msub><mml:mi>R</mml:mi><mml:mn>4</mml:mn></mml:msub><mml:mo stretchy="false">}</mml:mo></mml:mrow><mml:mo>.</mml:mo></mml:mrow></mml:math><tex-math id="IEq73_TeX">\documentclass[12pt]{minimal}
				\usepackage{amsmath}
				\usepackage{wasysym}
				\usepackage{amsfonts}
				\usepackage{amssymb}
				\usepackage{amsbsy}
				\usepackage{mathrsfs}
				\usepackage{upgreek}
				\setlength{\oddsidemargin}{-69pt}
				\begin{document}$$\phi _ stability = \{R_1 \wedge R_2 \wedge R_3 \wedge R_4\}. $$\end{document}</tex-math><inline-graphic xlink:href="236_2019_359_Article_IEq73.gif"/></alternatives></inline-formula></p></sec></sec><sec id="Sec17"><title>Numerical representation and soundness</title><p id="Par46">As discussed in Sect. <xref rid="Sec11" ref-type="sec">3.6</xref>, the considered models must account for the semantics of finite-precision arithmetic, deriving from several sources: we formally bound the numerical error introduced by the finite-precision representation of the plant (and its operations), and precisely model the behaviour introduced by the ADC/DAC conversions, as well as the behaviour of the limited-precision arithmetic used in the controller.</p><p id="Par47">Technically, we employ interval arithmetic to bound the error introduced by the finite-precision plant model, and we use bounded model checking to precisely model the semantics of finite-precision arithmetic, as introduced by the ADC/DAC blocks and by the finite-precision controller.</p><sec id="Sec18"><title>Bit-precise bounded model checking</title><p id="Par48">As described in Sect. <xref rid="Sec10" ref-type="sec">3.5</xref>, we use CBMC, a bit-precise bounded model checker, to synthesise and verify candidate controllers. CBMC manipulates precisely the fixed- or floating-point arithmetic used in the controller, as well as the ADC/DAC conversions, according to the IEEE standards.</p></sec><sec id="Sec19"><title>Interval arithmetic for errors in numerical representations</title><p id="Par49">We use finite-precision arithmetic to model the plant. This is an approximation that speeds up each CEGIS iteration, however it necessitates a further stage where we verify that the errors introduced by the approximation have not resulted in a controller that is unsafe when executed on a model expressed over real numbers. In this stage, we represent the plant model using double-precision floating-point numbers and we use the Boost interval arithmetic library [<xref ref-type="bibr" rid="CR11">11</xref>] to bound the error in this representation. We employ a compositional numerical library to model the fixed-point arithmetic for the controller<xref ref-type="fn" rid="Fn1">1</xref> within double-precision floating-point numbers. We check that the controller is safe starting from each vertex of the set of initial states, and show that this is sufficient to prove safety from any state in this set (see Theorem <xref rid="FPar1" ref-type="">1</xref>).</p><p id="Par51">We describe here the mathematics behind bounding the errors on the double-precision floating-point numbers. Recall we use <inline-formula id="IEq74"><alternatives><mml:math><mml:mrow><mml:msub><mml:mi mathvariant="script">F</mml:mi><mml:mrow><mml:mo stretchy="false">⟨</mml:mo><mml:mi>E</mml:mi><mml:mo>,</mml:mo><mml:mi>M</mml:mi><mml:mo stretchy="false">⟩</mml:mo></mml:mrow></mml:msub><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mi>x</mml:mi><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:mrow></mml:math><tex-math id="IEq74_TeX">\documentclass[12pt]{minimal}
				\usepackage{amsmath}
				\usepackage{wasysym}
				\usepackage{amsfonts}
				\usepackage{amssymb}
				\usepackage{amsbsy}
				\usepackage{mathrsfs}
				\usepackage{upgreek}
				\setlength{\oddsidemargin}{-69pt}
				\begin{document}$${\mathcal {F}}_{\langle E,M \rangle }(x)$$\end{document}</tex-math><inline-graphic xlink:href="236_2019_359_Article_IEq74.gif"/></alternatives></inline-formula> denote a real number <italic>x</italic> represented in a floating-point domain, with <italic>E</italic> bits representing the exponent part, and <italic>M</italic> bits representing the mantissa. In general the representation of a real number using the floating-point domain introduces an error, for which an upper bound can be given [<xref ref-type="bibr" rid="CR10">10</xref>]. For each number <italic>x</italic> represented in the floating-point domain as <inline-formula id="IEq75"><alternatives><mml:math><mml:mrow><mml:msub><mml:mi mathvariant="script">F</mml:mi><mml:mrow><mml:mo stretchy="false">⟨</mml:mo><mml:mi>E</mml:mi><mml:mo>,</mml:mo><mml:mi>M</mml:mi><mml:mo stretchy="false">⟩</mml:mo></mml:mrow></mml:msub><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mi>x</mml:mi><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:mrow></mml:math><tex-math id="IEq75_TeX">\documentclass[12pt]{minimal}
				\usepackage{amsmath}
				\usepackage{wasysym}
				\usepackage{amsfonts}
				\usepackage{amssymb}
				\usepackage{amsbsy}
				\usepackage{mathrsfs}
				\usepackage{upgreek}
				\setlength{\oddsidemargin}{-69pt}
				\begin{document}$${\mathcal {F}}_{\langle E,M \rangle }(x)$$\end{document}</tex-math><inline-graphic xlink:href="236_2019_359_Article_IEq75.gif"/></alternatives></inline-formula>, we store an interval that encompasses this error. Further mathematical operations performed at the precision <inline-formula id="IEq76"><alternatives><mml:math><mml:mrow><mml:msub><mml:mi mathvariant="script">F</mml:mi><mml:mrow><mml:mo stretchy="false">⟨</mml:mo><mml:mi>E</mml:mi><mml:mo>,</mml:mo><mml:mi>M</mml:mi><mml:mo stretchy="false">⟩</mml:mo></mml:mrow></mml:msub><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mi>x</mml:mi><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:mrow></mml:math><tex-math id="IEq76_TeX">\documentclass[12pt]{minimal}
				\usepackage{amsmath}
				\usepackage{wasysym}
				\usepackage{amsfonts}
				\usepackage{amssymb}
				\usepackage{amsbsy}
				\usepackage{mathrsfs}
				\usepackage{upgreek}
				\setlength{\oddsidemargin}{-69pt}
				\begin{document}$${\mathcal {F}}_{\langle E,M \rangle }(x)$$\end{document}</tex-math><inline-graphic xlink:href="236_2019_359_Article_IEq76.gif"/></alternatives></inline-formula> will propagate this error, leading to further errors for which bounds can be derived [<xref ref-type="bibr" rid="CR10">10</xref>].</p><p id="Par52">The fixed-point arithmetic of the digital controller is performed on the upper and lower bound of the intervals from above independently, and the upper and lower bound of the result is taken as the interval result. For example, consider the conversion from the model precision to controller precision performed by the ADC on a single state value. The state value is represented as an interval <inline-formula id="IEq77"><alternatives><mml:math><mml:mrow><mml:mo stretchy="false">{</mml:mo><mml:mi>x</mml:mi><mml:mo>.</mml:mo><mml:mi>h</mml:mi><mml:mi>i</mml:mi><mml:mi>g</mml:mi><mml:mi>h</mml:mi><mml:mo>,</mml:mo><mml:mi>x</mml:mi><mml:mo>.</mml:mo><mml:mi>l</mml:mi><mml:mi>o</mml:mi><mml:mi>w</mml:mi><mml:mo stretchy="false">}</mml:mo></mml:mrow></mml:math><tex-math id="IEq77_TeX">\documentclass[12pt]{minimal}
				\usepackage{amsmath}
				\usepackage{wasysym}
				\usepackage{amsfonts}
				\usepackage{amssymb}
				\usepackage{amsbsy}
				\usepackage{mathrsfs}
				\usepackage{upgreek}
				\setlength{\oddsidemargin}{-69pt}
				\begin{document}$$\{x.high, x.low\}$$\end{document}</tex-math><inline-graphic xlink:href="236_2019_359_Article_IEq77.gif"/></alternatives></inline-formula>, and the result of the conversion is an interval where the upper bound is the conversion of <italic>x</italic>.<italic>high</italic> and the lower bound is the conversion of <italic>x</italic>.<italic>low</italic>. Since the precision of the floating-point domain is greater than the precision of the controller, this is guaranteed to bound the real behaviour of the controller.</p></sec><sec id="Sec20"><title>Effect of finite-precision arithmetic on safety specification and on stability</title><p id="Par53">In this section we will quantify how the finite-precision arithmetic in a digital controller affects the safety and stability properties of an LTI model.</p><sec id="Sec21"><title>Safety of closed-loop models with finite-precision controller error</title><p id="Par54">Let us first consider the effect of the quantization errors on safety. Within the controller, state values are manipulated at low precision, by means of the vector multiplication <italic>Kx</italic>. The inputs are thus computed using the following equation:<disp-formula id="Equ8"><alternatives><mml:math display="block"><mml:mrow><mml:mtable><mml:mtr><mml:mtd columnalign="right"><mml:msub><mml:mi>u</mml:mi><mml:mi>k</mml:mi></mml:msub></mml:mtd><mml:mtd columnalign="left"><mml:mrow><mml:mo>=</mml:mo><mml:mo>-</mml:mo><mml:mo stretchy="false">(</mml:mo><mml:msub><mml:mi mathvariant="script">F</mml:mi><mml:mrow><mml:mo stretchy="false">⟨</mml:mo><mml:msub><mml:mi>I</mml:mi><mml:mi>c</mml:mi></mml:msub><mml:mo>,</mml:mo><mml:msub><mml:mi>F</mml:mi><mml:mi>c</mml:mi></mml:msub><mml:mo stretchy="false">⟩</mml:mo></mml:mrow></mml:msub><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mi>K</mml:mi><mml:mo stretchy="false">)</mml:mo></mml:mrow><mml:mo>·</mml:mo><mml:msub><mml:mi mathvariant="script">F</mml:mi><mml:mrow><mml:mo stretchy="false">⟨</mml:mo><mml:msub><mml:mi>I</mml:mi><mml:mi>c</mml:mi></mml:msub><mml:mo>,</mml:mo><mml:msub><mml:mi>F</mml:mi><mml:mi>c</mml:mi></mml:msub><mml:mo stretchy="false">⟩</mml:mo></mml:mrow></mml:msub><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:msub><mml:mi>x</mml:mi><mml:mi>k</mml:mi></mml:msub><mml:mo stretchy="false">)</mml:mo></mml:mrow><mml:mo stretchy="false">)</mml:mo><mml:mo>.</mml:mo></mml:mrow></mml:mtd></mml:mtr></mml:mtable></mml:mrow></mml:math><tex-math id="Equ8_TeX">\documentclass[12pt]{minimal}
				\usepackage{amsmath}
				\usepackage{wasysym}
				\usepackage{amsfonts}
				\usepackage{amssymb}
				\usepackage{amsbsy}
				\usepackage{mathrsfs}
				\usepackage{upgreek}
				\setlength{\oddsidemargin}{-69pt}
				\begin{document}$$\begin{aligned} u_{k}&amp;=-({\mathcal {F}}_{\langle I_c,F_c \rangle }(K)\cdot {\mathcal {F}}_{\langle I_c,F_c \rangle }(x_{k})). \end{aligned}$$\end{document}</tex-math><graphic position="anchor" xlink:href="236_2019_359_Article_Equ8.gif"/></alternatives></disp-formula>This induces two types of errors, as detailed above: first, the truncation error due to the representation of <inline-formula id="IEq78"><alternatives><mml:math><mml:msub><mml:mi>x</mml:mi><mml:mi>k</mml:mi></mml:msub></mml:math><tex-math id="IEq78_TeX">\documentclass[12pt]{minimal}
				\usepackage{amsmath}
				\usepackage{wasysym}
				\usepackage{amsfonts}
				\usepackage{amssymb}
				\usepackage{amsbsy}
				\usepackage{mathrsfs}
				\usepackage{upgreek}
				\setlength{\oddsidemargin}{-69pt}
				\begin{document}$$x_k$$\end{document}</tex-math><inline-graphic xlink:href="236_2019_359_Article_IEq78.gif"/></alternatives></inline-formula> as <inline-formula id="IEq79"><alternatives><mml:math><mml:mrow><mml:msub><mml:mi mathvariant="script">F</mml:mi><mml:mrow><mml:mo stretchy="false">⟨</mml:mo><mml:msub><mml:mi>I</mml:mi><mml:mi>c</mml:mi></mml:msub><mml:mo>,</mml:mo><mml:msub><mml:mi>F</mml:mi><mml:mi>c</mml:mi></mml:msub><mml:mo stretchy="false">⟩</mml:mo></mml:mrow></mml:msub><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:msub><mml:mi>x</mml:mi><mml:mi>k</mml:mi></mml:msub><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:mrow></mml:math><tex-math id="IEq79_TeX">\documentclass[12pt]{minimal}
				\usepackage{amsmath}
				\usepackage{wasysym}
				\usepackage{amsfonts}
				\usepackage{amssymb}
				\usepackage{amsbsy}
				\usepackage{mathrsfs}
				\usepackage{upgreek}
				\setlength{\oddsidemargin}{-69pt}
				\begin{document}$${\mathcal {F}}_{\langle I_c,F_c \rangle }(x_{k})$$\end{document}</tex-math><inline-graphic xlink:href="236_2019_359_Article_IEq79.gif"/></alternatives></inline-formula>; and second, the rounding error introduced by the multiplication operation. Recall that both these errors are modelled precisely by bounded model checking.</p><p id="Par55">An additional error is due to the representation of the plant dynamics, namely<disp-formula id="Equ9"><alternatives><mml:math display="block"><mml:mrow><mml:mtable><mml:mtr><mml:mtd columnalign="right"><mml:mrow><mml:msub><mml:mi>x</mml:mi><mml:mrow><mml:mi>k</mml:mi><mml:mo>+</mml:mo><mml:mn>1</mml:mn></mml:mrow></mml:msub><mml:mo>=</mml:mo><mml:msub><mml:mi mathvariant="script">F</mml:mi><mml:mrow><mml:mo stretchy="false">⟨</mml:mo><mml:msub><mml:mi>I</mml:mi><mml:mi>p</mml:mi></mml:msub><mml:mo>,</mml:mo><mml:msub><mml:mi>F</mml:mi><mml:mi>p</mml:mi></mml:msub><mml:mo stretchy="false">⟩</mml:mo></mml:mrow></mml:msub><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:msub><mml:mi>A</mml:mi><mml:mi>d</mml:mi></mml:msub><mml:mo stretchy="false">)</mml:mo></mml:mrow><mml:msub><mml:mi mathvariant="script">F</mml:mi><mml:mrow><mml:mo stretchy="false">⟨</mml:mo><mml:msub><mml:mi>I</mml:mi><mml:mi>p</mml:mi></mml:msub><mml:mo>,</mml:mo><mml:msub><mml:mi>F</mml:mi><mml:mi>p</mml:mi></mml:msub><mml:mo stretchy="false">⟩</mml:mo></mml:mrow></mml:msub><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:msub><mml:mi>x</mml:mi><mml:mi>k</mml:mi></mml:msub><mml:mo stretchy="false">)</mml:mo></mml:mrow><mml:mo>+</mml:mo><mml:msub><mml:mi mathvariant="script">F</mml:mi><mml:mrow><mml:mo stretchy="false">⟨</mml:mo><mml:msub><mml:mi>I</mml:mi><mml:mi>p</mml:mi></mml:msub><mml:mo>,</mml:mo><mml:msub><mml:mi>F</mml:mi><mml:mi>p</mml:mi></mml:msub><mml:mo stretchy="false">⟩</mml:mo></mml:mrow></mml:msub><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:msub><mml:mi>B</mml:mi><mml:mi>d</mml:mi></mml:msub><mml:mo stretchy="false">)</mml:mo></mml:mrow><mml:msub><mml:mi mathvariant="script">F</mml:mi><mml:mrow><mml:mo stretchy="false">⟨</mml:mo><mml:msub><mml:mi>I</mml:mi><mml:mi>p</mml:mi></mml:msub><mml:mo>,</mml:mo><mml:msub><mml:mi>F</mml:mi><mml:mi>p</mml:mi></mml:msub><mml:mo stretchy="false">⟩</mml:mo></mml:mrow></mml:msub><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:msub><mml:mi>u</mml:mi><mml:mi>k</mml:mi></mml:msub><mml:mo stretchy="false">)</mml:mo></mml:mrow><mml:mo>.</mml:mo></mml:mrow></mml:mtd></mml:mtr></mml:mtable></mml:mrow></mml:math><tex-math id="Equ9_TeX">\documentclass[12pt]{minimal}
				\usepackage{amsmath}
				\usepackage{wasysym}
				\usepackage{amsfonts}
				\usepackage{amssymb}
				\usepackage{amsbsy}
				\usepackage{mathrsfs}
				\usepackage{upgreek}
				\setlength{\oddsidemargin}{-69pt}
				\begin{document}$$\begin{aligned} x_{k+1} ={\mathcal {F}}_{\langle I_p,F_p \rangle }(A_d) {\mathcal {F}}_{\langle I_p,F_p \rangle }(x_{k}) + {\mathcal {F}}_{\langle I_p,F_p \rangle }(B_d){\mathcal {F}}_{\langle I_p,F_p \rangle }(u_{k}). \end{aligned}$$\end{document}</tex-math><graphic position="anchor" xlink:href="236_2019_359_Article_Equ9.gif"/></alternatives></disp-formula>We encompass this error using interval arithmetic [<xref ref-type="bibr" rid="CR34">34</xref>] in the precision check shown in Fig. <xref rid="Fig1" ref-type="fig">1</xref> and detailed in the previous section.</p></sec><sec id="Sec22"><title>Stability of closed-loop models with fixed-point controller error</title><p id="Par56">The validity of Jury’s criterion [<xref ref-type="bibr" rid="CR18">18</xref>] relies on the representation of the closed-loop dynamics <inline-formula id="IEq80"><alternatives><mml:math><mml:mrow><mml:msub><mml:mi>x</mml:mi><mml:mrow><mml:mi>k</mml:mi><mml:mo>+</mml:mo><mml:mn>1</mml:mn></mml:mrow></mml:msub><mml:mo>=</mml:mo><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:msub><mml:mi>A</mml:mi><mml:mi>d</mml:mi></mml:msub><mml:mo>-</mml:mo><mml:msub><mml:mi>B</mml:mi><mml:mi>d</mml:mi></mml:msub><mml:mi>K</mml:mi><mml:mo stretchy="false">)</mml:mo></mml:mrow><mml:msub><mml:mi>x</mml:mi><mml:mi>k</mml:mi></mml:msub></mml:mrow></mml:math><tex-math id="IEq80_TeX">\documentclass[12pt]{minimal}
				\usepackage{amsmath}
				\usepackage{wasysym}
				\usepackage{amsfonts}
				\usepackage{amssymb}
				\usepackage{amsbsy}
				\usepackage{mathrsfs}
				\usepackage{upgreek}
				\setlength{\oddsidemargin}{-69pt}
				\begin{document}$$x_{k+1} = (A_d - B_dK) x_k$$\end{document}</tex-math><inline-graphic xlink:href="236_2019_359_Article_IEq80.gif"/></alternatives></inline-formula> at infinite precision. When we employ a digital controller with fixed-point arithmetic, the operation above can be expressed as follows, where we use <inline-formula id="IEq81"><alternatives><mml:math><mml:msub><mml:mi mathvariant="script">F</mml:mi><mml:mrow><mml:mo stretchy="false">⟨</mml:mo><mml:msub><mml:mi>I</mml:mi><mml:mi>c</mml:mi></mml:msub><mml:mo>,</mml:mo><mml:msub><mml:mi>F</mml:mi><mml:mi>c</mml:mi></mml:msub><mml:mo stretchy="false">⟩</mml:mo></mml:mrow></mml:msub></mml:math><tex-math id="IEq81_TeX">\documentclass[12pt]{minimal}
				\usepackage{amsmath}
				\usepackage{wasysym}
				\usepackage{amsfonts}
				\usepackage{amssymb}
				\usepackage{amsbsy}
				\usepackage{mathrsfs}
				\usepackage{upgreek}
				\setlength{\oddsidemargin}{-69pt}
				\begin{document}$${\mathcal {F}}_{\langle I_c,F_c \rangle }$$\end{document}</tex-math><inline-graphic xlink:href="236_2019_359_Article_IEq81.gif"/></alternatives></inline-formula> preceding a variable to indicate that variable is converted into the fixed-point precision given by <inline-formula id="IEq82"><alternatives><mml:math><mml:msub><mml:mi mathvariant="script">F</mml:mi><mml:mrow><mml:mo stretchy="false">⟨</mml:mo><mml:msub><mml:mi>I</mml:mi><mml:mi>c</mml:mi></mml:msub><mml:mo>,</mml:mo><mml:msub><mml:mi>F</mml:mi><mml:mi>c</mml:mi></mml:msub><mml:mo stretchy="false">⟩</mml:mo></mml:mrow></mml:msub></mml:math><tex-math id="IEq82_TeX">\documentclass[12pt]{minimal}
				\usepackage{amsmath}
				\usepackage{wasysym}
				\usepackage{amsfonts}
				\usepackage{amssymb}
				\usepackage{amsbsy}
				\usepackage{mathrsfs}
				\usepackage{upgreek}
				\setlength{\oddsidemargin}{-69pt}
				\begin{document}$${\mathcal {F}}_{\langle I_c,F_c \rangle }$$\end{document}</tex-math><inline-graphic xlink:href="236_2019_359_Article_IEq82.gif"/></alternatives></inline-formula>:<disp-formula id="Equ10"><alternatives><mml:math display="block"><mml:mrow><mml:mtable><mml:mtr><mml:mtd columnalign="right"><mml:msub><mml:mi>x</mml:mi><mml:mrow><mml:mi>k</mml:mi><mml:mo>+</mml:mo><mml:mn>1</mml:mn></mml:mrow></mml:msub></mml:mtd><mml:mtd columnalign="left"><mml:mrow><mml:mo>=</mml:mo><mml:msub><mml:mi>A</mml:mi><mml:mi>d</mml:mi></mml:msub><mml:mo>·</mml:mo><mml:msub><mml:mi>x</mml:mi><mml:mi>k</mml:mi></mml:msub><mml:mo>-</mml:mo><mml:msub><mml:mi>B</mml:mi><mml:mi>d</mml:mi></mml:msub><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:msub><mml:mi mathvariant="script">F</mml:mi><mml:mrow><mml:mo stretchy="false">⟨</mml:mo><mml:msub><mml:mi>I</mml:mi><mml:mi>c</mml:mi></mml:msub><mml:mo>,</mml:mo><mml:msub><mml:mi>F</mml:mi><mml:mi>c</mml:mi></mml:msub><mml:mo stretchy="false">⟩</mml:mo></mml:mrow></mml:msub><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mi>K</mml:mi><mml:mo stretchy="false">)</mml:mo></mml:mrow><mml:mo>·</mml:mo><mml:msub><mml:mi mathvariant="script">F</mml:mi><mml:mrow><mml:mo stretchy="false">⟨</mml:mo><mml:msub><mml:mi>I</mml:mi><mml:mi>c</mml:mi></mml:msub><mml:mo>,</mml:mo><mml:msub><mml:mi>F</mml:mi><mml:mi>c</mml:mi></mml:msub><mml:mo stretchy="false">⟩</mml:mo></mml:mrow></mml:msub><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:msub><mml:mi>x</mml:mi><mml:mi>k</mml:mi></mml:msub><mml:mo stretchy="false">)</mml:mo></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow><mml:mo>.</mml:mo></mml:mrow></mml:mtd></mml:mtr></mml:mtable></mml:mrow></mml:math><tex-math id="Equ10_TeX">\documentclass[12pt]{minimal}
				\usepackage{amsmath}
				\usepackage{wasysym}
				\usepackage{amsfonts}
				\usepackage{amssymb}
				\usepackage{amsbsy}
				\usepackage{mathrsfs}
				\usepackage{upgreek}
				\setlength{\oddsidemargin}{-69pt}
				\begin{document}$$\begin{aligned} x_{k+1}&amp;= A_d \cdot x_{k} -B_d({\mathcal {F}}_{\langle I_c,F_c \rangle }(K)\cdot {\mathcal {F}}_{\langle I_c,F_c \rangle }(x_{k})). \end{aligned}$$\end{document}</tex-math><graphic position="anchor" xlink:href="236_2019_359_Article_Equ10.gif"/></alternatives></disp-formula>This translates to<disp-formula id="Equ11"><alternatives><mml:math display="block"><mml:mrow><mml:mtable><mml:mtr><mml:mtd columnalign="right"><mml:msub><mml:mi>x</mml:mi><mml:mrow><mml:mi>k</mml:mi><mml:mo>+</mml:mo><mml:mn>1</mml:mn></mml:mrow></mml:msub></mml:mtd><mml:mtd columnalign="left"><mml:mrow><mml:mo>=</mml:mo><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:msub><mml:mi>A</mml:mi><mml:mi>d</mml:mi></mml:msub><mml:mo>-</mml:mo><mml:msub><mml:mi>B</mml:mi><mml:mi>d</mml:mi></mml:msub><mml:mi>K</mml:mi><mml:mo stretchy="false">)</mml:mo></mml:mrow><mml:mo>·</mml:mo><mml:msub><mml:mi>x</mml:mi><mml:mi>k</mml:mi></mml:msub><mml:mo>+</mml:mo><mml:msub><mml:mi>B</mml:mi><mml:mi>d</mml:mi></mml:msub><mml:mi>K</mml:mi><mml:mi>δ</mml:mi><mml:mo>,</mml:mo></mml:mrow></mml:mtd></mml:mtr></mml:mtable></mml:mrow></mml:math><tex-math id="Equ11_TeX">\documentclass[12pt]{minimal}
				\usepackage{amsmath}
				\usepackage{wasysym}
				\usepackage{amsfonts}
				\usepackage{amssymb}
				\usepackage{amsbsy}
				\usepackage{mathrsfs}
				\usepackage{upgreek}
				\setlength{\oddsidemargin}{-69pt}
				\begin{document}$$\begin{aligned} x_{k+1}&amp;= (A_d - B_dK) \cdot x_k + B_dK\delta , \end{aligned}$$\end{document}</tex-math><graphic position="anchor" xlink:href="236_2019_359_Article_Equ11.gif"/></alternatives></disp-formula>where <inline-formula id="IEq83"><alternatives><mml:math><mml:mi>δ</mml:mi></mml:math><tex-math id="IEq83_TeX">\documentclass[12pt]{minimal}
				\usepackage{amsmath}
				\usepackage{wasysym}
				\usepackage{amsfonts}
				\usepackage{amssymb}
				\usepackage{amsbsy}
				\usepackage{mathrsfs}
				\usepackage{upgreek}
				\setlength{\oddsidemargin}{-69pt}
				\begin{document}$$\delta $$\end{document}</tex-math><inline-graphic xlink:href="236_2019_359_Article_IEq83.gif"/></alternatives></inline-formula> is the maximum error that can be introduced by the digital controller in one step, i.e., by reading the states values once and multiplying by <italic>K</italic> once. We derive the closed form expression for <inline-formula id="IEq84"><alternatives><mml:math><mml:msub><mml:mi>x</mml:mi><mml:mi>n</mml:mi></mml:msub></mml:math><tex-math id="IEq84_TeX">\documentclass[12pt]{minimal}
				\usepackage{amsmath}
				\usepackage{wasysym}
				\usepackage{amsfonts}
				\usepackage{amssymb}
				\usepackage{amsbsy}
				\usepackage{mathrsfs}
				\usepackage{upgreek}
				\setlength{\oddsidemargin}{-69pt}
				\begin{document}$$x_n$$\end{document}</tex-math><inline-graphic xlink:href="236_2019_359_Article_IEq84.gif"/></alternatives></inline-formula> recursively, as follows:<disp-formula id="Equ12"><alternatives><mml:math display="block"><mml:mrow><mml:mtable><mml:mtr><mml:mtd columnalign="right"><mml:msub><mml:mi>x</mml:mi><mml:mn>1</mml:mn></mml:msub></mml:mtd><mml:mtd columnalign="left"><mml:mrow><mml:mo>=</mml:mo><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:msub><mml:mi>A</mml:mi><mml:mi>d</mml:mi></mml:msub><mml:mo>-</mml:mo><mml:msub><mml:mi>B</mml:mi><mml:mi>d</mml:mi></mml:msub><mml:mi>K</mml:mi><mml:mo stretchy="false">)</mml:mo></mml:mrow><mml:msub><mml:mi>x</mml:mi><mml:mn>0</mml:mn></mml:msub><mml:mo>+</mml:mo><mml:msub><mml:mi>B</mml:mi><mml:mi>d</mml:mi></mml:msub><mml:mi>K</mml:mi><mml:mi>δ</mml:mi></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd columnalign="right"><mml:mrow><mml:mrow/><mml:msub><mml:mi>x</mml:mi><mml:mn>2</mml:mn></mml:msub></mml:mrow></mml:mtd><mml:mtd columnalign="left"><mml:mrow><mml:mo>=</mml:mo><mml:msup><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:msub><mml:mi>A</mml:mi><mml:mi>d</mml:mi></mml:msub><mml:mo>-</mml:mo><mml:msub><mml:mi>B</mml:mi><mml:mi>d</mml:mi></mml:msub><mml:mi>K</mml:mi><mml:mo stretchy="false">)</mml:mo></mml:mrow><mml:mn>2</mml:mn></mml:msup><mml:msub><mml:mi>x</mml:mi><mml:mn>0</mml:mn></mml:msub><mml:mo>+</mml:mo><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:msub><mml:mi>A</mml:mi><mml:mi>d</mml:mi></mml:msub><mml:mo>-</mml:mo><mml:msub><mml:mi>B</mml:mi><mml:mi>d</mml:mi></mml:msub><mml:mi>K</mml:mi><mml:mo stretchy="false">)</mml:mo></mml:mrow><mml:msub><mml:mi>B</mml:mi><mml:mi>d</mml:mi></mml:msub><mml:mi>K</mml:mi><mml:mi>δ</mml:mi><mml:mo>+</mml:mo><mml:msub><mml:mi>B</mml:mi><mml:mi>d</mml:mi></mml:msub><mml:mi>K</mml:mi><mml:mi>δ</mml:mi></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd columnalign="right"><mml:mrow><mml:mrow/><mml:msub><mml:mi>x</mml:mi><mml:mi>n</mml:mi></mml:msub></mml:mrow></mml:mtd><mml:mtd columnalign="left"><mml:mrow><mml:mo>=</mml:mo><mml:msup><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:msub><mml:mi>A</mml:mi><mml:mi>d</mml:mi></mml:msub><mml:mo>-</mml:mo><mml:msub><mml:mi>B</mml:mi><mml:mi>d</mml:mi></mml:msub><mml:mi>K</mml:mi><mml:mo stretchy="false">)</mml:mo></mml:mrow><mml:mi>n</mml:mi></mml:msup><mml:msub><mml:mi>x</mml:mi><mml:mn>0</mml:mn></mml:msub><mml:mo>+</mml:mo><mml:msup><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:msub><mml:mi>A</mml:mi><mml:mi>d</mml:mi></mml:msub><mml:mo>-</mml:mo><mml:msub><mml:mi>B</mml:mi><mml:mi>d</mml:mi></mml:msub><mml:mi>K</mml:mi><mml:mo stretchy="false">)</mml:mo></mml:mrow><mml:mrow><mml:mi>n</mml:mi><mml:mo>-</mml:mo><mml:mn>1</mml:mn></mml:mrow></mml:msup><mml:msub><mml:mi>B</mml:mi><mml:mi>d</mml:mi></mml:msub><mml:mi>K</mml:mi><mml:mi>δ</mml:mi><mml:mo>+</mml:mo></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd columnalign="right"><mml:mrow/></mml:mtd><mml:mtd columnalign="left"><mml:mrow><mml:mspace width="1em"/><mml:mo>⋯</mml:mo><mml:mo>+</mml:mo><mml:msup><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:msub><mml:mi>A</mml:mi><mml:mi>d</mml:mi></mml:msub><mml:mo>-</mml:mo><mml:msub><mml:mi>B</mml:mi><mml:mi>d</mml:mi></mml:msub><mml:mi>K</mml:mi><mml:mo stretchy="false">)</mml:mo></mml:mrow><mml:mn>1</mml:mn></mml:msup><mml:msub><mml:mi>B</mml:mi><mml:mi>d</mml:mi></mml:msub><mml:mi>K</mml:mi><mml:mi>δ</mml:mi><mml:mo>+</mml:mo><mml:msub><mml:mi>B</mml:mi><mml:mi>d</mml:mi></mml:msub><mml:mi>K</mml:mi><mml:mi>δ</mml:mi></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd columnalign="right"><mml:mrow/></mml:mtd><mml:mtd columnalign="left"><mml:mrow><mml:mo>=</mml:mo><mml:msup><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:msub><mml:mi>A</mml:mi><mml:mi>d</mml:mi></mml:msub><mml:mo>-</mml:mo><mml:msub><mml:mi>B</mml:mi><mml:mi>d</mml:mi></mml:msub><mml:mi>K</mml:mi><mml:mo stretchy="false">)</mml:mo></mml:mrow><mml:mi>n</mml:mi></mml:msup><mml:msub><mml:mi>x</mml:mi><mml:mn>0</mml:mn></mml:msub><mml:mo>+</mml:mo><mml:munderover><mml:mo>∑</mml:mo><mml:mrow><mml:mi>i</mml:mi><mml:mo>=</mml:mo><mml:mn>0</mml:mn></mml:mrow><mml:mrow><mml:mi>n</mml:mi><mml:mo>-</mml:mo><mml:mn>1</mml:mn></mml:mrow></mml:munderover><mml:msup><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:msub><mml:mi>A</mml:mi><mml:mi>d</mml:mi></mml:msub><mml:mo>-</mml:mo><mml:msub><mml:mi>B</mml:mi><mml:mi>d</mml:mi></mml:msub><mml:mi>K</mml:mi><mml:mo stretchy="false">)</mml:mo></mml:mrow><mml:mi>i</mml:mi></mml:msup><mml:msub><mml:mi>B</mml:mi><mml:mi>d</mml:mi></mml:msub><mml:mi>k</mml:mi><mml:mi>δ</mml:mi><mml:mo>.</mml:mo></mml:mrow></mml:mtd></mml:mtr></mml:mtable></mml:mrow></mml:math><tex-math id="Equ12_TeX">\documentclass[12pt]{minimal}
				\usepackage{amsmath}
				\usepackage{wasysym}
				\usepackage{amsfonts}
				\usepackage{amssymb}
				\usepackage{amsbsy}
				\usepackage{mathrsfs}
				\usepackage{upgreek}
				\setlength{\oddsidemargin}{-69pt}
				\begin{document}$$\begin{aligned} x_{1}&amp;= (A_d - B_dK)x_0 + B_dK\delta \\ x_{2}&amp;=(A_d - B_dK)^2x_0 + (A_d - B_dK)B_dK\delta + B_dK\delta \\ x_{n}&amp;= (A_d - B_dK)^nx_0 + (A_d - B_dK)^{n-1}B_dK\delta +\\&amp;\quad \cdots + (A_d - B_dK)^1B_dK \delta + B_dK\delta \\&amp;= (A_d - B_dK)^nx_0 + \sum _{i=0}^{n-1}(A_d - B_dK)^iB_dk\delta . \end{aligned}$$\end{document}</tex-math><graphic position="anchor" xlink:href="236_2019_359_Article_Equ12.gif"/></alternatives></disp-formula>Recall that a closed-loop asymptotically stable system will converge to the origin. We know that the original system with an infinite-precision controller is stable, because we have synthesized it to meet Jury’s criterion. Hence, <inline-formula id="IEq85"><alternatives><mml:math><mml:mrow><mml:msup><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:msub><mml:mi>A</mml:mi><mml:mi>d</mml:mi></mml:msub><mml:mo>-</mml:mo><mml:msub><mml:mi>B</mml:mi><mml:mi>d</mml:mi></mml:msub><mml:mi>K</mml:mi><mml:mo stretchy="false">)</mml:mo></mml:mrow><mml:mi>n</mml:mi></mml:msup><mml:msub><mml:mi>x</mml:mi><mml:mn>0</mml:mn></mml:msub></mml:mrow></mml:math><tex-math id="IEq85_TeX">\documentclass[12pt]{minimal}
				\usepackage{amsmath}
				\usepackage{wasysym}
				\usepackage{amsfonts}
				\usepackage{amssymb}
				\usepackage{amsbsy}
				\usepackage{mathrsfs}
				\usepackage{upgreek}
				\setlength{\oddsidemargin}{-69pt}
				\begin{document}$$(A_d - B_dK)^n x_0$$\end{document}</tex-math><inline-graphic xlink:href="236_2019_359_Article_IEq85.gif"/></alternatives></inline-formula> must converge to zero as <inline-formula id="IEq86"><alternatives><mml:math><mml:mrow><mml:mi>n</mml:mi><mml:mo stretchy="false">↑</mml:mo><mml:mi>∞</mml:mi></mml:mrow></mml:math><tex-math id="IEq86_TeX">\documentclass[12pt]{minimal}
				\usepackage{amsmath}
				\usepackage{wasysym}
				\usepackage{amsfonts}
				\usepackage{amssymb}
				\usepackage{amsbsy}
				\usepackage{mathrsfs}
				\usepackage{upgreek}
				\setlength{\oddsidemargin}{-69pt}
				\begin{document}$$n \uparrow \infty $$\end{document}</tex-math><inline-graphic xlink:href="236_2019_359_Article_IEq86.gif"/></alternatives></inline-formula>. Furthermore, the power series of a square matrix <italic>T</italic> converges [<xref ref-type="bibr" rid="CR22">22</xref>] iff the eigenvalues of the matrix are less than 1, and the limit results in <inline-formula id="IEq87"><alternatives><mml:math><mml:mrow><mml:msubsup><mml:mo>∑</mml:mo><mml:mrow><mml:mi>i</mml:mi><mml:mo>=</mml:mo><mml:mn>0</mml:mn></mml:mrow><mml:mi>∞</mml:mi></mml:msubsup><mml:msup><mml:mi>T</mml:mi><mml:mi>i</mml:mi></mml:msup><mml:mo>=</mml:mo><mml:msup><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mi>I</mml:mi><mml:mo>-</mml:mo><mml:mi>T</mml:mi><mml:mo stretchy="false">)</mml:mo></mml:mrow><mml:mrow><mml:mo>-</mml:mo><mml:mn>1</mml:mn></mml:mrow></mml:msup></mml:mrow></mml:math><tex-math id="IEq87_TeX">\documentclass[12pt]{minimal}
				\usepackage{amsmath}
				\usepackage{wasysym}
				\usepackage{amsfonts}
				\usepackage{amssymb}
				\usepackage{amsbsy}
				\usepackage{mathrsfs}
				\usepackage{upgreek}
				\setlength{\oddsidemargin}{-69pt}
				\begin{document}$$\sum _{i=0}^{\infty }T^i = (I - T)^{-1}$$\end{document}</tex-math><inline-graphic xlink:href="236_2019_359_Article_IEq87.gif"/></alternatives></inline-formula>, where <italic>I</italic> is the identity matrix. Thus, the closed-loop model converges to the value<disp-formula id="Equ13"><alternatives><mml:math display="block"><mml:mrow><mml:mtable><mml:mtr><mml:mtd columnalign="right"><mml:mrow><mml:mn>0</mml:mn><mml:mo>+</mml:mo><mml:msup><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mi>I</mml:mi><mml:mo>-</mml:mo><mml:msub><mml:mi>A</mml:mi><mml:mi>d</mml:mi></mml:msub><mml:mo>+</mml:mo><mml:msub><mml:mi>B</mml:mi><mml:mi>d</mml:mi></mml:msub><mml:mi>K</mml:mi><mml:mo stretchy="false">)</mml:mo></mml:mrow><mml:mrow><mml:mo>-</mml:mo><mml:mn>1</mml:mn></mml:mrow></mml:msup><mml:msub><mml:mi>B</mml:mi><mml:mi>d</mml:mi></mml:msub><mml:mi>k</mml:mi><mml:mi>δ</mml:mi><mml:mspace width="0.166667em"/><mml:mo>.</mml:mo></mml:mrow></mml:mtd></mml:mtr></mml:mtable></mml:mrow></mml:math><tex-math id="Equ13_TeX">\documentclass[12pt]{minimal}
				\usepackage{amsmath}
				\usepackage{wasysym}
				\usepackage{amsfonts}
				\usepackage{amssymb}
				\usepackage{amsbsy}
				\usepackage{mathrsfs}
				\usepackage{upgreek}
				\setlength{\oddsidemargin}{-69pt}
				\begin{document}$$\begin{aligned} 0 + (I - A_d + B_dK)^{-1}B_dk\delta \,. \end{aligned}$$\end{document}</tex-math><graphic position="anchor" xlink:href="236_2019_359_Article_Equ13.gif"/></alternatives></disp-formula>As a result, if the value <inline-formula id="IEq88"><alternatives><mml:math><mml:mrow><mml:msup><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mi>I</mml:mi><mml:mo>-</mml:mo><mml:msub><mml:mi>A</mml:mi><mml:mi>d</mml:mi></mml:msub><mml:mo>+</mml:mo><mml:msub><mml:mi>B</mml:mi><mml:mi>d</mml:mi></mml:msub><mml:mi>K</mml:mi><mml:mo stretchy="false">)</mml:mo></mml:mrow><mml:mrow><mml:mo>-</mml:mo><mml:mn>1</mml:mn></mml:mrow></mml:msup><mml:msub><mml:mi>B</mml:mi><mml:mi>d</mml:mi></mml:msub><mml:mi>k</mml:mi><mml:mi>δ</mml:mi></mml:mrow></mml:math><tex-math id="IEq88_TeX">\documentclass[12pt]{minimal}
				\usepackage{amsmath}
				\usepackage{wasysym}
				\usepackage{amsfonts}
				\usepackage{amssymb}
				\usepackage{amsbsy}
				\usepackage{mathrsfs}
				\usepackage{upgreek}
				\setlength{\oddsidemargin}{-69pt}
				\begin{document}$$(I - A_d + B_dK)^{-1}B_dk\delta $$\end{document}</tex-math><inline-graphic xlink:href="236_2019_359_Article_IEq88.gif"/></alternatives></inline-formula> is within the safe set of states given by the safety specification, then the synthesized fixed-point controller results in a safe closed-loop model. The convergence to a finite value, however, will not make it asymptotically stable. Since in this paper we require stability only as a precursor to safety, it is thus sufficient to check that the perturbed model converges to a neighborhood of the equilibrium within the safe set.</p><p id="Par57">A similar argument can be made for floating-point arithmetic. In conclusion, we can thus disregard these steady-state errors (caused by finite-precision arithmetic) when stability is ensured by synthesis, and then verify safety accounting for the finite-precision errors.</p></sec></sec></sec><sec id="Sec23"><title>Synthesis of digital controllers with CEGIS</title><p id="Par58">In this section we discuss the CEGIS procedure that is used to synthesise safe digital controllers, accounting for the precision issues detailed in the previous sections. We employ a multi-stage approach that unwinds the dynamics of the model up to a completeness threshold, encompassing finite-precision arithmetic using bit-precise bounded model checking, and then verifying soundness of the resulting controller using interval arithmetic.</p><p id="Par59">An overview of the algorithm for controller synthesis is given in Fig. <xref rid="Fig1" ref-type="fig">1</xref>. One important point is that we formally synthesize a controller over a finite number (<italic>k</italic>) of time steps (i.e., it is multi-stage). We then compute a completeness threshold <inline-formula id="IEq89"><alternatives><mml:math><mml:mover><mml:mi>k</mml:mi><mml:mo>¯</mml:mo></mml:mover></mml:math><tex-math id="IEq89_TeX">\documentclass[12pt]{minimal}
				\usepackage{amsmath}
				\usepackage{wasysym}
				\usepackage{amsfonts}
				\usepackage{amssymb}
				\usepackage{amsbsy}
				\usepackage{mathrsfs}
				\usepackage{upgreek}
				\setlength{\oddsidemargin}{-69pt}
				\begin{document}$${\overline{k}}$$\end{document}</tex-math><inline-graphic xlink:href="236_2019_359_Article_IEq89.gif"/></alternatives></inline-formula> [<xref ref-type="bibr" rid="CR27">27</xref>] for this controller, and verify the correct behaviour for <inline-formula id="IEq90"><alternatives><mml:math><mml:mover><mml:mi>k</mml:mi><mml:mo>¯</mml:mo></mml:mover></mml:math><tex-math id="IEq90_TeX">\documentclass[12pt]{minimal}
				\usepackage{amsmath}
				\usepackage{wasysym}
				\usepackage{amsfonts}
				\usepackage{amssymb}
				\usepackage{amsbsy}
				\usepackage{mathrsfs}
				\usepackage{upgreek}
				\setlength{\oddsidemargin}{-69pt}
				\begin{document}$${\overline{k}}$$\end{document}</tex-math><inline-graphic xlink:href="236_2019_359_Article_IEq90.gif"/></alternatives></inline-formula> time steps. As we will later argue, <inline-formula id="IEq91"><alternatives><mml:math><mml:mover><mml:mi>k</mml:mi><mml:mo>¯</mml:mo></mml:mover></mml:math><tex-math id="IEq91_TeX">\documentclass[12pt]{minimal}
				\usepackage{amsmath}
				\usepackage{wasysym}
				\usepackage{amsfonts}
				\usepackage{amssymb}
				\usepackage{amsbsy}
				\usepackage{mathrsfs}
				\usepackage{upgreek}
				\setlength{\oddsidemargin}{-69pt}
				\begin{document}$${\overline{k}}$$\end{document}</tex-math><inline-graphic xlink:href="236_2019_359_Article_IEq91.gif"/></alternatives></inline-formula> is the number of iterations required to sufficiently unwind the dynamics of the closed-loop state-space model, ensuring that the safety boundaries are not violated for any other <inline-formula id="IEq92"><alternatives><mml:math><mml:mrow><mml:mi>k</mml:mi><mml:mo>&gt;</mml:mo><mml:mover><mml:mi>k</mml:mi><mml:mo>¯</mml:mo></mml:mover></mml:mrow></mml:math><tex-math id="IEq92_TeX">\documentclass[12pt]{minimal}
				\usepackage{amsmath}
				\usepackage{wasysym}
				\usepackage{amsfonts}
				\usepackage{amssymb}
				\usepackage{amsbsy}
				\usepackage{mathrsfs}
				\usepackage{upgreek}
				\setlength{\oddsidemargin}{-69pt}
				\begin{document}$$k{&gt;}{\overline{k}}$$\end{document}</tex-math><inline-graphic xlink:href="236_2019_359_Article_IEq92.gif"/></alternatives></inline-formula>.</p><p id="Par60">Next, with reference to the CEGIS scheme in Fig. <xref rid="Fig4" ref-type="fig">4</xref>, we describe in detail the different phases in Fig. <xref rid="Fig1" ref-type="fig">1</xref> (shaded blocks 1 to 4).</p><sec id="Sec24"><title><bold><sc>synthesize</sc></bold> block</title><p id="Par61">The inductive synthesis phase (<sc>synthesize</sc>) uses BMC to compute a candidate solution <italic>K</italic> that satisfies both the stability requirement and the safety specification, within a finite-precision model. In order to synthesize a controller that satisfies the stability requirement, we need the characteristic polynomial of the closed-loop model to satisfy Jury’s criterion [<xref ref-type="bibr" rid="CR18">18</xref>] (see Sect. <xref rid="Sec16" ref-type="sec">4.1</xref>).</p><p id="Par62">We fix an index <italic>k</italic>, and we synthesize a safe controller by unfolding the transition system (i.e., the closed-loop model) <italic>k</italic> steps and by selecting a controller <italic>K</italic> and a single initial state, such that the states at each step do not violate the safety requirement (see Sect. <xref rid="Sec9" ref-type="sec">3.4</xref>). That is, we ask the bounded model checker [<xref ref-type="bibr" rid="CR14">14</xref>] if there exists a <italic>K</italic> that is safe for at least one <inline-formula id="IEq93"><alternatives><mml:math><mml:msub><mml:mi>x</mml:mi><mml:mn>0</mml:mn></mml:msub></mml:math><tex-math id="IEq93_TeX">\documentclass[12pt]{minimal}
				\usepackage{amsmath}
				\usepackage{wasysym}
				\usepackage{amsfonts}
				\usepackage{amssymb}
				\usepackage{amsbsy}
				\usepackage{mathrsfs}
				\usepackage{upgreek}
				\setlength{\oddsidemargin}{-69pt}
				\begin{document}$$x_0$$\end{document}</tex-math><inline-graphic xlink:href="236_2019_359_Article_IEq93.gif"/></alternatives></inline-formula> in our set of all possible initial states, and a given fixed-point precision for the controller, and where the input signal remains within the specified bounds. The bounded model checker selects the controller <italic>K</italic> values using a satisfiability solver, i.e., by constraint solving. As such, we do not need to consider traditional control approaches such as pole placement. This approach is sound, i.e., the controller produced is guaranteed to be safe, if the current <italic>k</italic> is greater than the completeness threshold (see later step). We also assume some finite precision for the model and a given time discretisation, as described in Sect. <xref rid="Sec6" ref-type="sec">3.1</xref>. We use a fixed-point precision in this description, given by <inline-formula id="IEq94"><alternatives><mml:math><mml:mrow><mml:mo stretchy="false">⟨</mml:mo><mml:msub><mml:mi>I</mml:mi><mml:mi>p</mml:mi></mml:msub><mml:mo>,</mml:mo><mml:msub><mml:mi>F</mml:mi><mml:mi>p</mml:mi></mml:msub><mml:mo stretchy="false">⟩</mml:mo></mml:mrow></mml:math><tex-math id="IEq94_TeX">\documentclass[12pt]{minimal}
				\usepackage{amsmath}
				\usepackage{wasysym}
				\usepackage{amsfonts}
				\usepackage{amssymb}
				\usepackage{amsbsy}
				\usepackage{mathrsfs}
				\usepackage{upgreek}
				\setlength{\oddsidemargin}{-69pt}
				\begin{document}$$\langle I_p,F_p\rangle $$\end{document}</tex-math><inline-graphic xlink:href="236_2019_359_Article_IEq94.gif"/></alternatives></inline-formula>, but if we are considering a floating-point controller we will instead model the plant with a floating-point precision, <inline-formula id="IEq95"><alternatives><mml:math><mml:mrow><mml:mo stretchy="false">⟨</mml:mo><mml:msub><mml:mi>E</mml:mi><mml:mi>p</mml:mi></mml:msub><mml:mo>,</mml:mo><mml:msub><mml:mi>M</mml:mi><mml:mi>p</mml:mi></mml:msub><mml:mo stretchy="false">⟩</mml:mo></mml:mrow></mml:math><tex-math id="IEq95_TeX">\documentclass[12pt]{minimal}
				\usepackage{amsmath}
				\usepackage{wasysym}
				\usepackage{amsfonts}
				\usepackage{amssymb}
				\usepackage{amsbsy}
				\usepackage{mathrsfs}
				\usepackage{upgreek}
				\setlength{\oddsidemargin}{-69pt}
				\begin{document}$$\langle E_p,M_p\rangle $$\end{document}</tex-math><inline-graphic xlink:href="236_2019_359_Article_IEq95.gif"/></alternatives></inline-formula>. The checks that these assumptions hold are performed by the subsequent <sc>verify</sc> stages.<fig id="Figa" position="anchor"><p><graphic position="anchor" specific-use="HTML" mime-subtype="PNG" xlink:href="MediaObjects/236_2019_359_Figa_HTML.png" id="MO18"/></p></fig></p></sec><sec id="Sec25"><title><bold><sc>safety</sc></bold> block</title><sec><p id="Par63">The first <sc>verify</sc> stage, <sc>safety</sc> is shown in Algorithm 1. The algorithm checks that the candidate solution <italic>K</italic>, which we have synthesized to be safe for at least one initial state, is safe for <italic>all</italic> possible initial states, i.e., it does not reach the (complement) unsafe set within <italic>k</italic> steps. After unfolding the transition system corresponding to the previously synthesized controller <italic>k</italic> steps, we check that the safety specification holds for any initial state.</p></sec><sec><p id="Par64">We use <inline-formula id="IEq106"><alternatives><mml:math><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mi>c</mml:mi><mml:mi>o</mml:mi><mml:mi>n</mml:mi><mml:mi>t</mml:mi><mml:mi>r</mml:mi><mml:mi>o</mml:mi><mml:mi>l</mml:mi><mml:mi>l</mml:mi><mml:mi>e</mml:mi><mml:mi>r</mml:mi><mml:mi>_</mml:mi><mml:mi>t</mml:mi><mml:mi>y</mml:mi><mml:mi>p</mml:mi><mml:mi>e</mml:mi><mml:mi>t</mml:mi><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:math><tex-math id="IEq106_TeX">\documentclass[12pt]{minimal}
				\usepackage{amsmath}
				\usepackage{wasysym}
				\usepackage{amsfonts}
				\usepackage{amssymb}
				\usepackage{amsbsy}
				\usepackage{mathrsfs}
				\usepackage{upgreek}
				\setlength{\oddsidemargin}{-69pt}
				\begin{document}$$(controller\_typet)$$\end{document}</tex-math><inline-graphic xlink:href="236_2019_359_Article_IEq106.gif"/></alternatives></inline-formula> to denote a cast or conversion to the controller precision, and <inline-formula id="IEq107"><alternatives><mml:math><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mi>p</mml:mi><mml:mi>l</mml:mi><mml:mi>a</mml:mi><mml:mi>n</mml:mi><mml:mi>t</mml:mi><mml:mi>_</mml:mi><mml:mi>t</mml:mi><mml:mi>y</mml:mi><mml:mi>p</mml:mi><mml:mi>e</mml:mi><mml:mi>t</mml:mi><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:math><tex-math id="IEq107_TeX">\documentclass[12pt]{minimal}
				\usepackage{amsmath}
				\usepackage{wasysym}
				\usepackage{amsfonts}
				\usepackage{amssymb}
				\usepackage{amsbsy}
				\usepackage{mathrsfs}
				\usepackage{upgreek}
				\setlength{\oddsidemargin}{-69pt}
				\begin{document}$$(plant\_typet)$$\end{document}</tex-math><inline-graphic xlink:href="236_2019_359_Article_IEq107.gif"/></alternatives></inline-formula> to denote a cast or conversion to the model precision. A <italic>vertex state</italic> is defined as a state where all values are either equal to the upper or lower bound of the states in the initial set. It is sufficient to verify that the controller is safe for all vertex states, as shown next.</p></sec><sec id="FPar1"><title>Theorem 1</title><p id="Par65">Assuming that the initial set is included within the safe set, if a controller is safe for each of the corner cases of the hyper-box of allowed initial states, i.e., the vertex states, then it is safe for any initial state in the hyper-box.</p></sec><sec id="FPar2"><title>Proof</title><p id="Par66">Consider the set of initial states, <inline-formula id="IEq108"><alternatives><mml:math><mml:msub><mml:mi>X</mml:mi><mml:mn>0</mml:mn></mml:msub></mml:math><tex-math id="IEq108_TeX">\documentclass[12pt]{minimal}
				\usepackage{amsmath}
				\usepackage{wasysym}
				\usepackage{amsfonts}
				\usepackage{amssymb}
				\usepackage{amsbsy}
				\usepackage{mathrsfs}
				\usepackage{upgreek}
				\setlength{\oddsidemargin}{-69pt}
				\begin{document}$$X_0$$\end{document}</tex-math><inline-graphic xlink:href="236_2019_359_Article_IEq108.gif"/></alternatives></inline-formula>, which we note is convex since it is a hyper-box. Name <inline-formula id="IEq109"><alternatives><mml:math><mml:msub><mml:mi>v</mml:mi><mml:mi>i</mml:mi></mml:msub></mml:math><tex-math id="IEq109_TeX">\documentclass[12pt]{minimal}
				\usepackage{amsmath}
				\usepackage{wasysym}
				\usepackage{amsfonts}
				\usepackage{amssymb}
				\usepackage{amsbsy}
				\usepackage{mathrsfs}
				\usepackage{upgreek}
				\setlength{\oddsidemargin}{-69pt}
				\begin{document}$$v_i$$\end{document}</tex-math><inline-graphic xlink:href="236_2019_359_Article_IEq109.gif"/></alternatives></inline-formula> its vertices, where <inline-formula id="IEq110"><alternatives><mml:math><mml:mrow><mml:mi>i</mml:mi><mml:mo>=</mml:mo><mml:mn>1</mml:mn><mml:mo>,</mml:mo><mml:mo>…</mml:mo><mml:mo>,</mml:mo><mml:msup><mml:mn>2</mml:mn><mml:mi>n</mml:mi></mml:msup></mml:mrow></mml:math><tex-math id="IEq110_TeX">\documentclass[12pt]{minimal}
				\usepackage{amsmath}
				\usepackage{wasysym}
				\usepackage{amsfonts}
				\usepackage{amssymb}
				\usepackage{amsbsy}
				\usepackage{mathrsfs}
				\usepackage{upgreek}
				\setlength{\oddsidemargin}{-69pt}
				\begin{document}$$i=1,\ldots , 2^n$$\end{document}</tex-math><inline-graphic xlink:href="236_2019_359_Article_IEq110.gif"/></alternatives></inline-formula>. Thus any point <inline-formula id="IEq111"><alternatives><mml:math><mml:mrow><mml:mi>x</mml:mi><mml:mo>∈</mml:mo><mml:msub><mml:mi>X</mml:mi><mml:mn>0</mml:mn></mml:msub></mml:mrow></mml:math><tex-math id="IEq111_TeX">\documentclass[12pt]{minimal}
				\usepackage{amsmath}
				\usepackage{wasysym}
				\usepackage{amsfonts}
				\usepackage{amssymb}
				\usepackage{amsbsy}
				\usepackage{mathrsfs}
				\usepackage{upgreek}
				\setlength{\oddsidemargin}{-69pt}
				\begin{document}$$x \in X_0$$\end{document}</tex-math><inline-graphic xlink:href="236_2019_359_Article_IEq111.gif"/></alternatives></inline-formula> can be expressed by convexity as <inline-formula id="IEq112"><alternatives><mml:math><mml:mrow><mml:mi>x</mml:mi><mml:mo>=</mml:mo><mml:msubsup><mml:mo>∑</mml:mo><mml:mrow><mml:mi>i</mml:mi><mml:mo>=</mml:mo><mml:mn>1</mml:mn></mml:mrow><mml:msup><mml:mn>2</mml:mn><mml:mi>n</mml:mi></mml:msup></mml:msubsup><mml:msub><mml:mi>α</mml:mi><mml:mi>i</mml:mi></mml:msub><mml:msub><mml:mi>v</mml:mi><mml:mi>i</mml:mi></mml:msub></mml:mrow></mml:math><tex-math id="IEq112_TeX">\documentclass[12pt]{minimal}
				\usepackage{amsmath}
				\usepackage{wasysym}
				\usepackage{amsfonts}
				\usepackage{amssymb}
				\usepackage{amsbsy}
				\usepackage{mathrsfs}
				\usepackage{upgreek}
				\setlength{\oddsidemargin}{-69pt}
				\begin{document}$$x = \sum _{i=1}^{2^n} \alpha _i v_i$$\end{document}</tex-math><inline-graphic xlink:href="236_2019_359_Article_IEq112.gif"/></alternatives></inline-formula>, where <inline-formula id="IEq113"><alternatives><mml:math><mml:mrow><mml:msubsup><mml:mo>∑</mml:mo><mml:mrow><mml:mi>i</mml:mi><mml:mo>=</mml:mo><mml:mn>1</mml:mn></mml:mrow><mml:msup><mml:mn>2</mml:mn><mml:mi>n</mml:mi></mml:msup></mml:msubsup><mml:msub><mml:mi>α</mml:mi><mml:mi>i</mml:mi></mml:msub><mml:mo>=</mml:mo><mml:mn>1</mml:mn></mml:mrow></mml:math><tex-math id="IEq113_TeX">\documentclass[12pt]{minimal}
				\usepackage{amsmath}
				\usepackage{wasysym}
				\usepackage{amsfonts}
				\usepackage{amssymb}
				\usepackage{amsbsy}
				\usepackage{mathrsfs}
				\usepackage{upgreek}
				\setlength{\oddsidemargin}{-69pt}
				\begin{document}$$\sum _{i=1}^{2^n} \alpha _i =1$$\end{document}</tex-math><inline-graphic xlink:href="236_2019_359_Article_IEq113.gif"/></alternatives></inline-formula>. Then if <inline-formula id="IEq114"><alternatives><mml:math><mml:mrow><mml:msub><mml:mi>x</mml:mi><mml:mn>0</mml:mn></mml:msub><mml:mo>=</mml:mo><mml:mi>x</mml:mi></mml:mrow></mml:math><tex-math id="IEq114_TeX">\documentclass[12pt]{minimal}
				\usepackage{amsmath}
				\usepackage{wasysym}
				\usepackage{amsfonts}
				\usepackage{amssymb}
				\usepackage{amsbsy}
				\usepackage{mathrsfs}
				\usepackage{upgreek}
				\setlength{\oddsidemargin}{-69pt}
				\begin{document}$$x_0=x$$\end{document}</tex-math><inline-graphic xlink:href="236_2019_359_Article_IEq114.gif"/></alternatives></inline-formula>, we obtain<disp-formula id="Equ14"><alternatives><mml:math display="block"><mml:mrow><mml:mtable><mml:mtr><mml:mtd columnalign="right"><mml:msub><mml:mi>x</mml:mi><mml:mi>k</mml:mi></mml:msub></mml:mtd><mml:mtd columnalign="left"><mml:mrow><mml:mo>=</mml:mo><mml:msup><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:msub><mml:mi>A</mml:mi><mml:mi>d</mml:mi></mml:msub><mml:mo>-</mml:mo><mml:msub><mml:mi>B</mml:mi><mml:mi>d</mml:mi></mml:msub><mml:mi>K</mml:mi><mml:mo stretchy="false">)</mml:mo></mml:mrow><mml:mi>k</mml:mi></mml:msup><mml:mi>x</mml:mi><mml:mo>=</mml:mo><mml:msup><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:msub><mml:mi>A</mml:mi><mml:mi>d</mml:mi></mml:msub><mml:mo>-</mml:mo><mml:msub><mml:mi>B</mml:mi><mml:mi>d</mml:mi></mml:msub><mml:mi>K</mml:mi><mml:mo stretchy="false">)</mml:mo></mml:mrow><mml:mi>k</mml:mi></mml:msup><mml:munderover><mml:mo>∑</mml:mo><mml:mrow><mml:mi>i</mml:mi><mml:mo>=</mml:mo><mml:mn>1</mml:mn></mml:mrow><mml:msup><mml:mn>2</mml:mn><mml:mi>n</mml:mi></mml:msup></mml:munderover><mml:msub><mml:mi>α</mml:mi><mml:mi>i</mml:mi></mml:msub><mml:msub><mml:mi>v</mml:mi><mml:mi>i</mml:mi></mml:msub></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd columnalign="right"><mml:mrow/></mml:mtd><mml:mtd columnalign="left"><mml:mrow><mml:mo>=</mml:mo><mml:munderover><mml:mo>∑</mml:mo><mml:mrow><mml:mi>i</mml:mi><mml:mo>=</mml:mo><mml:mn>1</mml:mn></mml:mrow><mml:msup><mml:mn>2</mml:mn><mml:mi>n</mml:mi></mml:msup></mml:munderover><mml:msub><mml:mi>α</mml:mi><mml:mi>i</mml:mi></mml:msub><mml:msup><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:msub><mml:mi>A</mml:mi><mml:mi>d</mml:mi></mml:msub><mml:mo>-</mml:mo><mml:msub><mml:mi>B</mml:mi><mml:mi>d</mml:mi></mml:msub><mml:mi>K</mml:mi><mml:mo stretchy="false">)</mml:mo></mml:mrow><mml:mi>k</mml:mi></mml:msup><mml:msub><mml:mi>v</mml:mi><mml:mi>i</mml:mi></mml:msub><mml:mo>=</mml:mo><mml:munderover><mml:mo>∑</mml:mo><mml:mrow><mml:mi>i</mml:mi><mml:mo>=</mml:mo><mml:mn>1</mml:mn></mml:mrow><mml:msup><mml:mn>2</mml:mn><mml:mi>n</mml:mi></mml:msup></mml:munderover><mml:msub><mml:mi>α</mml:mi><mml:mi>i</mml:mi></mml:msub><mml:msubsup><mml:mi>x</mml:mi><mml:mi>k</mml:mi><mml:mi>i</mml:mi></mml:msubsup><mml:mo>,</mml:mo></mml:mrow></mml:mtd></mml:mtr></mml:mtable></mml:mrow></mml:math><tex-math id="Equ14_TeX">\documentclass[12pt]{minimal}
				\usepackage{amsmath}
				\usepackage{wasysym}
				\usepackage{amsfonts}
				\usepackage{amssymb}
				\usepackage{amsbsy}
				\usepackage{mathrsfs}
				\usepackage{upgreek}
				\setlength{\oddsidemargin}{-69pt}
				\begin{document}$$\begin{aligned} x_k&amp;= (A_d - B_d K)^k x = (A_d - B_d K)^k \sum _{i=1}^{2^n} \alpha _i v_i \\&amp;= \sum _{i=1}^{2^n} \alpha _i (A_d - B_d K)^k v_i = \sum _{i=1}^{2^n} \alpha _i x_k^i, \end{aligned}$$\end{document}</tex-math><graphic position="anchor" xlink:href="236_2019_359_Article_Equ14.gif"/></alternatives></disp-formula>where <inline-formula id="IEq115"><alternatives><mml:math><mml:msubsup><mml:mi>x</mml:mi><mml:mi>k</mml:mi><mml:mi>i</mml:mi></mml:msubsup></mml:math><tex-math id="IEq115_TeX">\documentclass[12pt]{minimal}
				\usepackage{amsmath}
				\usepackage{wasysym}
				\usepackage{amsfonts}
				\usepackage{amssymb}
				\usepackage{amsbsy}
				\usepackage{mathrsfs}
				\usepackage{upgreek}
				\setlength{\oddsidemargin}{-69pt}
				\begin{document}$$x_k^i$$\end{document}</tex-math><inline-graphic xlink:href="236_2019_359_Article_IEq115.gif"/></alternatives></inline-formula> denotes the trajectories obtained from the single vertex <inline-formula id="IEq116"><alternatives><mml:math><mml:msub><mml:mi>v</mml:mi><mml:mi>i</mml:mi></mml:msub></mml:math><tex-math id="IEq116_TeX">\documentclass[12pt]{minimal}
				\usepackage{amsmath}
				\usepackage{wasysym}
				\usepackage{amsfonts}
				\usepackage{amssymb}
				\usepackage{amsbsy}
				\usepackage{mathrsfs}
				\usepackage{upgreek}
				\setlength{\oddsidemargin}{-69pt}
				\begin{document}$$v_i$$\end{document}</tex-math><inline-graphic xlink:href="236_2019_359_Article_IEq116.gif"/></alternatives></inline-formula>. We conclude that any <italic>k</italic>-step trajectory is encompassed, within a convex set, by those generated from the vertices. Recall that we have assumed that the initial set lies within the safe set, and that both are (convex) hyper-boxes. The conclusion follows. <inline-formula id="IEq117"><alternatives><mml:math><mml:mo>□</mml:mo></mml:math><tex-math id="IEq117_TeX">\documentclass[12pt]{minimal}
				\usepackage{amsmath}
				\usepackage{wasysym}
				\usepackage{amsfonts}
				\usepackage{amssymb}
				\usepackage{amsbsy}
				\usepackage{mathrsfs}
				\usepackage{upgreek}
				\setlength{\oddsidemargin}{-69pt}
				\begin{document}$$\square $$\end{document}</tex-math><inline-graphic xlink:href="236_2019_359_Article_IEq117.gif"/></alternatives></inline-formula></p></sec><sec><p id="Par67">Summarising, we only need to check <inline-formula id="IEq118"><alternatives><mml:math><mml:msup><mml:mn>2</mml:mn><mml:mi>n</mml:mi></mml:msup></mml:math><tex-math id="IEq118_TeX">\documentclass[12pt]{minimal}
				\usepackage{amsmath}
				\usepackage{wasysym}
				\usepackage{amsfonts}
				\usepackage{amssymb}
				\usepackage{amsbsy}
				\usepackage{mathrsfs}
				\usepackage{upgreek}
				\setlength{\oddsidemargin}{-69pt}
				\begin{document}$$2^n$$\end{document}</tex-math><inline-graphic xlink:href="236_2019_359_Article_IEq118.gif"/></alternatives></inline-formula> initial states, where <italic>n</italic> is the dimension of the state space (number of continuous variables). Whilst this full check on all vertices might not be necessary in general (it might be simplified in special cases or under special conditions), it does not represent the bottleneck of our overall method, so we can safely rely on its current form.</p></sec></sec><sec id="Sec26"><title><bold><sc>precision</sc></bold> block</title><p id="Par68">The second <sc>verify</sc> stage, <sc>precision</sc>, restores soundness with respect to the plant model precision by using interval arithmetic [<xref ref-type="bibr" rid="CR34">34</xref>] to validate the operations performed by the previous stage.</p></sec><sec id="Sec27"><title><bold><sc>complete</sc></bold> block</title><sec><p id="Par69">The third and last <sc>verify</sc> stage, <sc>complete</sc>, checks that the current <italic>k</italic> is large enough to ensure safety for any further time steps. Here, we compute the completeness threshold <inline-formula id="IEq119"><alternatives><mml:math><mml:mover><mml:mi>k</mml:mi><mml:mo>¯</mml:mo></mml:mover></mml:math><tex-math id="IEq119_TeX">\documentclass[12pt]{minimal}
				\usepackage{amsmath}
				\usepackage{wasysym}
				\usepackage{amsfonts}
				\usepackage{amssymb}
				\usepackage{amsbsy}
				\usepackage{mathrsfs}
				\usepackage{upgreek}
				\setlength{\oddsidemargin}{-69pt}
				\begin{document}$${\overline{k}}$$\end{document}</tex-math><inline-graphic xlink:href="236_2019_359_Article_IEq119.gif"/></alternatives></inline-formula> for the current candidate controller <italic>K</italic> and check that <inline-formula id="IEq120"><alternatives><mml:math><mml:mrow><mml:mi>k</mml:mi><mml:mo>≥</mml:mo><mml:mover><mml:mi>k</mml:mi><mml:mo>¯</mml:mo></mml:mover></mml:mrow></mml:math><tex-math id="IEq120_TeX">\documentclass[12pt]{minimal}
				\usepackage{amsmath}
				\usepackage{wasysym}
				\usepackage{amsfonts}
				\usepackage{amssymb}
				\usepackage{amsbsy}
				\usepackage{mathrsfs}
				\usepackage{upgreek}
				\setlength{\oddsidemargin}{-69pt}
				\begin{document}$$k{\ge }{\overline{k}}$$\end{document}</tex-math><inline-graphic xlink:href="236_2019_359_Article_IEq120.gif"/></alternatives></inline-formula>. This is done by computing the number of time steps required for the states to have completed a 360° circle, as illustrated in Fig. <xref rid="Fig2" ref-type="fig">2</xref>.</p></sec><sec id="FPar3"><title>Theorem 2</title><p id="Par70">There exists a finite <inline-formula id="IEq121"><alternatives><mml:math><mml:mover><mml:mi>k</mml:mi><mml:mo>¯</mml:mo></mml:mover></mml:math><tex-math id="IEq121_TeX">\documentclass[12pt]{minimal}
				\usepackage{amsmath}
				\usepackage{wasysym}
				\usepackage{amsfonts}
				\usepackage{amssymb}
				\usepackage{amsbsy}
				\usepackage{mathrsfs}
				\usepackage{upgreek}
				\setlength{\oddsidemargin}{-69pt}
				\begin{document}$${\overline{k}}$$\end{document}</tex-math><inline-graphic xlink:href="236_2019_359_Article_IEq121.gif"/></alternatives></inline-formula> such that it is sufficient to unwind the closed-loop state-space model up to <inline-formula id="IEq122"><alternatives><mml:math><mml:mover><mml:mi>k</mml:mi><mml:mo>¯</mml:mo></mml:mover></mml:math><tex-math id="IEq122_TeX">\documentclass[12pt]{minimal}
				\usepackage{amsmath}
				\usepackage{wasysym}
				\usepackage{amsfonts}
				\usepackage{amssymb}
				\usepackage{amsbsy}
				\usepackage{mathrsfs}
				\usepackage{upgreek}
				\setlength{\oddsidemargin}{-69pt}
				\begin{document}$${\overline{k}}$$\end{document}</tex-math><inline-graphic xlink:href="236_2019_359_Article_IEq122.gif"/></alternatives></inline-formula> in order to ensure that <inline-formula id="IEq123"><alternatives><mml:math><mml:mrow><mml:msub><mml:mi>ϕ</mml:mi><mml:mi>s</mml:mi></mml:msub><mml:mi>a</mml:mi><mml:mi>f</mml:mi><mml:mi>e</mml:mi><mml:mi>t</mml:mi><mml:mi>y</mml:mi></mml:mrow></mml:math><tex-math id="IEq123_TeX">\documentclass[12pt]{minimal}
				\usepackage{amsmath}
				\usepackage{wasysym}
				\usepackage{amsfonts}
				\usepackage{amssymb}
				\usepackage{amsbsy}
				\usepackage{mathrsfs}
				\usepackage{upgreek}
				\setlength{\oddsidemargin}{-69pt}
				\begin{document}$$\phi _ safety $$\end{document}</tex-math><inline-graphic xlink:href="236_2019_359_Article_IEq123.gif"/></alternatives></inline-formula> holds.</p></sec><sec id="FPar4"><title>Proof</title><p id="Par71">An asymptotically stable model is known to have converging dynamics. Assume that the eigenvalues of the closed-loop matrix are not repeated: this is sensible assumption to raise, since the eigenvalues are selected by the user. The distance of the trajectory from the reference point (which, for linear models, is the origin) decreases over time within subspaces related to real-valued eigenvalues (say, <inline-formula id="IEq124"><alternatives><mml:math><mml:mrow><mml:mi>θ</mml:mi><mml:mo>&lt;</mml:mo><mml:mn>0</mml:mn></mml:mrow></mml:math><tex-math id="IEq124_TeX">\documentclass[12pt]{minimal}
				\usepackage{amsmath}
				\usepackage{wasysym}
				\usepackage{amsfonts}
				\usepackage{amssymb}
				\usepackage{amsbsy}
				\usepackage{mathrsfs}
				\usepackage{upgreek}
				\setlength{\oddsidemargin}{-69pt}
				\begin{document}$$\theta &lt; 0$$\end{document}</tex-math><inline-graphic xlink:href="236_2019_359_Article_IEq124.gif"/></alternatives></inline-formula>): this can be shown considering the exponential <inline-formula id="IEq125"><alternatives><mml:math><mml:mrow><mml:msup><mml:mi>e</mml:mi><mml:mrow><mml:mi>θ</mml:mi><mml:mi>t</mml:mi></mml:mrow></mml:msup><mml:msub><mml:mi>x</mml:mi><mml:mn>0</mml:mn></mml:msub></mml:mrow></mml:math><tex-math id="IEq125_TeX">\documentclass[12pt]{minimal}
				\usepackage{amsmath}
				\usepackage{wasysym}
				\usepackage{amsfonts}
				\usepackage{amssymb}
				\usepackage{amsbsy}
				\usepackage{mathrsfs}
				\usepackage{upgreek}
				\setlength{\oddsidemargin}{-69pt}
				\begin{document}$$e^{\theta t} x_0$$\end{document}</tex-math><inline-graphic xlink:href="236_2019_359_Article_IEq125.gif"/></alternatives></inline-formula> (<inline-formula id="IEq126"><alternatives><mml:math><mml:msub><mml:mi>x</mml:mi><mml:mn>0</mml:mn></mml:msub></mml:math><tex-math id="IEq126_TeX">\documentclass[12pt]{minimal}
				\usepackage{amsmath}
				\usepackage{wasysym}
				\usepackage{amsfonts}
				\usepackage{amssymb}
				\usepackage{amsbsy}
				\usepackage{mathrsfs}
				\usepackage{upgreek}
				\setlength{\oddsidemargin}{-69pt}
				\begin{document}$$x_0$$\end{document}</tex-math><inline-graphic xlink:href="236_2019_359_Article_IEq126.gif"/></alternatives></inline-formula> being the initial condition), which envelops the model dynamics within subspaces and is monotonically decreasing. However, this monotonic decrease cannot be ensured in general when dealing with complex eigenvalues. In this second instance, consider the closed-loop matrix that updates the states at each discrete time step, and select the eigenvalue <inline-formula id="IEq127"><alternatives><mml:math><mml:mi>ϑ</mml:mi></mml:math><tex-math id="IEq127_TeX">\documentclass[12pt]{minimal}
				\usepackage{amsmath}
				\usepackage{wasysym}
				\usepackage{amsfonts}
				\usepackage{amssymb}
				\usepackage{amsbsy}
				\usepackage{mathrsfs}
				\usepackage{upgreek}
				\setlength{\oddsidemargin}{-69pt}
				\begin{document}$$\vartheta $$\end{document}</tex-math><inline-graphic xlink:href="236_2019_359_Article_IEq127.gif"/></alternatives></inline-formula> with the smallest (non-zero) imaginary part. Between any pair of consecutive time steps <inline-formula id="IEq128"><alternatives><mml:math><mml:mrow><mml:mi>k</mml:mi><mml:mspace width="0.166667em"/><mml:msub><mml:mi>T</mml:mi><mml:mi>s</mml:mi></mml:msub></mml:mrow></mml:math><tex-math id="IEq128_TeX">\documentclass[12pt]{minimal}
				\usepackage{amsmath}
				\usepackage{wasysym}
				\usepackage{amsfonts}
				\usepackage{amssymb}
				\usepackage{amsbsy}
				\usepackage{mathrsfs}
				\usepackage{upgreek}
				\setlength{\oddsidemargin}{-69pt}
				\begin{document}$$k\,T_s$$\end{document}</tex-math><inline-graphic xlink:href="236_2019_359_Article_IEq128.gif"/></alternatives></inline-formula> and <inline-formula id="IEq129"><alternatives><mml:math><mml:mrow><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mi>k</mml:mi><mml:mo>+</mml:mo><mml:mn>1</mml:mn><mml:mo stretchy="false">)</mml:mo></mml:mrow><mml:mspace width="0.166667em"/><mml:msub><mml:mi>T</mml:mi><mml:mi>s</mml:mi></mml:msub></mml:mrow></mml:math><tex-math id="IEq129_TeX">\documentclass[12pt]{minimal}
				\usepackage{amsmath}
				\usepackage{wasysym}
				\usepackage{amsfonts}
				\usepackage{amssymb}
				\usepackage{amsbsy}
				\usepackage{mathrsfs}
				\usepackage{upgreek}
				\setlength{\oddsidemargin}{-69pt}
				\begin{document}$$(k+1)\,T_s$$\end{document}</tex-math><inline-graphic xlink:href="236_2019_359_Article_IEq129.gif"/></alternatives></inline-formula>, the dynamics projected on the corresponding eigenspace rotate of <inline-formula id="IEq130"><alternatives><mml:math><mml:mrow><mml:mi>ϑ</mml:mi><mml:msub><mml:mi>T</mml:mi><mml:mi>s</mml:mi></mml:msub></mml:mrow></mml:math><tex-math id="IEq130_TeX">\documentclass[12pt]{minimal}
				\usepackage{amsmath}
				\usepackage{wasysym}
				\usepackage{amsfonts}
				\usepackage{amssymb}
				\usepackage{amsbsy}
				\usepackage{mathrsfs}
				\usepackage{upgreek}
				\setlength{\oddsidemargin}{-69pt}
				\begin{document}$$\vartheta T_s$$\end{document}</tex-math><inline-graphic xlink:href="236_2019_359_Article_IEq130.gif"/></alternatives></inline-formula> radians. Thus, taking <inline-formula id="IEq131"><alternatives><mml:math><mml:mover><mml:mi>k</mml:mi><mml:mo>¯</mml:mo></mml:mover></mml:math><tex-math id="IEq131_TeX">\documentclass[12pt]{minimal}
				\usepackage{amsmath}
				\usepackage{wasysym}
				\usepackage{amsfonts}
				\usepackage{amssymb}
				\usepackage{amsbsy}
				\usepackage{mathrsfs}
				\usepackage{upgreek}
				\setlength{\oddsidemargin}{-69pt}
				\begin{document}$${\overline{k}}$$\end{document}</tex-math><inline-graphic xlink:href="236_2019_359_Article_IEq131.gif"/></alternatives></inline-formula> as the ceiling of <inline-formula id="IEq132"><alternatives><mml:math><mml:mfrac><mml:mrow><mml:mn>2</mml:mn><mml:mi>π</mml:mi></mml:mrow><mml:mrow><mml:mi>ϑ</mml:mi><mml:msub><mml:mi>T</mml:mi><mml:mi>s</mml:mi></mml:msub></mml:mrow></mml:mfrac></mml:math><tex-math id="IEq132_TeX">\documentclass[12pt]{minimal}
				\usepackage{amsmath}
				\usepackage{wasysym}
				\usepackage{amsfonts}
				\usepackage{amssymb}
				\usepackage{amsbsy}
				\usepackage{mathrsfs}
				\usepackage{upgreek}
				\setlength{\oddsidemargin}{-69pt}
				\begin{document}$$\frac{2\pi }{\vartheta T_s}$$\end{document}</tex-math><inline-graphic xlink:href="236_2019_359_Article_IEq132.gif"/></alternatives></inline-formula>, after <inline-formula id="IEq133"><alternatives><mml:math><mml:mrow><mml:mi>k</mml:mi><mml:mo>≥</mml:mo><mml:mover><mml:mi>k</mml:mi><mml:mo>¯</mml:mo></mml:mover></mml:mrow></mml:math><tex-math id="IEq133_TeX">\documentclass[12pt]{minimal}
				\usepackage{amsmath}
				\usepackage{wasysym}
				\usepackage{amsfonts}
				\usepackage{amssymb}
				\usepackage{amsbsy}
				\usepackage{mathrsfs}
				\usepackage{upgreek}
				\setlength{\oddsidemargin}{-69pt}
				\begin{document}$$k{\ge }{\overline{k}}$$\end{document}</tex-math><inline-graphic xlink:href="236_2019_359_Article_IEq133.gif"/></alternatives></inline-formula> steps the model trajectory has completed a full rotation within the relevant eigenspace: this results in a point closer to the origin, as shown in Fig. <xref rid="Fig2" ref-type="fig">2</xref>. The synthesized <inline-formula id="IEq134"><alternatives><mml:math><mml:mover><mml:mi>k</mml:mi><mml:mo>¯</mml:mo></mml:mover></mml:math><tex-math id="IEq134_TeX">\documentclass[12pt]{minimal}
				\usepackage{amsmath}
				\usepackage{wasysym}
				\usepackage{amsfonts}
				\usepackage{amssymb}
				\usepackage{amsbsy}
				\usepackage{mathrsfs}
				\usepackage{upgreek}
				\setlength{\oddsidemargin}{-69pt}
				\begin{document}$${\overline{k}}$$\end{document}</tex-math><inline-graphic xlink:href="236_2019_359_Article_IEq134.gif"/></alternatives></inline-formula> is thus a completeness threshold: indeed, since we have selected <inline-formula id="IEq135"><alternatives><mml:math><mml:mi>ϑ</mml:mi></mml:math><tex-math id="IEq135_TeX">\documentclass[12pt]{minimal}
				\usepackage{amsmath}
				\usepackage{wasysym}
				\usepackage{amsfonts}
				\usepackage{amssymb}
				\usepackage{amsbsy}
				\usepackage{mathrsfs}
				\usepackage{upgreek}
				\setlength{\oddsidemargin}{-69pt}
				\begin{document}$$\vartheta $$\end{document}</tex-math><inline-graphic xlink:href="236_2019_359_Article_IEq135.gif"/></alternatives></inline-formula> to be the complex eigenvalue with smallest imaginary part, any other pair of complex eigenvalues will correspond to dynamics that rotate faster within the corresponding eigenspace. Hence, <inline-formula id="IEq136"><alternatives><mml:math><mml:mover><mml:mi>k</mml:mi><mml:mo>¯</mml:mo></mml:mover></mml:math><tex-math id="IEq136_TeX">\documentclass[12pt]{minimal}
				\usepackage{amsmath}
				\usepackage{wasysym}
				\usepackage{amsfonts}
				\usepackage{amssymb}
				\usepackage{amsbsy}
				\usepackage{mathrsfs}
				\usepackage{upgreek}
				\setlength{\oddsidemargin}{-69pt}
				\begin{document}$${\overline{k}}$$\end{document}</tex-math><inline-graphic xlink:href="236_2019_359_Article_IEq136.gif"/></alternatives></inline-formula> will again represent a global completeness threshold. <inline-formula id="IEq137"><alternatives><mml:math><mml:mo>□</mml:mo></mml:math><tex-math id="IEq137_TeX">\documentclass[12pt]{minimal}
				\usepackage{amsmath}
				\usepackage{wasysym}
				\usepackage{amsfonts}
				\usepackage{amssymb}
				\usepackage{amsbsy}
				\usepackage{mathrsfs}
				\usepackage{upgreek}
				\setlength{\oddsidemargin}{-69pt}
				\begin{document}$$\square $$\end{document}</tex-math><inline-graphic xlink:href="236_2019_359_Article_IEq137.gif"/></alternatives></inline-formula></p></sec></sec></sec><sec id="Sec28"><title>DSSynth: a software tool for automated digital controller synthesis over physical plants</title><p id="Par72">The implementation of the proposed methodology for synthesis of digital controls for physical plants is based on the digital-system synthesizer (DSSynth) tool [<xref ref-type="bibr" rid="CR1">1</xref>], which can be split into two main stages: manual and automated, as illustrated in Fig. <xref rid="Fig5" ref-type="fig">5</xref> and detailed next.<fig id="Fig5"><label>Fig. 5</label><caption xml:lang="en"><p>The digital-system synthesizer (DSSynth) tool—distinct phases of the controller synthesis</p></caption><p><graphic specific-use="HTML" mime-subtype="PNG" xlink:href="MediaObjects/236_2019_359_Fig5_HTML.png" id="MO26"/></p></fig></p><p id="Par73">The first stage comprises the following steps. In Step 1, the user selects the system representation, which can be a transfer function or a state-space model (we focus on the latter in this article). In Step 2, the plant [e.g., in the form of Eq. (<xref rid="Equ1" ref-type="disp-formula">1</xref>)] is provided [<xref ref-type="bibr" rid="CR7">7</xref>]. Finally, in Step 3, the numerical representation for the digital controller implementation must be set by the user: this is the finite-precision arithmetic that defines the number of bits of integer and fractional parts when using fixed-point arithmetic, or half- and single-precision when using floating-point arithmetic. The user also specifies the input range.</p><p id="Par74">In the second stage, the automated synthesis process starts with Step A, where the DSSynth translates the model specification into an ANSI-C program. In Step B, the discussed CEGIS engine is invoked, in order to synthesize the digital controller w.r.t. the specification given on the model. Finally, in Step C, the synthesized digital controller is generated. The output of DSSynth is the closed-loop model with the synthesized digital controller, which is represented either as a transfer function or in state-space form (in this article we consider the latter case). The synthesis is considered to be <italic>successful</italic> if a digital controller is correctly synthesized with respect to the effects of finite-precision arithmetic within a time-out set to 5 h.</p><p id="Par75">The CEGIS engine is implemented as an integrated module within the C bounded model checker (CBMC) [<xref ref-type="bibr" rid="CR14">14</xref>]. CBMC transforms the ANSI-C representation of the closed-loop control model model into its internal representation (IR). We instrument this IR for each synthesis or verification scenario accordingly, and use CBMC as an oracle to answer our queries. CBMC itself relies on an underlying SAT/SMT solver to address verification checks. We model the effects of finite-precision arithmetic explicitly using CBMC’s nondeterminism API (e.g., nondet, CPROVER_assume intrinsic functions).</p></sec><sec id="Sec29"><title>Experimental evaluation</title><p id="Par76">Our benchmark suite consists of 19 case studies extracted from the control literature [<xref ref-type="bibr" rid="CR13">13</xref>, <xref ref-type="bibr" rid="CR20">20</xref>, <xref ref-type="bibr" rid="CR21">21</xref>, <xref ref-type="bibr" rid="CR21">21</xref>, <xref ref-type="bibr" rid="CR26">26</xref>, <xref ref-type="bibr" rid="CR35">35</xref>, <xref ref-type="bibr" rid="CR44">44</xref>, <xref ref-type="bibr" rid="CR46">46</xref>, <xref ref-type="bibr" rid="CR47">47</xref>]. These case studies comprise control models, which we represent in state space form as in Eq. (<xref rid="Equ1" ref-type="disp-formula">1</xref>). The models are time discretized, with sampling times ranging from 1 to 0.0001 s. CEGIS initially starts with the coarsest discretisation (i.e., 1s sampling time), and if it fails to find a controller, it reduces the sampling time. The initial states are bounded between 0.5 and <inline-formula id="IEq138"><alternatives><mml:math><mml:mrow><mml:mo>-</mml:mo><mml:mn>0.5</mml:mn></mml:mrow></mml:math><tex-math id="IEq138_TeX">\documentclass[12pt]{minimal}
				\usepackage{amsmath}
				\usepackage{wasysym}
				\usepackage{amsfonts}
				\usepackage{amssymb}
				\usepackage{amsbsy}
				\usepackage{mathrsfs}
				\usepackage{upgreek}
				\setlength{\oddsidemargin}{-69pt}
				\begin{document}$$-0.5$$\end{document}</tex-math><inline-graphic xlink:href="236_2019_359_Article_IEq138.gif"/></alternatives></inline-formula> for all states, and the safety specification requires that the states remain between <inline-formula id="IEq139"><alternatives><mml:math><mml:mrow><mml:mo>-</mml:mo><mml:mn>1.5</mml:mn></mml:mrow></mml:math><tex-math id="IEq139_TeX">\documentclass[12pt]{minimal}
				\usepackage{amsmath}
				\usepackage{wasysym}
				\usepackage{amsfonts}
				\usepackage{amssymb}
				\usepackage{amsbsy}
				\usepackage{mathrsfs}
				\usepackage{upgreek}
				\setlength{\oddsidemargin}{-69pt}
				\begin{document}$$-1.5$$\end{document}</tex-math><inline-graphic xlink:href="236_2019_359_Article_IEq139.gif"/></alternatives></inline-formula> and 1.5 (as remarked above, the initial set lies within the safe set and contains the origin). The input bounds are selected individually for each benchmark.</p><sec id="Sec30"><title>Description of the control benchmarks</title><p id="Par77">The <italic>bioreactor</italic> benchmark is a linear model of the cell mass concentration controlled through the dilution rate of a bioreactor [<xref ref-type="bibr" rid="CR39">39</xref>]. The <italic>Chen</italic> benchmark correspond to a higher-order control system model employed as a case study for model-order reduction techniques [<xref ref-type="bibr" rid="CR13">13</xref>]. The benchmarks <italic>Cruise 1</italic> [<xref ref-type="bibr" rid="CR20">20</xref>] and <italic>Cruise 2</italic> [<xref ref-type="bibr" rid="CR5">5</xref>] deal with automotive cruise control models, where the control is used to maintain the speed of an automobile at a constant value (after tracking a desired speed reference), and compensating disturbances and uncertainties. The models <italic>cstr</italic> and <italic>cstrtmp</italic> describe the pH dynamics of a reaction of an aqueous solution of sodium acetate with hydrochloric acid [<xref ref-type="bibr" rid="CR46">46</xref>] and the temperature of a reaction [<xref ref-type="bibr" rid="CR6">6</xref>] in a tank reactor. The <italic>DC motor</italic> plant describes the velocity dynamics of a direct-current electrical machine. The <italic>helicopter</italic> benchmark plant describes the transitional and rotational dynamics of a coaxial helicopter. The <italic>inverted pendulum</italic> benchmark describes a model for the cart position and for the angle of an inverted pendulum placed on the cart, which moves over a track by means of a DC motor. The <italic>magnetic pointer</italic> benchmark describes a magnetic pointer, whose angular position dynamics is controlled by a magnetic field. The <italic>magsuspension</italic> describes the dynamics of a magnetic car suspension system. The <italic>pendulum</italic> plant consists of a swinging point mass suspended from a frictionless pivot by means of a rod with negligible mass. The <italic>Regulator</italic> consists of a linear model of a synchronous electrical machine [<xref ref-type="bibr" rid="CR26">26</xref>]. The <italic>satellite attitude control system</italic> plant describes the dynamics of a satellite attitude, <italic>i.e.</italic>, the orientation angles. An attitude control system must maintain the desired orientation of a satellite with respect to an inertial frame. The <italic>springer-mass damper system</italic> plant is a standard model for the dynamics of several mechanical systems. The <italic>steam drum</italic> benchmark describes a linear model for the level dynamics of a boiler steam drum [<xref ref-type="bibr" rid="CR31">31</xref>]. The <italic>suspension</italic> models the single-wheel suspension system of a car, namely the relative motion dynamics of a mass-spring-damper model, which connects the car to one of its wheels. The <italic>tapedriver</italic> benchmark models a computer tape driver, that is a computer storage device used to read and write data on magnetic tapes. The <italic>USCG cutter tampa heading angle</italic> plant describes the heading angle dynamics of a Coast Guard cutter.</p></sec><sec id="Sec31"><title>Objectives</title><p id="Par78">Using the state-space models described in Sect. <xref rid="Sec30" ref-type="sec">8.1</xref>, the evaluation study has the following overall experimental goal:<list list-type="bullet"><list-item><p id="Par79">Show that the multi-staged CEGIS approach is able to generate finite-precision digital controllers using fixed-point and floating-point arithmetic in a reasonable amount of time.</p></list-item></list></p></sec><sec id="Sec32"><title>Results</title><p id="Par80">We provide the results in Table <xref rid="Tab1" ref-type="table">1</xref>, where: <italic>Benchmark</italic> is the name of the corresponding benchmark; <italic>Order</italic> is the number of continuous variables of the model; <inline-formula id="IEq140"><alternatives><mml:math><mml:msub><mml:mi mathvariant="script">F</mml:mi><mml:mrow><mml:mo stretchy="false">⟨</mml:mo><mml:msub><mml:mi>I</mml:mi><mml:mi>p</mml:mi></mml:msub><mml:mo>,</mml:mo><mml:msub><mml:mi>F</mml:mi><mml:mi>p</mml:mi></mml:msub><mml:mo stretchy="false">⟩</mml:mo></mml:mrow></mml:msub></mml:math><tex-math id="IEq140_TeX">\documentclass[12pt]{minimal}
				\usepackage{amsmath}
				\usepackage{wasysym}
				\usepackage{amsfonts}
				\usepackage{amssymb}
				\usepackage{amsbsy}
				\usepackage{mathrsfs}
				\usepackage{upgreek}
				\setlength{\oddsidemargin}{-69pt}
				\begin{document}$${\mathcal {F}}_{\langle I_p,F_p \rangle }$$\end{document}</tex-math><inline-graphic xlink:href="236_2019_359_Article_IEq140.gif"/></alternatives></inline-formula>, where <inline-formula id="IEq141"><alternatives><mml:math><mml:msub><mml:mi>I</mml:mi><mml:mi>p</mml:mi></mml:msub></mml:math><tex-math id="IEq141_TeX">\documentclass[12pt]{minimal}
				\usepackage{amsmath}
				\usepackage{wasysym}
				\usepackage{amsfonts}
				\usepackage{amssymb}
				\usepackage{amsbsy}
				\usepackage{mathrsfs}
				\usepackage{upgreek}
				\setlength{\oddsidemargin}{-69pt}
				\begin{document}$$I_p$$\end{document}</tex-math><inline-graphic xlink:href="236_2019_359_Article_IEq141.gif"/></alternatives></inline-formula> and <inline-formula id="IEq142"><alternatives><mml:math><mml:msub><mml:mi>F</mml:mi><mml:mi>p</mml:mi></mml:msub></mml:math><tex-math id="IEq142_TeX">\documentclass[12pt]{minimal}
				\usepackage{amsmath}
				\usepackage{wasysym}
				\usepackage{amsfonts}
				\usepackage{amssymb}
				\usepackage{amsbsy}
				\usepackage{mathrsfs}
				\usepackage{upgreek}
				\setlength{\oddsidemargin}{-69pt}
				\begin{document}$$F_p$$\end{document}</tex-math><inline-graphic xlink:href="236_2019_359_Article_IEq142.gif"/></alternatives></inline-formula> indicate the integer and fractional parts, and <inline-formula id="IEq143"><alternatives><mml:math><mml:msub><mml:mi mathvariant="script">F</mml:mi><mml:mrow><mml:mo stretchy="false">⟨</mml:mo><mml:msub><mml:mi>E</mml:mi><mml:mi>p</mml:mi></mml:msub><mml:mo>,</mml:mo><mml:msub><mml:mi>M</mml:mi><mml:mi>p</mml:mi></mml:msub><mml:mo stretchy="false">⟩</mml:mo></mml:mrow></mml:msub></mml:math><tex-math id="IEq143_TeX">\documentclass[12pt]{minimal}
				\usepackage{amsmath}
				\usepackage{wasysym}
				\usepackage{amsfonts}
				\usepackage{amssymb}
				\usepackage{amsbsy}
				\usepackage{mathrsfs}
				\usepackage{upgreek}
				\setlength{\oddsidemargin}{-69pt}
				\begin{document}$${\mathcal {F}}_{\langle E_p,M_p \rangle }$$\end{document}</tex-math><inline-graphic xlink:href="236_2019_359_Article_IEq143.gif"/></alternatives></inline-formula>, where <inline-formula id="IEq144"><alternatives><mml:math><mml:msub><mml:mi>E</mml:mi><mml:mi>p</mml:mi></mml:msub></mml:math><tex-math id="IEq144_TeX">\documentclass[12pt]{minimal}
				\usepackage{amsmath}
				\usepackage{wasysym}
				\usepackage{amsfonts}
				\usepackage{amssymb}
				\usepackage{amsbsy}
				\usepackage{mathrsfs}
				\usepackage{upgreek}
				\setlength{\oddsidemargin}{-69pt}
				\begin{document}$$E_p$$\end{document}</tex-math><inline-graphic xlink:href="236_2019_359_Article_IEq144.gif"/></alternatives></inline-formula> and <inline-formula id="IEq145"><alternatives><mml:math><mml:msub><mml:mi>M</mml:mi><mml:mi>p</mml:mi></mml:msub></mml:math><tex-math id="IEq145_TeX">\documentclass[12pt]{minimal}
				\usepackage{amsmath}
				\usepackage{wasysym}
				\usepackage{amsfonts}
				\usepackage{amssymb}
				\usepackage{amsbsy}
				\usepackage{mathrsfs}
				\usepackage{upgreek}
				\setlength{\oddsidemargin}{-69pt}
				\begin{document}$$M_p$$\end{document}</tex-math><inline-graphic xlink:href="236_2019_359_Article_IEq145.gif"/></alternatives></inline-formula> indicate the exponent and mantissa part, are the fixed- and floating-point precisions used to model the plant, respectively; and <italic>Time</italic> is the total time required to synthesize a controller for the given model. Time-outs are indicated by ✗, where the time-out used is 5 h. The precision for the controller, <inline-formula id="IEq146"><alternatives><mml:math><mml:msub><mml:mi mathvariant="script">F</mml:mi><mml:mrow><mml:mo stretchy="false">⟨</mml:mo><mml:msub><mml:mi>I</mml:mi><mml:mi>c</mml:mi></mml:msub><mml:mo>,</mml:mo><mml:msub><mml:mi>F</mml:mi><mml:mi>c</mml:mi></mml:msub><mml:mo stretchy="false">⟩</mml:mo></mml:mrow></mml:msub></mml:math><tex-math id="IEq146_TeX">\documentclass[12pt]{minimal}
				\usepackage{amsmath}
				\usepackage{wasysym}
				\usepackage{amsfonts}
				\usepackage{amssymb}
				\usepackage{amsbsy}
				\usepackage{mathrsfs}
				\usepackage{upgreek}
				\setlength{\oddsidemargin}{-69pt}
				\begin{document}$${\mathcal {F}}_{\langle I_c,F_c \rangle }$$\end{document}</tex-math><inline-graphic xlink:href="236_2019_359_Article_IEq146.gif"/></alternatives></inline-formula>, is chosen to be <inline-formula id="IEq147"><alternatives><mml:math><mml:mrow><mml:msub><mml:mi>I</mml:mi><mml:mi>c</mml:mi></mml:msub><mml:mo>=</mml:mo><mml:mn>8</mml:mn></mml:mrow></mml:math><tex-math id="IEq147_TeX">\documentclass[12pt]{minimal}
				\usepackage{amsmath}
				\usepackage{wasysym}
				\usepackage{amsfonts}
				\usepackage{amssymb}
				\usepackage{amsbsy}
				\usepackage{mathrsfs}
				\usepackage{upgreek}
				\setlength{\oddsidemargin}{-69pt}
				\begin{document}$$I_c = 8$$\end{document}</tex-math><inline-graphic xlink:href="236_2019_359_Article_IEq147.gif"/></alternatives></inline-formula>, <inline-formula id="IEq148"><alternatives><mml:math><mml:mrow><mml:msub><mml:mi>F</mml:mi><mml:mi>c</mml:mi></mml:msub><mml:mo>=</mml:mo><mml:mn>8</mml:mn></mml:mrow></mml:math><tex-math id="IEq148_TeX">\documentclass[12pt]{minimal}
				\usepackage{amsmath}
				\usepackage{wasysym}
				\usepackage{amsfonts}
				\usepackage{amssymb}
				\usepackage{amsbsy}
				\usepackage{mathrsfs}
				\usepackage{upgreek}
				\setlength{\oddsidemargin}{-69pt}
				\begin{document}$$F_c = 8$$\end{document}</tex-math><inline-graphic xlink:href="236_2019_359_Article_IEq148.gif"/></alternatives></inline-formula> for fixed-point, whereas <inline-formula id="IEq149"><alternatives><mml:math><mml:msub><mml:mi mathvariant="script">F</mml:mi><mml:mrow><mml:mo stretchy="false">⟨</mml:mo><mml:msub><mml:mi>E</mml:mi><mml:mi>c</mml:mi></mml:msub><mml:mo>,</mml:mo><mml:msub><mml:mi>M</mml:mi><mml:mi>c</mml:mi></mml:msub><mml:mo stretchy="false">⟩</mml:mo></mml:mrow></mml:msub></mml:math><tex-math id="IEq149_TeX">\documentclass[12pt]{minimal}
				\usepackage{amsmath}
				\usepackage{wasysym}
				\usepackage{amsfonts}
				\usepackage{amssymb}
				\usepackage{amsbsy}
				\usepackage{mathrsfs}
				\usepackage{upgreek}
				\setlength{\oddsidemargin}{-69pt}
				\begin{document}$${\mathcal {F}}_{\langle E_c, M_c \rangle }$$\end{document}</tex-math><inline-graphic xlink:href="236_2019_359_Article_IEq149.gif"/></alternatives></inline-formula> is chosen to be <inline-formula id="IEq150"><alternatives><mml:math><mml:mrow><mml:msub><mml:mi>W</mml:mi><mml:mi>c</mml:mi></mml:msub><mml:mo>=</mml:mo><mml:mn>6</mml:mn></mml:mrow></mml:math><tex-math id="IEq150_TeX">\documentclass[12pt]{minimal}
				\usepackage{amsmath}
				\usepackage{wasysym}
				\usepackage{amsfonts}
				\usepackage{amssymb}
				\usepackage{amsbsy}
				\usepackage{mathrsfs}
				\usepackage{upgreek}
				\setlength{\oddsidemargin}{-69pt}
				\begin{document}$$W_c = 6$$\end{document}</tex-math><inline-graphic xlink:href="236_2019_359_Article_IEq150.gif"/></alternatives></inline-formula> and <inline-formula id="IEq151"><alternatives><mml:math><mml:mrow><mml:msub><mml:mi>F</mml:mi><mml:mi>c</mml:mi></mml:msub><mml:mo>=</mml:mo><mml:mn>10</mml:mn></mml:mrow></mml:math><tex-math id="IEq151_TeX">\documentclass[12pt]{minimal}
				\usepackage{amsmath}
				\usepackage{wasysym}
				\usepackage{amsfonts}
				\usepackage{amssymb}
				\usepackage{amsbsy}
				\usepackage{mathrsfs}
				\usepackage{upgreek}
				\setlength{\oddsidemargin}{-69pt}
				\begin{document}$$F_c = 10$$\end{document}</tex-math><inline-graphic xlink:href="236_2019_359_Article_IEq151.gif"/></alternatives></inline-formula> for half-precision floating-point format.</p><p id="Par81">We separate our evaluation into two sets of results: fixed- and floating-point. We present a selection of case-studies that we are able to solve either for floating-point or fixed-point. Given a time discretisation, the floating-point controllers in general take longer to synthesise than the fixed-point ones. However, the fixed-point algorithm is often forced to try more time discretisations, because the fixed-point controller lacks the precision to control the system at the coarser time discretisation.<table-wrap id="Tab1"><label>Table 1</label><caption xml:lang="en"><p>Synthesis times for fixed- and floating-point controllers</p></caption><table frame="hsides" rules="groups"><thead><tr><th align="left"><p>Benchmark</p></th><th align="left"><p>Order</p></th><th align="left"><p><inline-formula id="IEq152"><alternatives><mml:math><mml:msub><mml:mi mathvariant="script">F</mml:mi><mml:mrow><mml:mo stretchy="false">⟨</mml:mo><mml:msub><mml:mi>I</mml:mi><mml:mi>p</mml:mi></mml:msub><mml:mo>,</mml:mo><mml:msub><mml:mi>F</mml:mi><mml:mi>p</mml:mi></mml:msub><mml:mo stretchy="false">⟩</mml:mo></mml:mrow></mml:msub></mml:math><tex-math id="IEq152_TeX">\documentclass[12pt]{minimal}
				\usepackage{amsmath}
				\usepackage{wasysym}
				\usepackage{amsfonts}
				\usepackage{amssymb}
				\usepackage{amsbsy}
				\usepackage{mathrsfs}
				\usepackage{upgreek}
				\setlength{\oddsidemargin}{-69pt}
				\begin{document}$${\mathcal {F}}_{\langle I_p,F_p \rangle }$$\end{document}</tex-math><inline-graphic xlink:href="236_2019_359_Article_IEq152.gif"/></alternatives></inline-formula></p></th><th align="left"><p>Time (s)</p></th><th align="left"><p>k</p></th><th align="left"><p><inline-formula id="IEq153"><alternatives><mml:math><mml:msub><mml:mi mathvariant="script">F</mml:mi><mml:mrow><mml:mo stretchy="false">⟨</mml:mo><mml:msub><mml:mi>E</mml:mi><mml:mi>p</mml:mi></mml:msub><mml:mo>,</mml:mo><mml:msub><mml:mi>M</mml:mi><mml:mi>p</mml:mi></mml:msub><mml:mo stretchy="false">⟩</mml:mo></mml:mrow></mml:msub></mml:math><tex-math id="IEq153_TeX">\documentclass[12pt]{minimal}
				\usepackage{amsmath}
				\usepackage{wasysym}
				\usepackage{amsfonts}
				\usepackage{amssymb}
				\usepackage{amsbsy}
				\usepackage{mathrsfs}
				\usepackage{upgreek}
				\setlength{\oddsidemargin}{-69pt}
				\begin{document}$${\mathcal {F}}_{\langle E_p, M_p \rangle }$$\end{document}</tex-math><inline-graphic xlink:href="236_2019_359_Article_IEq153.gif"/></alternatives></inline-formula></p></th><th align="left"><p>Time (s)</p></th><th align="left"><p>k</p></th></tr></thead><tbody><tr><td align="left"><p>Bioreact</p></td><td align="left"><p>2</p></td><td align="left"><p>8,8</p></td><td align="left"><p>15.35</p></td><td align="left"><p>4</p></td><td align="left"><p>10,6</p></td><td align="left"><p>23.76</p></td><td align="left"><p>2</p></td></tr><tr><td align="left"><p>Chen</p></td><td align="left"><p>3</p></td><td align="left"><p>8,8</p></td><td align="left"><p>11.24</p></td><td align="left"><p>0</p></td><td align="left"><p>10,6</p></td><td align="left"><p>14.25</p></td><td align="left"><p>0</p></td></tr><tr><td align="left"><p>Cruise</p></td><td align="left"><p>1</p></td><td align="left"><p>8,8</p></td><td align="left"><p>11.03</p></td><td align="left"><p>0</p></td><td align="left"><p>10,6</p></td><td align="left"><p>11.17</p></td><td align="left"><p>0</p></td></tr><tr><td align="left"><p>Cruise 2</p></td><td align="left"><p>1</p></td><td align="left"><p>8,8</p></td><td align="left"><p>9.93</p></td><td align="left"><p>0</p></td><td align="left"><p>10,6</p></td><td align="left"><p>10.54</p></td><td align="left"><p>0</p></td></tr><tr><td align="left"><p>Cst</p></td><td align="left"><p>3</p></td><td align="left"><p>12,12</p></td><td align="left"><p>90.03</p></td><td align="left"><p>2</p></td><td align="left"><p>10,6</p></td><td align="left"><p>321.12</p></td><td align="left"><p>2</p></td></tr><tr><td align="left"><p>Cstrtmp</p></td><td align="left"><p>2</p></td><td align="left"><p>8,8</p></td><td align="left"><p>18.56</p></td><td align="left"><p>2</p></td><td align="left"><p>10,6</p></td><td align="left"><p>16.99</p></td><td align="left"><p>2</p></td></tr><tr><td align="left"><p>DC motor</p></td><td align="left"><p>2</p></td><td align="left"><p>8,8</p></td><td align="left"><p>10.34</p></td><td align="left"><p>0</p></td><td align="left"><p>10,6</p></td><td align="left"><p>12.32</p></td><td align="left"><p>0</p></td></tr><tr><td align="left"><p>Helicopter</p></td><td align="left"><p>3</p></td><td align="left"><p>16,16</p></td><td align="left"><p>1116.08</p></td><td align="left"><p>2</p></td><td align="left"><p>10,6</p></td><td align="left"><p>168.43</p></td><td align="left"><p>38</p></td></tr><tr><td align="left"><p>Inverted pendulum</p></td><td align="left"><p>2</p></td><td align="left"><p>12,12</p></td><td align="left"><p>16.01</p></td><td align="left"><p>2</p></td><td align="left"><p>10,6</p></td><td align="left"><p>18.73</p></td><td align="left"><p>0</p></td></tr><tr><td align="left"><p>Magnetic pointer</p></td><td align="left"><p>3</p></td><td align="left"><p>12,12</p></td><td align="left"><p>1071.02</p></td><td align="left"><p>10</p></td><td align="left"><p>10,6</p></td><td align="left"><p>207.60</p></td><td align="left"><p>9</p></td></tr><tr><td align="left"><p>Magnetic suspension</p></td><td align="left"><p>3</p></td><td align="left"><p>20,20</p></td><td align="left"><p>56.9</p></td><td align="left"><p>2</p></td><td align="left"><p>10,6</p></td><td align="left"><p>998.3</p></td><td align="left"><p>6</p></td></tr><tr><td align="left"><p>Pendulum</p></td><td align="left"><p>2</p></td><td align="left"><p>8,8</p></td><td align="left"><p>11.74</p></td><td align="left"><p>0</p></td><td align="left"><p>10,6</p></td><td align="left"><p>13.69</p></td><td align="left"><p>0</p></td></tr><tr><td align="left"><p>Regulator</p></td><td align="left"><p>5</p></td><td align="left"/><td align="left"><p> ✗</p></td><td align="left"/><td align="left"><p>10,16</p></td><td align="left"><p>190.28</p></td><td align="left"><p>2</p></td></tr><tr><td align="left"><p>Satellite</p></td><td align="left"><p>2</p></td><td align="left"><p>8,8</p></td><td align="left"><p>13.91</p></td><td align="left"><p>3</p></td><td align="left"><p>10,6</p></td><td align="left"><p>16.92</p></td><td align="left"><p>7</p></td></tr><tr><td align="left"><p>Spring-mass-damper</p></td><td align="left"><p>2</p></td><td align="left"><p>12,12</p></td><td align="left"><p>16.09</p></td><td align="left"><p>0</p></td><td align="left"><p>10,6</p></td><td align="left"><p>23.21</p></td><td align="left"><p>4</p></td></tr><tr><td align="left"><p>Steam drum</p></td><td align="left"><p>3</p></td><td align="left"/><td align="left"><p> ✗</p></td><td align="left"/><td align="left"><p>10,16</p></td><td align="left"><p>21.16</p></td><td align="left"><p>4</p></td></tr><tr><td align="left"><p>Supension</p></td><td align="left"><p>4</p></td><td align="left"><p>8,8</p></td><td align="left"><p>12.40</p></td><td align="left"><p>5</p></td><td align="left"><p>10,6</p></td><td align="left"><p>17.03</p></td><td align="left"><p>5</p></td></tr><tr><td align="left"><p>Tape driver</p></td><td align="left"><p>3</p></td><td align="left"><p>8,8</p></td><td align="left"><p>12.18</p></td><td align="left"><p>0</p></td><td align="left"><p>10,6</p></td><td align="left"><p>14.34</p></td><td align="left"><p>0</p></td></tr><tr><td align="left"><p>USCG tampa</p></td><td align="left"><p>3</p></td><td align="left"><p>12,12</p></td><td align="left"><p>1143.35</p></td><td align="left"><p>10</p></td><td align="left"><p>10,6</p></td><td align="left"><p>210.70</p></td><td align="left"><p>9</p></td></tr></tbody></table></table-wrap></p><p id="Par82">The mean run-time for the successful benchmarks is 225 s for fixed-point and 125 s for floating-point implementations, respectively. The median run-time for the successful benchmarks is 15.7 s for fixed-point and 17.8 s for floating-point implementations, respectively. We consider these times to be short enough to be of practical use to control engineers, and thus assert the success of the overall objective of the study that we have raised above. The completeness threshold depends upon the controller selected, and the SAT/SMT solver picks a controller with a low completeness threshold for all the time discretisations that we solve. The completeness threshold is zero where the controller synthesised results in a system with real valued eigenvalues.</p><p id="Par83">A link to the full experimental environment, including scripts to reproduce the results, all benchmarks and the tool, is provided in the footnote as an Open Virtual Appliance (OVA).<xref ref-type="fn" rid="Fn2">2</xref> The provided experimental environment runs multiple discretisations for each benchmark, and lists the fastest as the resulting synthesis time.</p><p id="Par85">In this article we have presented a selection of case studies for which we have been able to automatically synthesise safe controllers. In the full experimental environment we have included further case studies that we have been unable to synthesise controllers for. This is in many cases due to timeouts, especially when the set completeness threshold is too large, or when a controller simply may not exist for a benchmark at a given time discretisation and required controller precision. Yet another source of incompleteness is the inability of the <sc>synthesize</sc> phase to employ a large-enough precision for the plant model.</p></sec><sec id="Sec33"><title>Threats to generality</title><p id="Par86">We identify the following factors as potential limits to the generality of the obtained results.<list list-type="bullet"><list-item><p id="Par87"><italic>Benchmark selection:</italic> We report an assessment of both our approaches over a diverse set of real-world benchmarks. Nevertheless, this set of benchmarks is limited within the scope of this paper and the performance may not generalize to other benchmarks.</p></list-item><list-item><p id="Par88"><italic>Plant model precision and discretization heuristics:</italic> Our algorithm to select suitable finite-precision arithmetic to model the plant behavior increases the precision by 8 bits at each step, in order to be compliant with the CBMC type API. Similarly, for time-discretization, we try a set of pre-defined time discretisations. This works sufficiently well for our benchmarks, but performance may suffer in some cases, for example if the completeness threshold is high.</p></list-item></list></p></sec></sec><sec id="Sec34" sec-type="conclusions"><title>Conclusions</title><p id="Par89">We have presented an automated approach to synthesize provably-correct digital state-feedback controllers that ensure safety over state-space models. Our approach is novel within the digital control literature: we provide a fully automated synthesis method that is algorithmically and numerically sound, considering various error sources in the implementation of the digital control algorithm and in the computational modeling of plant dynamics. Our experimental results show that we are able to synthesize automatically safe controllers for diverse benchmarks from the digital control literature, within a reasonable amount of time.</p></sec></body><back><ack><title>Acknowledgements</title><p>This study was financially supported by Engineering and Physical Sciences Research Council (EP/J012564/1), European Research Council (280053), H2020 Future and Emerging Technologies (280053) and Royal Society University Research Fellowship (UF160079).</p></ack><ref-list id="Bib1"><title>References</title><ref-list><ref id="CR1"><label>1.</label><mixed-citation publication-type="other">Abate, A., Bessa, I., Cattaruzza, D., Chaves, L., Cordeiro, L.C., David, C., Kesseli, P., Kroening, D., Polgreen, E.: DSSynth: an automated digital controller synthesis tool for physical plants. In: International Conference on Automated Software Engineering (ASE), pp. 919–924. IEEE Computer Society (2017)</mixed-citation></ref><ref id="CR2"><label>2.</label><mixed-citation publication-type="other">Abate, A., Bessa, I., Cattaruzza, D., Cordeiro, L.C., David, C., Kesseli, P., Kroening, D.: Sound and automated synthesis of digital stabilizing controllers for continuous plants. In: Hybrid Systems: Computation and Control (HSCC), pp. 197–206. ACM (2017)</mixed-citation></ref><ref id="CR3"><label>3.</label><mixed-citation publication-type="book"><person-group person-group-type="author"><name><surname>Abate</surname><given-names>A</given-names></name><name><surname>Bessa</surname><given-names>I</given-names></name><name><surname>Cattaruzza</surname><given-names>D</given-names></name><name><surname>Cordeiro</surname><given-names>LC</given-names></name><name><surname>David</surname><given-names>C</given-names></name><name><surname>Kesseli</surname><given-names>P</given-names></name><name><surname>Kroening</surname><given-names>D</given-names></name><name><surname>Polgreen</surname><given-names>E</given-names></name></person-group><person-group person-group-type="editor"><name><surname>Majumdar</surname><given-names>R</given-names></name><name><surname>Kunčak</surname><given-names>V</given-names></name></person-group><article-title xml:lang="en">Automated formal synthesis of digital controllers for state-space physical plants</article-title><source>Computer Aided Verification (CAV)</source><year>2017</year><publisher-loc>Cham</publisher-loc><publisher-name>Springer</publisher-name><fpage>462</fpage><lpage>482</lpage><pub-id pub-id-type="doi">10.1007/978-3-319-63387-9_23</pub-id></mixed-citation></ref><ref id="CR4"><label>4.</label><mixed-citation publication-type="other">Anta, A., Majumdar, R., Saha, I., Tabuada, P.: Automatic verification of control system implementations. In: International Conference on Embedded Software (EMSOFT), pp. 9–18. ACM (2010)</mixed-citation></ref><ref id="CR5"><label>5.</label><mixed-citation publication-type="book"><person-group person-group-type="author"><name><surname>Astrom</surname><given-names>KJ</given-names></name><name><surname>Murray</surname><given-names>RM</given-names></name></person-group><source>Feedback Systems: An Introduction for Scientists and Engineers</source><year>2008</year><publisher-loc>Princeton</publisher-loc><publisher-name>Princeton University Press</publisher-name><pub-id pub-id-type="doi">10.1515/9781400828739</pub-id></mixed-citation></ref><ref id="CR6"><label>6.</label><mixed-citation publication-type="book"><person-group person-group-type="author"><name><surname>Åström</surname><given-names>KJ</given-names></name><name><surname>Hägglund</surname><given-names>T</given-names></name></person-group><source>Advanced PID Control</source><year>2006</year><publisher-loc>Research Triangle Park</publisher-loc><publisher-name>ISA-The Instrumentation, Systems, and Automation Society</publisher-name></mixed-citation></ref><ref id="CR7"><label>7.</label><mixed-citation publication-type="book"><person-group person-group-type="author"><name><surname>Åström</surname><given-names>KJ</given-names></name><name><surname>Wittenmark</surname><given-names>B</given-names></name></person-group><source>Computer-Controlled Systems: Theory and Design</source><year>1997</year><publisher-loc>Upper Saddle River</publisher-loc><publisher-name>Prentice Hall</publisher-name></mixed-citation></ref><ref id="CR8"><label>8.</label><mixed-citation publication-type="book"><person-group person-group-type="author"><name><surname>Belta</surname><given-names>C</given-names></name><name><surname>Yordanov</surname><given-names>B</given-names></name><name><surname>Gol</surname><given-names>EA</given-names></name></person-group><source>Formal Methods for Discrete-Time Dynamical Systems</source><year>2016</year><publisher-loc>Cham</publisher-loc><publisher-name>Springer</publisher-name><pub-id pub-id-type="zbl">1409.93003</pub-id></mixed-citation></ref><ref id="CR9"><label>9.</label><mixed-citation publication-type="journal"><person-group person-group-type="author"><name><surname>Bessa</surname><given-names>I</given-names></name><name><surname>Ismail</surname><given-names>H</given-names></name><name><surname>Palhares</surname><given-names>R</given-names></name><name><surname>Cordeiro</surname><given-names>LC</given-names></name><name><surname>Filho</surname><given-names>JEC</given-names></name></person-group><article-title xml:lang="en">Formal non-fragile stability verification of digital control systems with uncertainty</article-title><source>IEEE Trans. Comput.</source><year>2017</year><volume>66</volume><issue>3</issue><fpage>545</fpage><lpage>552</lpage><pub-id pub-id-type="amsid">3610682</pub-id><pub-id pub-id-type="doi">10.1109/TC.2016.2601328</pub-id></mixed-citation></ref><ref id="CR10"><label>10.</label><mixed-citation publication-type="other">Brain, M., Tinelli, C., Rümmer, P., Wahl, T.: An automatable formal semantics for IEEE-754 floating-point arithmetic. In: Symposium on Computer Arithmetic (ARITH), pp. 160–167. IEEE (2015)</mixed-citation></ref><ref id="CR11"><label>11.</label><mixed-citation publication-type="journal"><person-group person-group-type="author"><name><surname>Brönnimann</surname><given-names>H</given-names></name><name><surname>Melquiond</surname><given-names>G</given-names></name><name><surname>Pion</surname><given-names>S</given-names></name></person-group><article-title xml:lang="en">The design of the boost interval arithmetic library</article-title><source>Theor. Comput. Sci.</source><year>2006</year><volume>351</volume><issue>1</issue><fpage>111</fpage><lpage>118</lpage><pub-id pub-id-type="amsid">2201097</pub-id><pub-id pub-id-type="doi">10.1016/j.tcs.2005.09.062</pub-id></mixed-citation></ref><ref id="CR12"><label>12.</label><mixed-citation publication-type="other">Chaudhuri, S., Clochard, M., Solar-Lezama, A.: Bridging boolean and quantitative synthesis using smoothed proof search. In: POPL, pp. 207–220. ACM (2014)</mixed-citation></ref><ref id="CR13"><label>13.</label><mixed-citation publication-type="journal"><person-group person-group-type="author"><name><surname>Chen</surname><given-names>TC</given-names></name><name><surname>Chang</surname><given-names>CY</given-names></name><name><surname>Han</surname><given-names>KW</given-names></name></person-group><article-title xml:lang="en">Reduction of transfer functions by the stability-equation method</article-title><source>J. Frankl. Inst.</source><year>1979</year><volume>308</volume><issue>4</issue><fpage>389</fpage><lpage>404</lpage><pub-id pub-id-type="amsid">548923</pub-id><pub-id pub-id-type="doi">10.1016/0016-0032(79)90066-8</pub-id></mixed-citation></ref><ref id="CR14"><label>14.</label><mixed-citation publication-type="book"><person-group person-group-type="author"><name><surname>Clarke</surname><given-names>EM</given-names></name><name><surname>Kroening</surname><given-names>D</given-names></name><name><surname>Lerda</surname><given-names>F</given-names></name></person-group><person-group person-group-type="editor"><name><surname>Jensen</surname><given-names>K</given-names></name><name><surname>Podelski</surname><given-names>A</given-names></name></person-group><article-title xml:lang="en">A tool for checking ANSI-C programs</article-title><source>Tools and Algorithms for the Construction and Analysis of Systems (TACAS)</source><year>2004</year><publisher-loc>Berlin</publisher-loc><publisher-name>Springer</publisher-name><fpage>168</fpage><lpage>176</lpage><pub-id pub-id-type="zbl">1126.68470</pub-id></mixed-citation></ref><ref id="CR15"><label>15.</label><mixed-citation publication-type="other">Darulova, E., Kuncak, V., Majumdar, R., Saha, I.: Synthesis of fixed-point programs. In: EMSOFT, pp. 22:1–22:10. IEEE (2013)</mixed-citation></ref><ref id="CR16"><label>16.</label><mixed-citation publication-type="journal"><person-group person-group-type="author"><name><surname>de Bessa</surname><given-names>IV</given-names></name><name><surname>Ismail</surname><given-names>H</given-names></name><name><surname>Cordeiro</surname><given-names>LC</given-names></name><name><surname>Filho</surname><given-names>JEC</given-names></name></person-group><article-title xml:lang="en">Verification of fixed-point digital controllers using direct and delta forms realizations</article-title><source>Des. Autom. Embed. Syst.</source><year>2016</year><volume>20</volume><issue>2</issue><fpage>95</fpage><lpage>126</lpage><pub-id pub-id-type="doi">10.1007/s10617-016-9173-5</pub-id></mixed-citation></ref><ref id="CR17"><label>17.</label><mixed-citation publication-type="other">Duggirala, P.S., Viswanathan, M.: Analyzing real time linear control systems using software verification. In: IEEE Real-Time Systems Symposium (RTSS), pp. 216–226 (2015)</mixed-citation></ref><ref id="CR18"><label>18.</label><mixed-citation publication-type="book"><person-group person-group-type="author"><name><surname>Fadali</surname><given-names>S</given-names></name><name><surname>Visioli</surname><given-names>A</given-names></name></person-group><source>Digital Control Engineering: Analysis and Design</source><year>2009</year><publisher-loc>Amsterdam</publisher-loc><publisher-name>Elsevier</publisher-name></mixed-citation></ref><ref id="CR19"><label>19.</label><mixed-citation publication-type="journal"><person-group person-group-type="author"><name><surname>Fialho</surname><given-names>IJ</given-names></name><name><surname>Georgiou</surname><given-names>TT</given-names></name></person-group><article-title xml:lang="en">On stability and performance of sampled-data systems subject to wordlength constraint</article-title><source>IEEE Trans. Autom. Control</source><year>1994</year><volume>39</volume><issue>12</issue><fpage>2476</fpage><lpage>2481</lpage><pub-id pub-id-type="amsid">1337575</pub-id><pub-id pub-id-type="doi">10.1109/9.362844</pub-id></mixed-citation></ref><ref id="CR20"><label>20.</label><mixed-citation publication-type="book"><person-group person-group-type="author"><name><surname>Franklin</surname><given-names>G</given-names></name><name><surname>Powell</surname><given-names>D</given-names></name><name><surname>Emami-Naeini</surname><given-names>A</given-names></name></person-group><source>Feedback Control of Dynamic Systems</source><year>2015</year><edition>7</edition><publisher-loc>London</publisher-loc><publisher-name>Pearson</publisher-name><pub-id pub-id-type="zbl">0615.93001</pub-id></mixed-citation></ref><ref id="CR21"><label>21.</label><mixed-citation publication-type="book"><person-group person-group-type="author"><name><surname>Gajic</surname><given-names>Z</given-names></name><name><surname>Lim</surname><given-names>M-T</given-names></name><name><surname>Skataric</surname><given-names>D</given-names></name><name><surname>Wu-Chung</surname><given-names>S</given-names></name><name><surname>Kecman</surname><given-names>V</given-names></name></person-group><source>Optimal Control: Weakly Coupled Systems and Applications</source><year>2008</year><publisher-loc>Boca Raton</publisher-loc><publisher-name>CRC Press</publisher-name><pub-id pub-id-type="zbl">1202.49001</pub-id></mixed-citation></ref><ref id="CR22"><label>22.</label><mixed-citation publication-type="book"><person-group person-group-type="author"><name><surname>Horn</surname><given-names>RA</given-names></name><name><surname>Johnson</surname><given-names>C</given-names></name></person-group><source>Matrix Analysis</source><year>1990</year><publisher-loc>Cambridge</publisher-loc><publisher-name>Cambridge University Press</publisher-name><pub-id pub-id-type="zbl">0704.15002</pub-id></mixed-citation></ref><ref id="CR23"><label>23.</label><mixed-citation publication-type="other">Jha, S., Gulwani, S., Seshia, S.A., Tiwari, A.: Oracle-guided component-based program synthesis. In: International Conference on Software Engineering (ICSE), vol. 1 , pp. 215–224. ACM (2010)</mixed-citation></ref><ref id="CR24"><label>24.</label><mixed-citation publication-type="other">Jha, S., Seshia, S.A.: SWATI: synthesizing wordlengths automatically using testing and induction. CoRR (2013). <ext-link xlink:href="http://arxiv.org/abs/1302.1920" ext-link-type="url">arxiv:1302.1920</ext-link></mixed-citation></ref><ref id="CR25"><label>25.</label><mixed-citation publication-type="other">Jha, S., Seshia, S.A., Tiwari, A.: Synthesis of optimal switching logic for hybrid systems. In: EMSOFT, pp. 107–116. ACM (2011)</mixed-citation></ref><ref id="CR26"><label>26.</label><mixed-citation publication-type="journal"><person-group person-group-type="author"><name><surname>Kokotovic</surname><given-names>PV</given-names></name><name><surname>Allemong</surname><given-names>JJ</given-names></name><name><surname>Winkelman</surname><given-names>JR</given-names></name><name><surname>Chow</surname><given-names>JH</given-names></name></person-group><article-title xml:lang="en">Singular perturbation and iterative separation of time scales</article-title><source>Automatica</source><year>1980</year><volume>16</volume><issue>1</issue><fpage>23</fpage><lpage>33</lpage><pub-id pub-id-type="amsid">571552</pub-id><pub-id pub-id-type="doi">10.1016/0005-1098(80)90083-7</pub-id></mixed-citation></ref><ref id="CR27"><label>27.</label><mixed-citation publication-type="book"><person-group person-group-type="author"><name><surname>Kroening</surname><given-names>D</given-names></name><name><surname>Strichman</surname><given-names>O</given-names></name></person-group><person-group person-group-type="editor"><name><surname>Zuck</surname><given-names>LD</given-names></name><name><surname>Attie</surname><given-names>PC</given-names></name><name><surname>Cortesi</surname><given-names>A</given-names></name><name><surname>Mukhopadhyay</surname><given-names>S</given-names></name></person-group><article-title xml:lang="en">Efficient computation of recurrence diameters</article-title><source>Verification, Model Checking, and Abstract Interpretation (VMCAI)</source><year>2003</year><publisher-loc>Berlin</publisher-loc><publisher-name>Springer</publisher-name><fpage>298</fpage><lpage>309</lpage><pub-id pub-id-type="doi">10.1007/3-540-36384-X_24</pub-id></mixed-citation></ref><ref id="CR28"><label>28.</label><mixed-citation publication-type="book"><person-group person-group-type="author"><name><surname>Kroening</surname><given-names>D</given-names></name><name><surname>Tautschnig</surname><given-names>M</given-names></name></person-group><person-group person-group-type="editor"><name><surname>Ábrahám</surname><given-names>E</given-names></name><name><surname>Havelund</surname><given-names>K</given-names></name></person-group><article-title xml:lang="en">CBMC–C bounded model checker–(competition contribution)</article-title><source>Tools and Algorithms for the Construction and Analysis of Systems</source><year>2014</year><publisher-loc>Berlin</publisher-loc><publisher-name>Springer</publisher-name><fpage>389</fpage><lpage>391</lpage><pub-id pub-id-type="doi">10.1007/978-3-642-54862-8_26</pub-id></mixed-citation></ref><ref id="CR29"><label>29.</label><mixed-citation publication-type="journal"><person-group person-group-type="author"><name><surname>Liberzon</surname><given-names>D</given-names></name></person-group><article-title xml:lang="en">Hybrid feedback stabilization of systems with quantized signals</article-title><source>Automatica</source><year>2003</year><volume>39</volume><issue>9</issue><fpage>1543</fpage><lpage>1554</lpage><pub-id pub-id-type="amsid">2143462</pub-id><pub-id pub-id-type="doi">10.1016/S0005-1098(03)00151-1</pub-id></mixed-citation></ref><ref id="CR30"><label>30.</label><mixed-citation publication-type="journal"><person-group person-group-type="author"><name><surname>Liu</surname><given-names>J</given-names></name><name><surname>Ozay</surname><given-names>N</given-names></name></person-group><article-title xml:lang="en">Finite abstractions with robustness margins for temporal logic-based control synthesis</article-title><source>Nonlinear Anal. Hybrid Syst.</source><year>2016</year><volume>22</volume><fpage>1</fpage><lpage>15</lpage><pub-id pub-id-type="amsid">3530825</pub-id><pub-id pub-id-type="doi">10.1016/j.nahs.2016.02.002</pub-id></mixed-citation></ref><ref id="CR31"><label>31.</label><mixed-citation publication-type="journal"><person-group person-group-type="author"><name><surname>Luyben</surname><given-names>W</given-names></name></person-group><article-title xml:lang="en">External versus internal open-loop unstable processes</article-title><source>Ind. Eng. Chem. Res.</source><year>1998</year><volume>7</volume><issue>3</issue><fpage>2713</fpage><lpage>2720</lpage><pub-id pub-id-type="doi">10.1021/ie9800400</pub-id></mixed-citation></ref><ref id="CR32"><label>32.</label><mixed-citation publication-type="book"><person-group person-group-type="author"><name><surname>Mazo</surname><given-names>M</given-names><suffix>Jr</suffix></name><name><surname>Davitian</surname><given-names>A</given-names></name><name><surname>Tabuada</surname><given-names>P</given-names></name></person-group><person-group person-group-type="editor"><name><surname>Touili</surname><given-names>T</given-names></name><name><surname>Cook</surname><given-names>B</given-names></name><name><surname>Jackson</surname><given-names>P</given-names></name></person-group><article-title xml:lang="en">PESSOA: a tool for embedded controller synthesis</article-title><source>Computer Aided Verification (CAV)</source><year>2010</year><publisher-loc>Berlin</publisher-loc><publisher-name>Springer</publisher-name><fpage>566</fpage><lpage>569</lpage><pub-id pub-id-type="doi">10.1007/978-3-642-14295-6_49</pub-id></mixed-citation></ref><ref id="CR33"><label>33.</label><mixed-citation publication-type="book"><person-group person-group-type="author"><name><surname>Middleton</surname><given-names>RH</given-names></name><name><surname>Goodwin</surname><given-names>GC</given-names></name></person-group><source>Digital Control and Estimation: A Unified Approach</source><year>1990</year><publisher-loc>Upper Saddle River</publisher-loc><publisher-name>Prentice Hall</publisher-name><pub-id pub-id-type="zbl">0754.93053</pub-id></mixed-citation></ref><ref id="CR34"><label>34.</label><mixed-citation publication-type="book"><person-group person-group-type="author"><name><surname>Moore</surname><given-names>RE</given-names></name></person-group><source>Interval Analysis</source><year>1966</year><publisher-loc>Englewood Cliffs</publisher-loc><publisher-name>Prentice-Hall</publisher-name><pub-id pub-id-type="zbl">0176.13301</pub-id></mixed-citation></ref><ref id="CR35"><label>35.</label><mixed-citation publication-type="journal"><person-group person-group-type="author"><name><surname>Oliveira</surname><given-names>VA</given-names></name><name><surname>Costa</surname><given-names>EF</given-names></name><name><surname>Vargas</surname><given-names>JB</given-names></name></person-group><article-title xml:lang="en">Digital implementation of a magnetic suspension control system for laboratory experiments</article-title><source>IEEE Trans. Educ.</source><year>1999</year><volume>42</volume><issue>4</issue><fpage>315</fpage><lpage>322</lpage><pub-id pub-id-type="doi">10.1109/13.804538</pub-id></mixed-citation></ref><ref id="CR36"><label>36.</label><mixed-citation publication-type="journal"><person-group person-group-type="author"><name><surname>Oudjida</surname><given-names>AK</given-names></name><name><surname>Chaillet</surname><given-names>N</given-names></name><name><surname>Liacha</surname><given-names>A</given-names></name><name><surname>Berrandjia</surname><given-names>ML</given-names></name><name><surname>Hamerlain</surname><given-names>M</given-names></name></person-group><article-title xml:lang="en">Design of high-speed and low-power finite-word-length PID controllers</article-title><source>Control Theory Technol.</source><year>2014</year><volume>12</volume><issue>1</issue><fpage>68</fpage><lpage>83</lpage><pub-id pub-id-type="amsid">3152184</pub-id><pub-id pub-id-type="doi">10.1007/s11768-014-2131-5</pub-id></mixed-citation></ref><ref id="CR37"><label>37.</label><mixed-citation publication-type="book"><person-group person-group-type="author"><name><surname>Park</surname><given-names>J</given-names></name><name><surname>Pajic</surname><given-names>M</given-names></name><name><surname>Lee</surname><given-names>I</given-names></name><name><surname>Sokolsky</surname><given-names>O</given-names></name></person-group><article-title xml:lang="en">Scalable verification of linear controller software</article-title><source>Tools and Algorithms for the Construction and Analysis of Systems (TACAS)</source><year>2016</year><publisher-loc>Berlin</publisher-loc><publisher-name>Springer</publisher-name><fpage>662</fpage><lpage>679</lpage></mixed-citation></ref><ref id="CR38"><label>38.</label><mixed-citation publication-type="other">Picasso, B., Bicchi, A.: Stabilization of LTI systems with quantized state-quantized input static feedback. In: International Workshop on Hybrid Systems: Computation and Control, pp. 405–416. Springer (2003)</mixed-citation></ref><ref id="CR39"><label>39.</label><mixed-citation publication-type="journal"><person-group person-group-type="author"><name><surname>Pramod</surname><given-names>S</given-names></name><name><surname>Chidambaram</surname><given-names>M</given-names></name></person-group><article-title xml:lang="en">Closed loop identification of transfer function model for unstable bioreactors for tuning PID controllers</article-title><source>Bioprocess Eng.</source><year>2000</year><volume>22</volume><issue>2</issue><fpage>185</fpage><lpage>188</lpage><pub-id pub-id-type="doi">10.1007/s004499900077</pub-id></mixed-citation></ref><ref id="CR40"><label>40.</label><mixed-citation publication-type="other">Ravanbakhsh, H., Sankaranarayanan, S.: Counter-example guided synthesis of control Lyapunov functions for switched systems. In: Conference on Decision and Control (CDC), pp. 4232–4239 (2015)</mixed-citation></ref><ref id="CR41"><label>41.</label><mixed-citation publication-type="other">Ravanbakhsh, H., Sankaranarayanan, S.: Robust controller synthesis of switched systems using counterexample guided framework. In: International Conference on Embedded Software (EMSOFT), pp. 8:1–8:10. ACM (2016)</mixed-citation></ref><ref id="CR42"><label>42.</label><mixed-citation publication-type="other">Roux, P., Jobredeaux, R., Garoche, P.-L.: Closed loop analysis of control command software. In: International Conference on Hybrid Systems: Computation and Control (HSCC), pp. 108–117. ACM (2015)</mixed-citation></ref><ref id="CR43"><label>43.</label><mixed-citation publication-type="other">Solar-Lezama, A., Tancau, L., Bodík, R., Seshia, S.A, Saraswat, V.A.: Combinatorial sketching for finite programs. In: International Conference on Architectural Support for Programming Languages and Operating Systems (ASPLOS), pp. 404–415. ACM (2006)</mixed-citation></ref><ref id="CR44"><label>44.</label><mixed-citation publication-type="journal"><person-group person-group-type="author"><name><surname>Spong</surname><given-names>MW</given-names></name></person-group><article-title xml:lang="en">The swing up control problem for the Acrobot</article-title><source>IEEE Control Syst.</source><year>1995</year><volume>15</volume><issue>1</issue><fpage>49</fpage><lpage>55</lpage><pub-id pub-id-type="doi">10.1109/37.341864</pub-id></mixed-citation></ref><ref id="CR45"><label>45.</label><mixed-citation publication-type="book"><person-group person-group-type="author"><name><surname>Tabuada</surname><given-names>P</given-names></name></person-group><source>Verification and Control of Hybrid Systems: A Symbolic Approach</source><year>2009</year><publisher-loc>New York</publisher-loc><publisher-name>Springer</publisher-name><pub-id pub-id-type="doi">10.1007/978-1-4419-0224-5</pub-id></mixed-citation></ref><ref id="CR46"><label>46.</label><mixed-citation publication-type="journal"><person-group person-group-type="author"><name><surname>Tadeo</surname><given-names>F</given-names></name><name><surname>Lopez</surname><given-names>OP</given-names></name><name><surname>Alvarez</surname><given-names>T</given-names></name></person-group><article-title xml:lang="en">Control of neutralization processes by robust loop shaping</article-title><source>IEEE Trans. Control Syst. Technol.</source><year>2000</year><volume>8</volume><issue>2</issue><fpage>236</fpage><lpage>246</lpage><pub-id pub-id-type="doi">10.1109/87.826795</pub-id></mixed-citation></ref><ref id="CR47"><label>47.</label><mixed-citation publication-type="other">Tan, R.H.G., Hoo, L.Y.H.: DC–DC converter modeling and simulation using state space approach. In: Conference on Energy Conversion (CENCON), pp. 42–47. IEEE (2015)</mixed-citation></ref><ref id="CR48"><label>48.</label><mixed-citation publication-type="journal"><person-group person-group-type="author"><name><surname>Van Loan</surname><given-names>C</given-names></name></person-group><article-title xml:lang="en">Computing integrals involving the matrix exponential</article-title><source>IEEE Trans. Autom. Control</source><year>1978</year><volume>23</volume><issue>3</issue><fpage>395</fpage><lpage>404</lpage><pub-id pub-id-type="amsid">494865</pub-id><pub-id pub-id-type="doi">10.1109/TAC.1978.1101743</pub-id></mixed-citation></ref><ref id="CR49"><label>49.</label><mixed-citation publication-type="other">Wang, T.E., Garoche, P.-L., Roux, P., Jobredeaux, R., Feron, E.: Formal analysis of robustness at model and code level. In: International Conference on Hybrid Systems: Computation and Control (HSCC), pp. 125–134. ACM (2016)</mixed-citation></ref><ref id="CR50"><label>50.</label><mixed-citation publication-type="journal"><person-group person-group-type="author"><name><surname>Wu</surname><given-names>J</given-names></name><name><surname>Li</surname><given-names>G</given-names></name><name><surname>Chen</surname><given-names>S</given-names></name><name><surname>Chu</surname><given-names>J</given-names></name></person-group><article-title xml:lang="en">Robust finite word length controller design</article-title><source>Automatica</source><year>2009</year><volume>45</volume><issue>12</issue><fpage>2850</fpage><lpage>2856</lpage><pub-id pub-id-type="amsid">2889395</pub-id><pub-id pub-id-type="doi">10.1016/j.automatica.2009.09.001</pub-id></mixed-citation></ref><ref id="CR51"><label>51.</label><mixed-citation publication-type="other">Zamani, M., Mazo, M., Abate, A.: Finite abstractions of networked control systems. In: Conference on Decision and Control (CDC), pp. 95–100. IEEE (2014)</mixed-citation></ref></ref-list></ref-list><fn-group><fn id="Fn1"><label>1</label><p id="Par50"><ext-link xlink:href="https://github.com/johnmcfarlane/cnl" ext-link-type="url">https://github.com/johnmcfarlane/cnl</ext-link>.</p></fn><fn id="Fn2"><label>2</label><p id="Par84"><ext-link xlink:href="https://www.cprover.org/DSSynth" ext-link-type="url">https://www.cprover.org/DSSynth</ext-link>.</p></fn></fn-group><notes notes-type="Misc"><title>Publisher's Note</title><p>Springer Nature remains neutral with regard to jurisdictional claims in published maps and institutional affiliations.</p></notes></back></article>