Files
LithosAnanake/proof
Claude c36bd99e1e Fix EXECUTE/?/DUMP/TYPE/DECIMAL-HEX-OCTAL/ALIGN defects from proof sweep
proof/FINDINGS.md's Isabelle/HOL word-source sweep (§4) flagged five real
defects; this fixes all five and records resolution in that doc:

- EXECUTE (system_words.c): cast a popped cell straight to a DictEntry*
  and called through it with only a null check. Now validates via a new
  shared vm_dict_entry_ok(), promoted out of starforth_words.c's
  ENTROPY@/ENTROPY! guard (dictionary_management.c) so EXECUTE gets the
  same live-entry check.

- ? and DUMP (format_words.c): dereferenced the popped cell as a raw host
  pointer, bypassing vm_addr_ok entirely (out-of-VM-bounds read). Both now
  go through VM_ADDR/vm_addr_ok/vm_load_cell/vm_ptr like every other
  memory word (@, `,`, editor_words.c).

- TYPE (io_words.c): bounds check computed addr+count in signed 64-bit
  arithmetic, which can overflow and bypass the check on large operands.
  Replaced with vm_addr_ok(), which is written to avoid that overflow.

- DECIMAL/HEX/OCTAL (format_words.c): wrote only the BASE memory cell,
  never vm->base, the host-mirror field number-output words actually read
  via current_base() -- so these words silently affected number parsing
  but never printing. Now call the existing vm_set_base() (previously
  only used at boot init), which updates both. vm_get_base/vm_set_base
  promoted to public declarations in include/vm.h.

- ALIGN vs ALLOT/,/C,/2, (dictionary_words.c): disagreed on dictionary
  growth ceiling (2MB vs 5MB). Investigated which was correct rather than
  blindly widening: vm_get_block_addr() maps block N to
  vm->memory + N*BLOCK_SIZE across the full 5MB arena, and
  USER_BLOCKS_START (block 2048) lines up exactly with
  DICTIONARY_MEMORY_SIZE -- so ALLOT/,/C,/2, letting `here` grow past 2MB
  could silently corrupt live block/user data sharing that memory.
  Tightened ALLOT/,/C,/2, to DICTIONARY_MEMORY_SIZE to match ALIGN.

Verified: hosted (amd64) and kernel (amd64, __STARKERNEL__) both build
clean with -Wall -Werror; hosted POST suite 1012/1012 passing (0
regressions); manually exercised EXECUTE, ?/DUMP, TYPE, HEX/DECIMAL/OCTAL,
and large-ALLOT rejection in the REPL.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_014Qf6YcnHgaEtEygq3knx19
2026-09-05 14:07:11 +00:00
..

proof/

Isabelle/HOL theory files providing machine-checkable proofs of determinism and correctness for StarForth. 24 theory files covering all 7 feedback loops, core word categories, and the word-level ACL system.

Running proofs

isabelle build -D proof/

Requires an Isabelle installation. See docs/01-getting-started/DEVELOPER.md.

Theory files

Foundations

File Covers
StarForth_Base.thy Base definitions and type system
StarForth_Correctness.thy Overall correctness
StarForth_Transition.thy State transitions
StarForth_Concurrent.thy Concurrency properties
StarForth_Mutex.thy Mutual exclusion

Physics loops (17)

File Loop
StarForth_Loop1_Heat.thy Execution heat tracking
StarForth_Loop2_Window.thy Rolling window of truth
StarForth_Loop3_Decay.thy Linear decay
StarForth_Loop4_Pipeline.thy Word transition prediction
StarForth_Loop5_WinInf.thy Window width inference
StarForth_Loop6_DecayInf.thy Decay slope inference
StarForth_Loop7_Heartrate.thy Adaptive heartrate

Word categories

StarForth_Arithmetic_Words.thy, StarForth_Stack_Words.thy, StarForth_Logical_Words.thy, StarForth_Memory_Words.thy, StarForth_Return_Stack_Words.thy, StarForth_Q48_16.thy

ACL system (Phase 6)

File Property
ACL_Pin_Monotone.thy Pin is one-way
ACL_Inherit_Clears_Pin.thy Inheritance clears pin
ACL_TTL_Bounded.thy TTL stays within bounds
ACL_Emergency_Bypass.thy Emergency console bypass
ACL_No_Escalation.thy No privilege escalation

See also