15 end; |
15 end; |
16 |
16 |
17 structure Interpretation_With_Defs : INTERPRETATION_WITH_DEFS = |
17 structure Interpretation_With_Defs : INTERPRETATION_WITH_DEFS = |
18 struct |
18 struct |
19 |
19 |
20 fun note_eqns_register deps witss def_eqns attrss eqns export export' context = |
20 fun note_eqns_register deps witss def_eqns attrss eqns export export' = |
21 let |
21 let |
22 fun meta_rewrite context = |
22 fun meta_rewrite context = |
23 map (Local_Defs.meta_rewrite_rule (Context.proof_of context) #> Drule.abs_def) o |
23 map (Local_Defs.meta_rewrite_rule (Context.proof_of context) #> Drule.abs_def) o |
24 maps snd; |
24 maps snd; |
25 in |
25 in |
26 context |
26 Element.generic_note_thmss Thm.lemmaK |
27 |> Element.generic_note_thmss Thm.lemmaK |
|
28 (attrss ~~ map (fn eqn => [([Morphism.thm (export' $> export) eqn], [])]) eqns) |
27 (attrss ~~ map (fn eqn => [([Morphism.thm (export' $> export) eqn], [])]) eqns) |
29 |-> (fn facts => `(fn context => meta_rewrite context facts)) |
28 #-> (fn facts => `(fn context => meta_rewrite context facts)) |
30 |-> (fn eqns => fold (fn ((dep, morph), wits) => |
29 #-> (fn eqns => fold (fn ((dep, morph), wits) => |
31 fn context => |
30 fn context => |
32 Locale.add_registration (dep, morph $> Element.satisfy_morphism |
31 Locale.add_registration |
33 (map (Element.transform_witness export') wits)) |
32 (dep, morph $> Element.satisfy_morphism (map (Element.transform_witness export') wits)) |
34 (Element.eq_morphism (Context.theory_of context) (def_eqns @ eqns) |> |
33 (Element.eq_morphism (Context.theory_of context) (def_eqns @ eqns) |> |
35 Option.map (rpair true)) |
34 Option.map (rpair true)) |
36 export context) (deps ~~ witss)) |
35 export context) (deps ~~ witss)) |
37 end; |
36 end; |
38 |
37 |