Files
LithosAnanake/proof/ROOT
T
Robert Allan James eb46da65f5 proof/: add lifecycle_words_hosted.c, defer_words.c, log_words.c coverage
StarForth_Lifecycle_Words_Hosted.thy: BIRTH/KILL/PAUSE/RESUME/USE are all
the SAME vm_state transition (pop u, pop caddr, log -- the C's own
"kernel build skips this file via Makefile glob" framing means this
covers only the hosted stand-ins; the real kernel capsule-birth-protocol
words live in src/starkernel/, out of this sweep's scope). First file in
the sweep where every registered word's full vm_state footprint is
captured with no deferred remainder -- name extraction is a pure memory
read, logging is pure I/O. Models the genuine partial-pop-before-error
case (C doesn't check vm->error between its two vm_pop calls).

StarForth_Defer_Words.thy: another duplicate-registration finding, same
class as defining_words.c vs dictionary_manipulation_words.c's [/]/STATE
-- word_registry.c registers this file's DEFER/IS/DEFER@ (Module 27)
AFTER defining_words.c's (Module 17), unconditionally in BOTH builds
(defer_words.c has no __STARKERNEL__ guard despite CLAUDE.md's "kernel-
only addition" framing; the hosted Makefile's SRC wildcard includes it
regardless). This makes StarForth_Defining_Words.thy's DEFER/IS/DEFER@
sentinels describe dead, shadowed code -- corrected in place with
cross-references. The live version hits the same three model gaps
anyway (dictionary-entry creation, data-field addressing, mutable
per-entry dispatch), so only IS's stack-underflow guard is new.

StarForth_Log_Words.thy: the five level-constant pushes, LOG-LEVEL!'s
guard+clamp, and all five LOG-*-STR words fully modelled (the STR words
share lifecycle_words_hosted.c's "pop2 + bounds-check, no vm_state write"
shape). LOG-LEVEL@, the (do-log-N) runtime words (raw threaded-code
pointer, same class as LIT), and the LOG-*" immediates (TIB + compile-
time dependencies) deferred. Finding: LOG-ERROR..DEBUG and LOG-LEVEL@
push with no overflow guard -- more instances of the pattern first found
at DECAY-RATE@.

Suite now 51 theories, green.
2026-08-14 16:24:34 -04:00

54 lines
1.6 KiB
Plaintext

session "StarForth" = "HOL-Library" +
description "Formal proofs of StarForth FORTH-79 primitive correctness and physics-loop invariants"
theories [document = false]
StarForth_Base
StarForth_Q48_16
StarForth_Stack_Words
StarForth_Double_Words
StarForth_Arithmetic_Words
StarForth_Mixed_Arithmetic_Words
StarForth_Logical_Words
StarForth_Return_Stack_Words
StarForth_Memory_Words
StarForth_Dictionary_Words
StarForth_Dictionary_Manipulation_Words
StarForth_Defining_Words
StarForth_Control_Words
StarForth_String_Words
StarForth_Block_Words
StarForth_IO_Words
StarForth_Editor_Words
StarForth_Format_Words
StarForth_System_Words
StarForth_Vocabulary_Words
StarForth_Mutex
StarForth_Transition
StarForth_Dictionary_Heat_Diagnostic_Words
StarForth_Physics_Freeze_Words
StarForth_Physics_Diagnostic_Words
StarForth_Physics_Benchmark_Words
StarForth_Physics_Pipelining_Diagnostic_Words
StarForth_StarForth_Words
StarForth_Framebuffer_Words
StarForth_Keyboard_Words
StarForth_Scroll_Words
StarForth_TTF_Words
StarForth_Lifecycle_Words_Hosted
StarForth_Defer_Words
StarForth_Log_Words
StarForth_Loop1_Heat
StarForth_Loop2_Window
StarForth_Loop3_Decay
StarForth_Loop4_Pipeline
StarForth_Loop5_WinInf
StarForth_Loop6_DecayInf
StarForth_Loop7_Heartrate
StarForth_Concurrent
StarForth_Correctness
ACL_Pin_Monotone
ACL_Inherit_Clears_Pin
ACL_TTL_Bounded
ACL_Emergency_Bypass
ACL_No_Escalation
StarForth_ACL_Words