doc-src/TutorialI/todo.tobias
author nipkow
Fri, 15 Dec 2000 12:32:35 +0100
changeset 10676 06f390008ceb
parent 10654 458068404143
child 10845 3696bc935bbd
permissions -rw-r--r--
*** empty log message ***
nipkow@10281
     1
Implementation
nipkow@10281
     2
==============
nipkow@10177
     3
nipkow@10608
     4
Relation: comp -> composition
nipkow@10177
     5
nipkow@10177
     6
Add map_cong?? (upto 10% slower)
nipkow@10177
     7
nipkow@10281
     8
Recdef: Get rid of function name in header.
nipkow@10281
     9
Support mutual recursion (Konrad?)
nipkow@10177
    10
nipkow@10177
    11
use arith_tac in recdef to solve termination conditions?
nipkow@10177
    12
-> new example in Recdef/termination
nipkow@10177
    13
nipkow@10177
    14
a tactic for replacing a specific occurrence:
nipkow@10654
    15
apply(subst [2] thm)
nipkow@10177
    16
nipkow@10186
    17
it would be nice if @term could deal with ?-vars.
nipkow@10186
    18
then a number of (unchecked!) @texts could be converted to @terms.
nipkow@10186
    19
nipkow@10189
    20
it would be nice if one could get id to the enclosing quotes in the [source] option.
nipkow@10189
    21
nipkow@10281
    22
More predefined functions for datatypes: map?
nipkow@10281
    23
nipkow@10281
    24
Induction rules for int: int_le/ge_induct?
nipkow@10281
    25
Needed for ifak example. But is that example worth it?
nipkow@10281
    26
nipkow@10608
    27
Komischerweise geht das Splitten von _Annahmen_ auch mit simp_tac, was
nipkow@10608
    28
ein generelles Feature ist, das man vielleicht mal abstellen sollte.
nipkow@10608
    29
nipkow@10520
    30
proper mutual simplification
nipkow@10520
    31
nipkow@10520
    32
defs with = and pattern matching??
nipkow@10340
    33
nipkow@10186
    34
nipkow@10177
    35
Minor fixes in the tutorial
nipkow@10177
    36
===========================
nipkow@10177
    37
nipkow@10654
    38
adjust type of ^ in tab:overloading
nipkow@10654
    39
nipkow@10340
    40
explanation of term "contrapositive"/contraposition in Rules?
nipkow@10340
    41
Index the notion and maybe the rules contrapos_xy
nipkow@10340
    42
nipkow@10654
    43
If Advanced and Types chapter ar swapped:
nipkow@10654
    44
Make forward ref from ... = True in Axioms to preprocessor section.
nipkow@10177
    45
nipkow@10281
    46
get rid of use_thy in tutorial?
nipkow@10177
    47
nipkow@10509
    48
Orderings on numbers (with hint that it is overloaded):
nipkow@10520
    49
bounded quantifers ALL x<y, <=.
nipkow@10509
    50
nipkow@10177
    51
an example of induction: !y. A --> B --> C ??
nipkow@10177
    52
nipkow@10509
    53
Explain type_definition and mention pre-proved thms in subset.thy?
nipkow@10509
    54
-> Types/typedef
nipkow@10509
    55
nipkow@10177
    56
Appendix: Lexical: long ids.
nipkow@10177
    57
nipkow@10177
    58
Warning: infixes automatically become reserved words!
nipkow@10177
    59
nipkow@10177
    60
Forward ref from blast proof of Puzzle (AdvancedInd) to Isar proof?
nipkow@10177
    61
nipkow@10177
    62
recdef with nested recursion: either an example or at least a pointer to the
nipkow@10177
    63
literature. In Recdef/termination.thy, at the end.
nipkow@10177
    64
%FIXME, with one exception: nested recursion.
nipkow@10177
    65
nipkow@10186
    66
Syntax section: syntax annotations nor just for consts but also for constdefs and datatype.
nipkow@10186
    67
nipkow@10283
    68
Appendix with list functions.
nipkow@10283
    69
nipkow@10520
    70
Move section on rule inversion further to the front, and combine
nipkow@10520
    71
\subsection{Universal quantifiers in introduction rules}
nipkow@10520
    72
\subsection{Continuing the `ground terms' example}
nipkow@10520
    73
nipkow@10177
    74
nipkow@10177
    75
Minor additions to the tutorial, unclear where
nipkow@10177
    76
==============================================
nipkow@10177
    77
nipkow@10186
    78
Tacticals: , ? +
nipkow@10654
    79
Note: + is used in typedef section!
nipkow@10177
    80
nipkow@10177
    81
A list of further useful commands (rules? tricks?)
nipkow@10281
    82
prefer, defer, print_simpset (-> print_simps?)
nipkow@10177
    83
nipkow@10237
    84
Advanced Ind expects rule_format incl (no_asm) (which it currently explains!)
nipkow@10242
    85
Where explained? Should go into a separate section as Inductive needs it as
nipkow@10242
    86
well.
nipkow@10237
    87
nipkow@10177
    88
demonstrate x : set xs in Sets. Or Tricks chapter?
nipkow@10177
    89
nipkow@10676
    90
Appendix with HOL and Isar keywords.
nipkow@10177
    91
nipkow@10177
    92
nipkow@10177
    93
Possible exercises
nipkow@10177
    94
==================
nipkow@10177
    95
nipkow@10177
    96
Exercises
nipkow@10177
    97
%\begin{exercise}
nipkow@10177
    98
%Extend expressions by conditional expressions.
nipkow@10177
    99
braucht wfrec!
nipkow@10177
   100
%\end{exercise}
nipkow@10177
   101
nipkow@10177
   102
Nested inductive datatypes: another example/exercise:
nipkow@10177
   103
 size(t) <= size(subst s t)?
nipkow@10177
   104
nipkow@10177
   105
insertion sort: primrec, later recdef
nipkow@10177
   106
nipkow@10177
   107
OTree:
nipkow@10177
   108
 first version only for non-empty trees:
nipkow@10177
   109
 Tip 'a | Node tree tree
nipkow@10177
   110
 Then real version?
nipkow@10177
   111
 First primrec, then recdef?
nipkow@10177
   112
nipkow@10177
   113
Ind. sets: define ABC inductively and prove
nipkow@10177
   114
ABC = {rep A n @ rep B n @ rep C n. True}
nipkow@10177
   115
nipkow@10654
   116
Partial rekursive functions / Nontermination:
nipkow@10654
   117
nipkow@10654
   118
Exercise: ?! f. !i. f i = if i=0 then 1 else i*f(i-1)
nipkow@10654
   119
(What about sum? Is there one, a unique one?)
nipkow@10654
   120
nipkow@10654
   121
Exercise
nipkow@10654
   122
Better(?) sum i = fst(while (%(s,i). i=0) (%(s,i). (s+i,i-1)) (0,i))
nipkow@10654
   123
Prove 0 <= i ==> sum i = i*(i+1) via while-rule
nipkow@10654
   124
nipkow@10177
   125
Possible examples/case studies
nipkow@10177
   126
==============================
nipkow@10177
   127
nipkow@10177
   128
Trie: Define functional version
nipkow@10177
   129
datatype ('a,'b)trie = Trie ('b option) ('a => ('a,'b)trie option)
nipkow@10177
   130
lookup t [] = value t
nipkow@10177
   131
lookup t (a#as) = case tries t a of None => None | Some s => lookup s as
nipkow@10177
   132
Maybe as an exercise?
nipkow@10177
   133
nipkow@10177
   134
Trie: function for partial matches (prefixes). Needs sets for spec/proof.
nipkow@10177
   135
nipkow@10177
   136
Sets via ordered list of intervals. (Isa/Interval(2))
nipkow@10177
   137
nipkow@10177
   138
propositional logic (soundness and completeness?),
nipkow@10177
   139
predicate logic (soundness?),
nipkow@10177
   140
nipkow@10177
   141
Tautology checker. Based on Ifexpr or prop.logic?
nipkow@10177
   142
Include forward reference in relevant section.
nipkow@10177
   143
nipkow@10177
   144
Sorting with comp-parameter and with type class (<)
nipkow@10177
   145
nipkow@10654
   146
Recdef:more example proofs:
nipkow@10654
   147
 if-normalization with measure function,
nipkow@10654
   148
 nested if-normalization,
nipkow@10654
   149
 quicksort
nipkow@10654
   150
 Trie?
nipkow@10654
   151
nipkow@10177
   152
New book by Bird?
nipkow@10177
   153
nipkow@10177
   154
Steps Towards Mechanizing Program Transformations Using PVS by N. Shankar,
nipkow@10177
   155
      Science of Computer Programming, 26(1-3):33-57, 1996. 
nipkow@10177
   156
You can get it from http://www.csl.sri.com/scp95.html
nipkow@10177
   157
nipkow@10177
   158
J Moore article Towards a ...
nipkow@10177
   159
Mergesort, JVM
nipkow@10177
   160
nipkow@10177
   161
nipkow@10177
   162
Additional topics
nipkow@10177
   163
=================
nipkow@10177
   164
nipkow@10281
   165
Recdef with nested recursion?
nipkow@10177
   166
nipkow@10177
   167
Extensionality: applications in
nipkow@10177
   168
- boolean expressions: valif o bool2if = value
nipkow@10177
   169
- Advanced datatypes exercise subst (f o g) = subst f o subst g
nipkow@10177
   170
nipkow@10177
   171
A look at the library?
nipkow@10281
   172
Map.
nipkow@10177
   173
nipkow@10177
   174
Prototyping?
nipkow@10177
   175
nipkow@10177
   176
==============================================================