154,922 research outputs found
Concolic Testing in Logic programming
Software testing is one of the most popular validation techniques in the software industry. Surprisingly, we can only find a few approaches to testing in the context of logic programming.
In this paper, we introduce a systematic approach for dynamic testing that combines both
concrete and symbolic execution. Our approach is fully automatic and guarantees full path
coverage when it terminates. We prove some basic properties of our technique and illustrate
its practical usefulness through a prototype implementation.This work has been partially supported by the EU (FEDER) and the Spanish Ministerio de Economia y Competitividad under grant TIN2013-44742-C4-1-R and by the Generalitat Valenciana under grant PROMETEOII/2015/013. Part of this research was done while the third author was visiting the University of Reunion; G. Vidal gratefully acknowledges their hospitality.Mesnard, F.; Payet, E.; Vidal Oriola, GF. (2015). Concolic Testing in Logic programming. Theory and Practice of Logic Programming. 15(4):711-725. https://doi.org/10.1017/S1471068415000332S711725154SCHIMPF, J., & SHEN, K. (2011). ECLiPSe – From LP to CLP. Theory and Practice of Logic Programming, 12(1-2), 127-156. doi:10.1017/s1471068411000469Martelli, A., & Montanari, U. (1982). An Efficient Unification Algorithm. ACM Transactions on Programming Languages and Systems, 4(2), 258-282. doi:10.1145/357162.357169Godefroid, P., Klarlund, N., & Sen, K. (2005). DART. Proceedings of the 2005 ACM SIGPLAN conference on Programming language design and implementation - PLDI ’05. doi:10.1145/1065010.1065036Mera E. , López-García P. , and Hermenegildo M. V. 2009. Integrating software testing and run-time checking in an assertion verification framework. In 25th International Conference on Logic Programming, ICLP 2009, Pasadena. 281–295.Godefroid, P., Levin, M. Y., & Molnar, D. (2012). SAGE. Communications of the ACM, 55(3), 40. doi:10.1145/2093548.2093564WIELEMAKER, J., SCHRIJVERS, T., TRISKA, M., & LAGER, T. (2011). SWI-Prolog. Theory and Practice of Logic Programming, 12(1-2), 67-96. doi:10.1017/s1471068411000494CARLSSON, M., & MILDNER, P. (2011). SICStus Prolog—The first 25 years. Theory and Practice of Logic Programming, 12(1-2), 35-66. doi:10.1017/s1471068411000482Degrave F. , Schrijvers T. , and Vanhoof W. 2008. Automatic generation of test inputs for Mercury. In Logic-Based Program Synthesis and Transformation, 18th International Symposium, LOPSTR 2008. 71–86.Somogyi, Z., Henderson, F., & Conway, T. (1996). The execution algorithm of mercury, an efficient purely declarative logic programming language. The Journal of Logic Programming, 29(1-3), 17-64. doi:10.1016/s0743-1066(96)00068-4Vidal, G. (2015). Concolic Execution and Test Case Generation in Prolog. Lecture Notes in Computer Science, 167-181. doi:10.1007/978-3-319-17822-6_10Belli F. and Jack O. 1993. Implementation-based analysis and testing of Prolog programs. In ISSTA. 70–80.King, J. C. (1976). Symbolic execution and program testing. Communications of the ACM, 19(7), 385-394. doi:10.1145/360248.360252Lloyd, J. W. (1987). Foundations of Logic Programming. doi:10.1007/978-3-642-83189-8Clarke L. 1976. A program testing system. In Proceedings of the 1976 Annual Conference (ACM'76). 488–491
DeepGauge: Multi-Granularity Testing Criteria for Deep Learning Systems
Deep learning (DL) defines a new data-driven programming paradigm that
constructs the internal system logic of a crafted neuron network through a set
of training data. We have seen wide adoption of DL in many safety-critical
scenarios. However, a plethora of studies have shown that the state-of-the-art
DL systems suffer from various vulnerabilities which can lead to severe
consequences when applied to real-world applications. Currently, the testing
adequacy of a DL system is usually measured by the accuracy of test data.
Considering the limitation of accessible high quality test data, good accuracy
performance on test data can hardly provide confidence to the testing adequacy
and generality of DL systems. Unlike traditional software systems that have
clear and controllable logic and functionality, the lack of interpretability in
a DL system makes system analysis and defect detection difficult, which could
potentially hinder its real-world deployment. In this paper, we propose
DeepGauge, a set of multi-granularity testing criteria for DL systems, which
aims at rendering a multi-faceted portrayal of the testbed. The in-depth
evaluation of our proposed testing criteria is demonstrated on two well-known
datasets, five DL systems, and with four state-of-the-art adversarial attack
techniques against DL. The potential usefulness of DeepGauge sheds light on the
construction of more generic and robust DL systems.Comment: The 33rd IEEE/ACM International Conference on Automated Software
Engineering (ASE 2018
Concolic Testing in CLP
[EN] Concolic testing is a popular software verification technique based on a combination of concrete and symbolic execution. Its main focus is finding bugs and generating test cases with the aim of maximizing code coverage. A previous approach to concolic testing in logic programming was not sound because it only dealt with positive constraints (by means of substitutions) but could not represent negative constraints. In this paper, we present a novel framework for concolic testing of CLP programs that generalizes the previous technique. In the CLP setting, one can represent both positive and negative constraints in a natural way, thus giving rise to a sound and (potentially) more efficient technique. Defining verification and testing techniques for CLP programs is increasingly relevant since this framework is becoming popular as an intermediate representation to analyze programs written in other programming paradigms.This author has been partially supported by EU (FEDER) and Spanish MCI/AEI under grants TIN2016-76843-C4-1-R and PID2019-104735RB-C41, and by the Generalitat Valenciana under grant Prometeo/2019/098 (DeepTrust).Mesnard, F.; Payet, E.; Vidal, G. (2020). Concolic Testing in CLP. Theory and Practice of Logic Programming. 20(5):671-686. https://doi.org/10.1017/S1471068420000216S67168620
The Development Of A Portable Fiber Optic Based Lightning Detector System
This project is to demonstrate the development of a fiber optic based lightning
detector system using a programmable logic controller. Basically, the project is
developed to collect the lightning profiles. It is able to detect the lightning flash and
store the lightning data as well as the time of occurrences into a programmable logic
controller. It is capable of detecting the cloud to ground lightning, intercloud
lightning, intercloud lightning and others. The data could be retrieved and viewed
through the personal computer (PC) as desired.
Two sections are taken into consideration for the whole system design. These sections
are hardware and software design. The system hardware consists of 4 main parts.
They include a sensing unit, a data transmission unit, a signal conditioning unit and a
data storage unit. Most of the hardware involves circuitry designs. Based on the
designs, printed circuit boards (PCBs) are constructed by using the electronics
application software (PROTEL). On the other hand, the system software design is a program, which is written in ladder logic programming. The software is designed for
the purpose of handling and organizing the incoming lightning data into PLC or data
logger.
This project was tested in 2 modes. One of the modes is the testing of the individual
parts of the project. The other mode is the testing of the integration of all parts of the
project, which is including software and hardware system. In individual part testing,
each of the circuits was tested separately. The voltage is fed manually into the circuits
for testing their performance and functionality. The software design is tested without
integrating with the hardware system. In the integration testing, the hardware and the
software have been combined or integrated. The project is tested and justified under
the real condition of detecting lightning. Both of the testing has proven that the
invention is working properly and successfully
An Implementation of Separation Logic in Coq
For certain applications, the correctness of software involved is crucial, particularly if
human life is in danger. In order to achieve correctness, common practice is to gather
evidence for program correctness by testing the system. Even though testing may find
certain errors in the code, it cannot guarantee that the program is error-free. The program
of formal verification is the act of proving or disproving the correctness of the system with
respect to a formal specification. A logic for program verification is the so-called Hoare
Logic. Hoare Logic can deal with programs that do not utilize pointers, i.e., it allows
reasoning about programs that do not use shared mutable data structures. Separation Logic
extends Hoare logic that allows pointers, including pointer arithmetic, in the programming
language. It has four-pointer manipulating commands which perform the heap operations
such as lookup, allocation, deallocation, and mutation. We introduce an implementation of
separation logic in the interactive proof system Coq. Besides verifying that separation logic
is correct, we will provide several examples of programs and their correctness proof
CAR TRACTION CONTROL SYSTEM
This project explores the potential of implementing fuzzy logic algorithm for traction
control system using VHDL. Previously, the project on car traction control was done
by simulation using fuzzy logic approach. The Fuzzy Logic Toolbox in MATLAB
software is used to create simulation for fuzzy logic system. The challenge of the
project is to design the control system using hardware description language for future
implementation on hardware using FPGA. Fuzzy logic controller provides optimum
control according to the conditions specify. It is useful when the driving condition is
uncontrolled. The core programming language which will be used as the hardware
description language is VHSIC Hardware Description Language (VHDL). VHDL is
used in FPGA - based implementation. The methodology includes designing the
fuzzy logic controller, development of the algorithm and codes programming. After
that, the following phase includes testing and troubleshooting. Lastly, carry out the
documentation. In conclusion, it is possible to develop the algorithm for fuzzy - based
car traction control system using VHDL. The implementation of the control system
using VHDL is viable for future implementation onto FPGA. Thus the performance
of the car traction control would be enhance
- …