1999
DOI: 10.1007/3-540-48256-3_3
|View full text |Cite
|
Sign up to set email alerts
|

Inductive Datatypes in HOL — Lessons Learned in Formal-Logic Engineering

Help me understand this report

Search citation statements

Order By: Relevance

Paper Sections

Select...
4
1

Citation Types

0
39
0

Year Published

2001
2001
2021
2021

Publication Types

Select...
8

Relationship

1
7

Authors

Journals

citations
Cited by 50 publications
(39 citation statements)
references
References 12 publications
0
39
0
Order By: Relevance
“…on our own. 7 We first formalized everything using the latter alternative, where we just defined an inductive datatype [4] with constructors for atomic constraints, one constructor for building implications of the shape ·∧· · ·∧· −→ · (where the set of premises is conveniently represented as a list), and one constructor for universal quantification which takes a variable and a constraint as argument.…”
Section: Third Problem: Solving Conditional Constraintsmentioning
confidence: 99%
“…on our own. 7 We first formalized everything using the latter alternative, where we just defined an inductive datatype [4] with constructors for atomic constraints, one constructor for building implications of the shape ·∧· · ·∧· −→ · (where the set of premises is conveniently represented as a list), and one constructor for universal quantification which takes a variable and a constraint as argument.…”
Section: Third Problem: Solving Conditional Constraintsmentioning
confidence: 99%
“…4 By contrast, Isabelle/HOL allows first declaring a constant, and at later times overloading it by defining some of its instances, as in the following example: 5 In between the declaration and the instance definitions, arbitrary commands may occur, including type definitions ("typedef") and (co)datatype definitions (which are derived from typedef [7,45]). For example, the following definition introduces a type of polynomials over an arbitrary domain α, where ∀ ∞ is the "for all but finitely many" quantifier: typedef α poly ≡ {f : nat → α | ∀ ∞ n. f n = 0}…”
Section: Introductionmentioning
confidence: 99%
“…To run these examples in Isabelle, one must enclose in overloading blocks the overloaded definitions of constants and add the overloaded attribute to type definitions that depend on overloaded constants; in addition, one must provide nonemptiness proofs for type definitions [47,Sect. 11(3,7)]. Note also that Isabelle uses ⇒ instead of → for function types and :: instead of : for typing.…”
Section: Introductionmentioning
confidence: 99%
See 1 more Smart Citation
“…Isabelle's datatype package was developed by Berghofer and Wenzel [4], who drew on the work of Melham [22], Gunter [11,12], Paulson [24], and Harrison [14]. The package supports positive recursion through functions and reduces nested recursion through datatypes to mutual recursion, but otherwise allows no nesting.…”
Section: Introductionmentioning
confidence: 99%