Tue, 06 Nov 2001 23:56:14 +0100 wenzelm cert_def: proper check of args, improved msgs;
Tue, 06 Nov 2001 23:55:19 +0100 wenzelm pretty_goals_local: observes context syntax;
Tue, 06 Nov 2001 23:54:09 +0100 wenzelm defines: Thm.def_name, proper check of args;
Tue, 06 Nov 2001 23:53:28 +0100 wenzelm separate "in" locale vs. ad-hoc context;
Tue, 06 Nov 2001 23:52:45 +0100 wenzelm goals_limit moved to display.ML;
Tue, 06 Nov 2001 23:52:23 +0100 wenzelm added goals_limit (from tctical.ML);
Tue, 06 Nov 2001 23:51:16 +0100 wenzelm use_thy "Locales";
Tue, 06 Nov 2001 23:51:00 +0100 wenzelm use locales instead of consts/axioms;
Tue, 06 Nov 2001 23:50:24 +0100 wenzelm * Isar/Pure: proper integration with ``locales''; unlike the original
Tue, 06 Nov 2001 23:47:35 +0100 wenzelm activate dead code, make document work;
Tue, 06 Nov 2001 23:47:03 +0100 wenzelm renamed Sqrt_Irrational.thy to Sqrt.thy;
Tue, 06 Nov 2001 23:45:58 +0100 wenzelm Locales and simple mathematical structures;
Tue, 06 Nov 2001 23:45:34 +0100 wenzelm renamed Real/ex/Sqrt_Irrational.thy to Real/ex/Sqrt.thy;
Tue, 06 Nov 2001 19:29:36 +0100 wenzelm extend_XXX: sane argument order ... -> syntax -> syntax;
Tue, 06 Nov 2001 19:29:06 +0100 wenzelm local syntax: add_syntax, proper read/pretty functions;
Tue, 06 Nov 2001 19:28:11 +0100 wenzelm locale_element/uses: string;
Tue, 06 Nov 2001 19:27:56 +0100 wenzelm proper treatment of local syntax;
Tue, 06 Nov 2001 19:26:52 +0100 wenzelm print_syntax: include local version;
Tue, 06 Nov 2001 19:26:32 +0100 wenzelm added pretty_term', read_typ', read_typ_no_norm', read_def_terms'
Tue, 06 Nov 2001 19:25:24 +0100 wenzelm export pretty_thm_aux;
Tue, 06 Nov 2001 01:21:10 +0100 wenzelm tuned;
Tue, 06 Nov 2001 01:20:49 +0100 wenzelm theorem(_i): locale atts;
Tue, 06 Nov 2001 01:19:07 +0100 wenzelm group locale_element;
Tue, 06 Nov 2001 01:18:46 +0100 wenzelm added add_locale(_i) and store_thm;
Tue, 06 Nov 2001 01:17:27 +0100 wenzelm theorem(_i): locale atts;
Tue, 06 Nov 2001 01:16:50 +0100 wenzelm added 'locale', 'print_locales', 'print_locale';
Tue, 06 Nov 2001 01:15:08 +0100 wenzelm added print_locales, print_locale;
Tue, 06 Nov 2001 01:14:46 +0100 wenzelm added "locale", "print_locale", "print_locales";
Mon, 05 Nov 2001 21:03:08 +0100 wenzelm fixes: optional typ;
Mon, 05 Nov 2001 21:01:59 +0100 wenzelm added pretty/print functions with context;
Mon, 05 Nov 2001 21:00:45 +0100 wenzelm locale_element: optional typ;
Mon, 05 Nov 2001 20:59:35 +0100 wenzelm pretty/print functions with context;
Mon, 05 Nov 2001 20:58:28 +0100 wenzelm export add_tvarsT, add_tvars, add_vars, add_frees (would actually
Mon, 05 Nov 2001 20:56:29 +0100 wenzelm Method.trace ctxt;
Mon, 05 Nov 2001 20:56:00 +0100 wenzelm tuned;
Mon, 05 Nov 2001 13:55:48 +0100 paulson new Sqrt example
Sun, 04 Nov 2001 21:12:03 +0100 wenzelm tuned comment;
Sun, 04 Nov 2001 21:00:28 +0100 wenzelm simplified Proof.init_state:
Sun, 04 Nov 2001 21:00:06 +0100 wenzelm added get_thms_with_closure;
Sun, 04 Nov 2001 20:59:01 +0100 wenzelm added locale_element;
Sun, 04 Nov 2001 20:58:26 +0100 wenzelm locale elements;
Sun, 04 Nov 2001 20:58:01 +0100 wenzelm theorem(_i): locale elements;
Sun, 04 Nov 2001 20:57:29 +0100 wenzelm locale syntax;
Sun, 04 Nov 2001 20:56:59 +0100 wenzelm IsarThy.theorem_i (None, []);
Sun, 04 Nov 2001 20:56:19 +0100 wenzelm updated;
Sat, 03 Nov 2001 18:49:40 +0100 berghofe Fixed bug in function add_npvars.
Sat, 03 Nov 2001 18:44:49 +0100 wenzelm updated;
Sat, 03 Nov 2001 18:42:55 +0100 wenzelm tuned;
Sat, 03 Nov 2001 18:42:38 +0100 wenzelm proper use of bind_thm(s);
Sat, 03 Nov 2001 18:42:00 +0100 wenzelm adapted to new-style theories;
Sat, 03 Nov 2001 18:41:28 +0100 wenzelm GPLed;
Sat, 03 Nov 2001 18:41:13 +0100 wenzelm converted theory Dnat;
Sat, 03 Nov 2001 18:40:21 +0100 wenzelm * 'domain' package adapted to new-style theories, e.g. see
Sat, 03 Nov 2001 01:45:32 +0100 wenzelm document setup;
Sat, 03 Nov 2001 01:44:45 +0100 wenzelm replaced Undef by UU;
Sat, 03 Nov 2001 01:44:26 +0100 wenzelm ax_flat;
Sat, 03 Nov 2001 01:41:26 +0100 wenzelm GPLed;
Sat, 03 Nov 2001 01:40:28 +0100 wenzelm tuned;
Sat, 03 Nov 2001 01:39:17 +0100 wenzelm replaced Undef by UU;
Sat, 03 Nov 2001 01:38:39 +0100 wenzelm converted theory Lift;
Sat, 03 Nov 2001 01:38:11 +0100 wenzelm rep_datatype lift;
Sat, 03 Nov 2001 01:36:19 +0100 wenzelm moved into Main;
Sat, 03 Nov 2001 01:35:11 +0100 wenzelm moved String into Main;
Sat, 03 Nov 2001 01:33:54 +0100 wenzelm tuned;
Sat, 03 Nov 2001 01:33:33 +0100 wenzelm HOLCF: proper rep_datatype lift (see theory Lift); use plain induct_tac
Fri, 02 Nov 2001 22:02:41 +0100 wenzelm declare transitive;
Fri, 02 Nov 2001 22:01:58 +0100 wenzelm theory Calculation move to Set;
Fri, 02 Nov 2001 22:01:07 +0100 wenzelm transitive declared in Pure;
Fri, 02 Nov 2001 17:55:24 +0100 paulson Numerals and simprocs for types real and hypreal. The abstract
Thu, 01 Nov 2001 21:12:13 +0100 wenzelm Goals.add_locale;
Thu, 01 Nov 2001 21:11:52 +0100 wenzelm fix_frees;
Thu, 01 Nov 2001 21:11:17 +0100 wenzelm theorem: locale argument;
Thu, 01 Nov 2001 21:10:47 +0100 wenzelm beginnings of new locales (not yet functional);
Thu, 01 Nov 2001 21:10:13 +0100 wenzelm Goals.setup;
Thu, 01 Nov 2001 21:09:53 +0100 wenzelm parking code for old-style locales here;
Wed, 31 Oct 2001 22:05:37 +0100 wenzelm tuned notation (degree instead of dollar);
Wed, 31 Oct 2001 22:04:29 +0100 wenzelm theorem(_i): locale argument;
Wed, 31 Oct 2001 22:02:33 +0100 wenzelm Proof.init_state thy None;
Wed, 31 Oct 2001 22:02:11 +0100 wenzelm simplified export;
Wed, 31 Oct 2001 22:00:25 +0100 wenzelm 'atomize': CHANGED_PROP;
Wed, 31 Oct 2001 22:00:02 +0100 wenzelm global statements: locale argument;
Wed, 31 Oct 2001 21:59:25 +0100 wenzelm added local_standard;
Wed, 31 Oct 2001 21:59:07 +0100 wenzelm IsarThy.theorem_i: no locale;
Wed, 31 Oct 2001 21:58:04 +0100 wenzelm removed obsolete (rule equal_intr_rule);
Wed, 31 Oct 2001 20:00:35 +0100 berghofe Additional rules for simplifying inside "Goal"
Wed, 31 Oct 2001 19:59:21 +0100 berghofe - Tuned add_cnstrt
Wed, 31 Oct 2001 19:49:36 +0100 berghofe Removed name_thm from finish_global.
Wed, 31 Oct 2001 19:41:29 +0100 berghofe Tuned function thm_proof.
Wed, 31 Oct 2001 19:37:04 +0100 berghofe - enter_thmx -> enter_thms
Wed, 31 Oct 2001 19:32:05 +0100 berghofe norm_hhf_eq is now stored using open_store_standard_thm.
Wed, 31 Oct 2001 01:28:39 +0100 wenzelm induct: internalize ``missing'' consumes-facts from goal state
Wed, 31 Oct 2001 01:27:04 +0100 wenzelm - 'induct' may now use elim-style induction rules without chaining
Wed, 31 Oct 2001 01:26:42 +0100 wenzelm (induct set: ...);
Wed, 31 Oct 2001 01:22:27 +0100 wenzelm put_consumes: really overwrite existing tag;
Wed, 31 Oct 2001 01:21:56 +0100 wenzelm finish_global: Tactic.norm_hhf;
Wed, 31 Oct 2001 01:21:31 +0100 wenzelm use HOL.induct_XXX;
Wed, 31 Oct 2001 01:21:01 +0100 wenzelm use induct_rulify2;
Wed, 31 Oct 2001 01:20:42 +0100 wenzelm renamed inductive_XXX to induct_XXX;
Wed, 31 Oct 2001 01:19:58 +0100 wenzelm induct_impliesI;
Tue, 30 Oct 2001 17:37:25 +0100 wenzelm tuned induct proofs;
Tue, 30 Oct 2001 17:33:56 +0100 wenzelm - 'induct' method now derives symbolic cases from the *rulified* rule
Tue, 30 Oct 2001 17:33:03 +0100 wenzelm tuned;
Tue, 30 Oct 2001 17:30:21 +0100 wenzelm induct: cases are extracted from rulified rule;
Tue, 30 Oct 2001 17:29:43 +0100 wenzelm removed obsolete make_raw;
Tue, 30 Oct 2001 13:43:26 +0100 wenzelm lemma Least_mono moved from Typedef.thy to Set.thy;
Mon, 29 Oct 2001 17:22:18 +0100 wenzelm tuned;
Mon, 29 Oct 2001 14:09:10 +0100 wenzelm removed option -depend (not available everywhere?);
Sun, 28 Oct 2001 22:59:12 +0100 wenzelm converted theory "Set";
Sun, 28 Oct 2001 22:58:39 +0100 wenzelm fixed string_of_mixfix;
Sun, 28 Oct 2001 21:14:56 +0100 wenzelm tuned declaration of rules;
Sun, 28 Oct 2001 21:10:47 +0100 wenzelm equal_intr_rule already declared in Pure;
Sun, 28 Oct 2001 19:44:58 +0100 wenzelm rules for meta-level conjunction;
Sun, 28 Oct 2001 19:44:26 +0100 wenzelm tuned prove;
Sat, 27 Oct 2001 23:21:19 +0200 wenzelm tuned;
Sat, 27 Oct 2001 23:19:55 +0200 wenzelm added prove;
Sat, 27 Oct 2001 23:19:37 +0200 wenzelm declare equal_intr_rule as intro;
Sat, 27 Oct 2001 23:19:04 +0200 wenzelm tuned prove;
Sat, 27 Oct 2001 23:18:40 +0200 wenzelm removed obsolete goal_subclass, goal_arity;
Sat, 27 Oct 2001 23:17:46 +0200 wenzelm use Tactic.prove;
Sat, 27 Oct 2001 23:17:28 +0200 wenzelm use Tactic.prove;
Sat, 27 Oct 2001 23:16:15 +0200 wenzelm tuned;
Sat, 27 Oct 2001 23:15:52 +0200 wenzelm * Pure/axclass: removed obsolete ML interface goal_subclass/goal_arity;
Sat, 27 Oct 2001 23:13:42 +0200 wenzelm updated;
Sat, 27 Oct 2001 00:09:59 +0200 wenzelm impose hyps on initial goal configuration (prevents res_inst_tac problems);
Sat, 27 Oct 2001 00:07:48 +0200 wenzelm added "atomize" method;
Sat, 27 Oct 2001 00:07:19 +0200 wenzelm prove: primitive goal interface for internal use;
Sat, 27 Oct 2001 00:06:46 +0200 wenzelm added impose_hyps;
Sat, 27 Oct 2001 00:06:22 +0200 wenzelm exclude field_simps from user-level "simps";
Sat, 27 Oct 2001 00:05:50 +0200 wenzelm Isar: fixed rep_datatype args;
Sat, 27 Oct 2001 00:05:14 +0200 wenzelm hardwire qualified const names;
Sat, 27 Oct 2001 00:00:55 +0200 wenzelm removed "more" class;
Sat, 27 Oct 2001 00:00:38 +0200 wenzelm moved product cases/induct to theory Datatype;
Sat, 27 Oct 2001 00:00:05 +0200 wenzelm made new-style theory;
Fri, 26 Oct 2001 23:59:13 +0200 wenzelm atomize_conj;
Fri, 26 Oct 2001 23:58:21 +0200 wenzelm * Pure: method 'atomize' presents local goal premises as object-level
Fri, 26 Oct 2001 23:17:49 +0200 berghofe Fixed several bugs concerning arbitrarily branching datatypes.
Fri, 26 Oct 2001 19:06:53 +0200 berghofe Eliminated occurrence of rule_format.
Fri, 26 Oct 2001 18:16:45 +0200 wenzelm tuned;
Fri, 26 Oct 2001 18:16:31 +0200 wenzelm need at least 3 latex runs to get toc right!
Fri, 26 Oct 2001 16:49:10 +0200 wenzelm tuned;
Fri, 26 Oct 2001 16:18:14 +0200 wenzelm tuned;
Fri, 26 Oct 2001 14:22:33 +0200 wenzelm Rrightarrow;
Fri, 26 Oct 2001 14:02:58 +0200 wenzelm tuned notation;
Fri, 26 Oct 2001 12:24:19 +0200 wenzelm tuned notation;
Thu, 25 Oct 2001 22:59:11 +0200 wenzelm accomodate some recent changes of record package;
Thu, 25 Oct 2001 22:58:26 +0200 wenzelm updated;
Thu, 25 Oct 2001 22:43:58 +0200 wenzelm removed "more" sort;
Thu, 25 Oct 2001 22:43:05 +0200 wenzelm updated records;
Thu, 25 Oct 2001 22:42:50 +0200 wenzelm 'simplified' att: args;
Thu, 25 Oct 2001 22:42:12 +0200 wenzelm * HOL/record:
Thu, 25 Oct 2001 22:41:07 +0200 wenzelm * Provers: 'simplified' attribute may refer to explicit rules instead
Thu, 25 Oct 2001 20:04:43 +0200 berghofe Replaced main proof by proper Isar script.
Thu, 25 Oct 2001 20:00:11 +0200 wenzelm derived operations are now: make, extend, truncate (cf. derived_defs);
Thu, 25 Oct 2001 19:59:00 +0200 wenzelm tuned;
Thu, 25 Oct 2001 19:55:41 +0200 wenzelm check_goal: setmp proofs 0;
Thu, 25 Oct 2001 16:09:39 +0200 kleing added windowlistener (can now close the frame by window controls)
Thu, 25 Oct 2001 02:13:02 +0200 wenzelm * HOL/record:
Thu, 25 Oct 2001 02:12:10 +0200 wenzelm innermost_params;
Thu, 25 Oct 2001 02:11:49 +0200 wenzelm (simp add: point.make_def);
Thu, 25 Oct 2001 02:11:28 +0200 wenzelm provodes induct/cases for use with corresponding Isar methods;
Wed, 24 Oct 2001 19:20:02 +0200 wenzelm further 1.73 changes: added fix_direct, simplified assume interface;
Wed, 24 Oct 2001 19:18:23 +0200 wenzelm added read_prop_schematic;
Wed, 24 Oct 2001 19:18:10 +0200 wenzelm simplified ProofContext.assume interface;
Wed, 24 Oct 2001 17:38:29 +0200 wenzelm moved lambda to Pure/term.ML;
Wed, 24 Oct 2001 17:38:19 +0200 wenzelm added lambda;
Wed, 24 Oct 2001 17:37:58 +0200 wenzelm * clasimp: ``iff'' declarations now handle conditional rules as well;
Wed, 24 Oct 2001 17:31:58 +0200 wenzelm added string_of_mixfix;
Wed, 24 Oct 2001 17:31:20 +0200 wenzelm print_depth 8 from the very beginning;
Tue, 23 Oct 2001 23:29:29 +0200 wenzelm added export_assume, export_presume, export_def (from proof.ML);
Tue, 23 Oct 2001 23:28:59 +0200 wenzelm moved RANGE to tctical.ML;
Tue, 23 Oct 2001 23:28:01 +0200 wenzelm added RANGE (from Isar/proof.ML);
Tue, 23 Oct 2001 22:59:14 +0200 wenzelm print fixed names as plain strings;
Tue, 23 Oct 2001 22:58:15 +0200 wenzelm eliminated old numerals;
Tue, 23 Oct 2001 22:57:52 +0200 wenzelm use generic 1 instead of Numeral1;
Tue, 23 Oct 2001 22:56:55 +0200 wenzelm eliminated Numeral0;
Tue, 23 Oct 2001 22:54:01 +0200 wenzelm build option enables most basic browser info (for proper recording of session);
Tue, 23 Oct 2001 22:53:08 +0200 wenzelm build option;
Tue, 23 Oct 2001 22:52:45 +0200 wenzelm tuned;
Tue, 23 Oct 2001 22:52:31 +0200 wenzelm eliminated old numerals;
Tue, 23 Oct 2001 22:51:30 +0200 wenzelm pass build mode to process;
Tue, 23 Oct 2001 19:15:00 +0200 wenzelm removed export_thm;
Tue, 23 Oct 2001 19:14:47 +0200 wenzelm trace_rules: only non-empty;
Tue, 23 Oct 2001 19:14:31 +0200 wenzelm removed obsolete "exported" att;
Tue, 23 Oct 2001 19:14:13 +0200 wenzelm replace_dummy_patterns: lift over bounds;
Tue, 23 Oct 2001 19:13:44 +0200 wenzelm iff: always rotate prems;
Tue, 23 Oct 2001 19:13:17 +0200 wenzelm apply(simp add: three_def numerals) (* FIXME !? *);
Tue, 23 Oct 2001 19:12:58 +0200 wenzelm unset DISPLAY (again);
Tue, 23 Oct 2001 19:12:37 +0200 wenzelm * Pure: removed obsolete 'exported' attribute;
Mon, 22 Oct 2001 23:39:00 +0200 wenzelm *** empty log message ***
Mon, 22 Oct 2001 18:07:53 +0200 wenzelm moved object_logic.ML to Isar/object_logic.ML;
Mon, 22 Oct 2001 18:07:30 +0200 wenzelm moved locale.ML to Isar/locale.ML;
Mon, 22 Oct 2001 18:04:26 +0200 wenzelm moved goal related stuff to goals.ML;
Mon, 22 Oct 2001 18:04:11 +0200 wenzelm Display.current_goals_markers;
Mon, 22 Oct 2001 18:04:00 +0200 wenzelm tuned;
Mon, 22 Oct 2001 18:03:49 +0200 wenzelm moved prove_goalw_cterm to goals.ML;
Mon, 22 Oct 2001 18:03:21 +0200 wenzelm moved local defs to proof.ML (for locales);
Mon, 22 Oct 2001 18:02:50 +0200 wenzelm improved source arrangement of obtain;
Mon, 22 Oct 2001 18:02:21 +0200 wenzelm rearrange sources for locales;
Mon, 22 Oct 2001 18:02:04 +0200 wenzelm Display.print_current_goals_fn;
Mon, 22 Oct 2001 18:01:52 +0200 wenzelm Display.print_goals;
Mon, 22 Oct 2001 18:01:38 +0200 wenzelm Display.pretty_thms;
Mon, 22 Oct 2001 18:01:26 +0200 wenzelm qualified names;
Mon, 22 Oct 2001 18:01:15 +0200 wenzelm make this module appeat late in Pure;
Mon, 22 Oct 2001 17:59:39 +0200 wenzelm print_goals stuff is back (from locale.ML);
Mon, 22 Oct 2001 17:58:56 +0200 wenzelm reorganize sources to accomodate locales;
Mon, 22 Oct 2001 17:58:37 +0200 wenzelm corollary;
Mon, 22 Oct 2001 17:58:26 +0200 wenzelm quick_and_dirty_prove_goalw_cterm;
Mon, 22 Oct 2001 17:58:11 +0200 wenzelm javac -depend;
Mon, 22 Oct 2001 17:56:16 +0200 wenzelm -D generated;
Mon, 22 Oct 2001 14:58:05 +0200 berghofe Added "clean" target.
Mon, 22 Oct 2001 14:55:16 +0200 berghofe Fixed problem with batch mode layout, which caused an AWT exception when
Mon, 22 Oct 2001 14:53:52 +0200 berghofe initBrowser now has additional noAWT argument.
Mon, 22 Oct 2001 14:52:43 +0200 berghofe Constructor no longer takes font as an argument.
Mon, 22 Oct 2001 14:52:12 +0200 berghofe Moved font settings from TreeNode to TreeBrowser.
Mon, 22 Oct 2001 14:51:39 +0200 berghofe Moved font settings from Vertex to GraphView.
Mon, 22 Oct 2001 12:11:00 +0200 paulson deleted the redundant first argument of adjust(a,b)
Mon, 22 Oct 2001 12:01:35 +0200 paulson Numerals now work for the integers: the binary numerals for 0 and 1 rewrite
Mon, 22 Oct 2001 11:55:35 +0200 paulson New simproc, needed to cope with combinations of (abstract) 0, (abstract) 1,
Mon, 22 Oct 2001 11:54:22 +0200 paulson Numerals now work for the integers: the binary numerals for 0 and 1 rewrite
Mon, 22 Oct 2001 11:01:30 +0200 wenzelm keep DISPLAY;
Sun, 21 Oct 2001 19:49:29 +0200 wenzelm updated;
Sun, 21 Oct 2001 19:48:19 +0200 wenzelm renamed to Typedefs.thy to avoid conflict with main HOL version;
Sun, 21 Oct 2001 19:44:25 +0200 wenzelm * proper spacing of consecutive markup elements, especially text
Sun, 21 Oct 2001 19:42:53 +0200 wenzelm \newif\ifisamarkup controls spacing of isabeginpar;
Sun, 21 Oct 2001 19:42:24 +0200 wenzelm improved spacing;
Sun, 21 Oct 2001 19:41:43 +0200 wenzelm maintain Latex.flag_markup;
Sun, 21 Oct 2001 19:40:39 +0200 wenzelm flag_markup;
Sun, 21 Oct 2001 19:36:12 +0200 wenzelm Types/document/Typedefs;
Sun, 21 Oct 2001 19:35:40 +0200 wenzelm renamed Typedef.thy to Typedefs.thy (former already present in main HOL);
Sat, 20 Oct 2001 22:07:44 +0200 wenzelm got rid of separate root.tex;
Sat, 20 Oct 2001 20:23:37 +0200 wenzelm graceful interpretation of -i/-d/-D options;
Sat, 20 Oct 2001 20:22:17 +0200 wenzelm include document graph;
Sat, 20 Oct 2001 20:21:40 +0200 wenzelm document graph option;
Sat, 20 Oct 2001 20:21:14 +0200 wenzelm conditional: bool -> (unit -> unit) -> unit;
Sat, 20 Oct 2001 20:20:41 +0200 wenzelm added TextIO.stdErr;
Sat, 20 Oct 2001 20:20:21 +0200 wenzelm include document graph;
Sat, 20 Oct 2001 20:19:47 +0200 wenzelm document graphs for several sessions;
Sat, 20 Oct 2001 20:18:57 +0200 wenzelm tuned;
Sat, 20 Oct 2001 20:18:45 +0200 wenzelm calculational rules moved from FOL to IFOL;
Sat, 20 Oct 2001 20:18:19 +0200 wenzelm option -g for document graph;
(0) -10000 -3000 -1000 -240 +240 +1000 +3000 +10000 +30000 tip