EDITS TO THE ISABELLE SYSTEM FOR 1992

24 January 

HOL/ruleshell,lemmas: renamed eps to select
HOL/lemmas/ext: deleted; abs is easier to use

HOL/list: getting rid of ERS, since it seems to work only for notI and impI
Instead, proofs are stated using negation or implies; related versions are
obtained by RS with notE, mp.

FOL/int-prover/contrapos: new

HOL/lemmas: replaced contra_positive by contrapos, from FOL

HOL/sum,nat,sexp: proved _not_ first

HOL/fun: tidied lemmas about One_One and One_One_on -- these predicates are
more useful than rules expressing the same concepts

HOL/nat,sexp: recast proofs to use One_One and One_One_on

27 January

HOL/fun/inverse_imp_injective: deleted; use One_One_on_inverseI RS One_One_onD
    val prems = goal Class.thy
	"[| f(x)=f(y);  !!x. P(x) ==> g(f(x)) = x;  P(x);  P(y) |] ==> x=y";
    br (apply_inverse RS trans) 1;
    by (REPEAT (ares_tac prems 1));
    val inverse_imp_injective = result();

HOL built perfectly

3 March

Introduction of goal commands taking cterms rather than strings

Pure/goal/prove_goal: takes a cterm, not a thy and string; catches
exception THM (typically from "assume")

Pure/goal/ADDED
  val goalw_cterm:     thm list -> Sign.cterm -> thm list
  val prove_goalw_cterm: thm list->Sign.cterm->(thm list->tactic list)->thm

Pure/thm: improved the error messages in many rules

4 March

Pure/logic/varify: added a case for Var.

5 March

changed T_of_term to pretty_term in Pure/sign.ML Pure/tctical.ML
Pure/unify.ML Pure/SYNTAX/printer.ML Pure/SYNTAX/syntax.ML

Pure/sign: added
  val string_of_cterm: cterm -> string
  val string_of_term: sg -> term -> string

Pure/tctical: added
  val string_of_thm: thm -> string

12 March

MAKE-ALL (SML of NJ, v 0.75) PERFECT!  Took 1:19 hours (on SPARCstation,

Modal: re-instated Rajeev Gore's rules for S43.

5 April

Implemented infix type constructors. Most changes in SYNTAX.
Two new syntax directives TInfixl and TInfixr.

Proved simultaneous fixpoint induction in LCF.

Incorporated type infixes into HOL.

Fixed priority of type and sort constraints (::) as follows:

1. expr :: type binds most tightly
2. type :: sort binds most tightly
3. expr :: type1 :: type2 is parsed as expr :: (type1 :: sort)
   and should therefore be written (expr :: type1) :: type2

Also fine-tuned the grammar for types. Hope it works better now.

**** NEW SYSTEM FROM TOBY ****

6 April

Pure/thm/stamps_of: new, for inspecting a theory
  val stamps_of: theory -> string ref list

Pure/tctical/prthq: for inspecting the output of a tactic, etc.
  val prthq: thm Sequence.seq -> thm Sequence.seq

Pure/tctical: improved error messages in RSN

Pure/sign/print_term, print_cterm: deleted; use writeln(string_of_term ...)

Pure/goals/prin, Pure/tctical/print_goals,
Provers/simp/pr_goal,pr_goal_concl: no longer call print_term

Pure/goals/curr_prems: this ref is no longer exported, since users should
not be able to change it.

Pure/goals/premises: new function to return the contents of curr_prems

Pure/unify/matchcopy: removed the following code, which (intentionally!)
disabled the solution of "recursive" disgreement pairs.  The example
"ALL x. ?f(g(x))=g(?f(x))" now, correctly, generates infinitely many
unifiers (subject to Unify.search_bound).  Also 
goal HOL_Rule.thy "(%x.?f(g(x))) = (%x.g(?f(x)))" works.  WAS
	    if  w=v   (*v is destination of copy*)
	    then matchfun(rev(make_projs(Ts, targs)))
	    else 

Pure/tactic/forwards_tac: renamed and modified to take a list of thms; WAS
  fun forward_tac rule = bires_cut_tac [(true,rule)];

Modal/README,S43.ML: Acknowledged Gore'

Pure/unify/print_dpairs: improved quality of output using rlist_abs

CTT/ex/synth/"A tricky combination of when and split": deleted redundant
  by (TRYALL (resolve_tac [NF]));

CTT/ex/synth/"The addition function -- using explicit lambdas": replaced by
(resolve_tac comp_rls 3); with res_inst_tac -- the bug fix to the
unification algorithm was causing excessive branching.

HOL/subset/Inter_greatest: deleted redundant
  by (cut_facts_tac prems 1);

Pure/tctical/size_of_thm: new
FOL/ROOT,HOL/ROOT: no longer define their own size_of_thm

Pure/tactic/trace_goalno_tac: no longer must be used with THEN.  Was
    fun trace_goalno_tac i = Tactic (fn state =>
       (prs("Subgoal " ^ string_of_int i ^ " selected\n");
	Sequence.single state));

Pure/goals/frs,fes,fds,fa: now use new trace_goalno_tac

ZF/func/fun_subset, ZF/ex/trancl, ZF/ex/wf/is_recfun_equal,ex_is_recfun,
CTT/arith/absdiff_eq0: reduced usage of REPEAT_FIRST 

Pure/term,logic,sign,tactic,tctical,thm,unify, FOL/simpdata: renamed
TERM_ERROR to TERM

Pure/goals/getgoal,top_sg: simplified to use topthm rather than apply_fun
Pure/goals/print_exn: new

Pure/tctical/unify_instantiate: renamed as cterm_instantiate
Provers/hypsubst,simp: now call cterm_instantiate

Pure/tctical/read_instantiate: no longer takes a theory

FOL/int-prover/pred_congs,eq_cong, LCF/fix/ffix,gfix, LCF/pair/ppair,qpair
FOL/ex/cla/Problem 58, ZF/ex/perm/cf_cong, HOL/ex/arith:ss1: take new
read_instantiate

Pure/sequence/filters: new

Pure/tctical: added
  val CHANGED: tactic -> tactic
  val FILTER: (thm -> bool) -> tactic -> tactic

** Abolishing ?Ga variables in unification -- preserving existing names

Pure/envir/genvar,genvars: now take a name as prefix, rather than "G".  No
letter suffix is attached to the last name generated -- this means that
genvar does not attach a suffix at all.

Pure/unify/make_args: now takes a name as prefix

Modal/Makefile*: deleted rule that makes .rules.ML

7 April

MAKE-ALL (Poly/ML) Perfect except for HOL.

HOL/ex/prop-log/comp_lemma: removed a needless use of res_inst_tac, which
had referred to a "Ga" variable.

ZF/ex: removed all "reslist"

Pure/tctical: deleted the almost useless
  fun MAP_EVERY tacf xs = EVERY (map tacf xs);
  fun MAP_FIRST tacf xs = FIRST (map tacf xs);

Pure/tactic/cut_facts_tac: removed usage of MAP_EVERY

Pure/tctical/reslist: deleted as obsolete
    (*List of all resolvents of ths with thb at i*)
    fun reslist (ths,i,thb) = 
      Sequence.list_of_s (resolution (thb,i,ths));

Pure/tctical/RL, Provers/classical: no longer calls reslist

Pure/thm/equal_props: renamed to equal_elim (since that's what it is!)
Pure/tactic/fconv_rule: now calls equal_elim

MAKE-ALL (Poly/ML) PERFECT.  New tar file put on /homes/lcp. 

8 April

CTT/ex/elim/"Double negation of the Excluded Middle": new
CTT/ex/*: used expandshort

Pure/thm: added
  val axioms_of: theory -> (string*thm)list
  val parents_of: theory -> theory list

Pure/thm: deleted the useless
  val kind_of_theory: theory -> string   

LK/ruleshell: some variable renaming, but variable name preservation
(still) does not work because of the representation of sequences.

MAKE-ALL (Poly/ML) PERFECT.  New tar file put on /homes/lcp. 

13 April

Pure/goals/prepare_proof: now uresult does no checking at all
Pure/goals/by_com, pop: improved error messages
Pure/goals/chop_level: now checks range

*** preventing signature changes during proofs ***

Pure/tctical: exported eq_sg and defined eq_thm_eq
  val eq_sq: Sign.sg * Sign.sg -> bool
  val eq_thm_eq: thm * thm -> bool

CTT/ex/synth: last 2 examples now proved in arith_thy, not CTT_Rule.thy

14 April

MAKE-ALL (Poly/ML) PERFECT.  New tar file put on /homes/lcp. 

24 April

FOL/ex/cla: added several problems from MLbook/test10.ML

MAKE-ALL (Poly/ML) PERFECT.  New tar file put on /homes/lcp. 

4 May

logic/strip_assums: moved down to assum_pairs, the only place where it is
called

6 May updated README
