lcp@599: ERRATA in the book "Isabelle: A Generic Theorem Prover"
lcp@599: by Lawrence C. Paulson (contributions by Tobias Nipkow)
lcp@599:
lcp@599: Some of these errors are typographical but most of them are due to continuing
lcp@599: changes to Isabelle.
lcp@456:
lcp@491: Thanks to Sara Kalvala, Tobias Nipkow
lcp@491:
lcp@599:
lcp@599: INTRODUCTION TO ISABELLE
lcp@599:
lcp@599: Advanced Methods
lcp@599:
lcp@1083: page 46: the theory sections can appear in any order
lcp@1083:
lcp@1083: page 48: theories may now contain a separate definition part
lcp@1083:
lcp@599: page 52, middle: the declaration "types bool,nat" should be "types bool nat"
lcp@456:
lcp@599: page 57, bottom: should be addsimps in
lcp@599: val add_ss = FOL_ss addrews [add_0, add_Suc]
lcp@599:
lcp@599:
lcp@599: ISABELLE REFERENCE MANUAL
lcp@456:
lcp@599: Introduction
lcp@599:
lcp@599: page 67: show_brackets is another flag, controlling display of bracketting
lcp@1117: show_sorts:=true forces display of types
lcp@599:
lcp@599: Tactics
lcp@456:
lcp@599: page 85: subgoals_tac is another tactic, for multiple calls to subgoal_tac
lcp@599:
lcp@599: Theories
lcp@599:
lcp@599: page 117: the three lines of ML shown can be abbreviated to just
lcp@599: init_thy_reader();
lcp@456:
lcp@599: page 118: extend_theory has been replaced by numerous functions for adding
lcp@599: types, constants, axioms, etc.
lcp@599:
lcp@599: Defining Logics
lcp@507:
lcp@718:
lcp@718:
lcp@599: page 127: type constraints ("::") now have a very low priority of 4.
lcp@599: As in ML, they must usually be enclosed in paretheses.
lcp@599:
lcp@599: Syntax Transformations
lcp@599:
lcp@599: page 145, line -5: delete repeated "the" in "before the the .thy file"
lcp@507:
nipkow@716: Simplification
nipkow@716:
lcp@718: page 157 display: Union operator is too big
lcp@718:
nipkow@716: page 158, "!": Isabelle now permits more general left-hand sides, so called
nipkow@716: higher-order patterns.
lcp@507:
lcp@872: Classical reasoner
lcp@872:
lcp@1083: page 176: Classical sets may specify a "wrapper tactical", which can be used
lcp@1083: to define addss. The package also provides tactics slow_tac, slow_best_tac,
lcp@1083: depth_tac and deepen_tac.
lcp@718:
lcp@599: ISABELLE'S OBJECT-LOGICS
lcp@599:
lcp@718: First-Order Logic
lcp@718:
lcp@872: pages 191, 196: FOL_dup_cs is now deleted (use deepen_tac FOL_cs instead)
lcp@718:
lcp@599: Zermelo-Fraenkel Set Theory
lcp@507:
lcp@718: page 204: type i has class term, not (just) logic
lcp@718:
lcp@599: page 209: axioms have been renamed:
lcp@599: union_iff is now Union_iff
lcp@599: power_set is now Pow_iff
lcp@456:
lcp@599: page 215, bottom of figure 17.10: DiffD2 is now "c : A - B ==> c ~: B"
lcp@599:
lcp@599: page 215, bottom: rules mem_anti_sym and mem_anti_refl are now mem_asym and
lcp@599: mem_irrefl
lcp@456:
lcp@599: page 222, top: missing braces in qconverse_def (around right-hand side)
lcp@599: and QSigma_def (around )
lcp@599:
lcp@599: page 223, top: lfp_def, gfp_def have missing braces around the argument of
lcp@599: Inter, Union
nipkow@458:
lcp@599: page 228: now there is also a theory of cardinal numbers and some
lcp@599: developments involving the Axiom of Choice.
nipkow@479:
lcp@599: page 229: now there is another examples directory, IMP (a semantics
lcp@599: equivalence proof for an imperative language)
lcp@599:
lcp@599: Higher-Order Logic
lcp@599:
lcp@599: page 243: Pow is a new constant of type 'a set => 'a set set
lcp@491:
lcp@599: page 246: Pow is defined by Pow(A) == {B. B <= A}
lcp@863: empty_def should be {} == {x.False}
lcp@599:
lcp@599: page 248: Pow has the rules
lcp@599: PowI A<=B ==> A: Pow(B)
lcp@599: PowD A: Pow(B) ==> A<=B
lcp@507:
lcp@701: page 251: split now has type [['a,'b] => 'c, 'a * 'b] => 'c
lcp@701: Definition modified accordingly
lcp@701:
lcp@701: page 252: sum_case now has type ['a=>'c,'b=>'c, 'a+'b] =>'c
lcp@701: Definition and rules modified accordingly
lcp@701:
lcp@718: page 252: HOL_dup_cs is now deleted (use deepen_tac HOL_cs instead)
lcp@718:
lcp@701: page 254: nat_case now has type ['a, nat=>'a, nat] =>'a
lcp@701: Definition modified accordingly
lcp@701:
lcp@701: page 256,258: list_case now takes the list as its last argument, not the
lcp@701: first.
lcp@701:
nipkow@601: page 259: HOL theory files may now include datatype declarations, primitive
paulson@14379: recursive function definitions, and (co)inductive definitions. These new
paulson@14379: sections are available separately at
paulson@14379: http://www.cl.cam.ac.uk/users/lcp/archive/ml/HOL-extensions.dvi.gz
lcp@599:
lcp@599: page 259: now there is another examples directory, IMP (a semantics
lcp@599: equivalence proof for an imperative language)