15-815 Automated Theorem Proving
Fall 1999
Frank Pfenning

Sample proof term representations in ML

nd0.sml  -  Proof terms, Version 0
	    Direct embedding in ML (does not extend to first-order case)
	    Proof checking is type-checking in ML
            Note that type-checking does not guarantee validity,
            because ML allows too many functions!  So we also have
            to verify that functional arguments are pure.

prop.sml - Propositions
ctx.sml  - Contexts
nd1.sml  - Proof terms, Version 1
	   Each valid term has a unique type
           Proof checking proceeds bottom-up
nd2.sml  - Proof terms, Version 2
           Compact representation
	   Proof checking alternates bottom-up and top-down

test.sml - Simple test cases
