Is sized typing for Coq practical?
نویسندگان
چکیده
Contemporary proof assistants such as Coq require that recursive functions be terminating and corecursive productive to maintain logical consistency of their type theories, some ensure these properties using syntactic checks. However, being syntactic, they are inherently delicate restrictive, preventing users from easily writing obviously or at whim. Meanwhile, there exist many sized theories perform type-based termination productivity checking, including based on the Calculus (Co)Inductive Constructions (CIC), core calculus underlying Coq. These more robust compositional in comparison. So why haven't been adapted Coq? In this paper, we venture answer question with CIC$\widehat{*}$, a theory CIC. It extends past work types CIC additional features global local definitions. We also present corresponding size inference algorithm implement it within Coq's kernel; for maximal backward compatibility existing developments, requires no annotations user. our evaluation implementation, find severe performance degradation when compiling parts standard library, inherent itself. conclude if wish compatibility, replacement checking is wildly impractical terms performance.
منابع مشابه
Towards Practical Gradual Typing
Over the past 20 years, programmers have embraced dynamically-typed programming languages. By now, they have also come to realize that programs in these languages lack reliable type information for software engineering purposes. Gradual typing addresses this problem; it empowers programmers to annotate an existing system with sound type information on a piecemeal basis. This paper presents an i...
متن کاملProbabilistic Termination by Monadic Affine Sized Typing
We introduce a system of monadic affine sized types, which substantially generalise usual sized types, and allows this way to capture probabilistic higher-order programs which terminate almost surely. Going beyond plain, strong normalisation without losing soundness turns out to be a hard task, which cannot be accomplished without a richer, quantitative notion of types, but also without imposin...
متن کاملIntroduction to the Coq Proof-Assistant for Practical Software Verification
This paper is a tutorial on using the Coq proof-assistant for reasoning on software correctness. It illustrates features of Coq like inductive definitions and proof automation on a few examples including arithmetic, algorithms on functional and imperative lists and cryptographic protocols. Coq is not a tool dedicated to software verification but a general purpose environment for developing math...
متن کاملذخیره در منابع من
با ذخیره ی این منبع در منابع من، دسترسی به آن را برای استفاده های بعدی آسان تر کنید
ژورنال
عنوان ژورنال: Journal of Functional Programming
سال: 2023
ISSN: ['0956-7968', '1469-7653']
DOI: https://doi.org/10.1017/s0956796822000120