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.

برای دانلود باید عضویت طلایی داشته باشید

برای دانلود متن کامل این مقاله و بیش از 32 میلیون مقاله دیگر ابتدا ثبت نام کنید

اگر عضو سایت هستید لطفا وارد حساب کاربری خود شوید

منابع مشابه

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