2018-08-28 10:48:07 +00:00
|
|
|
theory Attributes
|
|
|
|
imports "../../ontologies/Conceptual"
|
|
|
|
begin
|
|
|
|
|
|
|
|
section\<open>Elementary Creation of DocItems and Access of their Attibutes\<close>
|
|
|
|
|
|
|
|
text\<open>Current status:\<close>
|
|
|
|
print_doc_classes
|
|
|
|
print_doc_items
|
|
|
|
|
|
|
|
(* corresponds to low-level accesses : *)
|
|
|
|
ML\<open>
|
2018-10-05 07:45:24 +00:00
|
|
|
val {docobj_tab={tab = x, ...},
|
|
|
|
docclass_tab,
|
2018-10-08 13:13:47 +00:00
|
|
|
ISA_transformer_tab,
|
|
|
|
monitor_tab} = DOF_core.get_data @{context};
|
2018-08-28 10:48:07 +00:00
|
|
|
Symtab.dest x;
|
|
|
|
"==============================================";
|
2018-10-05 07:45:24 +00:00
|
|
|
Symtab.dest docclass_tab;
|
2018-08-28 10:48:07 +00:00
|
|
|
\<close>
|
|
|
|
|
|
|
|
text*[dfgdfg::B, Conceptual.B.x ="''f''", y = "[''sdf'']"]\<open> sdfsdfs sdfsdf sdfsdf @{thm refl} \<close>
|
|
|
|
|
|
|
|
typ "C"
|
|
|
|
typ "D"
|
2018-10-16 08:44:59 +00:00
|
|
|
|
|
|
|
term "C"
|
|
|
|
|
2018-08-28 10:48:07 +00:00
|
|
|
ML\<open>val Type("Conceptual.B.B_ext",[Type("Conceptual.C.C_ext",t)]) = @{typ "C"};
|
|
|
|
val @{typ "D"} = ODL_Command_Parser.cid_2_cidType "Conceptual.D" @{theory};
|
|
|
|
val @{typ "E"}= ODL_Command_Parser.cid_2_cidType "Conceptual.E" @{theory};
|
|
|
|
\<close>
|
|
|
|
|
|
|
|
text*[dfgdfg2::C, z = "None"]\<open> sdfsdfs sdfsdf sdfsdf @{thm refl} \<close>
|
|
|
|
|
|
|
|
text*[omega::E, x = "''def''"]\<open> sdfsdfs sdfsdf sdfsdf @{thm refl} \<close>
|
|
|
|
|
2018-08-30 10:53:02 +00:00
|
|
|
text\<open> As mentioned in @{docitem_ref \<open>dfgdfg\<close>} \<close>
|
2018-08-28 10:48:07 +00:00
|
|
|
|
|
|
|
|
|
|
|
term "A.x (undefined\<lparr>A.x := 3\<rparr>)"
|
|
|
|
term "B.x ((undefined::C)\<lparr>B.y := [''sdf'']\<rparr>)"
|
|
|
|
term "C.z ((undefined::C)\<lparr>B.y := [''sdf''], z:= Some undefined\<rparr>)"
|
|
|
|
|
|
|
|
ML\<open>
|
|
|
|
val SOME {def_occurrence = "Conceptual.A", long_name = "Conceptual.A.x", typ = t, def_pos}
|
|
|
|
= DOF_core.get_attribute_info "Conceptual.A" "x" @{theory};
|
|
|
|
DOF_core.get_attribute_info "Conceptual.B" "x" @{theory};
|
|
|
|
DOF_core.get_attribute_info "Conceptual.B" "y" @{theory};
|
|
|
|
DOF_core.get_attribute_info "Conceptual.C" "x" @{theory};
|
|
|
|
val SOME {def_occurrence = "Conceptual.C", long_name = "Conceptual.B.y", typ = t', def_pos}
|
|
|
|
= DOF_core.get_attribute_info "Conceptual.C" "y" @{theory};
|
|
|
|
(* this is the situation where an attribute is defined in C, but due to inheritance
|
|
|
|
from B, where it is firstly declared which results in a different long_name. *)
|
|
|
|
DOF_core.get_attribute_info "Conceptual.C" "z" @{theory};
|
|
|
|
\<close>
|
|
|
|
|
|
|
|
|
|
|
|
ML\<open>
|
2018-08-30 10:53:02 +00:00
|
|
|
DOF_core.get_value_local "sdf" @{context};
|
|
|
|
DOF_core.get_value_local "sdfg" @{context};
|
|
|
|
DOF_core.get_value_local "xxxy" @{context};
|
2018-08-28 10:48:07 +00:00
|
|
|
DOF_core.get_value_local "dfgdfg" @{context};
|
|
|
|
DOF_core.get_value_local "omega" @{context};
|
|
|
|
\<close>
|
|
|
|
|
|
|
|
text\<open>A not too trivial test: default y -> [].
|
|
|
|
At creation : x -> "f", y -> "sdf".
|
|
|
|
The latter wins at access time.
|
|
|
|
Then @{term "t"}: creation of a multi inheritance object omega,
|
|
|
|
triple updates, the last one wins.\<close>
|
2018-08-30 10:53:02 +00:00
|
|
|
ML\<open>val s = map HOLogic.dest_string (HOLogic.dest_list @{docitem_attr y::dfgdfg});
|
|
|
|
val t = HOLogic.dest_string (@{docitem_attr x::omega}); \<close>
|
2018-08-28 10:48:07 +00:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
section\<open>Mutation of Attibutes in DocItems\<close>
|
|
|
|
|
2018-08-30 10:53:02 +00:00
|
|
|
ML\<open> val Const("Groups.zero_class.zero", @{typ "int"}) = @{docitem_attr a2::omega} \<close>
|
2018-08-28 10:48:07 +00:00
|
|
|
|
|
|
|
update_instance*[omega::E, a2+="1"]
|
|
|
|
|
2018-09-03 18:56:08 +00:00
|
|
|
ML\<open> val (s as Const("Groups.one_class.one", @{typ "int"}))= @{docitem_attr a2 :: omega} \<close>
|
2018-08-28 10:48:07 +00:00
|
|
|
|
|
|
|
update_instance*[omega::E, a2+="6"]
|
|
|
|
|
2018-08-30 10:53:02 +00:00
|
|
|
ML\<open> @{docitem_attr a2::omega};
|
|
|
|
val s = HOLogic.dest_number @{docitem_attr a2::omega} \<close>
|
2018-08-28 10:48:07 +00:00
|
|
|
|
|
|
|
update_instance*[omega::E, x+="''inition''"]
|
|
|
|
|
2018-08-30 10:53:02 +00:00
|
|
|
ML\<open> val s = HOLogic.dest_string ( @{docitem_attr x::omega}) \<close>
|
2018-08-28 10:48:07 +00:00
|
|
|
|
|
|
|
update_instance*[omega::E, y+="[''defini'',''tion'']"]
|
|
|
|
|
|
|
|
update_instance*[omega::E, y+="[''en'']"]
|
|
|
|
|
|
|
|
ML\<open> val s = map HOLogic.dest_string (HOLogic.dest_list @{docitem_attr y::omega}); \<close>
|
|
|
|
|
|
|
|
section\<open>Simulation of a Monitor\<close>
|
|
|
|
|
|
|
|
open_monitor*[figs1::figure_group,
|
|
|
|
anchor="''fig-demo''",
|
|
|
|
caption="''Sample ''"]
|
|
|
|
|
2018-10-05 07:45:24 +00:00
|
|
|
figure*[fig_A::figure, spawn_columns=False,
|
|
|
|
relative_width="90",
|
2018-08-28 10:48:07 +00:00
|
|
|
src="''figures/A.png''"]
|
|
|
|
\<open> The A train \ldots \<close>
|
|
|
|
|
2018-10-05 07:45:24 +00:00
|
|
|
figure*[fig_B::figure,
|
|
|
|
spawn_columns=False,relative_width="90",
|
2018-08-28 10:48:07 +00:00
|
|
|
src="''figures/B.png''"]
|
|
|
|
\<open> The B train \ldots \<close>
|
|
|
|
|
2018-10-02 08:28:24 +00:00
|
|
|
close_monitor*[figs1]
|
2018-08-28 10:48:07 +00:00
|
|
|
|
2018-10-11 11:38:32 +00:00
|
|
|
text\<open>Resulting trace in figs1: \<close>
|
2018-10-16 10:23:36 +00:00
|
|
|
ML\<open>@{trace_attribute figs1}\<close>
|
2018-08-28 10:48:07 +00:00
|
|
|
|
|
|
|
print_doc_items
|
2018-10-08 13:13:47 +00:00
|
|
|
print_doc_classes
|
|
|
|
|
|
|
|
ML\<open> DOF_core.get_object_global "sdf" @{theory};
|
|
|
|
fold_aterms Term.add_const_names;
|
|
|
|
fold_aterms (fn Const c => insert (op =) c | _ => I);
|
|
|
|
val add_consts = fold_aterms (fn Const(c as (_,@{typ "doc_class rexp"})) => insert (op =) c
|
|
|
|
| _ => I);
|
|
|
|
fun compute_enabled_set cid thy =
|
|
|
|
case DOF_core.get_doc_class_global cid thy of
|
|
|
|
SOME X => map fst (fold add_consts (#rex X) [])
|
|
|
|
| NONE => error("Internal error: class id undefined. ");
|
|
|
|
|
|
|
|
compute_enabled_set "Isa_DOF.figure_group" @{theory}
|
|
|
|
\<close>
|
2018-08-28 10:48:07 +00:00
|
|
|
|
|
|
|
end
|