# HG changeset patch # User wenzelm # Date 1684176917 -7200 # Node ID b6c886b7184f443b1a9ad8fe5eccaff80e93ec57 # Parent d555983054f307fe5ac63d171d33d125c22e33c0 clarified signature; diff -r d555983054f3 -r b6c886b7184f src/Pure/Isar/class.ML --- a/src/Pure/Isar/class.ML Mon May 15 20:37:53 2023 +0200 +++ b/src/Pure/Isar/class.ML Mon May 15 20:55:17 2023 +0200 @@ -157,9 +157,8 @@ val base_morphism = #base_morph oo the_class_data; fun morphism thy class = - (case Element.eq_morphism thy (these_defs thy [class]) of - SOME eq_morph => base_morphism thy class $> eq_morph - | NONE => base_morphism thy class); + base_morphism thy class $> + Morphism.default (Element.eq_morphism thy (these_defs thy [class])); val export_morphism = #export_morph oo the_class_data; diff -r d555983054f3 -r b6c886b7184f src/Pure/Isar/expression.ML --- a/src/Pure/Isar/expression.ML Mon May 15 20:37:53 2023 +0200 +++ b/src/Pure/Isar/expression.ML Mon May 15 20:55:17 2023 +0200 @@ -407,7 +407,7 @@ |> map (abs_def ctxt') |> Variable.export_terms ctxt' ctxt |> Element.eq_term_morphism (Proof_Context.theory_of ctxt) - |> the_default Morphism.identity; + |> Morphism.default; val ctxt'' = Locale.activate_declarations (loc, inst_morph $> rewrite_morph) ctxt; val eqnss' = eqnss @ [attrss ~~ Variable.export_terms ctxt' ctxt eqns']; in (i + 1, insts', eqnss', ctxt'') end; diff -r d555983054f3 -r b6c886b7184f src/Pure/Isar/locale.ML --- a/src/Pure/Isar/locale.ML Mon May 15 20:37:53 2023 +0200 +++ b/src/Pure/Isar/locale.ML Mon May 15 20:55:17 2023 +0200 @@ -538,7 +538,7 @@ |> pair (Idents.get context) |> roundup (Context.theory_of context) (activate_notes_trace init_element Morphism.transfer_morphism'' context export) - (the_default Morphism.identity export) dep + (Morphism.default export) dep |-> Idents.put |> Context_Position.restore_visible_generic context; diff -r d555983054f3 -r b6c886b7184f src/Pure/morphism.ML --- a/src/Pure/morphism.ML Mon May 15 20:37:53 2023 +0200 +++ b/src/Pure/morphism.ML Mon May 15 20:55:17 2023 +0200 @@ -32,6 +32,7 @@ val thm: morphism -> thm -> thm val cterm: morphism -> cterm -> cterm val identity: morphism + val default: morphism option -> morphism val compose: morphism -> morphism -> morphism val transform: morphism -> (morphism -> 'a) -> morphism -> 'a val form: (morphism -> 'a) -> 'a @@ -106,6 +107,8 @@ val identity = morphism "" {binding = [], typ = [], term = [], fact = []}; +val default = the_default identity; + fun compose phi1 phi2 = if is_identity phi1 then phi2 else if is_identity phi2 then phi1