You may obtain a copy of the prototype refinement checker via cvs with cvs -d :pserver:guest_sorts@cvs.concert.cs.cmu.edu:/cvsroot login (empty password) cvs -d :pserver:guest_sorts@cvs.concert.cs.cmu.edu:/cvsroot checkout ssml cd ssml and update it with (while in the ssml directory): cvs update -d Follow the brief instructions in ssml/README-REFINEMENTS. One thing to keep in mind that you will need SML of NJ version 110.0.7 (see instructions, or get it from http://www.smlnj.org) The example in test-ssml/fp-examples/norm.sml was one of the early motivating examples, because in the Twelf implementation many functions rely on weak head-normal forms and similar invariants. What is checked there is that normlization returns a normal form (and weak head-normalization returns a weak head-normal form). The implementation is as a conservative extension of SML, so you can run your code with - use "file.sml"; and refinement check it with - R.refine_file "file.sml";