17 #ifndef AWALI_ALGOS_LIFT_TDC_HH
18 # define AWALI_ALGOS_LIFT_TDC_HH
29 namespace awali {
namespace sttc {
35 template <
typename Tdc>
39 using o_labelset_t =
typename i_labelset_t::template valueset_t<0>;
58 const o_labelset_t& o_labelset{std::get<0>(
tdc_->context().labelset()->sets())};
60 exp_context_t exp_context{std::get<1>(
tdc_->context().labelset()->sets()), *(
tdc_->context().weightset())};
66 for (
auto s:
tdc_->states())
69 for (
auto t:
tdc_->all_transitions())
72 o_weightset.lmul(
tdc_->weight_of(t), o_weightset.one()));
73 else if (
tdc_->dst_of(t) ==
tdc_->post())
75 o_weightset.lmul(
tdc_->weight_of(t), o_weightset.one()));
76 else if (exp_labelset.is_one(std::get<1>(
tdc_->label_of(t))))
80 std::get<0>(
tdc_->label_of(t)),
81 o_weightset.lmul(
tdc_->weight_of(t), o_weightset.one()));
86 std::get<0>(
tdc_->label_of(t)),
87 o_weightset.lmul(
tdc_->weight_of(t), o_weightset.atom(std::get<1>(
tdc_->label_of(t)))));
92 auto history = std::make_shared<single_history<Tdc>>(
tdc_);
93 res->set_history(history);
95 history->add_state(p.second, p.first);
105 template <
typename Tdc>
carries the algebraic settings of automata
Definition: context.hh:40
@ series
Trivial identities plus series identities.
auto lift_tdc(const Tdc &tdc, bool keep_history=true) -> typename internal::tdc_lifter< Tdc >::automaton_t
Definition: lift_tdc.hh:108
typename internal::labelset_t_of_impl< internal::base_t< ValueSet > >::type labelset_t_of
Helper to retrieve the type of the labelset of a value set.
Definition: traits.hh:76
mutable_automaton< Context > make_mutable_automaton(const Context &ctx)
Definition: mutable_automaton.hh:915
std::shared_ptr< internal::mutable_automaton_impl< Context > > mutable_automaton
Definition: mutable_automaton.hh:45
typename internal::weightset_t_of_impl< internal::base_t< ValueSet > >::type weightset_t_of
Helper to retrieve the type of the weightset of a value set.
Definition: traits.hh:86
Main namespace of Awali.
Definition: ato.hh:22
Definition: lift_tdc.hh:36
labelset_t_of< Tdc > i_labelset_t
Definition: lift_tdc.hh:37
mutable_automaton< o_context_t > lift()
Definition: lift_tdc.hh:56
mutable_automaton< o_context_t > automaton_t
Definition: lift_tdc.hh:46
typename i_labelset_t::template valueset_t< 0 > o_labelset_t
Definition: lift_tdc.hh:39
automaton_t res
Definition: lift_tdc.hh:100
weightset_t_of< Tdc > i_weightset_t
Definition: lift_tdc.hh:38
std::map< state_t, state_t > in_out_map
Definition: lift_tdc.hh:101
void set_history()
Definition: lift_tdc.hh:91
typename i_labelset_t::template valueset_t< 1 > exp_labelset_t
Definition: lift_tdc.hh:40
const Tdc & tdc_
Definition: lift_tdc.hh:99
tdc_lifter(const Tdc &tdc)
Definition: lift_tdc.hh:48
Provide a variadic mul on top of a binary mul(), and one().
Definition: weightset.hh:38