[][src]Struct term_rewriting::SignatureChange

pub struct SignatureChange { /* fields omitted */ }

Allows Terms/Rules/TRSs to be reified for use with another Signature. See Signature::merge.

Examples

let mut sig1 = Signature::new(vec![
    (2, Some(".".to_string())),
    (0, Some("S".to_string())),
    (0, Some("K".to_string())),
]);
let mut sig2 = Signature::default();

let term = parse_term(&mut sig2, "A B").unwrap();

assert_eq!(term.pretty(), "A B");

let sigchange = sig1.merge(&sig2, MergeStrategy::OperatorsByArityAndName).unwrap();

let ops: Vec<String> = sig1.operators().iter().map(|op| op.display()).collect();

assert_eq!(ops, vec![".", "S", "K", "A", "B"]);

let term = sigchange.reify_term(&sig1, term);

assert_eq!(term.pretty(), "A B");

Methods

impl SignatureChange[src]

pub fn reify_term(&self, sig: &Signature, term: Term) -> Term[src]

Reifies Term for use with another Signature.

Examples

let mut sig1 = Signature::new(vec![
    (2, Some(".".to_string())),
    (0, Some("S".to_string())),
    (0, Some("K".to_string())),
]);
let mut sig2 = Signature::default();

let term = parse_term(&mut sig2, "A B").unwrap();

let sigchange = sig1.merge(&sig2, MergeStrategy::DistinctOperators).unwrap();

let term = sigchange.reify_term(&sig1, term);

assert_eq!(term.pretty(), "A B");

pub fn reify_context(&self, sig: &Signature, context: Context) -> Context[src]

Reifies Context for use with another Signature.

Examples

let mut sig1 = Signature::new(vec![
    (2, Some(".".to_string())),
    (0, Some("S".to_string())),
    (0, Some("K".to_string())),
]);
let mut sig2 = Signature::default();

let context = parse_context(&mut sig2, "A([!] B)").expect("parse of A([!] B)");

let sigchange = sig1.merge(&sig2, MergeStrategy::OperatorsByArityAndName).unwrap();

let context = sigchange.reify_context(&sig1, context);

assert_eq!(context.pretty(), "A([!], B)");

pub fn reify_rule(&self, sig: &Signature, rule: Rule) -> Rule[src]

Reifies Rule for use with another Signature.

Examples

let mut sig1 = Signature::new(vec![
    (2, Some(".".to_string())),
    (0, Some("S".to_string())),
    (0, Some("K".to_string())),
]);
let mut sig2 = Signature::default();

let rule = parse_rule(&mut sig2, "A = B | C").unwrap();

let sigchange = sig1.merge(&sig2, MergeStrategy::OperatorsByArityAndName).unwrap();

let rule = sigchange.reify_rule(&sig1, rule);

assert_eq!(rule.pretty(), "A = B | C");

pub fn reify_trs(&self, sig: &Signature, trs: TRS) -> TRS[src]

Reifies TRS for use with another Signature.

Examples

let mut sig1 = Signature::new(vec![
    (2, Some(".".to_string())),
    (0, Some("S".to_string())),
    (0, Some("K".to_string())),
]);
let mut sig2 = Signature::default();

let trs = parse_trs(&mut sig2,
"A = B;
C = B;").unwrap();

let sigchange = sig1.merge(&sig2, MergeStrategy::OperatorsByArityAndName).unwrap();

let trs = sigchange.reify_trs(&sig1, trs);

assert_eq!(trs.pretty(),
"A = B;
C = B;");

Auto Trait Implementations

Blanket Implementations

impl<T> From<T> for T[src]

impl<T, U> Into<U> for T where
    U: From<T>, 
[src]

impl<T, U> TryFrom<U> for T where
    U: Into<T>, 
[src]

type Error = Infallible

The type returned in the event of a conversion error.

impl<T, U> TryInto<U> for T where
    U: TryFrom<T>, 
[src]

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.

impl<T> BorrowMut<T> for T where
    T: ?Sized
[src]

impl<T> Borrow<T> for T where
    T: ?Sized
[src]

impl<T> Any for T where
    T: 'static + ?Sized
[src]