Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Version Migration

This page details the steps necessary to migrate the systems and properties to new versions of machine-check, starting from version 0.4.0.

0.5.0 → 0.6.0

The properties now support μ-calculus, but the properties from version 0.5.0 can be used as-is without any changes. The systems must be modified as follows.

The machine_check::Input and machine_check::State traits are now blanket-implemented. Remove the following:

#![allow(unused)]
fn main() {
    impl ::machine_check::Input for Input {}

    impl ::machine_check::State for State {}
}

Parameters were added in version 0.6.0 to support parametric systems. For a non-parametric system (behaving as previously), add the following structure into the machine module:

#![allow(unused)]
fn main() {
    #[derive(Clone, PartialEq, Eq, Hash, Debug)]
    pub struct Param {}
}

Then, for the machine_check::Machine implementation, apply the changes as written in the comments:

#![allow(unused)]
fn main() {
    impl ::machine_check::Machine for System {
        type Input = Input;
        type Param = Param; // <-- add this
        type State = State;

        // add the function argument '_param: &Param' as follows
        fn init(&self, input: &Input, _param: &Param) -> State {
            (...)
        }

        // add the function argument '_param: &Param' as follows
        fn next(&self, state: &State, input: &Input, _param: &Param) -> State {
            (...)
        }
    }
}

0.4.0 → 0.5.0

No changes necessary.