Abstract
Synchronous languages have been introduced as programming languages that directly reflect the nature of reactive systems: Their execution is divided into discrete reaction steps such that in each reaction step, inputs are read from the environment and outputs are instantaneously computed. Reaction steps, which are also called macro steps, consist thereby of a set of atomic micro step actions that are executed in the variable environment associated with the macro step. At the beginning of the macro step, only the values of the input variables are known in this variable environment, and the values of the remaining variables have to be computed according to the data-dependencies. Since the micro step actions depend on the variable environment that they also create, it might be the case that there are cyclic dependencies. Whether such cyclic dependencies can be constructively resolved has to be checked by a compile-time causality analysis which will ensure that there is for all inputs a suitable schedule of the micro steps. If the synchronous programs are converted to guarded actions as done in the author’s Averest system, some relationships with logic programs can be found: In particular, the concepts of reaction-to-absence of synchronous languages and negation-to-failure of logic programs seem to be the same; another analogy is found for the generation of equation-based code of synchronous programs and the completion of logic programs, and also for the fix-point analyses defined in both paradigms. This paper outlines these analogies between the two paradigms of programming languages and discusses whether further known semantics of logic programs like well-founded and stable models may find useful counterparts in the synchronous world in future.
Access this chapter
Tax calculation will be finalised at checkout
Purchases are for personal use only
Preview
Unable to display preview. Download preview PDF.
References
J. Aguado et al. “Grounding Synchronous Deterministic Concurrency in Sequential Programming”. In: Programming Languages and Systems Ed. by Z. Shao. Vol. 8410. LNCS. Grenoble, France: Springer, 2014, pp. 229–248.
A. Benveniste et al. “The Synchronous Languages Twelve Years Later”. In: Proceedings of the IEEE 91.1 (2003), pp. 64–83.
G. Berry and L. Cosserat. “The Esterel Synchronous Programming Language and its Mathe- matical Semantics”. In: Seminar on Concurrency (CONCUR) Ed. by S.D. Brookes, A.W. Roscoe, and G. Winskel. Vol. 197. LNCS. Pittsburgh, Pennsylvania, USA: Springer, 1985, pp. 389–448.
M. von der Beeck. “A Comparison of Statecharts Variants”. In: Formal Techniques in Real- Time and Fault-Tolerant Systems (FTRTFT) Ed. by H. Langmaack, W.-P. de Roever, and J. Vytopil. Vol. 863. LNCS. Lübeck, Germany: Springer, 1994, pp. 128–148.
G. Berry. The Constructive Semantics of Pure Esterel. July 1999.
J. Brandt et al. “Embedding Polychrony into Synchrony”. In: IEEE Transactions on Software Engineering (TSE) 39.7 (July 2013), pp. 917–929.
J.-P. Bodeveix, M. Filali-Amine, and S. Kan. “A Refinement-based compiler development for synchronous language”. In: Formal Methods and Models for Codesign (MEMOCODE) Ed. by J.-P. Talpin, P. Derler, and K. Schneider. Vienna, Austria: IEEE Computer Society, 2017, pp. 165–174.
F. Boussinot and R. de Simone. “The Esterel language”. In: Proceedings of the IEEE 79.9 (1991), pp. 1293–1304.
J.A. Brzozowski and C. Ebergen. “On the Delay-Sensitivity of Gate Networks”. In: IEEE Transactions on Computers (T-C) 41.11 (Nov 1992), pp. 1349–1359.
J. Brandt and K. Schneider. “Separate Compilation for Synchronous Programs”. In: Software and Compilers for Embedded Systems (SCOPES). Nice, France: ACM, 2009, pp. 1–10.
J.A. Brzozowski and C.-J.H. Seger. Advances in asynchronous circuit theory part I. Bulletin of the European association of Theoretical Computer Science. Oct. 1990.
R.E. Bryant and C.-J.H. Seger. “Formal Verification of Digital Circuits Using Symbolic Ternary System Models”. In: Computer Aided Verification (CAV). Ed. by E.M. Clarke and R.P. Kurshan. Vol. 531. LNCS. New Brunswick, New Jersey USA: Springer, 1991, pp. 33–43.
J.A. Brzozowski and C.-J.H. Seger. Asynchronous Circuits Springer, 1995.
R.E. Bryant. “Boolean Analysis of MOS Circuits”. In: IEEE Transactions on Computer Aided Design of Integrated Circuits and Systems (T-CAD). CAD-6.4 (July 1987), pp. 634–649.
P. Caspi et al. “LUSTRE: A declarative language for programming synchronous systems”. In: Principles of Programming Languages (POPL) Munich, Germany: ACM, 1987, pp. 178–188.
K.L. Clark. “Negation as Failure”. In: Logic and Data Bases Ed. by H. Gallaire and J. Minker. Toulouse, France: Plemum Press, New York, 1977, pp. 293–322.
W.F. Dowling and J.H. Gallier. “Linear-time algorithms for testing the satisfiability of propositional Horn formulae”. In: The Journal of Logic Programming 1.3 (Oct. 1984), pp. 267–284.
T. Eiter, G. Ianni, and T. Krennwallner. “Answer Set Programming: A Primer”. In: Reasoning Web Semantic Technologies for Information Systems Ed. by S. Tessaris et al. Vol. 5689. LNCS. Brixen-Bressanone, Italy: Springer, 2009, pp. 40–110.
M. van Emden and R. Kowalski. “The semantics of predicate logic as a programming language”. In: Journal of the ACM (JACM) 23.4 (Oct. 1976), pp. 733–742.
F. Fages. “Consistency of Clark’s completion and existence of stable models”. In: Methods of Logic in Computer Science 1.1 (1994), pp. 51–60.
M. Fitting. “A Kripke-Kleene Semantics for Logic Programs”. In: Journal of Logic Pro- gramming 2.4 (Dec. 1985), pp. 295–312.
H. Fecher et al. “29 New Unclarities in the Semantics of UML 2.0 State Machines”. In: International Conference on Formal Engineering Methods (ICFEM) Ed. by K.-K. Lau and R. Banach. Vol. 3785. LNCS. Manchester England, UK: Springer, 2005, pp. 52–65.
T. Gautier, P. Le Guernic, and L. Besnard. “SIGNAL, a declarative language for synchronous programming of real-time systems”. In: Functional Programming Languages and Computer Architecture Ed. by G. Kahn. Vol. 274. LNCS. Portland, Oregon, USA: Springer, 1987, pp. 257–277.
M. Gelfond and V. Lifschitz. “The Stable Model Semantics for Logic Programming”. In: Logic Programming. Ed. by R.A. Kowalski and K.A. Bowen. Seattle, Washington, USA: MIT Press, 1988, pp. 1070–1080.
A. van Gelder, K.A. Ross, and J.S. Schlipf. “The Well-Founded Semantics for General Logic Programs”. In: Journal of the ACM (JACM) 38.3 (July 1991), pp. 620–650.
P. Le Guernic et al. “Programming real-time applications with SIGNAL”. In: Proceedings of the IEEE 79.9 (1991), pp. 1321–1336.
N. Halbwachs. Synchronous programming of reactive systems. Kluwer, 1993.
D. Harel and A. Naamad. “The STATEMATE Semantics of Statecharts”. In: ACM Transactions on Software Engineering and Methodology (TOSEM) 5.4 (1996), pp. 293–333.
D. Harel and A. Pnueli “On the development of reactive systems”. In: Logic and Models of Concurrent Systems. Ed. by K.R. Apt. Springer, 1985, pp. 477–498.
D. Harel. “Statecharts: A visual formulation for complex systems”. In: Science of Computer Programming 8.3 (1987), pp. 231–274.
N. Halbwachs et al. “The Synchronous Dataflow Programming Language LUSTRE”. In: Proceedings of the IEEE 79.9 (Sept. 1991), pp. 1305–1320.
R. von Hanxleden et al. “SCCharts: sequentially constructive statecharts for safety-critical applications: HW/SW-synthesis for a conservative extension of synchronous statecharts”. In: Programming Language Design and Implementation (PLDI) Ed. by M.F.P. O’Boyle and K. Pingali. Edinburgh, United Kingdom: ACM, 2014, pp. 372–383.
R. von Hanxleden et al. “Sequentially constructive concurrency: a conservative extension of the synchronous model of computation”. In: Design, Automation and Test in Europe (DATE). Ed. by E. Macii. Grenoble, France: EDA Consortium/ACM, 2013, pp. 581–586.
R. von Hanxleden et al. “Sequentially Constructive Concurrency A Conservative Extension of the Synchronous Model of Computation”. In: ACM Transactions on Embedded Computing Systems (TECS) 13.4s (July 2014), 144:1–144:26.
D.A. Huffman. “Combinational circuits with feedback”. In: Recent Developments in Switch- ing Theory Ed. by A. Mukhopadhyay Academic Press, 1971, pp. 27–55.
W.H. Kautz. “The necessity of closed circuit loops in minimal combinational circuits”. In: IEEE Transactions on Computers (T-C) C-19.2 (Feb 1970), pp. 162–166.
R. Kowalski. “Predicate Logic as Programming Language”. In: IFIP Congress Stockholm, Sweden, 1974, pp. 569–574.
K. Kunen. “Signed data dependencies in logic programs”. In: Journal of Logic Programming 7.3 (Nov 1989), pp. 231–245.
F. Lin and Y. Zhao. “ASSAT: Computing answer sets of a logic program by SAT solvers”. In: Artificial Intelligence 157 (2004), pp. 115–137.
S. Malik. “Analysis of Cyclic Combinational Circuits”. In: International Conference on Computer-Aided Design (ICCAD). Santa Clara, California USA: IEEE Computer Society, 1993, pp. 618–625.
S. Malik. “Analysis of cycle combinational circuits”. In: IEEE Transactions on Computer Aided Design of Integrated Circuits and Systems (T-CAD) 13.7 (July 1994), pp. 950–956.
G. Mints. A Short Introduction to Intuitionistic Logic The University Series in Mathematics. Kluwer, 2000.
A. Pnueli and M. Shalev. “What is in a step: On the semantics of statecharts”. In: Theoretical Aspects of Computer Software (TACS) Ed. by T. Ito and A.R. Meyer. Vol. 526. LNCS. Sendai, Japan: Springer, 1991, pp. 244–264.
R.L. Rivest. “The Necessity of Feedback in Minimal Monotone Combinational Circuits”. In: IEEE Transactions on Computers (T-C) C-26.6 (1977), pp. 606–607.
K. Rathlev et al. “SCEst: Sequentially Constructive Esterel”. In: Formal Methods and Models for Codesign (MEMOCODE) Austin, Texas, USA: IEEE Computer Society, 2015, pp. 10–19.
K. Schneider et al. “Maximal Causality Analysis”. In: Application of Concurrency to System Design (ACSD) Ed. by J. Desel and Y. Watanabe. Saint-Malo, France: IEEE Computer Society, 2005, pp. 106–115.
K. Schneider, J. Brandt, and T. Schüle. “Causality Analysis of Synchronous Programs with Delayed Actions”. In: Compilers, Architecture and Synthesis for Embedded Systems (CASES). Washington, District of Columbia, USA: ACM, 2004, pp. 179–189.
K. Schneider. “A Verified Hardware Synthesis for Esterel”. In: Distributed and Parallel Embedded Systems (DIPES) Ed. by F.J. Rammig. Kluwer, 2000, pp. 205–214.
K. Schneider The Synchronous Programming Language Quartz. Internal Report 375. Kaiser slautern, Germany: Department of Computer Science, University of Kaiserslautern, Dec. 2009.
C.-J. Seger and J.A. Brzozowski. “An optimistic ternary simulation of gate races”. In: Theoretical Computer Science (TCS) 61.1 (Oct. 1988), pp. 49–66.
E.M. Sentovich. “Quick conservative causality analysis”. In: International Symposium on System Synthesis (ISSS) Ed. by F. Vahid and F. Catthoor. Antwerp, Belgium: ACM, 1997, pp. 2–8.
T.R. Shiple, G. Berry, and H. Touati. “Constructive Analysis of Cyclic Circuits”. In: European Design Automation Conference (EDAC) Paris, France: IEEE Computer Society, 1996, pp. 328–333.
L. Stok. “False Loops Through Resource Sharing”. In: International Conference on Computer-Aided Design (ICCAD) IEEE Computer Society 1992, pp. 345–348.
J.-P. Talpin et al. “Constructive Polychronous Systems”. In: Logical Foundations of Com- puter Science (LFCS) Ed. by S.N. Artëmov and A. Nerode. Vol. 7734. LNCS. San Diego, California, USA: Springer, 2013, pp. 335–349.
Z. Yang et al. “A verified transformation: from polychronous programs to a variant of clocked guarded actions”. In: International Workshop on Software and Compilers for Embedded Systems (SCOPES). Ed. by H. Corporaal and S. Stuijk. Sankt Goar, Germany: ACM, 2014, pp. 128–137.
Author information
Authors and Affiliations
Corresponding author
Editor information
Editors and Affiliations
Rights and permissions
Copyright information
© 2018 Springer Nature Switzerland AG
About this chapter
Cite this chapter
Schneider, K., Dahlem, M. (2018). Are Synchronous Programs Logic Programs?. In: Müller, P., Schaefer, I. (eds) Principled Software Development. Springer, Cham. https://doi.org/10.1007/978-3-319-98047-8_16
Download citation
DOI: https://doi.org/10.1007/978-3-319-98047-8_16
Published:
Publisher Name: Springer, Cham
Print ISBN: 978-3-319-98046-1
Online ISBN: 978-3-319-98047-8
eBook Packages: Computer ScienceComputer Science (R0)