To date, logic-based technologies are either built on top or as extensions of the Prolog language, mostly working as monolithic solutions tailored upon specific inference procedures, unification ...mechanisms, or knowledge representation techniques. Instead, to maximise their impact, logic-based technologies should support and enable the general-purpose exploitation of all the manifold contributions from logic programming. Accordingly, we present 2P-Kt, a reboot of the tuProlog project offering a general, extensible, and interoperable ecosystem for logic programming and symbolic AI.
Sistema móvil de detección de colisión temprana Acevedo, Roderik; Henríquez, Roy; Pan, Eddie ...
Revista de iniciación científica (En línea),
03/2020, Letnik:
5, Številka:
2
Journal Article
Recenzirano
Odprti dostop
Hoy en día los automóviles de última generación traen consigo sistemas que asisten al conductor en múltiples situaciones, como lo son las cámaras de retroceso, sistemas de frenado automático e ...inclusive, conducción autónoma. Pero este tipo de tecnología por lo general resulta ser muy costoso para una persona de clase media. Debido a esto, la presente investigación tiene el objetivo de presentar un sistema anticolisión automovilístico que sea económico y accesible para cualquier persona por medio de un dispositivo móvil.
The increasing demand for Android applications in line with technological evolution and the development of new features often leads to frequent updates and releases of applications. However, in this ...update cycle, developers sometimes make hasty changes that result in poor design choices, leading to the emergence of bad smell code. The impact of smells involves a decrease in quality, performance, and understanding, and impedes the software maintenance process. Some previously developed smell detection tools rely on JavaParser to parse source code into an Abstract Syntax Tree representation, meaning the extracted information is limited to Java programming language source code. Meanwhile, Google recommends Kotlin as the language for developing Android applications, and over 60% of professional Android developers use Kotlin. This research is using Program Structure Interface representation and applies a software metric-based approach as a method of smell detection and implements it into a Kotlin Android bad smell code detection tool. This approach was chosen because the characteristics of each smell can be represented with software metrics. The tool's evaluation results on five Kotlin Android projects showed an F-measure of 100% for Brain Class detection, 93.77% for God Class, and 85.71% for Brain Method. Comparing the tool's detection results with the iPlasma tool on the Quran project showed that the developed tool detected more smell occurrences. Usability testing results indicated that seven participants strongly agreed with the easy-to-understand detection results, easy-to-find presented functionality, clear presented information, and the tool helped to perform metric calculation and smell detection more quickly and efficiently. The average rating given for each question was between 4.29 - 4.71.
This paper describes a static analysis tool for finding defects, analyzing metrics and relations for programs written in the Kotlin language. The approach is implemented in the Svace static analyzer ...developed at the Ivannikov Institute for System Programming of the Russian Academy of Sciences. The paper focuses on the problems we faced during the implementation, the approaches we used to solve them, and the experimental results for the tool we built. The tool not only supports Kotlin but is also capable of analyzing mixed projects that use both Java and Kotlin. We hope that this paper will be useful to static analysis developers and language designers.
Conspicuously few body‐fossil taxa are known to span the Ediacaran–Cambrian boundary, a pattern usually taken to signal either a terminal Proterozoic mass extinction, or taphonomic failure. We draw ...attention to the emerging record of small carbonaceous fossils (SCFs), which exhibit continuous preservation spanning this critical interval. Here we focus on the enigmatic SCF Cochleatina, a morphologically complex coil‐shaped problematicum that ranges across the Ediacaran–Cambrian divide, and is potentially among the oldest fossil occurrences of metazoans. We report new material of Cochleatina canilovica from the Ediacaran of Estonia and Ukraine, which offers new characters for assessing its palaeobiology. Significantly, new specimens include sets of three‐alike triplets of Cochleatina adhering to organic sheets, suggesting a clustering habit, or grouping of elements within an individual during life; an important step in constraining the morphology and ecology of this Ediacaran–Cambrian problematicum. We present revised systematic descriptions for Cochleatina and C. canilovica, and critically evaluate previous biological interpretations, drawing comparisons with metazoan, algal and protistan analogues. We reject hypotheses supporting Cochleatina as a metazoan mouthpart, and suggest new grounds for viewing Cochleatina as a potential multicomponent predator that trapped protists among microbial mats. Most occurrences are from Baltica, but we synthesize sporadic reports of Cochleatina from other palaeocontinents, pointing to its global distribution during the latest ˜10 myr of the Ediacaran and majority of the earliest Cambrian Fortunian Stage. As a rare example of an ‘Ediacaran survivor’, Cochleatina highlights the broader significance of SCFs as a novel means of tracking evolutionary patterns through the Proterozoic–Phanerozoic transition.
Writing concurrent code that is both correct and efficient is notoriously difficult. Thus, programmers often prefer to use synchronization abstractions, which render code simpler and easier to reason ...about. Despite a wealth of work on this topic, there is still a gap between the rich semantics provided by synchronization abstractions in modern programming languages—specifically, fair FIFO ordering of synchronization requests and support for abortable operations—and frameworks for implementing it correctly and efficiently. Supporting such semantics is critical given the rising popularity of constructs for asynchronous programming, such as coroutines, which abort frequently and are cheaper to suspend and resume compared to native threads. This paper introduces a new framework called CancellableQueueSynchronizer (CQS), which enables simple yet efficient implementations of a wide range of fair and abortable synchronization primitives: mutexes, semaphores, barriers, count-down latches, and blocking pools. Our main contribution is algorithmic, as implementing both fairness and abortability efficiently at this level of generality is non-trivial. Importantly, all our algorithms, including the CQS framework and the primitives built on top of it, come with formal proofs in the Iris framework for Coq for many of their properties. These proofs are modular, so it is easy to show correctness for new primitives implemented on top of CQS. From a practical perspective, implementation of CQS for native threads on the JVM improves throughput by up to two orders of magnitude over Java’s AbstractQueuedSynchronizer, the only practical abstraction offering similar semantics. Further, we successfully integrated CQS as a core component of the popular Kotlin Coroutines library, validating the framework’s practical impact and expressiveness in a real-world environment. In sum, CancellableQueueSynchronizer is the first framework to combine expressiveness with formal guarantees and solid practical performance. Our approach should be extensible to other languages and families of synchronization primitives.