2007 · 20 citations · 23 references
Rich Type SystemExtended ReportEngineeringType TheoryVerificationSoftware SystemsComputer-aided VerificationSoftware EngineeringModel CheckingSoftware AnalysisFormal VerificationSage CompilerDependently Typed ProgrammingFormal TechniqueCompilersFirst-class TypesProgramming LanguagesFormal SpecificationPolymorphism (Computer Science)Computer EngineeringComputer ScienceType SystemGeneral Refinement TypesAutomated ReasoningProgram AnalysisSoftware TestingFormal Methods
This paper presents Sage, a functional programming language with a rich type system that supports a broad range of typing paradigms, from dynamically-typed Scheme-like programming, to decidable ML-like types, to precise refinement types. This type system is a synthesis of three general concepts — first-class types, general refinement types, and the type Dynamic — that add expressive power in orthogonal and complementary ways. None of these concepts are statically decidable. The Sage compiler uniformly circumvents this limitation using hybrid type checking, which inserts occasional run-time casts in particularly complicated situations that cannot be statically checked. We describe a prototype implementation of Sage and preliminary experimental results showing that most or all types are enforced via static type checking — the number of compiler-inserted casts is very small or zero on all our benchmarks.
23
Patrice Godefroid, Nils Klarlund, Koushik Sen · ACM SIGPLAN Notices · 2005 · 2.1K citations
Extended static checking for Java
Cormac Flanagan, K. Rustan M. Leino, Mark Lillibridge et al. · 2002 · 1.3K citations
Simplify: a theorem prover for program checking
David Detlefs, Greg Nelson, James B. Saxe · Journal of the ACM · 2005 · 772 citations
Dependent types in practical programming
Hongwei Xi, Frank Pfenning · 1999 · 576 citations · Full text