52 + ignores types, which can make HOL proofs fail |
52 + ignores types, which can make HOL proofs fail |
53 + rules must not require higher-order unification, e.g. apply_type in ZF |
53 + rules must not require higher-order unification, e.g. apply_type in ZF |
54 [message "Function Var's argument not a bound variable" relates to this] |
54 [message "Function Var's argument not a bound variable" relates to this] |
55 + its proof strategy is more general but can actually be slower |
55 + its proof strategy is more general but can actually be slower |
56 |
56 |
57 * substitution with equality assumptions no longer permutes other assumptions. |
57 * substitution with equality assumptions no longer permutes other |
|
58 assumptions; |
58 |
59 |
59 * minor changes in semantics of addafter (now called addaltern); renamed |
60 * minor changes in semantics of addafter (now called addaltern); renamed |
60 setwrapper to setWrapper and compwrapper to compWrapper; added safe wrapper |
61 setwrapper to setWrapper and compwrapper to compWrapper; added safe wrapper |
61 (and access functions for it) |
62 (and access functions for it); |
62 |
63 |
63 * improved combination of classical reasoner and simplifier: new |
64 * improved combination of classical reasoner and simplifier: new |
64 addss, auto_tac, functions for handling clasimpsets, ... Now, the |
65 addss, auto_tac, functions for handling clasimpsets, ... Now, the |
65 simplification is safe (therefore moved to safe_step_tac) and thus |
66 simplification is safe (therefore moved to safe_step_tac) and thus |
66 more complete, as multiple instantiation of unknowns (with slow_tac). |
67 more complete, as multiple instantiation of unknowns (with slow_tac). |
67 COULD MAKE EXISTING PROOFS FAIL; in case of problems with |
68 COULD MAKE EXISTING PROOFS FAIL; in case of problems with |
68 old proofs, use unsafe_addss and unsafe_auto_tac |
69 old proofs, use unsafe_addss and unsafe_auto_tac; |
69 |
70 |
70 |
71 |
71 *** Simplifier *** |
72 *** Simplifier *** |
72 |
73 |
73 * added interface for simplification procedures (functions that |
74 * added interface for simplification procedures (functions that |
74 produce *proven* rewrite rules on the fly, depending on current |
75 produce *proven* rewrite rules on the fly, depending on current |
75 redex); |
76 redex); |
76 |
77 |
77 * ordering on terms as parameter (used for ordered rewriting); |
78 * ordering on terms as parameter (used for ordered rewriting); |
78 |
79 |
79 * new functions delcongs, deleqcongs, and Delcongs. richer rep_ss. |
80 * new functions delcongs, deleqcongs, and Delcongs. richer rep_ss; |
80 |
81 |
81 * the solver is now split into a safe and an unsafe part. |
82 * the solver is now split into a safe and an unsafe part. |
82 This should be invisible for the normal user, except that the |
83 This should be invisible for the normal user, except that the |
83 functions setsolver and addsolver have been renamed to setSolver and |
84 functions setsolver and addsolver have been renamed to setSolver and |
84 addSolver. added safe_asm_full_simp_tac. |
85 addSolver; added safe_asm_full_simp_tac; |
85 |
86 |
86 |
87 |
87 *** HOL *** |
88 *** HOL *** |
88 |
89 |
89 * a generic induction tactic `induct_tac' which works for all datatypes and |
90 * a generic induction tactic `induct_tac' which works for all datatypes and |
90 also for type `nat'. |
91 also for type `nat'; |
91 |
92 |
92 * patterns in case expressions allow tuple patterns as arguments to |
93 * patterns in case expressions allow tuple patterns as arguments to |
93 constructors, for example `case x of [] => ... | (x,y,z)#ps => ...' |
94 constructors, for example `case x of [] => ... | (x,y,z)#ps => ...'; |
94 |
95 |
95 * primrec now also works with type nat; |
96 * primrec now also works with type nat; |
96 |
97 |
97 * the constant for negation has been renamed from "not" to "Not" to |
98 * the constant for negation has been renamed from "not" to "Not" to |
98 harmonize with FOL, ZF, LK, etc. |
99 harmonize with FOL, ZF, LK, etc.; |
99 |
100 |
100 * HOL/ex/LFilter theory of a corecursive "filter" functional for infinite lists |
101 * HOL/ex/LFilter theory of a corecursive "filter" functional for |
|
102 infinite lists; |
101 |
103 |
102 * HOL/ex/Ring.thy declares cring_simp, which solves equational |
104 * HOL/ex/Ring.thy declares cring_simp, which solves equational |
103 problems in commutative rings, using axiomatic type classes for + and *; |
105 problems in commutative rings, using axiomatic type classes for + and *; |
104 |
106 |
105 * more examples in HOL/MiniML and HOL/Auth; |
107 * more examples in HOL/MiniML and HOL/Auth; |
106 |
108 |
107 * more default rewrite rules for quantifiers, union/intersection; |
109 * more default rewrite rules for quantifiers, union/intersection; |
|
110 |
|
111 * HOLCF/IOA replaces old HOL/IOA; |
108 |
112 |
109 * HOLCF changes: derived all rules and arities |
113 * HOLCF changes: derived all rules and arities |
110 + axiomatic type classes instead of classes |
114 + axiomatic type classes instead of classes |
111 + typedef instead of faking type definitions |
115 + typedef instead of faking type definitions |
112 + eliminated the internal constants less_fun, less_cfun, UU_fun, UU_cfun etc. |
116 + eliminated the internal constants less_fun, less_cfun, UU_fun, UU_cfun etc. |
113 + new axclasses cpo, chfin, flat with flat < chfin < pcpo < cpo < po |
117 + new axclasses cpo, chfin, flat with flat < chfin < pcpo < cpo < po |
114 + eliminated the types void, one, tr |
118 + eliminated the types void, one, tr |
115 + use unit lift and bool lift (with translations) instead of one and tr |
119 + use unit lift and bool lift (with translations) instead of one and tr |
116 + eliminated blift from Lift3.thy (use Def instead of blift) |
120 + eliminated blift from Lift3.thy (use Def instead of blift) |
117 all eliminated rules are derived as theorems --> no visible changes |
121 all eliminated rules are derived as theorems --> no visible changes ; |
118 |
122 |
119 |
123 |
120 *** ZF *** |
124 *** ZF *** |
121 |
125 |
122 * ZF now has Fast_tac, Simp_tac and Auto_tac. Union_iff is a now a default |
126 * ZF now has Fast_tac, Simp_tac and Auto_tac. Union_iff is a now a default |