15   template <
typename ValueSet>
    16   typename ValueSet::value_t
    18                const typename ValueSet::value_t& lhs,
    19                const typename ValueSet::value_t& rhs)
    21     return vs.infiltrate(lhs, rhs);
    29       template <
typename ValueSetLhs, 
typename ValueSetRhs,
    34         auto join_elts = join<ValueSetLhs, ValueSetRhs>(lhs, rhs);
    35         return {std::get<0>(join_elts),
    37                                    std::get<1>(join_elts),
    38                                    std::get<2>(join_elts))};
    53       template <
typename ExpSetLhs, 
typename ExpSetRhs>
    57         return infiltrate_value<ExpSetLhs, ExpSetRhs>(lhs, rhs);
    71       template <
typename SetLhs, 
typename SetRhs>
    75         return infiltrate_value<SetLhs, SetRhs>(lhs, rhs);
 
Value infiltrate_value(const Value &lhs, const Value &rhs)
auto infiltrate(const A1 &a1, const A2 &a2) -> tuple_automaton< decltype(join_automata(a1, a2)), A1, A2 >
The (accessible part of the) infiltration product. 
expression infiltrate_expression(const expression &lhs, const expression &rhs)
Bridge (infiltrate). 
value_impl< detail::expression_tag > expression
polynomial infiltrate_polynomial(const polynomial &lhs, const polynomial &rhs)
Bridge (infiltrate).