fact: Definition move (tr : triple) : Can := match tr with | tri Keeper Empty x => CAN (tri Empty Keeper x) | tri Keeper Dest x => CAN (tri Empty KeepOD x) | tri Keeper Box Empty => CAN (tri Empty Keeper Box) | tri Keeper Box Dest => CAN (tri Empty Keeper Full) | tri Keeper Full Empty => CAN (tri Empty KeepOD Box) | tri Keeper Full Dest => CAN (tri Empty KeepOD Full) | tri KeepOD Empty x => CAN (tri Dest Keeper x) | tri KeepOD Dest x => CAN (tri Dest KeepOD x) | tri KeepOD Box Empty => CAN (tri Dest Keeper Box) | tri KeepOD Box Dest => CAN (tri Dest Keeper Full) | tri KeepOD Full Empty => CAN (tri Dest KeepOD Box) | tri KeepOD Full Dest => CAN (tri Dest KeepOD Full) | _ => CANT end.