check_transition(bop(Name,NumberArgs,NumberResults,ArgPatterns,ResPatterns),
Transition,SrcNode,_DstNode) :-
!, functor(Op,Name,NumberArgs),
( NumberResults == 0 -> Transition = Op
;
Transition = '-->'(Op,ReturnValues),
length(ReturnValues,NumberResults),
check_bop_res_patterns(ResPatterns,SrcNode,State,ReturnValues)),
check_bop_arg_patterns(ArgPatterns,SrcNode,State,Op).
check_transition(btrans(TransPred),Transition,SrcNode,DstNode) :-
!, check_eventb_transition(TransPred,Transition,SrcNode,DstNode).
check_transition(change_expr(Comp,TExpr),Transition,SrcNode,DstNode) :-
!, check_change_expr_transition(Comp,TExpr,Transition,SrcNode,DstNode).
check_transition(before_after(TPred),Transition,SrcNode,DstNode) :-
!, check_before_after_transition(TPred,Transition,SrcNode,DstNode).
check_transition(csp(Channel,Arity,Args),Transition,_SrcNode,_DstNode) :-
!, check_csp_event(Channel,Arity,Args,Transition).
check_transition(xtl(Op,Arity,PatternArgs),Transition,_SrcNode,_DstNode) :-
!, check_xtl_transition(Op,Arity,PatternArgs,Transition).
check_transition(Spec,_Trans,_SrcNode,_DstNode) :-
functor(Spec,Name,Arity), add_error(ltl, 'Unknown transition specification: ', Name/Arity), fail.