product: optimize product with weak automata
Fixes #350. * spot/twaalgos/product.cc: Implement this change. * NEWS, spot/twaalgos/product.hh: Mention it. * spot/twa/acc.cc, spot/twa/acc.hh (acc_cond::sat_mark): New method. * tests/python/_product_weak.ipynb: New file. * tests/Makefile.am: Add it. * tests/python/automata.ipynb, tests/python/highlighting.ipynb, tests/python/product.ipynb, tests/core/prodor.test: Adjust test cases.
This commit is contained in:
parent
b655038803
commit
a738801edf
11 changed files with 15348 additions and 1605 deletions
|
|
@ -1,5 +1,5 @@
|
|||
// -*- coding: utf-8 -*-
|
||||
// Copyright (C) 2014, 2015 Laboratoire de Recherche et
|
||||
// Copyright (C) 2014, 2015, 2018 Laboratoire de Recherche et
|
||||
// Développement de l'Epita (LRDE).
|
||||
//
|
||||
// This file is part of Spot, a model checking library.
|
||||
|
|
@ -36,7 +36,10 @@ namespace spot
|
|||
/// The resulting automaton will accept the intersection of both
|
||||
/// languages and have an acceptance condition that is the
|
||||
/// conjunction of the acceptance conditions of the two input
|
||||
/// automata.
|
||||
/// automata. In case one of the left or right automaton is weak,
|
||||
/// the acceptance condition of the result is made simpler: it
|
||||
/// usually is the acceptance condition of the other argument,
|
||||
/// therefore avoiding the need to introduce new accepting sets.
|
||||
///
|
||||
/// The algorithm also defines a named property called
|
||||
/// "product-states" with type spot::product_states. This stores
|
||||
|
|
@ -56,7 +59,10 @@ namespace spot
|
|||
/// languages recognized by each input automaton (with its initial
|
||||
/// state changed) and have an acceptance condition that is the
|
||||
/// conjunction of the acceptance conditions of the two input
|
||||
/// automata.
|
||||
/// automata. In case one of the left or right automaton is weak,
|
||||
/// the acceptance condition of the result is made simpler: it
|
||||
/// usually is the acceptance condition of the other argument,
|
||||
/// therefore avoiding the need to introduce new accepting sets.
|
||||
///
|
||||
/// The algorithm also defines a named property called
|
||||
/// "product-states" with type spot::product_states. This stores
|
||||
|
|
@ -74,7 +80,10 @@ namespace spot
|
|||
/// The resulting automaton will accept the union of both
|
||||
/// languages and have an acceptance condition that is the
|
||||
/// disjunction of the acceptance conditions of the two input
|
||||
/// automata.
|
||||
/// automata. In case one of the left or right automaton is weak,
|
||||
/// the acceptance condition of the result is made simpler: it
|
||||
/// usually is the acceptance condition of the other argument,
|
||||
/// therefore avoiding the need to introduce new accepting sets.
|
||||
///
|
||||
/// The algorithm also defines a named property called
|
||||
/// "product-states" with type spot::product_states. This stores
|
||||
|
|
@ -94,7 +103,10 @@ namespace spot
|
|||
/// recognized by each input automaton (with its initial state
|
||||
/// changed) and have an acceptance condition that is the
|
||||
/// disjunction of the acceptance conditions of the two input
|
||||
/// automata.
|
||||
/// automata. In case one of the left or right automaton is weak,
|
||||
/// the acceptance condition of the result is made simpler: it
|
||||
/// usually is the acceptance condition of the other argument,
|
||||
/// therefore avoiding the need to introduce new accepting sets.
|
||||
///
|
||||
/// The algorithm also defines a named property called
|
||||
/// "product-states" with type spot::product_states. This stores
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue