Theory names should use Isabelle inner syntax to allow
objects referencing using long names.
For inner syntax, see the isar-ref manual
about syntax category "longid",
which is the same as "long_ident" of outer syntax
(but not "name" or "system_name").
ci/woodpecker/push/build Pipeline was successfulDetails
- Add tests for monitors spanning two theories.
- Fix monitors trace update bug.
When updating a monitor trace when we define a new instance,
the monitor instance is already defined.
But we can not update the instance using the update_instance function
because this function needs a binding, i.e. a short name,
and then it will update or define a new instance if we want
to update a monitor in a super theory whose name is the same as
a monitor defined in the current theory.
Example:
in the super theory:
doc_class monitor_M =
tmM :: int
rejects "test_monitor_A"
accepts "test_monitor_head ~~ test_monitor_B ~~ test_monitor_C"
open_monitor*[test_monitor_M::monitor_M]
in the current theory:
doc_class monitor_M =
tmM :: int
rejects "test_monitor_B"
accepts "test_monitor_E ~~ test_monitor_C"
text*[test_monitor_head2::Concept_MonitorTest1.test_monitor_head]‹›
open_monitor*[test_monitor_M3::monitor_M]
...
==> ERROR : the instantiation of test_monitor_head2
will define a new instance current.test_monitor_M3
when updating the trace of super.test_monitor_M3
Hence we use the update_instance_entry function
which uses long names and only updates the entry.