| 
4382
 | 
     1  | 
  | 
| 
 | 
     2  | 
Isabelle BUGS -- history of reported faults
  | 
| 
 | 
     3  | 
===========================================
  | 
| 
 | 
     4  | 
  | 
| 
 | 
     5  | 
1.  Symptom: hyp_subst_tac does nothing if the selected equality involves type
  | 
| 
 | 
     6  | 
    unknowns.  Cause: it uses the simplifier, which ignores such equalities.
  | 
| 
 | 
     7  | 
    Fix: check for type unknowns in hypsubst/inspect_pair;  change interface
  | 
| 
 | 
     8  | 
    function dest_eq to return the type of the equality. (lcp, 5/11/97)
  | 
| 
 | 
     9  | 
  | 
| 
 | 
    10  | 
2.  Symptom: read_instantiate_sg has problems instantiating types in some
  | 
| 
 | 
    11  | 
    simultaneous instantiations (Message-id: <199710301432.PAA20594@sirius.Informatik.Uni-Bremen.DE> on isabelle-users)
  | 
| 
10941
 | 
    12  | 
  | 
| 
 | 
    13  | 
  | 
| 
 | 
    14  | 
- res_inst_tac bug:
  | 
| 
 | 
    15  | 
val [p1, p2] = Goalw [o_def]
  | 
| 
 | 
    16  | 
     "[| f : Funs (range g); !!h. f = g o h ==> P |] ==> P";
  | 
| 
 | 
    17  | 
by (res_inst_tac [("h", "%x. @y. f x = g y")] p2 1);
 | 
| 
 | 
    18  | 
by (res_inst_tac [("h", "%x. @y. (f x::'b) = g y")] p2 1);
 | 
| 
 | 
    19  | 
                                      ^^^^ required!
  | 
| 
 | 
    20  | 
Problem: lift_inst_rule only refers to syntactic context of current
  | 
| 
 | 
    21  | 
dynamic proof state; old-style goal initially does not contain hyps
  | 
| 
 | 
    22  | 
(!!);
  | 
| 
 | 
    23  | 
  | 
| 
 | 
    24  | 
Fix: either make assumptions statically scoped (included as hyps in
  | 
| 
 | 
    25  | 
goal), or pass additional environment to lift_inst_rule (this would
  | 
| 
 | 
    26  | 
improve upon Isar's res_inst_tac as well);
  | 
| 
 | 
    27  | 
  | 
| 
 | 
    28  | 
- type infer / inst bug:
  | 
| 
 | 
    29  | 
Goal "x = (x::?'a)";
  | 
| 
 | 
    30  | 
by (cut_inst_tac [("t", "x")] refl 1);
 | 
| 
 | 
    31  | 
  | 
| 
 | 
    32  | 
- bug in prove_goal (!?):
  | 
| 
 | 
    33  | 
forall_elim: Variable ?uu has two distinct types
  | 
| 
 | 
    34  | 
'a
  | 
| 
 | 
    35  | 
'b
  | 
| 
 | 
    36  | 
*** The exception above was raised for
  | 
| 
 | 
    37  | 
*** (!!uu uua. PROP P (uu, uua)) ==> PROP P xa
  |