Person:
Suárez García, Gorka

Loading...
Profile Picture
First Name
Gorka
Last Name
Suárez García
Affiliation
Universidad Complutense de Madrid
Faculty / Institute
Informática
Department
Sistemas Informáticos y Computación
Area
Identifiers
UCM identifierScopus Author IDDialnet ID

Search Results

Now showing 1 - 5 of 5
  • Item
    Comprobación de modelos en sistemas concurrentes a partir de su semántica en Maude
    (2017) Suárez García, Gorka; Riesco Rodríguez, Adrián
    La comprobación de modelos (model checking) es una técnica automática para verificar si una propiedad se cumple en un sistema concurrente. Maude es un marco lógico de alto rendimiento donde se puede especificar, modelar, ejecutar y analizar —de forma sencilla— otros sistemas. Además, este entorno incluye un comprobador de modelos para verificar propiedades expresadas en lógica temporal lineal. Sin embargo, cuando una propiedad aplicada a un programa —escrito en un lenguaje de programación modelado para Maude— no se cumple, el contraejemplo —generado por el propio sistema— está basado en la semántica del propio Maude, dificultando la tarea de poder seguirlo a la hora de entender el resultado. En esta memoria presentamos la herramienta Selene, un marco genérico que maneja sistemas concurrentes asíncronos de modo que el usuario pueda obtener una versión simplificada de los contraejemplos generados por el comprobador de modelos en Maude tras la realización del análisis sobre programas escritos en otros lenguajes. Para lograrlo se ofrece un kernel para manejar la memoria y los mensajes, elementos que se emplearán en el “informe” final obtenido del contraejemplo. Sobre dicha arquitectura el usuario podrá especificar los detalles de la semántica del lenguaje a manejar. Por último, se analizará cuáles fueron los objetivos iniciales, los resultados obtenidos, los problemas encontrados durante el desarrollo, así como las propuestas y líneas futuras de trabajo que serían deseables para la mejora del proyecto.
  • Item
    Polymorphic success types for Erlang
    (2018) López Fraguas, Francisco Javier; Montenegro Montes, Manuel; Suárez García, Gorka; Barthe, Gilles; Sutcliffe, Geoff; Veanes, Magnus
    Erlang is a dynamically typed concurrent functional language of increasing interest in industry and academia. Official Erlang distributions come equipped with Dialyzer, a useful static analysis tool able to anticipate runtime errors by inferring so-called success types, which are overapproximations to the real semantics of expressions. However, Dialyzer exhibits two main weaknesses: on the practical side, its ability to deal with functions that are typically polymorphic is rather poor; and on the theoretical side, a fully developed theory for its underlying type system –comparable to, say, Hindley-Milner system– does not seem to exist, something that we consider a regrettable circumstance. This work presents a type derivation system to obtain polymorphic success types for Erlang programs, along with correctness results with respect to a suitable semantics for the language.
  • Item
    Project number: 61
    Herramienta interactiva de manipulación y corrección de entregas de ejercicios en asignaturas con evaluación continua
    (2019) Montenegro Montes, Manuel; Martín Martín, Enrique; Riesco Rodríguez, Adrián; Saavedra López, Santiago; Suárez García, Gorka
    En este proyecto se extiende el conjunto de herramientas del proyecto Innova-Docencia nº 49 (2016/2017) introduciendo un asistente que permite, de modo interactivo, navegar y realizar operaciones por lotes en todas las entregas de un mismo ejercicio.
  • Item
    Deriving overloaded success type schemes in Erlang
    (Journal of Computer Languages, 2020) López Fraguas, Francisco Javier; Montenegro Montes, Manuel; Suárez García, Gorka
    Erlang is a programming language which brings together the features of functional programming and actor-based concurrency. Although it is a dynamically-typed language, there exists a tool (Dialyzer) that analyses Erlang programs in order to detect type discrepancies at compile-time. This tool is based on the notion of success types, which are overapproximations to the actual semantics of expressions, so that the evaluation of an ‘ill-typed’ expression will eventually fail at runtime. Dialyzer allows programmers to provide their own type specifications. Although such specifications can be polymorphic and overloaded (i.e., reflecting different executing branches) for documentation purposes, the type analysis disregards the information provided by polymorphic type schemes and so does, in some cases, with overloaded types. In this paper we introduce: (1) a type system that allows us to obtain polymorphic overloaded success type schemes for programs, (2) a semantic definition of this kind of types, and (3) correctness results that prove that the adequacy of the obtained types w.r.t. the semantics of expressions.
  • Item
    Análisis estático de tipos para lenguajes de tipado dinámico
    (2022) Suárez García, Gorka; López Fraguas, Francisco Javier; Montenegro Montes, Manuel
    Los sistemas de tipos son una herramienta formal que permiten clasificar las distintas construcciones de un lenguaje de programación (valores, expresiones, etc.) en distintas categorías, llamadas tipos. Con ello se pretende detectar posibles inconsistencias entre las distintas variables y expresiones de un programa. Existen distintos enfoques en la aplicación de un sistema de tipos. Por un lado tenemos lenguajes como C++ con tipado estático, donde la comprobación de tipos se realiza en tiempo de compilación, y por el otro tenemos los lenguajes con tipado dinámico como Erlang, donde la comprobación de tipos se realiza en tiempo de ejecución. Como consecuencia de la naturaleza de los lenguajes de tipado dinámico, la detección de errores en los programas se realiza durante las fases de prueba y depuración. No obstante, existen herramientas que permiten la detección automática de errores de tipo en un programa sin necesidad de ejecutarlo. Estas herramientas aplican metodologías propias de análisis estático de tipos a lenguajes de tipado dinámico...