module T = RecommTypes module R = RecommPccFor let step k st outs ins = if st <> T.OO then k st outs ins else match ins with | "ARITHMETICAL" :: "PROPERTIES" :: tl -> k T.OK ("PROPERTIES" :: "ARITHMETICAL" :: outs) tl | "STRICT" :: "ORDER" :: tl -> k T.OK ("ORDER" :: "STRICT" :: outs) tl | "ORDER" :: tl -> k T.OK ("ORDER" :: outs) tl | "MAXIMUM" :: tl -> k T.OK ("MAXIMUM" :: outs) tl | "LEFT" :: "SUBTRACTION" :: tl -> k T.OK ("SUBTRACTION" :: "LEFT" :: outs) tl | "SUBTRACTION" :: tl -> k T.OK ("SUBTRACTION" :: outs) tl | "ADDITION" :: tl -> k T.OK ("ADDITION" :: outs) tl | "RIGHT" :: "ADDITION" :: tl -> k T.OK ("ADDITION" :: "RIGHT" :: outs) tl | "PREDECESSOR" :: tl -> k T.OK ("PREDECESSOR" :: outs) tl | "SUCCESSOR" :: tl -> k T.OK ("SUCCESSOR" :: outs) tl | "NAT-INJECTION" :: tl -> k T.OK ("NAT-INJECTION" :: outs) tl | "TRICHOTOMY" :: "OPERATOR" :: tl -> k T.OK ("OPERATOR" :: "TRICHOTOMY" :: outs) tl | "ITERATED" :: "FUNCTION" :: tl -> k T.OK ("FUNCTION" :: "ITERATED" :: outs) tl | "DISCRIMINATOR" :: tl -> k T.OK ("DISCRIMINATOR" :: outs) tl | _ -> k T.OO outs ins let main = R.register_r step