Results 11  20
of
32
Constructive type classes in Isabelle
 TYPES FOR PROOFS AND PROGRAMS
, 2007
"... We reconsider the wellknown concept of Haskellstyle type classes within the logical framework of Isabelle. So far, axiomatic type classes in Isabelle merely account for the logical aspect as predicates over types, while the operational part is only a convention based on raw overloading. Our more e ..."
Abstract

Cited by 13 (6 self)
 Add to MetaCart
We reconsider the wellknown concept of Haskellstyle type classes within the logical framework of Isabelle. So far, axiomatic type classes in Isabelle merely account for the logical aspect as predicates over types, while the operational part is only a convention based on raw overloading. Our more elaborate approach to constructive type classes provides a seamless integration with Isabelle locales, which are able to manage both operations and logical properties uniformly. Thus we combine the convenience of type classes and the flexibility of locales. Furthermore, we construct dictionary terms derived from notions of the type system. This additional internal structure provides satisfactory foundations of type classes, and supports further applications, such as code generation and export of theories and theorems to environments without type classes.
Formalizing O Notation in Isabelle/HOL
, 2004
"... We describe a formalization of asymptotic O notation using the Isabelle/HOL proof assistant. ..."
Abstract

Cited by 12 (4 self)
 Add to MetaCart
We describe a formalization of asymptotic O notation using the Isabelle/HOL proof assistant.
A Practical Module System for LF
"... Module systems for proof assistants provide administrative support for large developments when mechanizing the metatheory of programming languages and logics. In this paper we describe a module system for the logical framework LF. It is based on two main primitives: signatures and signature morph ..."
Abstract

Cited by 10 (5 self)
 Add to MetaCart
Module systems for proof assistants provide administrative support for large developments when mechanizing the metatheory of programming languages and logics. In this paper we describe a module system for the logical framework LF. It is based on two main primitives: signatures and signature morphisms, which provide a semantically transparent module level and permit to represent logic translations as homomorphisms. Modular LF is a conservative extension over LF, and defines an elaboration of modular into core LF signatures. We have implemented our design in the Twelf system and used it to modularize large parts of the Twelf example library.
Context aware calculation and deduction  Ring equalities via Gröbner Bases in Isabelle
 TOWARDS MECHANIZED MATHEMATICAL ASSISTANTS (CALCULEMUS AND MKM 2007), LNAI
, 2007
"... We address some aspects of a proposed system architecture for mathematical assistants, integrating calculations and deductions by common infrastructure within the Isabelle theorem proving environment. Here calculations may refer to arbitrary extralogical mechanisms, operating on the syntactic struc ..."
Abstract

Cited by 6 (5 self)
 Add to MetaCart
We address some aspects of a proposed system architecture for mathematical assistants, integrating calculations and deductions by common infrastructure within the Isabelle theorem proving environment. Here calculations may refer to arbitrary extralogical mechanisms, operating on the syntactic structure of logical statements. Deductions are devoid of any computational content, but driven by procedures external to the logic, following to the traditional “LCF system approach”. The latter is extended towards explicit dependency on abstract theory contexts, with separate mechanisms to interpret both logical and extralogical content uniformly. Thus we are able to implement proof methods that operate on abstract theories and a range of particular theory interpretations. Our approach is demonstrated in Isabelle/HOL by a proofprocedure for generic ring equalities via Gröbner Bases.
Structured Formal Development in Isabelle
 NORDIC JOURNAL OF COMPUTING
, 2006
"... General purpose theorem provers provide advanced facilities for proving properties about specifications, and may therefore be a valuable tool in formal program development. However, these provers generally lack many of the useful structuring mechanisms found in functional programming or specificatio ..."
Abstract

Cited by 6 (2 self)
 Add to MetaCart
General purpose theorem provers provide advanced facilities for proving properties about specifications, and may therefore be a valuable tool in formal program development. However, these provers generally lack many of the useful structuring mechanisms found in functional programming or specification languages. This paper presents a constructive approach to adding theory morphisms and parametrisation to theorem provers, while preserving the proof support and consistency of the prover. The approach is implemented in Isabelle and illustrated by examples of an algorithm design rule and of the modular development of computational effects for imperative language features based on monads.
Modular Structures as Dependent Types in Isabelle
, 1998
"... This paper describes a method of representing algebraic structures in the theorem prover Isabelle. We use Isabelle's higher order logic extended with set theoretic constructions. Dependent types, constructed as HOL sets, are used to represent modular structures by semantical embedding. The modul ..."
Abstract

Cited by 5 (3 self)
 Add to MetaCart
This paper describes a method of representing algebraic structures in the theorem prover Isabelle. We use Isabelle's higher order logic extended with set theoretic constructions. Dependent types, constructed as HOL sets, are used to represent modular structures by semantical embedding. The modules remain first class citizen of the logic. Hence, they enable adequate formalization of abstract algebraic structures and a natural proof style. Application examples drawn from abstract algebra and lattice theory  the full version of Tarski's fixpoint theorem  validate the concept.
Toward a practical module system for ACL2
 Proc. of the 11th International Symposium on Practical Aspects of Declarative Languages
, 2009
"... Abstract. Boyer and Moore’s ACL2 theorem prover combines firstorder applicative Common Lisp with a computational, firstorder logic. While ACL2 has become popular and is being used for large programs, ACL2 forces programmers to rely on manually maintained protocols for managing modularity. In this p ..."
Abstract

Cited by 4 (1 self)
 Add to MetaCart
Abstract. Boyer and Moore’s ACL2 theorem prover combines firstorder applicative Common Lisp with a computational, firstorder logic. While ACL2 has become popular and is being used for large programs, ACL2 forces programmers to rely on manually maintained protocols for managing modularity. In this paper, we present a prototype of Modular ACL2. The system extends ACL2 with a simple, but pragmatic functional module system. We provide an informal introduction, sketch a formal semantics, and report on our first experiences. 1 A logic for Common Lisp, Modules for ACL2 In the early 1980s, the Boyer and Moore team decided to rebuild their Nqthm theorem prover [1] for a firstorder, functional sublanguage of a standardized, industrial programming language: Common Lisp [2]. It was an attempt to piggyback theorem proving on the expected success of Lisp and functional programming. Although Common Lisp didn’t succeed, the ACL2 system became the most widely used theorem prover in industry. Over the past 20 years, numerous hardware companies and some software companies turned to ACL2 to verify critical pieces of their products [3]; by 2006, their contributions to the ACL2 regression test suite amounted to over one million lines of code. The ACL2 team received the 2005 ACM Systems Award for their achievement. 1 During the same 20 years, programming language theory and practice have evolved, too. In particular, programming language designers have designed, implemented, and experimented with numerous module systems for managing large functional programs [4]. One major goal of these design efforts has been to help programmers reason locally about their code. That is, a module should express its expectations about imports, and all verification efforts for definitions in a module should be conducted with respect to these expectations. Common Lisp and thus ACL2, however, lack a proper module system. Instead, ACL2 programmers emulate modular programming with Common Lisp’s namespace management mechanisms, or by hiding certain program fragments from the theorem prover. Naturally, the manual maintenance of abstraction boundaries is difficult and error prone. Worse, it forces the programmer to choose between local reasoning and endtoend execution, as functions hidden from the theorem prover cannot be run.
The reflection theorem: A study in metatheoretic reasoning
 In Voronkov [19
, 2002
"... Abstract. The reflection theorem has been proved using Isabelle/ZF. This theorem cannot be expressed in ZF, and its proof requires reasoning at the metalevel. There is a particularly elegant proof that reduces the metalevel reasoning to a single induction over formulas. Each case of the induction ..."
Abstract

Cited by 4 (2 self)
 Add to MetaCart
Abstract. The reflection theorem has been proved using Isabelle/ZF. This theorem cannot be expressed in ZF, and its proof requires reasoning at the metalevel. There is a particularly elegant proof that reduces the metalevel reasoning to a single induction over formulas. Each case of the induction has been proved with Isabelle/ZF, whose builtin tools can prove specific instances of the reflection theorem upon demand. 1
Tutorial to Locales and Locale Interpretation
"... Locales are Isabelle’s mechanism to deal with parametric theories. We present typical examples of locale specifications, along with interpretations between locales to change their hierarchic dependencies and interpretations to reuse locales in theory contexts and proofs. This tutorial is intended fo ..."
Abstract

Cited by 4 (2 self)
 Add to MetaCart
Locales are Isabelle’s mechanism to deal with parametric theories. We present typical examples of locale specifications, along with interpretations between locales to change their hierarchic dependencies and interpretations to reuse locales in theory contexts and proofs. This tutorial is intended for locale novices; familiarity with Isabelle and Isar is presumed. 1
Interpretation of locales in Isabelle: Managing dependencies between locales
, 2006
"... Locales are the theory development modules of the Isabelle proof assistant. Interpretation is a powerful technique of theorem reuse which facilitates their automatic transport to other contexts. This paper is concerned with the interpretation of locales in the context of other locales. Our main conc ..."
Abstract

Cited by 3 (3 self)
 Add to MetaCart
Locales are the theory development modules of the Isabelle proof assistant. Interpretation is a powerful technique of theorem reuse which facilitates their automatic transport to other contexts. This paper is concerned with the interpretation of locales in the context of other locales. Our main concern is to make interpretation an effective tool in an interactive proof environment. Interpretation dependencies between locales are maintained explicitly, by means of a development graph, so that theorems proved in one locale can be propagated to other locales that interpret it. Proof tools in Isabelle are controlled by sets of default theorems they use. These sets are required to be finite, but can become infinite in the presence of arbitrary interpretations. We show that finiteness can be maintained.