×

A coverage checking algorithm for LF. (English) Zbl 1279.68295

Basin, David (ed.) et al., Theorem proving in higher order logics. 16th international conference, TPHOLs 2003, Rome, Italy, September 8–12, 2003. Proceedings. Berlin: Springer (ISBN 3-540-40664-6/pbk). Lect. Notes Comput. Sci. 2758, 120-135 (2003).
Summary: Coverage checking is the problem of deciding whether any closed term of a given type is an instance of at least one of a given set of patterns. It can be used to verify if a function defined by pattern matching covers all possible cases. This problem has a straightforward solution for the first-order, simply-typed case, but is in general undecidable in the presence of dependent types. In this paper we present a terminating algorithm for verifying coverage of higher-order, dependently typed patterns. It either succeeds or presents a set of counterexamples with free variables, some of which may not have closed instances (a question which is undecidable). Our algorithm, together with strictness and termination checking, can be used to certify the correctness of numerous proofs of properties of deductive systems encoded in a system for reasoning about LF signatures.
For the entire collection see [Zbl 1028.00025].

MSC:

68T15 Theorem proving (deduction, resolution, etc.) (MSC2010)
03B35 Mechanization of proofs and logical operations
68N18 Functional programming and lambda calculus

Software:

Coq; Delphin; Twelf