use crate::term::syntax::{LanguageTerm, RewritableLanguageOperatorSymbol};
pub trait FromRewritableTermToDomainSpecificTerm<LOS: RewritableLanguageOperatorSymbol>:
Sized + Clone
{
fn instantiate_term_under_operator(operator: &LOS, sub_terms: &mut Vec<Self>) -> Self;
fn from_rewritable_term(rewritable_term: &LanguageTerm<LOS>) -> Self {
let mut sub_terms = vec![];
for rewr_sub_term in &rewritable_term.sub_terms {
sub_terms.push(Self::from_rewritable_term(rewr_sub_term));
}
Self::instantiate_term_under_operator(&rewritable_term.operator, &mut sub_terms)
}
}