proof/: add StarForth_Dictionary_Manipulation_Words.thy ([/]/STATE/SMUDGE/HIDDEN/INTERPRET)

Covers the mode/flag half of dictionary_manipulation_words.c that's provable
against the existing vm_mode/dictionary/latest_id model. The raw-pointer
DictEntry navigation half (>BODY/>NAME/NAME>/>LINK/LINK>/CFA/LFA/NFA/PFA/
TRAVERSE/FIND/') is left unmodelled -- same class of gap as control_words.c's
deferred vm_ip/return-stack-as-raw-pointers issue, since the abstract
dict_entry record is word_id-indexed, not addressed, and has no counterpart
for struct-relative pointer arithmetic (name_len, link, body offset).

Genuine findings recorded in comments, not fixed:
- [, ], STATE, and INTERPRET all read/write a file-scope `static cell_t
  state_variable` -- NOT vm->state_var, the real per-VM STATE field used
  everywhere else in the interpreter. In the Tripod multi-VM fleet this
  static is shared across every VM instance, not per-VM.
- dictionary_m_word_hidden's dead #else branch (unreachable since
  WORD_HIDDEN is always defined) calls a function that doesn't exist
  (dictionary_word_smudge vs. the real static dictionary_m_word_smudge).

27 theory files verify with zero errors.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
Robert Allan James
2026-08-13 19:33:42 -04:00
co-authored by Claude Sonnet 5
parent 92474c5219
commit 77d8f0606a
2 changed files with 235 additions and 0 deletions
+1
View File
@@ -11,6 +11,7 @@ session "StarForth" = "HOL-Library" +
StarForth_Return_Stack_Words
StarForth_Memory_Words
StarForth_Dictionary_Words
StarForth_Dictionary_Manipulation_Words
StarForth_Mutex
StarForth_Transition
StarForth_Loop1_Heat