pub struct ClauseUtils;Expand description
Clause analysis utilities
Implementations§
Source§impl ClauseUtils
impl ClauseUtils
Sourcepub fn group_by_predicate(clauses: &[Clause]) -> HashMap<String, Vec<&Clause>>
pub fn group_by_predicate(clauses: &[Clause]) -> HashMap<String, Vec<&Clause>>
Group clauses by predicate (functor/arity)
Organizes clauses into groups based on their head predicate. This is useful for finding all clauses that define a particular predicate.
Sourcepub fn find_dependencies(
clauses: &[Clause],
target_functor: &str,
target_arity: usize,
) -> Vec<String>
pub fn find_dependencies( clauses: &[Clause], target_functor: &str, target_arity: usize, ) -> Vec<String>
Find all predicates that depend on a given predicate
Identifies which predicates call the target predicate in their body. This is useful for dependency analysis and understanding program structure.
Sourcepub fn find_recursive_predicates(clauses: &[Clause]) -> Vec<String>
pub fn find_recursive_predicates(clauses: &[Clause]) -> Vec<String>
Find recursive predicates (predicates that call themselves)
Identifies predicates that have recursive definitions. Recursive predicates are common in Prolog for list processing and traversals.
Sourcepub fn validate_clauses(clauses: &[Clause]) -> Vec<String>
pub fn validate_clauses(clauses: &[Clause]) -> Vec<String>
Validate that clauses are well-formed
Performs various checks to ensure clauses follow Prolog conventions and best practices. Returns a list of error/warning messages.