45#include <lal/iterators/E_iterator.hpp>
46#include <lal/detail/identity_arrangement.hpp>
47#include <lal/graphs/rooted_tree.hpp>
68template <detail::linarr_type arr_type>
76 assert(rt.is_rooted_tree());
80 if (arr.m_arr.size() == 0) {
81 const node r = rt.get_root();
83 while (not e_it.
end()) {
85 const bool r_covered_st = s < r and r < t;
86 const bool r_covered_ts = t < r and r < s;
87 if (r_covered_st or r_covered_ts) {
return true; }
96 while (not e_it.
end()) {
101 const bool r_covered_st = ps < pr and pr < pt;
102 const bool r_covered_ts = pt < pr and pr < ps;
103 if (r_covered_st or r_covered_ts) {
return true; }
129template <detail::linarr_type arr_type>
137 assert(rt.is_rooted_tree());
142 if (not is_planar(rt, arr)) {
return false; }
Rooted tree graph class.
Definition: rooted_tree.hpp:103
Iterator over the set of edges of a graph.
Definition: E_iterator.hpp:97
edge_t yield_edge_t() noexcept
Returns the current edge and advances the iterator.
Definition: E_iterator.hpp:133
bool end() const noexcept
Returns true if the end of the iteration was reached.
Definition: E_iterator.hpp:117
edge yield_edge() noexcept
Returns the current edge and advances the iterator.
Definition: E_iterator.hpp:126
bool is_projective(const graphs::rooted_tree &rt, const detail::linarr_wrapper< arr_type > &arr) noexcept
Is a given arrangement projective?
Definition: formal_constraints.hpp:130
bool is_root_covered(const graphs::rooted_tree &rt, const detail::linarr_wrapper< arr_type > &arr) noexcept
Is the root of a rooted tree covered in a given arrangement?
Definition: formal_constraints.hpp:69
Main namespace of the library.
Definition: basic_types.hpp:50
uint64_t position
Node's position type.
Definition: basic_types.hpp:55
uint64_t node
Node type. See Node / Vertex page for further details.
Definition: basic_types.hpp:53
A wrapper to easily use identity arrangements.
Definition: identity_arrangement.hpp:72
Typesafe node type.
Definition: basic_types.hpp:67