determinize: work around overflow in reachability matrix indices

Fixes #541, reported by David Dokoupil.

* spot/twaalgos/determinize.cc: Disable use_simulation when the input
has more than 2^16 SCCs..  Also rework the reachability
matrix to store only its lower half triangle.
* spot/twaalgos/determinize.hh, NEWS: Mention the limitation of
use_simulation.
* THANKS: Add David.
This commit is contained in:
Alexandre Duret-Lutz 2023-09-04 17:51:26 +02:00
parent 110b052b7d
commit e2149fabf4
4 changed files with 91 additions and 59 deletions

View file

@ -1,6 +1,6 @@
// -*- coding: utf-8 -*-
// Copyright (C) 2015-2016, 2019-2021 Laboratoire de Recherche et
// Développement de l'Epita.
// Copyright (C) 2015-2016, 2019-2021, 2023 Laboratoire de Recherche
// et Développement de l'Epita.
//
// This file is part of Spot, a model checking library.
//
@ -64,7 +64,9 @@ namespace spot
///
/// \param use_simulation whether to simplify the construction based
/// on simulation relations between states in
/// the original automaton.
/// the original automaton. This optimization
/// is automatically disabled on automata with
/// more than 2^16 SCCs.
///
/// \param use_stutter whether to simplify the construction when the
/// input automaton is known to be