$$\mathbb {K}$$—A Semantic Framework for Programming Languages and Formal Analysis

Author(s):  
Xiaohong Chen ◽  
Grigore Roşu
2004 ◽  
Vol 11 (35) ◽  
Author(s):  
Jørgen Iversen

When writing semantic descriptions of programming languages, it is convenient to have tools for checking the descriptions. With frameworks that use inductively defined semantic functions to map programs to their denotations, we would like to check that the semantic functions result in denotations with certain properties. In this paper we present a type system for a modular style of the action semantic framework that, given signatures of all the semantic functions used in a semantic equation defining a semantic function, performs a soft type check on the action in the semantic equation.<br /> <br />We introduce types for actions that describe different properties of the actions, like the type of data they expect and produce, whether they can fail or have side effects, etc. A type system for actions which uses these new action types is presented. Using the new action types in the signatures of semantic functions, the language describer can assert properties of semantic functions and have the assertions checked by an implementation of the type system.<br /> <br />The type system has been implemented for use in connection with the recently developed formalism ASDF. The formalism supports writing language definitions by combining modules that describe single language constructs. This is possible due to the inherent modularity in ASDF. We show how we manage to preserve the modularity and still perform specialised type checks for each module.


Author(s):  
Marcelo Fiore ◽  
Philip Saville

AbstractThe glueing construction, defined as a certain comma category, is an important tool for reasoning about type theories, logics, and programming languages. Here we extend the construction to accommodate ‘2-dimensional theories’ of types, terms between types, and rewrites between terms. Taking bicategories as the semantic framework for such systems, we define the glueing bicategory and establish a bicategorical version of the well-known construction of cartesian closed structure on a glueing category. As an application, we show that free finite-product bicategories are fully complete relative to free cartesian closed bicategories, thereby establishing that the higher-order equational theory of rewriting in the simply-typed lambda calculus is a conservative extension of the algebraic equational theory of rewriting in the fragment with finite products only.


2021 ◽  
Author(s):  
Honoré Hounwanou ◽  
Laila Boumlik ◽  
Mohamed Mejri

Due to its versatility and wide variety of constructs, BPMN (Business Process Model and Notation) is today the leading standard notation for creating visual models of business or organizational processes. It is a rich and expressive graphical language specially designed to provide a notation that is easily understood by all members of a company. Sometimes, however, this large number of controls and action nodes available can become a weakness since a given semantics can be represented in many ways, causing some ambiguity and raising the question of bisimilarity between two models. Today, it is universally recognized that formal methods are useful for the specification, design and verification of almost all systems, and essential for the most critical ones. On the other hand, the Business Process Execution Language for Web Services (BPEL) is an executable language structured in blocks, supported by many execution platforms, making it possible to specify the actions in the business processes with Web services. Since BPMN and BPEL share almost the same level of abstraction, we present in this article a formalization of the BPMN language through a mapping to BPEL, aiming to remove its ambiguities, to solve the complex modeling and interaction problems and open the door to many formal analysis such as model checking. We first formalize the BPEL language using the K framework, we then map the BPMN language to this formalized version of BPEL. The K Framework is a rewriting/reachability based framework enabling language developers to formally define all programming languages. Once a language is formally specified in the K framework, the framework automatically outputs a range of formal verification tool sets, compilers, debuggers and other developer tools for it.


Sign in / Sign up

Export Citation Format

Share Document