Ilaria Angela Amantea

32 papers C 6Misc 1Journal 10Unranked 15
YearRankTypeTitle / Venue / Authors
2025 J jnl
CoRR
Marianna Molinari, Ilaria Angela Amantea, Marinella Quaranta, Guido Governatori
2025 C conf
JURIX
Marianna Molinari, Ilaria Angela Amantea, Marinella Quaranta, Guido Governatori
2024 J jnl
J. Ambient Intell. Humaniz. Comput.
Emilio Sulis, Ilaria Angela Amantea, Marco Aldinucci, Guido Boella, Renata Marinello, Marco Grosso, Paolo Platter, Serena Ambrosini
2024 C conf
SIMULTECH
Ilaria Angela Amantea, Marinella Quaranta
2024 conf
RuleML+RR (Companion)
Guido Governatori, Ilaria Angela Amantea, Marinella Quaranta, Marianna Molinari, Simone Vagnoni, Andrea Filippo Ferraris, Giuseppe Contissa, Monica Palmirani, Marco Busso, Marco Grosso
2024 conf
EPIA (1)
Marinella Quaranta, Ilaria Angela Amantea, Marianna Molinari
2024 conf
PLC@ICPM
Ilaria Angela Amantea, Guido Governatori, Marianna Molinari, Marinella Quaranta, Immaculate Motsi-Omoijiade
2023 conf
PKDD/ECML Workshops (1)
Ilaria Angela Amantea, Guido Boella, Chiara Bonfanti, Michele Colombino, Luigi Di Caro, Giorgia Iacobellis, Susanna Marta, Rachele Mignone, Marianna Molinari, Ivan Spada, Emilio Sulis, Laurentiu Jr Marius Zaharia
2023 conf
Ital-IA
Chiara Bonfanti, Michele Colombino, Giorgia Iacobellis, Rachele Mignone, Ivan Spada, Laurentiu Jr Marius Zaharia, Marinella Quaranta, Marianna Molinari, Susanna Marta, Ilaria Angela Amantea, Davide Audrito, Emilio Sulis, Luigi Di Caro, Guido Boella
2023 conf
JOWO
Rachele Mignone, Ivan Spada, Chiara Bonfanti, Michele Colombino, Giorgia Iacobellis, Laurentiu Jr Marius Zaharia, Marianna Molinari, Ilaria Angela Amantea, Emilio Sulis, Luigi Di Caro, Guido Boella
2023 J jnl
Rev. Socionetwork Strateg.
Marinella Quaranta, Ilaria Angela Amantea, Marco Grosso
2023 conf
PKDD/ECML Workshops (1)
Marinella Quaranta, Ilaria Angela Amantea
2023 C conf
SIMULTECH
Ilaria Angela Amantea, Marinella Quaranta, Marianna Molinari, Christine Peduto, Francesca Demarchi
2022 J jnl
Comput. Informatics
Ilaria Angela Amantea, Emilio Sulis, Antonio Di Leva, Mattia Majolo, Paolo Rege, Luca Patti, Alessandro Prinzis
2022 J jnl
FLAP
Ilaria Angela Amantea, Livio Robaldo, Emilio Sulis, Guido Governatori, Guido Boella
2022 conf
Business Process Management Workshops
Matteo Di Cunzolo, Alberto Guastalla, Roberto Aringhieri, Emilio Sulis, Ilaria Angela Amantea, Massimiliano Ronzani, Chiara Di Francescomarino, Chiara Ghidini, Paolo Fonio, Marco Grosso
2022 J jnl
Inf. Syst.
Emilio Sulis, Llio Humphreys, Fabiana Vernero, Ilaria Angela Amantea, Davide Audrito, Luigi Di Caro
2022 J jnl
Inf. Syst. E Bus. Manag.
Robert Muthuri, Sara Capecchi, Emilio Sulis, Ilaria Angela Amantea, Guido Boella
2022 J jnl
J. Biomed. Informatics
Jorge Munoz-Gama, Niels Martin, Carlos Fernández-Llatas, Owen A. Johnson, Marcos Sepúlveda, Emmanuel Helm, Victor Galvez-Yanjari, Eric Rojas, Antonio Martinez-Millana, Davide Aloini, Ilaria Angela Amantea, Robert Andrews, Michael Arias, Iris Beerepoot, Elisabetta Benevento, Andrea Burattin, Daniel Capurro, Josep Carmona, Marco Comuzzi, Benjamin Dalmas, Rene de la Fuente, Chiara Di Francescomarino, Claudio Di Ciccio, Roberto Gatta, Chiara Ghidini, Fernanda Gonzalez-Lopez, Gema Ibáñez-Sánchez, Hilda B. Klasky, Angelina Prima Kurniati, Xixi Lu, Felix Mannhardt, Ronny Mans, Mar Marcos, Renata Medeiros de Carvalho, Marco Pegoraro, Simon K. Poon, Luise Pufahl, Hajo A. Reijers, Simon Remy, Stefanie Rinderle-Ma, Lucia Sacchi, Fernando Seoane, Minseok Song, Alessandro Stefanini, Emilio Sulis, Arthur H. M. ter Hofstede, Pieter J. Toussaint, Vicente Traver, Zoe Valero-Ramon, Inge van de Weerd, Wil M. P. van der Aalst, Rob J. B. Vanwersch, Mathias Weske, Moe Thandar Wynn, Francesca Zerbato
2021 conf
EDOC Workshops
Ilaria Angela Amantea, Livio Robaldo, Emilio Sulis, Guido Boella, Guido Governatori
2021 J jnl
CoRR
Ilaria Angela Amantea, Livio Robaldo, Emilio Sulis, Guido Boella, Guido Governatori
2020 conf
SIMULTECH (Selected Papers)
Ilaria Angela Amantea, Emilio Sulis, Guido Boella, Renata Marinello, Marco Grosso, Andrea Crespo
2020 conf
MIE
Ilaria Angela Amantea, Emilio Sulis, Guido Boella, Renata Marinello, Dario Bianca, Enrico Brunetti, Mario Bo, Carlos Fernández-Llatas
2020 conf
ForItAAL
Ilaria Angela Amantea, Emilio Sulis, Guido Boella, Fabiola De Marchi, Letizia Mazzini, Francesca Alloatti, Andrea Bolioli
2020 C conf
SIMULTECH
Ilaria Angela Amantea, Emilio Sulis, Guido Boella, Andrea Crespo, Dario Bianca, Enrico Brunetti, Renata Marinello, Marco Grosso, Jan-Christoph Zoels, Michele Visciola, Elena Guidorzi, Luisa Miolano, Giorgio Ratti, Tommaso Mazzoni, Ermes Zani, Serena Ambrosini
2020 conf
COUrT@CAiSE
Emilio Sulis, Llio Humphreys, Fabiana Vernero, Ilaria Angela Amantea, Luigi Di Caro, Davide Audrito, Stefano Montaldo
2020 J jnl
Artif. Intell. Law
Michal Araszkiewicz, Ilaria Angela Amantea, Saurabh Chakravarty, Robert van Doesburg, Maria Dymitruk, Marie Garin, Leilani Gilpin, Daphne Odekerken, Seyedeh Sajedeh Salehi
2019 C conf
SIMULTECH
Ilaria Angela Amantea, Marzia Arnone, Antonio Di Leva, Emilio Sulis, Dario Bianca, Enrico Brunetti, Renata Marinello
2019 conf
ASAIL@ICAIL
Ilaria Angela Amantea, Luigi Di Caro, Llio Humphreys, Rohan Nanda, Emilio Sulis
2019 conf
ISCT
Emilio Sulis, Clara Cena, Roberta Fruttero, Sara Traina, Luca Carlo Feletti, Pierluigi de Cosmo, Lucrezia Armando, Serena Ambrosini, Ilaria Angela Amantea, Guido Boella, Renata Marinello, Dario Bianca, Enrico Brunetti, Mario Bo, Alessandra Bianco, Francesco Cattel
2019 Misc conf
WSC
Emilio Sulis, Ilaria Angela Amantea, Giulio Fornero
2018 C conf
SIMULTECH
Ilaria Angela Amantea, Antonio Di Leva, Emilio Sulis
redb/extractors/decompiler/bninja/similarity/minhasher.py
← Index redb/extractors/decompiler/bninja/similarity/minhasher.py python
import logging
import random
from enum import Enum

from ..analysis.medium_level_normalization import MediumLevelNormalization

try:
    from .minhashcustom import MinHashCustom
    from ..analysis.low_level_normalization import LowLevelNormalization
except ImportError:
    # Fallback to absolute imports (for multiprocessing spawned processes)
    from redb.extractors.decompiler.bninja.similarity.minhashcustom import MinHashCustom
    from redb.extractors.decompiler.bninja.analysis.low_level_normalization import LowLevelNormalization

## Values for this configuration were extracted from https://github.com/danielplohmann/mcrit/blob/main/mcrit/config/MinHashConfig.py#L10
# Length in number of Shingles of which a minhash consists
# this value represents the length of sha256sum hash truncated
MINHASH_SIGNATURE_LENGTH: int = 64
# Number of bits per signature element (1-32 bits)
MINHASH_SIGNATURE_BITS: int = 8


class TokenKind(Enum):
    LLIL = "llil"
    TYPED_LLIL = "typed_llil"
    MLIL = "mlil"
    TYPED_MLIL = "typed_mlil"


class MinHasher:
    # stick to the default method
    MINHASH_STRATEGY_HASH_ALL = 1

    def __init__(self, seed, il_function, kind: TokenKind = TokenKind.LLIL):
        self._minhash_seeds = []
        self.il_func = il_function
        self.kind = kind
        self._minhash_permutation = []
        self._signature_segments = []
        self._initMinhashing(seed)

    def _initMinhashing(self, MINHASH_SEED=None):
        random.seed(MINHASH_SEED)
        # init sequence of seeds
        self._minhash_seeds = [
            random.randint(0, MinHashCustom.getHashMax()) for _ in range(MINHASH_SIGNATURE_LENGTH)
        ]

    def make_ngrams(self, tokens, n=3):
        """Take the ngrams of the IL we try to pass into the functions"""
        return [tuple(tokens[i:i+n]) for i in range(len(tokens) - n + 1)]

    def _extract_tokens(self):
        """Extract the IL tokens from the IL function, picking the right
        normalizer (LLIL/MLIL) and the right normalization mode
        (skeleton/typed) based on self.kind."""
        if self.kind in (TokenKind.LLIL, TokenKind.TYPED_LLIL):
            normalizer = LowLevelNormalization()
        elif self.kind in (TokenKind.MLIL, TokenKind.TYPED_MLIL):
            normalizer = MediumLevelNormalization()
        else:
            raise ValueError(f"Unsupported token kind: {self.kind}")

        # typed variants include operand type info, skeleton variants don't
        if self.kind in (TokenKind.TYPED_LLIL, TokenKind.TYPED_MLIL):
            normalize = normalizer.normalize_instr_with_operands
        else:
            normalize = normalizer.normalize_instruction_all_levels

        instructions = []
        for basic_block in self.il_func.basic_blocks:
            for il in basic_block:
                instructions.append(normalize(il))

        return instructions

    def calculateMinHash(self):
        """Calculate hash function every time, then take minimum shingle per shingler"""
        minhash_result = MinHashCustom(minhash_bits=MINHASH_SIGNATURE_BITS)
        minhash_signature = []

        tokens = self._extract_tokens()
        shingles = self.make_ngrams(tokens, n=3)

        # Functions with fewer than 3 IL instructions can't produce n-grams
        # Return empty minhash for such small functions (thunks, stubs, etc.)
        # Triggered by 39d8ad95b0323c37bd3134ab93ac4af44c66a1a8443a41c1ac02cec19bb2816a
        if not shingles:
            return []

        # Generate the MinHash
        for seed in self._minhash_seeds:
            hashed_shingles = [
                self.shingle_hash(shingle, seed) for shingle in shingles
            ]
            min_value = min(hashed_shingles)

            if MINHASH_SIGNATURE_BITS < 32:
                min_value %= (2 ** MINHASH_SIGNATURE_BITS)

            minhash_signature.append(min_value)

        minhash_result.setMinHash(minhash_signature)
        return minhash_result.getMinHashInt()

    def shingle_hash(self, shingle, hash_seed=0):
        """Produce a single 32bit UINT hash for a given shingle"""
        return MinHashCustom.hashData(shingle, hash_seed)