doc-src/TutorialI/todo.tobias
changeset 10654 458068404143
parent 10608 620647438780
child 10676 06f390008ceb
     1.1 --- a/doc-src/TutorialI/todo.tobias	Wed Dec 13 09:32:55 2000 +0100
     1.2 +++ b/doc-src/TutorialI/todo.tobias	Wed Dec 13 09:39:53 2000 +0100
     1.3 @@ -3,8 +3,6 @@
     1.4  
     1.5  Relation: comp -> composition
     1.6  
     1.7 -replace "simp only split" by "split_tac".
     1.8 -
     1.9  Add map_cong?? (upto 10% slower)
    1.10  
    1.11  Recdef: Get rid of function name in header.
    1.12 @@ -14,7 +12,7 @@
    1.13  -> new example in Recdef/termination
    1.14  
    1.15  a tactic for replacing a specific occurrence:
    1.16 -apply(substitute [2] thm)
    1.17 +apply(subst [2] thm)
    1.18  
    1.19  it would be nice if @term could deal with ?-vars.
    1.20  then a number of (unchecked!) @texts could be converted to @terms.
    1.21 @@ -37,16 +35,16 @@
    1.22  Minor fixes in the tutorial
    1.23  ===========================
    1.24  
    1.25 +adjust type of ^ in tab:overloading
    1.26 +
    1.27  explanation of term "contrapositive"/contraposition in Rules?
    1.28  Index the notion and maybe the rules contrapos_xy
    1.29  
    1.30 -Even: forward ref from problem with "Suc(Suc n) : even" to general solution in
    1.31 -AdvancedInd section.
    1.32 +If Advanced and Types chapter ar swapped:
    1.33 +Make forward ref from ... = True in Axioms to preprocessor section.
    1.34  
    1.35  get rid of use_thy in tutorial?
    1.36  
    1.37 -Explain typographic conventions?
    1.38 -
    1.39  Orderings on numbers (with hint that it is overloaded):
    1.40  bounded quantifers ALL x<y, <=.
    1.41  
    1.42 @@ -78,6 +76,7 @@
    1.43  ==============================================
    1.44  
    1.45  Tacticals: , ? +
    1.46 +Note: + is used in typedef section!
    1.47  
    1.48  Mention that simp etc (big step tactics) insist on change?
    1.49  
    1.50 @@ -87,9 +86,6 @@
    1.51  A list of further useful commands (rules? tricks?)
    1.52  prefer, defer, print_simpset (-> print_simps?)
    1.53  
    1.54 -An overview of the automatic methods: simp, auto, fast, blast, force,
    1.55 -clarify, clarsimp (intro, elim?)
    1.56 -
    1.57  Advanced Ind expects rule_format incl (no_asm) (which it currently explains!)
    1.58  Where explained? Should go into a separate section as Inductive needs it as
    1.59  well.
    1.60 @@ -124,6 +120,15 @@
    1.61  Ind. sets: define ABC inductively and prove
    1.62  ABC = {rep A n @ rep B n @ rep C n. True}
    1.63  
    1.64 +Partial rekursive functions / Nontermination:
    1.65 +
    1.66 +Exercise: ?! f. !i. f i = if i=0 then 1 else i*f(i-1)
    1.67 +(What about sum? Is there one, a unique one?)
    1.68 +
    1.69 +Exercise
    1.70 +Better(?) sum i = fst(while (%(s,i). i=0) (%(s,i). (s+i,i-1)) (0,i))
    1.71 +Prove 0 <= i ==> sum i = i*(i+1) via while-rule
    1.72 +
    1.73  Possible examples/case studies
    1.74  ==============================
    1.75  
    1.76 @@ -145,6 +150,12 @@
    1.77  
    1.78  Sorting with comp-parameter and with type class (<)
    1.79  
    1.80 +Recdef:more example proofs:
    1.81 + if-normalization with measure function,
    1.82 + nested if-normalization,
    1.83 + quicksort
    1.84 + Trie?
    1.85 +
    1.86  New book by Bird?
    1.87  
    1.88  Steps Towards Mechanizing Program Transformations Using PVS by N. Shankar,
    1.89 @@ -166,60 +177,7 @@
    1.90  
    1.91  A look at the library?
    1.92  Map.
    1.93 -If WF is discussed, make a link to it from AdvancedInd.
    1.94  
    1.95  Prototyping?
    1.96  
    1.97  ==============================================================
    1.98 -Recdef:
    1.99 -
   1.100 -nested recursion
   1.101 -more example proofs:
   1.102 - if-normalization with measure function,
   1.103 - nested if-normalization,
   1.104 - quicksort
   1.105 - Trie?
   1.106 -a case study?
   1.107 -
   1.108 -----------
   1.109 -
   1.110 -Partial rekursive functions / Nontermination
   1.111 -
   1.112 -What appears to be the problem:
   1.113 -axiom f n = f n + 1
   1.114 -lemma False
   1.115 -apply(cut_facts_tac axiom, simp).
   1.116 -
   1.117 -1. Guarded recursion
   1.118 -
   1.119 -Scheme:
   1.120 -f x = if $x \in dom(f)$ then ... else arbitrary
   1.121 -
   1.122 -Example: sum/fact: int -> int (for no good reason because we have nat)
   1.123 -
   1.124 -Exercise: ?! f. !i. f i = if i=0 then 1 else i*f(i-1)
   1.125 -(What about sum? Is there one, a unique one?)
   1.126 -
   1.127 -[Alternative: include argument that is counted down
   1.128 - f x n = if n=0 then None else ...
   1.129 -Refer to Boyer and Moore]
   1.130 -
   1.131 -More complex: same_fst
   1.132 -
   1.133 -chase(f,x) = if wf{(f x,x) . f x ~= x}
   1.134 -             then if f x = x then x else chase(f,f x)
   1.135 -             else arb
   1.136 -
   1.137 -Prove wf ==> f(chase(f,x)) = chase(f,x)
   1.138 -
   1.139 -2. While / Tail recursion
   1.140 -
   1.141 -chase f x = fst(while (%(x,fx). x=fx) (%(x,fx). (fx,f fx)) (x,f x))
   1.142 -
   1.143 -==> unfold eqn for chase? Prove fixpoint property?
   1.144 -
   1.145 -Better(?) sum i = fst(while (%(s,i). i=0) (%(s,i). (s+i,i-1)) (0,i))
   1.146 -Prove 0 <= i ==> sum i = i*(i+1) via while-rule
   1.147 -
   1.148 -Mention prototyping?
   1.149 -==============================================================