147 research outputs found

    Analog MIMO detection on the basis of Belief Propagation

    Get PDF

    On the Implementation of GNU Prolog

    Get PDF
    GNU Prolog is a general-purpose implementation of the Prolog language, which distinguishes itself from most other systems by being, above all else, a native-code compiler which produces standalone executables which don't rely on any byte-code emulator or meta-interpreter. Other aspects which stand out include the explicit organization of the Prolog system as a multipass compiler, where intermediate representations are materialized, in Unix compiler tradition. GNU Prolog also includes an extensible and high-performance finite domain constraint solver, integrated with the Prolog language but implemented using independent lower-level mechanisms. This article discusses the main issues involved in designing and implementing GNU Prolog: requirements, system organization, performance and portability issues as well as its position with respect to other Prolog system implementations and the ISO standardization initiative.Comment: 30 pages, 3 figures, To appear in Theory and Practice of Logic Programming (TPLP); Keywords: Prolog, logic programming system, GNU, ISO, WAM, native code compilation, Finite Domain constraint

    Logic programming in the context of multiparadigm programming: the Oz experience

    Full text link
    Oz is a multiparadigm language that supports logic programming as one of its major paradigms. A multiparadigm language is designed to support different programming paradigms (logic, functional, constraint, object-oriented, sequential, concurrent, etc.) with equal ease. This article has two goals: to give a tutorial of logic programming in Oz and to show how logic programming fits naturally into the wider context of multiparadigm programming. Our experience shows that there are two classes of problems, which we call algorithmic and search problems, for which logic programming can help formulate practical solutions. Algorithmic problems have known efficient algorithms. Search problems do not have known efficient algorithms but can be solved with search. The Oz support for logic programming targets these two problem classes specifically, using the concepts needed for each. This is in contrast to the Prolog approach, which targets both classes with one set of concepts, which results in less than optimal support for each class. To explain the essential difference between algorithmic and search programs, we define the Oz execution model. This model subsumes both concurrent logic programming (committed-choice-style) and search-based logic programming (Prolog-style). Instead of Horn clause syntax, Oz has a simple, fully compositional, higher-order syntax that accommodates the abilities of the language. We conclude with lessons learned from this work, a brief history of Oz, and many entry points into the Oz literature.Comment: 48 pages, to appear in the journal "Theory and Practice of Logic Programming

    Distributed www programming using (Ciao-) prolog and the pillow library

    Get PDF
    We discuss from a practical point of view a number of ssues involved in writing distributed Internet and WWW applications using LP/CLP systems. We describe PiLLoW, a publicdomain Internet and WWW programming library for LP/CLP systems that we have designed in order to simplify the process of writing such applications. PiLLoW provides facilities for accessing documents and code on the WWW; parsing, manipulating and generating HTML and XML structured documents and data; producing HTML forms; writing form handlers and CGI-scripts; and processing HTML/XML templates. An important contribution of PÍ'LLOW is to model HTML/XML code (and, thus, the content of WWW pages) as terms. The PÍ'LLOW library has been developed in the context of the Ciao Prolog system, but it has been adapted to a number of popular LP/CLP systems, supporting most of its functionality. We also describe the use of concurrency and a highlevel model of client-server interaction, Ciao Prolog's active modules, in the context of WWW programming. We propose a solution for client-side downloading and execution of Prolog code, using generic browsers. Finally, we also provide an overview of related work on the topic

    The PiLLoW/Ciao library for INTERNET/WWW programming using computational logic systems

    Full text link
    We discuss from a practical point of view a number of issues involved in writing Internet and WWW applications using LP/CLP systems. We describe PiLLoW, an Internet and WWW programming library for LP/CLP systems which we argüe significantly simplifies the process of writing such applications. PiLLoW provides facilities for generating HTML structured documents, producing HTML forms, writing form handlers, accessing and parsing WWW documents, and accessing code posted at HTTP addresses. We also describe the architecture of some application classes, using a high-level model of client-server interaction, active modules. Finally we describe an architecture for automatic LP/CLP code downloading for local execution, using generic browsers. The PiLLoW library has been developed in the context of the &-Prolog and CIAO systems, but it has been adapted to a number of popular LP/CLP systems, supporting most of its functionality

    Quantifying the Interactions of Nickel with Marine Dissolved Organic Matter Using Fluorescence

    Get PDF
    Nickel (Ni) is a versatile metal with an abundance of applications, namely its role in stainless steel, electronics, and batteries, making it a popular choice in industry. Unfortunately, with increasing demand and production comes higher amounts of Ni pollution. Nickel enters ocean waters - either directly or indirectly - and can have profound effects on marine life. Nickel has been established as a toxicant to a variety of aquatic biota, with the divalent cation (Ni2+) thought to be the most bioavailable fraction and thus the most toxic. Having a reliable means of quantifying free Ni ion is pertinent toward establishing appropriate water quality recommendations for aquatic life protection. The objective of this study was to compare two speciation techniques to quantify Ni2+ in natural samples. The methods studied in this work were ion-selective electrode (ISE) and fluorescence quenching (FQ) titrations. Results indicated that a Ni-ISE is more easily applicable in low ionic strength samples since electrode potential changes to added Ni were only seen in freshwater. Fluorescence excitation-emission matrices were scanned to identify fluorophores within the samples, and variable angle synchronous spectra were used to monitor titrations. Binding constants (log K) as well as complexing capacities (LT) were derived using nonlinear regression, and Monte Carlo analysis was used to relate these values to EC50 Ni levels from toxicity tests (conducted by a collaborative group) on the same samples. Results showed that the predicted Ni2+ concentrations at EC50 levels had overlapping 95% confidence intervals for Mytilus edulis. The free Ni2+ concentration did not overlap for Strongylocentrotus purpuratus, though it should be noted that there was only one data point. The Mytilus edulis results also agreed with the artificial seawater (ASW) control, highlighting the validity and usefulness of a Biotic Ligand Model (BLM) for marine Ni

    CUDA-Accelerated RNS Multiplication in Word-Wise Homomorphic Encryption Schemes

    Get PDF
    Homomorphic encryption (HE), which allows computation over encrypted data, has often been used to preserve privacy. However, the computationally heavy nature and complexity of network topologies make the deployment of HE schemes in the Internet of Things (IoT) scenario difficult. In this work, we propose CARM, the first optimized GPU implementation that covers BGV, BFV and CKKS, targeting for accelerating homomorphic multiplication using GPU in heterogeneous IoT systems. We offer constant-time low-level arithmetic with minimum instructions and memory usage, as well as performance- and memory-prior configurations, and exploit a parametric and generic design, and offer various trade-offs between resource and efficiency, yielding a solution suitable for accelerating RNS homomorphic multiplication on both high-performance and embedded GPUs. Through this, we can offer more real-time evaluation results and relieve the computational pressure on cloud devices. We deploy our implementations on two GPUs and achieve up to 378.4×, 234.5×, and 287.2× speedup for homomorphic multiplication of BGV, BFV, and CKKS on Tesla V100S, and 8.8×, 9.2×, and 10.3× on Jetson AGX Xavier, respectively
    corecore