426 |
426 |
427 fun ext_trfuns (syn, tsig, ctab) trfuns = |
427 fun ext_trfuns (syn, tsig, ctab) trfuns = |
428 (Syntax.extend_trfuns syn trfuns, tsig, ctab); |
428 (Syntax.extend_trfuns syn trfuns, tsig, ctab); |
429 |
429 |
430 fun ext_trrules (syn, tsig, ctab) xrules = |
430 fun ext_trrules (syn, tsig, ctab) xrules = |
431 (Syntax.extend_trrules syn |
431 (Syntax.extend_trrules syn xrules, tsig, ctab); |
432 (infer_types (Sg {tsig = tsig, const_tab = ctab, syn = syn, |
|
433 stamps = [ref "#"]}) (K None) (K None)) xrules, tsig, ctab); |
|
434 |
432 |
435 |
433 |
436 (* build signature *) |
434 (* build signature *) |
437 |
435 |
438 fun ext_stamps stamps name = |
436 fun ext_stamps stamps name = |
528 |> add_trfuns Syntax.pure_trfuns |
526 |> add_trfuns Syntax.pure_trfuns |
529 |> add_consts |
527 |> add_consts |
530 [("==", "['a::{}, 'a] => prop", Mixfix ("(_ ==/ _)", [3, 2], 2)), |
528 [("==", "['a::{}, 'a] => prop", Mixfix ("(_ ==/ _)", [3, 2], 2)), |
531 ("=?=", "['a::{}, 'a] => prop", Mixfix ("(_ =?=/ _)", [3, 2], 2)), |
529 ("=?=", "['a::{}, 'a] => prop", Mixfix ("(_ =?=/ _)", [3, 2], 2)), |
532 ("==>", "[prop, prop] => prop", Mixfix ("(_ ==>/ _)", [2, 1], 1)), |
530 ("==>", "[prop, prop] => prop", Mixfix ("(_ ==>/ _)", [2, 1], 1)), |
533 ("all", "('a => prop) => prop", Binder ("!!", 0)), |
531 ("all", "('a => prop) => prop", Binder ("!!", 0, 0)), |
534 ("TYPE", "'a itself", NoSyn)] |
532 ("TYPE", "'a itself", NoSyn)] |
535 |> add_name "Pure"; |
533 |> add_name "Pure"; |
536 |
534 |
537 |
535 |
538 end; |
536 end; |