Network


Latest external collaboration on country level. Dive into details by clicking on the dots.

Hotspot


Dive into the research topics where Julio Mariño is active.

Publication


Featured researches published by Julio Mariño.


ACM Transactions on Computing Education | 2013

A model-driven approach to teaching concurrency

Manuel Carro; Ángel Herranz; Julio Mariño

We present an undergraduate course on concurrent programming where formal models are used in different stages of the learning process. The main practical difference with other approaches lies in the fact that the ability to develop correct concurrent software relies on a systematic transformation of formal models of inter-process interaction (so called shared resources), rather than on the specific constructs of some programming language. Using a resource-centric rather than a language-centric approach has some benefits for both teachers and students. Besides the obvious advantage of being independent of the programming language, the models help in the early validation of concurrent software design, provide students and teachers with a lingua franca that greatly simplifies communication at the classroom and during supervision, and help in the automatic generation of tests for the practical assignments. This method has been in use, with slight variations, for some 15 years, surviving changes in the programming language and course length. In this article, we describe the components and structure of the current incarnation of the course—which uses Java as target language—and some tools used to support our method. We provide a detailed description of the different outcomes that the model-driven approach delivers (validation of the initial design, automatic generation of tests, and mechanical generation of code) from a teaching perspective. A critical discussion on the perceived advantages and risks of our approach follows, including some proposals on how these risks can be minimized. We include a statistical analysis to show that our method has a positive impact in the student ability to understand concurrency and to generate correct code.


international conference on web services | 2014

Property-Based Testing of JSON Based Web Services

Lars-Åke Fredlund; Clara Benac Earle; Ángel Herranz; Julio Mariño

This article describes a systematic approach to testing behavioural aspects of Web Services that communicate using the JSON data format. As a key component, the Quviq QuickCheck property-based testing tool is used to automatically generate a large number of test cases from an abstract description of the service behaviour in the form of a finite state machine. The same behavioural description is also used to decide whether the execution of a test case is successful or not. To generate random JSON data for populating tests we have developed a new library, jsongen, which given a characterisation of the JSON data as a JSON schema, automatically derives a QuickCheck generator which is capable of generating an infinite number of JSON values that validate against the schema.


international symposium on functional and logic programming | 2004

Constructive Intensional Negation

Susana Munoz-Hernandez; Julio Mariño; Juan José Moreno-Navarro

Although negation is an active area of research in Logic Programming, sound and complete implementations are still absent from actual Prolog systems. One of the most promising techniques in the literature is Intensional Negation (IN), which follows a transformational approach: for each predicate p in a program its negative counterpart \({\mathit{intneg}}(p)\) is generated. However, implementations of IN have not been included in Prolog environments due, in part, to the lack of details and explicit techniques, such as the treatment of universally quantified goals. In this paper, we describe a variant of IN, which we have called Constructive Intensional Negation (CIN). Unlike earlier proposals, CIN does not resort to a special resolution strategy when dealing with universally quantified formulae, which has been instrumental in having an effective implementation. Among the contributions of this work we can mention a full implementation being tested for its integration in the Ciao Prolog system and some formal results with their associated proofs.


formal methods for industrial critical systems | 2009

Modeling Concurrent Systems with Shared Resources

Ángel Herranz; Julio Mariño; Manuel Carro; Juan José Moreno Navarro

Testing is the more widely used approach to (partial) system validation in industry. The introduction of concurrency makes exhaustive testing extremely costly or just impossible, requiring shifting to formal verification techniques. We propose a methodology to design and verify a concurrent system that splits the verification problem in two independent tasks: internal verification of shared resources, where some concurrency aspects like mutual exclusion and conditional synchronisation are isolated, and external verification of processes, where synchronisation mechanisms are not relevant. Our method is language independent, non-intrusive for the development process, and improves the portability of the resulting system. We demonstrate it by actually checking several properties of an example application using the TLC model checker.


FoVeOOS'11 Proceedings of the 2011 international conference on Formal Verification of Object-Oriented Software | 2011

A verified implementation of priority monitors in java

Ángel Herranz; Julio Mariño

Java monitors as implemented in the java.util.concurrent.locks package provide no-priority nonblocking monitors. That is, threads signalled after blocking on a condition queue do not proceed immediately, but they have to wait until both the signalling thread and possibly some of the others which have requested the lock release it. This can be a source of errors (if threads that get in the middle leave the monitor in a state incompatible with the signalled thread re-entry) or inefficiency (if repeated evaluation of preconditions is used to ensure safe re-entry). A concise implementation of priority nonblocking monitors in Java is presented. Curiously, our monitors are implemented on top of the standard no-priority implementation. In order to verify the correctness of our solution, a formal transition model (that includes a formalisation of Java locks and conditions) has been defined and checked using Uppaal. This model has been adapted to PlusCal in order to obtain a formal proof in TLA independent of the number of threads.


practical aspects of declarative languages | 2008

Automatic coding rule conformance checking using logic programming

Guillem Marpons; Julio Mariño; Manuel Carro; Ángel Herranz; Juan José Moreno-Navarro; Lars-Åke Fredlund

An extended practice in the realm of Software Engineering and programming in industry is the application of coding rules. Coding rules are customarily used to constrain the use (or abuse) of certain programming language constructions. However, these rules are usually written using natural language, which is intrinsically ambiguous and which may complicate their use and hinder their automatic enforcement. This paper presents some early work aiming at defining a framework to formalise and check for coding rule conformance using logic programming. We show how a certain class of rules - structural rules - can be reformulated as logic programs, which provides both a framework for formal specification and also for automatic conformance checking using a Prolog engine. Some examples of rules belonging to actual, third-party coding rule sets are discussed, along with the corresponding Prolog code. Experimental data regarding the practicality and impact of their application to real-life software projects is presented and discussed.


formal methods | 2004

Teaching How to Derive Correct Concurrent Programs from State-Based Specifications and Code Patterns

Manuel Carro; Julio Mariño; Ángel Herranz; Juan José Moreno-Navarro

The fun of teaching and learning concurrent programming is sometimes darkened by the difficulty in getting concurrent programs to work right. In line with other programming subjects in our department, we advocate the use of formal specifications to state clearly how a concurrent program must behave, to reason about this behavior, and to be able to produce code from specifications in a semi-automatic fashion. We argue that a mild form of specification not only makes it possible to get programs running easier, but it also introduces students to a quite systematic way of approaching programming: reading and understanding specifications is seen as an unavoidable step in the programming process, as they are really the only place where the expected conduct of the system is described. By using formal techniques in these cases, where they are undoubtedly appropriate, we introduce formality without the need to resort to justifications with artificial or overly complicated examples.


Logic Journal of The Igpl \/ Bulletin of The Igpl | 2011

First-order unification using variable-free relational algebra

Emilio Jesús Gallego Arias; James Lipton; Julio Mariño; Pablo Nogueira

We present a framework for the representation and resolution of first-order unification problems and their abstract syntax in a variable-free relational formalism which is an executable variant of the Tarski-Givant relation algebra and of Freyd’s allegories restricted to the fragment necessary to compile and run logic programs. We develop a decision procedure for validity of relational terms, which corresponds to solving the original unification problem. The decision procedure is carried out by a conditional relational-term rewriting system. There are advantages over classical unification approaches. First, cumbersome and underspecified meta-logical procedures (name clashes, substitution, etc.) and their properties (invariance under substitution of ground terms, equality’s congruence with respect to term forming, etc.) are captured algebraically within the framework. Second, other unification problems can be accommodated, for example, existential quantification in the logic can be interpreted as a new operation whose effect is to formalize the costly and error prone handling of fresh names (renaming apart).


Proceedings of the 2005 ACM SIGPLAN workshop on Curry and functional logic programming | 2005

An overview of the Sloth2005 curry system: system description

Emilio Jesús Gallego Arias; Julio Mariño

We present the current state and immediate future developments of Sloth [7], a Curry [2] to Prolog translator. Currently it implements almost all the features required the Curry Report [5] -- no encapsulated search at the moment -- and there is support for some extensions like, for instance, type classes and constraint programming over rationals.


arXiv: Programming Languages | 2016

Towards a Semantics-Aware Transformation Toolchain for Heterogeneous Systems.

Salvador Tamarit; Julio Mariño; Guillermo Vigueras; Manuel Carro

Obtaining good performance when programming heterogeneous computing platforms poses significant challenges for the programmer. We present a program transformation environment, implemented in Haskell, where architecture-agnostic scientific C code with semantic annotations is transformed into functionally equivalent code better suited for a given platform. The transformation steps are formalized (and implemented) as rules which can be fired when certain syntactic and semantic conditions are met. These conditions are to be fulfilled by program properties which can be automatically inferred or, alternatively, stated as annotations in the source code. Rule selection can be guided by heuristics derived from a machine learning procedure which tries to capture how run-time characteristics (e.g., resource consumption or performance) are affected by the transformation steps.

Collaboration


Dive into the Julio Mariño's collaboration.

Top Co-Authors

Avatar

Ángel Herranz

Technical University of Madrid

View shared research outputs
Top Co-Authors

Avatar

Lars-Åke Fredlund

Technical University of Madrid

View shared research outputs
Top Co-Authors

Avatar
Top Co-Authors

Avatar

Manuel Carro

Technical University of Madrid

View shared research outputs
Top Co-Authors

Avatar

Salvador Tamarit

Polytechnic University of Valencia

View shared research outputs
Top Co-Authors

Avatar

Clara Benac Earle

Technical University of Madrid

View shared research outputs
Top Co-Authors

Avatar
Top Co-Authors

Avatar

Guillem Marpons

Technical University of Madrid

View shared research outputs
Top Co-Authors

Avatar

Susana Munoz-Hernandez

Technical University of Madrid

View shared research outputs
Researchain Logo
Decentralizing Knowledge