equal
deleted
inserted
replaced
59 (Attrib.binding * (thm list * Attrib.src list) list) list -> |
59 (Attrib.binding * (thm list * Attrib.src list) list) list -> |
60 (Attrib.binding * (thm list * Attrib.src list) list) list |
60 (Attrib.binding * (thm list * Attrib.src list) list) list |
61 val eq_morphism: theory -> thm list -> morphism |
61 val eq_morphism: theory -> thm list -> morphism |
62 val transfer_morphism: theory -> morphism |
62 val transfer_morphism: theory -> morphism |
63 val init: context_i -> Context.generic -> Context.generic |
63 val init: context_i -> Context.generic -> Context.generic |
64 val activate: (typ, term, Facts.ref) ctxt list -> Proof.context -> context_i list * Proof.context |
64 val activate_i: context_i -> Proof.context -> context_i * Proof.context |
65 val activate_i: context_i list -> Proof.context -> context_i list * Proof.context |
65 val activate: (typ, term, Facts.ref) ctxt -> Proof.context -> context_i * Proof.context |
66 end; |
66 end; |
67 |
67 |
68 structure Element: ELEMENT = |
68 structure Element: ELEMENT = |
69 struct |
69 struct |
70 |
70 |
514 in context' end); |
514 in context' end); |
515 |
515 |
516 |
516 |
517 (* activate *) |
517 (* activate *) |
518 |
518 |
519 local |
519 fun activate_i elem ctxt = |
520 |
520 let |
521 fun gen_activate prep_facts raw_elems ctxt = |
521 val elem' = map_ctxt_attrib Args.assignable elem; |
522 let |
522 val ctxt' = Context.proof_map (init elem') ctxt; |
523 fun activate elem ctxt' = |
523 in (map_ctxt_attrib Args.closure elem', ctxt') end; |
524 let val elem' = map_ctxt_attrib Args.assignable (prep_facts ctxt' elem) |
524 |
525 in (elem', Context.proof_map (init elem') ctxt') end; |
525 fun activate raw_elem ctxt = |
526 val (elems, ctxt') = fold_map activate raw_elems ctxt; |
526 let val elem = raw_elem |> map_ctxt |
527 in (elems |> map (map_ctxt_attrib Args.closure), ctxt') end; |
|
528 |
|
529 fun prep_facts ctxt = |
|
530 map_ctxt |
|
531 {binding = tap Name.of_binding, |
527 {binding = tap Name.of_binding, |
532 typ = I, |
528 typ = I, |
533 term = I, |
529 term = I, |
534 pattern = I, |
530 pattern = I, |
535 fact = ProofContext.get_fact ctxt, |
531 fact = ProofContext.get_fact ctxt, |
536 attrib = Attrib.intern_src (ProofContext.theory_of ctxt)}; |
532 attrib = Attrib.intern_src (ProofContext.theory_of ctxt)} |
537 |
533 in activate_i elem ctxt end; |
538 in |
|
539 |
|
540 fun activate x = gen_activate prep_facts x; |
|
541 fun activate_i x = gen_activate (K I) x; |
|
542 |
534 |
543 end; |
535 end; |
544 |
|
545 end; |
|