Tomoyuki Aotani’s research while affiliated with Sanyo-Onoda City University and other places

What is this page?


This page lists works of an author who doesn't have a ResearchGate profile or hasn't added the works to their profile yet. It is automatically generated from public (personal) data to further our legitimate goal of comprehensive and accurate scientific recordkeeping. If you are this author and want this page removed, please let us know.

Publications (64)


Figure 1 A network of signal class instances in the network monitoring system. Each drum icon represents a database assigned to a signal class instance. These databases do not need to be local; their locations are managed by the ID resolver.
Figure 2 Delayed update propagation. Dashed arrows represent propagation between persistent signals.
Benchmark settings. We set the checkpoint intervals so that at least 5 update propagations are triggered between the intervals.
Consistent Distributed Reactive Programming with Retroactive Computation
  • Preprint
  • File available

February 2025

·

1 Read

Tetsuo Kamina

·

Tomoyuki Aotani

·

Hidehiko Masuhara

Context: Many systems require receiving data from multiple information sources, which act as distributed network devices that asynchronously send the latest data at their own pace to generalize various kinds of devices and connections, known as the Internet of Things (IoT). These systems often perform computations both **reactively** and **retroactively** on information received from the sources for monitoring and analytical purposes, respectively. Inquiry: It is challenging to design a programming language that can describe such systems at a high level of abstraction for two reasons: (1) reactive and retroactive computations in these systems are performed alongside the execution of other application logic; and (2) information sources may be distributed, and data from these sources may arrive late or be lost entirely. Addressing these difficulties is our fundamental problem. Approach: We propose a programming language that supports the following features. First, our language incorporates reactive time-varying values (also known as signals) embedded within an imperative language. Second, it supports multiple information sources that are distributed and represented as signals, meaning they can be declaratively composed to form other time-varying values. Finally, it allows computation over past values collected from information sources and recovery from inconsistency caused by packet loss. To address the aforementioned difficulties, we develop a core calculus for this proposed language. Knowledge: This calculus is a hybrid of reactive/retroactive computations and imperative ones. Because of this hybrid nature, the calculus is inherently complex; however, we have simplified it as much as possible. First, its semantics are modeled as a simple, single-threaded abstraction based on typeless object calculus. Meanwhile, reactive computations that execute in parallel are modeled using a simple process calculus and are integrated with the object calculus, ensuring that the computation results are always serialized. Specifically, we show that time consistency is guaranteed in the calculus; in other words, consistency can be recovered at any checkpoint. Grounding: This work is supported by formally stating and proving theorems regarding time consistency. We also conducted a microbenchmarking experiment to demonstrate that the implemented recovery process is feasible in our assumed application scenarios. Importance: The ensured time consistency provides a rigorous foundation for performing analytics on computation results obtained from distributed information sources, even when these sources experience delays or packet loss.

Download

Figure 5 Overview of signal class mapping
Figure 11 Example of schema evolution in our SMOs: The sources and sinks of the bold arrows represent the classes before and after evolution, respectively.
Figure 12 Schema evolution shown in Figure 11 using JPA-like mapping. The sources and sinks of bold arrows denote the relations before and after evolution, respectively.
Figure 14 Schema evolution shown in Figure 11 using signal classes. Note that each table is annotated with the label that identifies the corresponding signal class instance.
Evolution Language Framework for Persistent Objects

February 2025

·

4 Reads

Context: Multi-schema-version data management (MSVDM) is the database technology that simultaneously supports multiple schema versions of one database. With the technology, multiple versions of one software system can co-exist and exchange data even when the system's data structure evolves along with versions. Inquiry: While there have been developed MSVDM theories and implementations for relational databases, they are not directly applicable to persistent objects. Since persistent objects are commonly implemented by means of object-relational mapping (OR-mapping), we need a right level of abstraction in order to describe evolution of data structures and translate data accesses in between different versions. Approach: We propose a new evolution language consisting of a set of evolution operations, each denoting a modification of the source code and implicitly defining the corresponding modification to the database schema. Given the existence of multiple mapping mechanisms from persistent objects to databases, we designed the evolution language at two levels. At the abstract level, it handles scenarios such as refactoring and adding classes and fields. At the concrete level, we provide definitions for different mapping mechanisms separately, leveraging the existing database evolution language that supports MSVDM. Knowledge: Our evolution language is designed to support existing evolution operations proposed in prior work. Additionally, it introduces support for operations related to class hierarchy changes, which are not covered by previous approaches. Using our proposal, two concrete mapping mechanisms, namely, a JPA-like mapping and signal classes, can be provided separately. Furthermore, our evolution language preserves program behavior and covers common evolution operations in practice. Grounding: This work is supported by the formal definition of both the target abstract core language and the proposed evolution language, the formulation of several theorems demonstrating the soundness of our proposals, and the proofs of these theorems. Additionally, an empirical study was conducted to investigate the evolution histories of three open-source projects. Importance: To the best of our knowledge, our proposal is the first evolution language for persistent objects that supports MSVDM. Moreover, it is the first evolution language defined at an abstract level. By defining mappings separately, we can apply it to a wide range of persistent object mechanisms built on top of SQL.






Fig. 2. The syntax of λVL.
Fig. 3. The programs in Fig. 1 in VL.
Fig. 5. The syntax of VLMini.
Fig. 6. VLMini algorithmic typing.
Fig. 8. Constraint resolution time for the duplicated List by #mod × #ver.
Compilation Semantics for a Programming Language with Versions

November 2023

·

35 Reads

Lecture Notes in Computer Science

Programming with versions is a paradigm that allows a program to use multiple versions of a module so that the programmer can selectively use functions from both older and newer versions of a single module. Previous work formalized λVL\lambda _{\textrm{VL}} λ VL , a core calculus for programming with versions, but it has not been integrated into practical programming languages. In this paper, we propose VL, a Haskell-subset surface language for λVL\lambda _{\textrm{VL}} λ VL along with its compilation method. We formally describe the core part of the VL compiler, which translates from the surface language to the core language by leveraging Girard’s translation, soundly infers the consistent version of expressions along with their types, and generates a multi-version interface by bundling specific-version interfaces. We conduct a case study to show how VL supports practical software evolution scenarios and discuss the method’s scalability.




A Functional Programming Language with Versions

July 2021

·

114 Reads

While modern software development heavily uses versioned packages, programming languages rarely support the concept of versions in their semantics, which makes software updates more bulky and unsafe. This paper proposes a programming language that intrinsically supports versions. The main goals are to design core language features to support multiple versions in one program and establish a proper notion of type safety with those features. The proposed core calculus, called Lambda VL, has versioned values, each containing different values under different versions. We show the construction of the type system as an extension of coeffect calculus by mapping versions to computational resources. The type system guarantees the existence of a valid combination of versions for a program. The calculus enables programming languages to use multiple versions of a package within a program. It will serve as a basis for designing advanced language features like module systems and semantic versioning.


Citations (39)


... Programming with versions [15,28,29,31] is a recent proposal that allows programming languages to support multiple versions of programming elements at a time so that the developer can flexibly cope with incompatible changes. λ VL is the core calculus in which a versioned value encapsulates multiple versions of a value (including a function value). ...

Reference:

Compilation Semantics for a Programming Language with Versions
A Step toward Programming with Versions in Real-World Functional Languages
  • Citing Conference Paper
  • December 2022

... Programming with versions [15,28,29,31] is a recent proposal that allows programming languages to support multiple versions of programming elements at a time so that the developer can flexibly cope with incompatible changes. λ VL is the core calculus in which a versioned value encapsulates multiple versions of a value (including a function value). ...

BatakJava: An Object-Oriented Programming Language with Versions
  • Citing Conference Paper
  • November 2022

... Programming with versions [15,28,29,31] is a recent proposal that allows programming languages to support multiple versions of programming elements at a time so that the developer can flexibly cope with incompatible changes. λ VL is the core calculus in which a versioned value encapsulates multiple versions of a value (including a function value). ...

A Functional Programming Language with Versions

The Art Science and Engineering of Programming

... Signals were first proposed in several functional languages such as Fran [10]; subsequently, several programming languages introduced their ability to imperatively change signals [6,16,20,28]. Signal classes are introduced in SignalJ to group persistent signals (signals whose values are not transient but persistent such that all update histories are implicitly stored in the time-series database [15]) into a single module. ...

An approach for persistent time-varying values
  • Citing Conference Paper
  • October 2019

... ServalCJ has been used only in academic settings with the development of proof-of-concept applications and exemplars used to present the usefulness of new language features. The language is no longer under development, although the ideas of the language are being used in a reactive language developed by the authors of ServalCJ[35]. ...

TinyCORP: A Calculus for Context-Oriented Reactive Programming
  • Citing Conference Paper
  • July 2019

... FluidEdt (Ou et al., 2015) é um sistema baseado em Java que une a análise do programa com IHC (Interação Humano-Computador), criando uma abordagem para entender, depurar e desenvolver estruturas de dados que fazem manipulação de heap. Em Kanon (Oka et al., 2018;Takahashi et al., 2022) é um ambiente de programação live para visualização imediata de estrutura de dados enquanto o programa é editado. ...

Live, synchronized, and mental map preserving visualization for data structure programming
  • Citing Conference Paper
  • October 2018

... Dependency hell is a concept discussed in several studies [36][37][38] and refers to when a project has an excessive number of dependencies, and managing these dependencies becomes difficult and errorprone. Chen et al. [32] discuss the impact of "trivial packages, " referring to libraries implementing simple functionalities, on the npm ecosystem. ...

A Context-Oriented Programming Approach to Dependency Hell
  • Citing Conference Paper
  • July 2018

... Signals are abstractions for time-varying values that can be declaratively connected to form dataflows; i.e., signals directly represent dataflows from inputs given by the environment to outputs that respond to the changes in the environment. Signals were first proposed in several functional languages such as Fran [10]; subsequently, several programming languages introduced their ability to imperatively change signals [6,16,20,28]. Signal classes are introduced in SignalJ to group persistent signals (signals whose values are not transient but persistent such that all update histories are implicitly stored in the time-series database [15]) into a single module. ...

Harmonizing Signals and Events with a Lightweight Extension to Java

The Art Science and Engineering of Programming

... ServalCJ comes together with calculus for the upfront verification of different properties of the language [32]. In particular, the calculus is oriented toward the soundness of the unified activation mechanisms for BContexts (i.e., event-based, imperative, control flow) [33,34]. Additionally, there is a GitHub repository 1 containing the language's compiler implementation and one of its recent case studies. ...

Method safety mechanism for asynchronous layer deactivation
  • Citing Article
  • May 2018

Science of Computer Programming