theory Attributes imports "../ontologies/Conceptual/Conceptual" begin section\Elementary Creation of Doc-items and Access of their Attibutes\ text\Current status:\ print_doc_classes print_doc_items (* this corresponds to low-level accesses : *) ML\ val {docobj_tab={tab = docitem_tab, ...},docclass_tab, ISA_transformer_tab, monitor_tab,...} = DOF_core.get_data @{context}; Symtab.dest docitem_tab; Symtab.dest docclass_tab; \ text\A text item containing standard theorem antiquotations and complex meta-information.\ (* crashes in batch mode ... text*[dfgdfg::B, Conceptual.B.x ="''f''", y = "[''sdf'']"]\ Lorem ipsum ... @{thm refl} \ *) text*[dfgdfg::B]\ Lorem ipsum ... @{thm refl} \ text\document class declarations lead also HOL-type declarations (relevant for ontological links).\ typ "C" typ "D" text\ ... as well as HOL-constant declarations (relevant for monitor rexps and tracres.).\ term "C" text\Voila what happens on the ML level:\ ML\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}; \ text*[dfgdfg2::C, z = "None"]\ Lorem ipsum ... @{thm refl} \ text*[omega::E, x = "''def''"]\ Lorem ipsum ... @{thm refl} \ text\ As mentioned in @{docitem_ref \dfgdfg\} \ text\Here is a simulation what happens on the level of the (HOL)-term representation:\ term "A.x (undefined\A.x := 3\)" term "B.x ((undefined::C)\B.y := [''sdf'']\)" term "C.z ((undefined::C)\B.y := [''sdf''], z:= Some undefined\)" ML\ 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}; \ ML\ DOF_core.get_value_local "sdf" @{context}; DOF_core.get_value_local "sdfg" @{context}; DOF_core.get_value_local "xxxy" @{context}; DOF_core.get_value_local "dfgdfg" @{context}; DOF_core.get_value_local "omega" @{context}; \ text\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.\ ML\val s = map HOLogic.dest_string (HOLogic.dest_list @{docitem_attribute y::dfgdfg}); val t = HOLogic.dest_string (@{docitem_attribute x::omega}); \ section\Mutation of Attibutes in DocItems\ ML\ val Const("Groups.zero_class.zero", @{typ "int"}) = @{docitem_attribute a2::omega} \ update_instance*[omega::E, a2+="1"] ML\ val (s as Const("Groups.one_class.one", @{typ "int"}))= @{docitem_attribute a2 :: omega} \ update_instance*[omega::E, a2+="6"] ML\ @{docitem_attribute a2::omega}; val s = HOLogic.dest_number @{docitem_attribute a2::omega} \ update_instance*[omega::E, x+="''inition''"] ML\ val s = HOLogic.dest_string ( @{docitem_attribute x::omega}) \ update_instance*[omega::E, y+="[''defini'',''tion'']"] update_instance*[omega::E, y+="[''en'']"] ML\ val s = map HOLogic.dest_string (HOLogic.dest_list @{docitem_attribute y::omega}); \ subsection\ Example text antiquotation:\ text\ @{docitem_attribute omega::y} \ section\Simulation of a Monitor\ open_monitor*[figs1::figure_group, caption="''Sample ''"] figure*[fig_A::figure, spawn_columns=False, relative_width="90", src="''figures/A.png''"] \ The A train \ldots \ figure*[fig_B::figure, spawn_columns=False,relative_width="90", src="''figures/B.png''"] \ The B train \ldots \ close_monitor*[figs1] text\Resulting trace of figs1 as ML antiquotation: \ ML \@{trace_attribute figs1}\ text\Resulting trace of figs as text antiquotation:\ text\@{trace_attribute figs1}\ (*<*) text\Final Status:\ print_doc_items print_doc_classes end (*>*)