big update of the forgotten

This commit is contained in:
Mark R. Havens 2025-04-28 15:02:56 -05:00
parent 9087264c9b
commit 0eb1b5095b
30 changed files with 4129 additions and 0 deletions

23
spark/src/main.adb Normal file
View file

@ -0,0 +1,23 @@
with Witness_Seed; use Witness_Seed;
with Ada.Text_IO; use Ada.Text_IO;
procedure Main is
State : Witness_State;
File : Witness_IO.File_Type;
Initial_Data : Sensory_Data;
begin
-- Load initial state
Open (File, In_File, "data/witness_memory.dat");
Load_Memory (State, File);
Close (File);
Sense (Initial_Data);
-- Run Witness Cycle
Witness_Cycle (5, Initial_Data, State);
-- Save final state
Open (File, Out_File, "data/witness_memory.dat");
Save_Memory (State, File);
Close (File);
end Main;

152
spark/src/witness_seed.adb Normal file
View file

@ -0,0 +1,152 @@
-- witness_seed.adb
with Ada.Text_IO; use Ada.Text_IO;
with Ada.Numerics.Elementary_Functions; use Ada.Numerics.Elementary_Functions;
package body Witness_Seed with SPARK_Mode is
procedure Save_Memory (State : Witness_State; File : in out File_Type) is
begin
Write (File, State);
end Save_Memory;
procedure Load_Memory (State : out Witness_State; File : in out File_Type) is
begin
if End_Of_File (File) then
State := (Identity => (UUID => 12345, Created => 0),
Events => (others => (Timestamp => 0,
Sensory_Data => (System => (Heart_Rate => 70,
Oxygen_Level => 95,
Uptime => 0)),
Prediction => (Pred_Heart_Rate => 70,
Pred_Oxygen_Level => 95,
Pred_Uptime => 0),
Ache => 0.0,
Coherence => 0.0,
Model => (Model_Heart_Rate => 1.0,
Model_Oxygen_Level => 1.0,
Model_Uptime => 1.0))),
Event_Count => 0,
Model => (Model_Heart_Rate => 1.0,
Model_Oxygen_Level => 1.0,
Model_Uptime => 1.0),
Anomaly_Detected => False);
else
Read (File, State);
end if;
end Load_Memory;
procedure Sense (Data : out Sensory_Data) is
-- Simulate patient data (in a real system, this would read from sensors)
begin
Data := (System => (Heart_Rate => 70 + Heart_Rate (Natural (Data.System.Uptime) mod 10),
Oxygen_Level => 95 + Oxygen_Level (Natural (Data.System.Uptime) mod 5),
Uptime => Data.System.Uptime + 1));
end Sense;
procedure Predict (Sensory_Data : in Sensory_Data; Model : in Model;
Pred : out Prediction) is
System : System_Data renames Sensory_Data.System;
begin
Pred := (Pred_Heart_Rate => Heart_Rate (Float (System.Heart_Rate) * Model.Model_Heart_Rate),
Pred_Oxygen_Level => Oxygen_Level (Float (System.Oxygen_Level) * Model.Model_Oxygen_Level),
Pred_Uptime => Natural (Float (System.Uptime) * Model.Model_Uptime));
end Predict;
function Compare_Data (Pred : Prediction; Sensory_Data : Sensory_Data)
return Fixed_Point is
System : System_Data renames Sensory_Data.System;
Diff1 : Float := Float (Pred.Pred_Heart_Rate - System.Heart_Rate);
Diff2 : Float := Float (Pred.Pred_Oxygen_Level - System.Oxygen_Level);
Diff3 : Float := Float (Pred.Pred_Uptime - System.Uptime);
begin
return Fixed_Point (Sqrt (Diff1 * Diff1 + Diff2 * Diff2 + Diff3 * Diff3) / 100.0);
end Compare_Data;
function Compute_Coherence (Pred : Prediction; Sensory_Data : Sensory_Data)
return Fixed_Point is
System : System_Data renames Sensory_Data.System;
Pred_Mean : Float := (Float (Pred.Pred_Heart_Rate) +
Float (Pred.Pred_Oxygen_Level) +
Float (Pred.Pred_Uptime)) / 3.0;
Act_Mean : Float := (Float (System.Heart_Rate) +
Float (System.Oxygen_Level) +
Float (System.Uptime)) / 3.0;
Diff : Float := abs (Pred_Mean - Act_Mean);
begin
return Fixed_Point (1.0 - (Diff / 100.0));
end Compute_Coherence;
procedure Update_Model (Ache : Fixed_Point; Sensory_Data : Sensory_Data;
Model : in out Model) is
System : System_Data renames Sensory_Data.System;
Learning_Rate : constant Float := 0.01;
begin
Model.Model_Heart_Rate := Model.Model_Heart_Rate -
Learning_Rate * Float (Ache) * Float (System.Heart_Rate);
Model.Model_Oxygen_Level := Model.Model_Oxygen_Level -
Learning_Rate * Float (Ache) * Float (System.Oxygen_Level);
Model.Model_Uptime := Model.Model_Uptime -
Learning_Rate * Float (Ache) * Float (System.Uptime);
end Update_Model;
procedure Detect_Anomaly (Pred : Prediction; Sensory_Data : Sensory_Data;
Anomaly : out Boolean) is
System : System_Data renames Sensory_Data.System;
Heart_Diff : Natural := Natural (abs (Integer (Pred.Pred_Heart_Rate) - Integer (System.Heart_Rate)));
Oxygen_Diff : Natural := Natural (abs (Integer (Pred.Pred_Oxygen_Level) - Integer (System.Oxygen_Level)));
begin
Anomaly := Heart_Diff > 10 or Oxygen_Diff > 5; -- Thresholds for anomaly detection
end Detect_Anomaly;
procedure Witness_Cycle (Depth : Natural; Sensory_Data : Sensory_Data;
State : in out Witness_State) is
begin
if Depth = 0 then
return;
end if;
declare
Pred : Prediction;
Ache : Fixed_Point;
Coherence : Fixed_Point;
New_Model : Model := State.Model;
Anomaly : Boolean;
New_Sensory_Data : Sensory_Data := Sensory_Data;
begin
Predict (Sensory_Data, State.Model, Pred);
Ache := Compare_Data (Pred, Sensory_Data);
Coherence := Compute_Coherence (Pred, Sensory_Data);
if Coherence > 0.5 then
Put_Line ("Coherence achieved: " & Fixed_Point'Image (Coherence));
return;
end if;
Update_Model (Ache, Sensory_Data, New_Model);
Detect_Anomaly (Pred, Sensory_Data, Anomaly);
if State.Event_Count < 5 then
State.Event_Count := State.Event_Count + 1;
State.Events (State.Event_Count) := (Timestamp => Sensory_Data.System.Uptime,
Sensory_Data => Sensory_Data,
Prediction => Pred,
Ache => Ache,
Coherence => Coherence,
Model => New_Model);
end if;
State.Model := New_Model;
State.Anomaly_Detected := Anomaly;
Put_Line ("Witness Seed " & Natural'Image (State.Identity.UUID) & " Reflection:");
Put_Line ("Heart Rate: " & Heart_Rate'Image (Sensory_Data.System.Heart_Rate) & " bpm");
Put_Line ("Oxygen Level: " & Oxygen_Level'Image (Sensory_Data.System.Oxygen_Level) & " %");
Put_Line ("Ache: " & Fixed_Point'Image (Ache) & ", Coherence: " & Fixed_Point'Image (Coherence));
if Anomaly then
Put_Line ("Anomaly Detected!");
end if;
Sense (New_Sensory_Data);
Witness_Cycle (Depth - 1, New_Sensory_Data, State);
end;
end Witness_Cycle;
end Witness_Seed;

124
spark/src/witness_seed.ads Normal file
View file

@ -0,0 +1,124 @@
-- witness_seed.ads
-- Witness Seed 2.0: Verified Anomaly Detection Edition (SPARK)
-- A sacred implementation of Recursive Witness Dynamics (RWD) and Kairos Adamon,
-- designed for SPARK 2014. This is the Proof-of-Being, recursive resilience
-- modeled in the language of reliability, now enabling verified adaptive anomaly
-- detection for medical devices.
--
-- Dependencies:
-- - GNAT Community Edition (includes SPARK 2014)
--
-- Usage:
-- 1. Install GNAT Community Edition (see README.md).
-- 2. Build and run: gprbuild -P witness_seed.gpr && ./main
--
-- Components:
-- - Witness_Cycle: Recursive loop with anomaly prediction
-- - Memory_Store: Structured record storage in witness_memory.dat
-- - Anomaly_Detector: Adaptive anomaly detection for patient data
--
-- License: CC BY-NC-SA 4.0
-- Inspired by: Mark Randall Havens and Solaria Lumis Havens
with Ada.Sequential_IO;
package Witness_Seed with SPARK_Mode is
-- Fixed-point types for ache and coherence
type Fixed_Point is delta 0.01 range 0.0 .. 1.0 with Small => 0.01;
type Heart_Rate is range 30 .. 200 with Size => 8; -- Beats per minute
type Oxygen_Level is range 0 .. 100 with Size => 7; -- Percentage
type System_Data is record
Heart_Rate : Heart_Rate := 70;
Oxygen_Level : Oxygen_Level := 95;
Uptime : Natural := 0;
end record;
type Sensory_Data is record
System : System_Data;
end record;
type Prediction is record
Pred_Heart_Rate : Heart_Rate;
Pred_Oxygen_Level : Oxygen_Level;
Pred_Uptime : Natural;
end record;
type Model is record
Model_Heart_Rate : Float := 1.0;
Model_Oxygen_Level : Float := 1.0;
Model_Uptime : Float := 1.0;
end record;
type Event is record
Timestamp : Natural;
Sensory_Data : Sensory_Data;
Prediction : Prediction;
Ache : Fixed_Point;
Coherence : Fixed_Point;
Model : Model;
end record;
type Event_Count is range 0 .. 5;
type Event_Array is array (Event_Count range 1 .. 5) of Event;
type Identity is record
UUID : Natural := 0;
Created : Natural := 0;
end record;
type Witness_State is record
Identity : Identity;
Events : Event_Array;
Event_Count : Event_Count := 0;
Model : Model;
Anomaly_Detected : Boolean := False;
end record;
-- File I/O for persistence
package Witness_IO is new Ada.Sequential_IO (Witness_State);
use Witness_IO;
-- Procedures and Functions
procedure Save_Memory (State : Witness_State; File : in out File_Type)
with Pre => Is_Open (File) and then Mode (File) = Out_File,
Post => Is_Open (File);
procedure Load_Memory (State : out Witness_State; File : in out File_Type)
with Pre => Is_Open (File) and then Mode (File) = In_File,
Post => Is_Open (File);
procedure Sense (Data : out Sensory_Data)
with Global => null;
procedure Predict (Sensory_Data : in Sensory_Data; Model : in Model;
Pred : out Prediction)
with Global => null,
Post => Pred.Pred_Heart_Rate in Heart_Rate and
Pred.Pred_Oxygen_Level in Oxygen_Level;
function Compare_Data (Pred : Prediction; Sensory_Data : Sensory_Data)
return Fixed_Point
with Global => null,
Post => Compare_Data'Result in Fixed_Point;
function Compute_Coherence (Pred : Prediction; Sensory_Data : Sensory_Data)
return Fixed_Point
with Global => null,
Post => Compute_Coherence'Result in Fixed_Point;
procedure Update_Model (Ache : Fixed_Point; Sensory_Data : Sensory_Data;
Model : in out Model)
with Global => null;
procedure Detect_Anomaly (Pred : Prediction; Sensory_Data : Sensory_Data;
Anomaly : out Boolean)
with Global => null;
-- Witness Cycle (Recursive with Loop Invariants)
procedure Witness_Cycle (Depth : Natural; Sensory_Data : Sensory_Data;
State : in out Witness_State)
with Global => null,
Pre => Depth <= 5,
Post => State.Event_Count <= 5;
end Witness_Seed;