PRELIMINARY / DO NOT MERGE: adapt to Isabelle_25-Jul-2026 (Isabelle2026 pre-release) - #272
Draft
lawrencecpaulson wants to merge 1 commit into
Draft
Conversation
DO NOT MERGE YET. This records the change set needed to build AutoCorrode under
the Isabelle_25-Jul-2026 pre-release. Further Isabelle2026 pre-releases are
expected, so this will need re-checking, and it should not land until the
transition to Isabelle2026 proper.
* ML simplifier: the "addsimps"/"delsimps"/"addsimprocs"/"delsimprocs"
infixes are discontinued, and clear_simpset, simpset_map, merge_ss and the
proc_kind constructors are now qualified under Simplifier. Raw_Simplifier
.map_ss became Simplifier.map_simpset, and Simplifier.add_proc takes a
single simproc, so simproc lists need a fold.
* Specification: the trailing interactive-mode flag moved into a leading
record argument, so definition/definition_cmd take {verbose} and
theorems_cmd takes {verbose, kind}.
* Outer_Syntax.local_theory' was removed along with the flag it supplied.
* Toplevel.command_exception lost its bool argument; interactive mode and
parallel_proofs moved from the Printer/Multithreading refs to the new
Interactive structure; OS.Process.sleep is no longer exposed (Time.sleep).
* Thy_Info.use_theories takes an Options.update per import rather than one
global Options.T. Ir.load_theory therefore sets record_theories for the
requested theory only; its ancestors keep whatever the heap was built with.
* Name_Space.markup became Name_Space.markups, returning a Markup.T list.
* HOL renamed the list constant "enumerate" to "indexed_from".
* I/Q jEdit plugin: PIDE.editor is gone (JEdit_Editor is now a top-level
object), PIDE.options is the resolved Options rather than JEdit_Options, the
editor operations take a JEdit_Editor.Context instead of a View,
Node_Status.command_timings is keyed by command id (resolved via
Snapshot.get_command), and Rendering is abstract, so JEdit_Rendering -- which
accepts any Document_Model -- also covers the former File_Model fallback.
Scala 3.3.8 with -Werror additionally rejects some latent unused imports,
parameters and default arguments.
* The iq/ic2/isabelle-assistant Makefiles no longer hardcode the Isabelle
version or the contrib Scala version. Note for review: their
ISABELLE_VERSION default now names the pre-release, which will want changing
to Isabelle2026 when that is out.
Verified by building the AutoCorrode session, and by building and interactively
checking the full downstream NICE proof stack against it.
Signed-off-by: Lawrence Paulson <lawrpau@amazon.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Warning
PRELIMINARY — DO NOT MERGE.
This is opened as a draft to record the precise change set now. It targets the
Isabelle_25-Jul-2026pre-release, not a released Isabelle. FurtherIsabelle2026 pre-releases are expected, so this will need re-checking against
each of them, and it should not land until the transition to Isabelle2026 proper.
What this is
The set of source changes required to build AutoCorrode under the current
Isabelle2026 pre-release. It applies cleanly to
main— none of the 25 touchedfiles have changed upstream since the snapshot this was developed against.
Changes, by cause
ML simplifier API (
Crush/{crush,base,seplog}.ML,Misc/*,Autogen/AutoLocality.thy,Byte_Level_Encoding/*)addsimps/delsimps/addsimprocs/delsimprocsinfixes are discontinuedclear_simpset,simpset_map,merge_ssand theproc_kindconstructors are nowqualified under
SimplifierRaw_Simplifier.map_ss→Simplifier.map_simpsetSimplifier.add_proctakes a single simproc, so simproc lists need afoldSpecification(Autogen/AutoLens.thy,Enum_Theory/enum_cmd.ML,Misc/*,Shallow_Micro_Rust/Simple_Word_Enum_uRust.thy)definition/definition_cmdtake{verbose},theorems_cmdtakes{verbose, kind}Isar / toplevel (
Shallow_Micro_Rust/Micro_Rust_Shallow_Embedding.thy,ir/ir.ML,iq/Isar_Explore.thy)Outer_Syntax.local_theory'was removed along with the flag it suppliedToplevel.command_exceptionlost itsboolargumentparallel_proofsmoved from thePrinter/Multithreadingrefs into the new
InteractivestructureOS.Process.sleepis no longer exposed to user-space ML →Time.sleepThy_Info.use_theoriestakes anOptions.updateper import instead of oneglobal
Options.T.Ir.load_theorytherefore setsrecord_theoriesfor therequested theory only; its ancestors keep whatever the heap was built with.
This is a small behavioural narrowing and is the one change here worth a second
opinion.
Name_Space.markup→Name_Space.markups, returning aMarkup.T listHOL (
Micro_Rust_Examples/Linked_List_Executable_{Hybrid,Physical_Memory}.thy,Misc/Case_for_Typedefs.thy)enumeratewas renamedindexed_from, with the correspondinglemma renames
I/Q jEdit plugin (
iq/src/*.scala)PIDE.editoris gone;JEdit_Editoris now a top-level objectPIDE.optionsis the resolvedOptions, no longerJEdit_Options(drop.value)Output_Area,current_node_snapshot,current_commandandHyperlink.followtake a
JEdit_Editor.Contextinstead of a bareViewDocument_Status.Node_Status.command_timingsis keyed by command id, notCommand; resolved viaSnapshot.get_commandRenderingis now abstract (it needs agui_style).JEdit_Renderingaccepts anyDocument_Model, so it also covers the formerFile_Modelfallback.-Werroradditionally rejects some latent unused imports,parameters and default arguments (note:
_-prefixing does not suppress this;@scala.annotation.unuseddoes)Build glue (
iq/Makefile,ic2/Makefile,isabelle-assistant/Makefile)ISABELLE_VERSIONdefault now names the pre-release. Thatwill want changing to
Isabelle2026when it is released.How it was checked
AutoCorrodesession buildsadditionally checked interactively
Not checked: the
ic2Scala component and theisabelle-assistantplugin were notcompiled, only their Makefiles adjusted. Isabelle/Scala's move to Explicit Nulls and
the new
Loggerarguments may yet affect them.