Research-Stack/0-Core-Formalism/lean/Semantics/Semantics/SyntheticGeneticCoding.lean
2026-05-05 21:09:48 -05:00

605 lines
28 KiB
Text
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/- Copyright (c) 2026 Sovereign Research Stack. All rights reserved.
Released under Apache 2.0 license as described in the file LICENSE.
Authors: Research Stack Team
SyntheticGeneticCoding.lean — 0D(n) Symbol-Coding Objects for GCL Surfaces
This module treats all coding systems as purely information-theoretic 0D(n)
discrete objects: finite-length strings over finite alphabets.
These objects happen to borrow symbol-sets from coding techniques that nature
has been stress-testing for ~4.6 billion years. The biology is completely
ignored. Only information capacity, channel efficiency, redundancy profiles,
and compression bounds matter.
TYPE SYSTEM (Three-Layer Doctrine):
1. CodingQ — Canonical normalized coding atom. Type = Q0_64.
Range: [-1, 1). Resolution: 2^-63. Used for ALL coding-space values.
Properties: normalized, bounded, deterministic, fixed-point, comparable.
2. BioParamQ — Physical-ish fixed-point parameter, NOT a coding atom.
Type = Q16_16. Range: [-32768, 32767]. Resolution: 2^-16.
Used for raw source measurements: dimensions, charge, rigidity, temperature.
These values are >1, dimensioned, or negative — cannot be raw Q0_64.
3. BioCodingProjection — A normalized biological parameter projected into coding space.
Contains: optional raw BioParamQ + normalized CodingQ + scaleReceipt.
The projection map must be explicit and receipted.
WARDEN RULES:
- If field is marked coding_atom: type must be Q0_64.
- If field is raw physical/geometric/thermodynamic: type must not pretend to be
Q0_64 unless a normalization scale is declared.
- If Q0_64 value was produced from a raw parameter: require scale_receipt.
- If any canonical constructor uses Float: block promotion.
No float in canonical coding. Decimal constants enter as rational literals
or pre-scaled integers via ofRatio.
Per AGENTS.md §1.4: Q0_64 fixed-point for maximum precision dimensionless.
Per AGENTS.md §1.5: No float in canonical hot-path code.
Per AGENTS.md §2: PascalCase types, camelCase functions.
Per AGENTS.md §4: Every def has #eval witness or theorem.
-/
import Mathlib.Data.Nat.Basic
import Mathlib.Data.Real.Basic
import Semantics.FixedPoint
namespace Semantics.SyntheticGeneticCoding
open Semantics.Q16_16.Q0_64
open Semantics.Q16_16
-- ═══════════════════════════════════════════════════════════════════════════
-- §1 THREE-LAYER TYPE SYSTEM (CodingQ / BioParamQ / BioCodingProjection)
-- ═══════════════════════════════════════════════════════════════════════════
/-- Canonical normalized coding atom. Range [-1, 1). All coding values. -/
structure CodingQ where
value : Q0_64
deriving Repr, Inhabited, BEq, DecidableEq
/-- Physical-ish fixed-point parameter. NOT a coding atom.
Used for source-side measurements: dimensions, charge, rigidity, etc. -/
structure BioParamQ where
value : Q16_16
deriving Repr, Inhabited, BEq, DecidableEq
/-- A normalized biological parameter projected into coding space.
The projection map (raw → normalized) must be explicit and receipted. -/
structure BioCodingProjection where
raw? : Option BioParamQ -- Optional source measurement
normalized : CodingQ -- Projected value in Q0_64
scaleReceipt : String -- Provenance of normalization map
deriving Repr, Inhabited
-- ═══════════════════════════════════════════════════════════════════════════
-- §2 PROJECTION FUNCTIONS (Source → Coding)
-- ═══════════════════════════════════════════════════════════════════════════
/-- Direct rational projection: num/den → CodingQ with receipt.
No Float used. Receipt documents the normalization provenance. -/
def projectRatioToCodingQ (num : Nat) (den : Nat) (receipt : String) : BioCodingProjection :=
{ raw? := none,
normalized := CodingQ.mk (Q0_64.ofRatio num den),
scaleReceipt := receipt
}
-- ═══════════════════════════════════════════════════════════════════════════
-- §3 ALPHABET TYPE HIERARCHY (Pure Symbol Sets)
-- ═══════════════════════════════════════════════════════════════════════════
/-- Standard 4-symbol alphabet -/
inductive StandardAlphabet4 where
| A | C | G | T
deriving BEq, DecidableEq, Repr, Inhabited
/-- Expanded 8-symbol alphabet -/
inductive Alphabet8 where
| A | C | G | T | P | Z | B | S
deriving BEq, DecidableEq, Repr, Inhabited
/-- Encoding family identifier (pure channel type, no biology) -/
inductive EncodingFamily where
| fourSymbolBlock -- 4-symbol block codes
| eightSymbolBlock -- 8-symbol block codes
| sixteenSymbolBlock -- 16-symbol block codes
| binaryBlock -- 2-symbol binary codes
| custom : Nat → EncodingFamily -- N-symbol custom alphabet
deriving BEq, DecidableEq, Repr, Inhabited
/-- Base pairing constraint (structural compatibility, not chemistry) -/
inductive PairConstraint where
| strictComplement -- Must pair A↔T, C↔G style
| fourWay -- 4 orthogonal pairs (8-symbol)
| unrestricted -- Any symbol can follow any symbol
deriving BEq, DecidableEq, Repr
-- ═══════════════════════════════════════════════════════════════════════════
-- §4 CODE SPACE (Information Theory)
-- ═══════════════════════════════════════════════════════════════════════════
/-- Block code configuration: alphabet size and block length -/
structure BlockCodeConfig where
alphabetSize : Nat
blockLength : Nat
proofPositive : alphabetSize > 0 ∧ blockLength > 0
deriving Repr
/-- Number of possible codewords = |A|^L -/
def codeSpaceSize (alphabetSize : Nat) (blockLength : Nat) : Nat :=
alphabetSize ^ blockLength
/-- Standard 4^3 = 64 codewords -/
def code64 : Nat := codeSpaceSize 4 3
/-- Expanded 8^3 = 512 codewords -/
def code512 : Nat := codeSpaceSize 8 3
/-- Quadruplet 4^4 = 256 codewords -/
def code256 : Nat := codeSpaceSize 4 4
/-- Binary 2^8 = 256 bytes -/
def codeByte : Nat := codeSpaceSize 2 8
/-- Normalized information capacity per symbol = log2(N) / 8
For comparison across alphabet sizes, normalized to [0, 1] in CodingQ.
Uses pre-computed rational values — NO FLOAT in canonical code.
With max alphabet = 256 (byte), log2(256) = 8 bits:
- 2-symbol: log2(2)/8 = 1/8 = 0.125
- 4-symbol: log2(4)/8 = 2/8 = 0.25
- 8-symbol: log2(8)/8 = 3/8 = 0.375
- 16-symbol: log2(16)/8 = 4/8 = 0.5
- 256-symbol: log2(256)/8 = 8/8 = 1.0
All results as CodingQ (Q0_64). -/
def normalizedCapacity (alphabetSize : Nat) : CodingQ :=
match alphabetSize with
| 0 => CodingQ.mk zero
| 1 => CodingQ.mk zero -- log2(1) = 0
| 2 => CodingQ.mk (Q0_64.ofRatio 1 8) -- 0.125
| 4 => CodingQ.mk (Q0_64.ofRatio 2 8) -- 0.25
| 8 => CodingQ.mk (Q0_64.ofRatio 3 8) -- 0.375
| 16 => CodingQ.mk (Q0_64.ofRatio 4 8) -- 0.5
| 32 => CodingQ.mk (Q0_64.ofRatio 5 8) -- 0.625
| 64 => CodingQ.mk (Q0_64.ofRatio 6 8) -- 0.75
| 128 => CodingQ.mk (Q0_64.ofRatio 7 8) -- 0.875
| 256 => CodingQ.mk one -- 1.0
| _ => CodingQ.mk (Q0_64.ofRatio 1 8) -- default: conservative 2-symbol
/-- 4-symbol normalized capacity = 0.25 -/
def cap4 : CodingQ := normalizedCapacity 4
/-- 8-symbol normalized capacity = 0.375 -/
def cap8 : CodingQ := normalizedCapacity 8
/-- 2-symbol normalized capacity = 0.125 -/
def cap2 : CodingQ := normalizedCapacity 2
/-- 16-symbol normalized capacity = 0.5 -/
def cap16 : CodingQ := normalizedCapacity 16
-- ═══════════════════════════════════════════════════════════════════════════
-- §5 CHANNEL PARAMETERS (Noise/Constraint Model — All CodingQ)
-- ═══════════════════════════════════════════════════════════════════════════
/-- Channel noise parameters for a given encoding family.
ALL values are CodingQ (Q0_64) normalized dimensionless quantities [0, 1).
No biological meaning — purely information-theoretic channel properties. -/
structure ChannelParameters where
encodingFamily : EncodingFamily
-- Symbol reliability: probability of correct transmission per symbol
symbolReliability : CodingQ
-- Pairing constraint strictness: 0 = no pairing, 1 = strict complement
pairConstraintStrength : CodingQ
-- Sequence stability: resistance to random mutation/insertion/deletion
stabilityScore : CodingQ
-- Copy fidelity: accuracy of replication/transcription equivalent
copyFidelity : CodingQ
-- Decoding efficiency: fraction of codewords usable (accounting for degeneracy)
decodingEfficiency : CodingQ
deriving Repr, Inhabited
/-- High-stability channel -/
def highStabilityChannel : ChannelParameters := {
encodingFamily := EncodingFamily.fourSymbolBlock,
symbolReliability := CodingQ.mk (Q0_64.ofRatio 999 1000), -- 0.999
pairConstraintStrength := CodingQ.mk (Q0_64.ofRatio 95 100), -- 0.95
stabilityScore := CodingQ.mk (Q0_64.ofRatio 99 100), -- 0.99
copyFidelity := CodingQ.mk (Q0_64.ofRatio 999 1000), -- 0.999
decodingEfficiency := CodingQ.mk (Q0_64.ofRatio 95 100) -- 0.95
}
/-- Flexible channel -/
def flexibleChannel : ChannelParameters := {
encodingFamily := EncodingFamily.fourSymbolBlock,
symbolReliability := CodingQ.mk (Q0_64.ofRatio 85 100), -- 0.85
pairConstraintStrength := CodingQ.mk (Q0_64.ofRatio 30 100), -- 0.30
stabilityScore := CodingQ.mk (Q0_64.ofRatio 70 100), -- 0.70
copyFidelity := CodingQ.mk (Q0_64.ofRatio 85 100), -- 0.85
decodingEfficiency := CodingQ.mk (Q0_64.ofRatio 90 100) -- 0.90
}
/-- Neutral channel -/
def neutralChannel : ChannelParameters := {
encodingFamily := EncodingFamily.fourSymbolBlock,
symbolReliability := CodingQ.mk (Q0_64.ofRatio 90 100), -- 0.90
pairConstraintStrength := CodingQ.mk (Q0_64.ofRatio 50 100), -- 0.50
stabilityScore := CodingQ.mk (Q0_64.ofRatio 99 100), -- 0.99
copyFidelity := CodingQ.mk (Q0_64.ofRatio 95 100), -- 0.95
decodingEfficiency := CodingQ.mk (Q0_64.ofRatio 85 100) -- 0.85
}
-- ═══════════════════════════════════════════════════════════════════════════
-- §6 CODE EXPANSION (Block Length Extension)
-- ═══════════════════════════════════════════════════════════════════════════
/-- Non-standard symbol for expanded codes -/
structure ExtendedSymbol where
symbolId : String
properties : List String
blockAssignment : Option String
deriving Repr, Inhabited
/-- Code expansion strategy -/
inductive ExpansionStrategy where
| reservedBlockRecoding : String → ExpansionStrategy
| blockLengthExtension : ExpansionStrategy
| senseBlockReassignment : String → ExpansionStrategy
deriving Repr
/-- Code system definition (pure combinatorics, no translation) -/
structure CodeSystem where
name : String
alphabetSize : Nat
blockLength : Nat
totalBlocks : Nat
senseBlocks : Nat
stopBlocks : Nat
extendedSymbols : List ExtendedSymbol
orthogonalDecoder : Bool
deriving Repr, Inhabited
/-- Standard 64-block system (4^3) -/
def standardCodeSystem : CodeSystem := {
name := "Standard 64-Block",
alphabetSize := 4,
blockLength := 3,
totalBlocks := 64,
senseBlocks := 61,
stopBlocks := 3,
extendedSymbols := [],
orthogonalDecoder := false
}
/-- Extended 320-block system (4^4 with overlap) -/
def extendedCodeSystem : CodeSystem := {
name := "Extended 320-Block",
alphabetSize := 4,
blockLength := 4,
totalBlocks := 320,
senseBlocks := 300,
stopBlocks := 20,
extendedSymbols := [
{ symbolId := "AzF", properties := ["click-chemistry", "photocrosslinker"], blockAssignment := some "AGGA" },
{ symbolId := "AcF", properties := ["ketone-reactive"], blockAssignment := some "AGGG" }
],
orthogonalDecoder := true
}
/-- 512-block system (8^3) -/
def expanded512CodeSystem : CodeSystem := {
name := "Expanded 512-Block",
alphabetSize := 8,
blockLength := 3,
totalBlocks := 512,
senseBlocks := 480,
stopBlocks := 32,
extendedSymbols := [],
orthogonalDecoder := false
}
-- ═══════════════════════════════════════════════════════════════════════════
-- §7 COMPRESSION FUNCTIONS (Information Theory — All CodingQ)
-- ═══════════════════════════════════════════════════════════════════════════
/-- Compute compression potential of a symbol sequence.
Returns CodingQ [0, 1]. Higher info density → lower redundancy → higher compression. -/
def compressionPotential
(alphabetSize : Nat)
(_sequenceLength : Nat)
(redundancyFactor : CodingQ) : CodingQ :=
let infoContent := (normalizedCapacity alphabetSize).value
let oneMinusRedundancy := Q0_64.sub one redundancyFactor.value
CodingQ.mk (Q0_64.mul infoContent oneMinusRedundancy)
/-- Channel stability score: combines reliability and stability -/
def channelStabilityScore (ch : ChannelParameters) : CodingQ :=
let r1 := Q0_64.mul ch.symbolReliability.value (Q0_64.ofRatio 3 10) -- weight 0.3
let r2 := Q0_64.mul ch.stabilityScore.value (Q0_64.ofRatio 4 10) -- weight 0.4
let r3 := Q0_64.mul ch.copyFidelity.value (Q0_64.ofRatio 3 10) -- weight 0.3
CodingQ.mk (Q0_64.add (Q0_64.add r1 r2) r3)
/-- Block optimization score: penalize low-efficiency codes -/
def blockOptimizationScore
(blockUsageTable : Array CodingQ)
(desiredBlock : Nat)
(rareBlockThreshold : CodingQ) : CodingQ :=
if desiredBlock >= blockUsageTable.size then CodingQ.mk zero
else
let frequency := blockUsageTable[desiredBlock]!.value
if frequency < rareBlockThreshold.value
then CodingQ.mk (Q0_64.ofRatio 5 10) -- penalize: 0.5
else CodingQ.mk one
-- ═══════════════════════════════════════════════════════════════════════════
-- §8 GCL SURFACE BIND FUNCTIONS (All return CodingQ)
-- ═══════════════════════════════════════════════════════════════════════════
/-- Information-theoretic bind: measures coding efficiency -/
def informationalBind (code : CodeSystem) : CodingQ :=
let capacity := (normalizedCapacity code.alphabetSize).value
let efficiency := Q0_64.ofRatio code.senseBlocks code.totalBlocks
CodingQ.mk (Q0_64.mul capacity efficiency)
/-- Stability bind: noise resilience as CodingQ -/
def stabilityBind (ch : ChannelParameters) : CodingQ :=
channelStabilityScore ch
/-- Control bind: decoder orthogonality and expansion capability -/
def controlBind (code : CodeSystem) : CodingQ :=
if code.orthogonalDecoder then CodingQ.mk (Q0_64.ofRatio 8 10) -- 0.8
else CodingQ.mk (Q0_64.ofRatio 4 10) -- 0.4
-- ═══════════════════════════════════════════════════════════════════════════
-- §9 DELTA-PHI-GAMMA-LAMBDA AUDIT GRAMMAR (v3 Delta Definitions)
-- ═══════════════════════════════════════════════════════════════════════════
/-- Delta (Δ): Residual change — what was lost, distorted, or left over.
Magnitude is CodingQ [0, 1]: normalized residual. -/
structure DeltaResidual where
changeDescription : String
magnitude : CodingQ
receipt : Option String
deriving Repr, Inhabited
/-- Phi (φ): Invariant structure — what must survive transformation -/
structure PhiInvariant where
invariantDescription : String
preserved : Bool
proofReceipt : Option String
deriving Repr, Inhabited
/-- Gamma (γ): Compression pressure — force toward collapse/abstraction.
Normalized pressure level [0, 1] in CodingQ. -/
structure GammaPressure where
pressureLevel : CodingQ
description : String
deriving Repr, Inhabited
/-- Lambda (λ): Scale band — resolution of comparison -/
structure LambdaScale where
scaleDescription : String
byteSpan : Option Nat
temporalWindow : Option Nat
deriving Repr, Inhabited
/-- Complete Delta-Phi-Gamma-Lambda audit record.
All dimensionless quantities are CodingQ (Q0_64). -/
structure DeltaPhiGammaLambdaAudit where
delta : DeltaResidual
phi : PhiInvariant
gamma : GammaPressure
lambda : LambdaScale
auditPassed : Bool
deriving Repr, Inhabited
/-- Audit check: Did phi survive within bounded delta under gamma at lambda? -/
def dpglAuditCheck (audit : DeltaPhiGammaLambdaAudit) : Bool :=
audit.phi.preserved &&
audit.delta.magnitude.value < Q0_64.ofRatio 1 10 && -- threshold 0.1
audit.auditPassed
-- ═══════════════════════════════════════════════════════════════════════════
-- §10 AUTHORITY STATES (v3 Delta Definitions)
-- ═══════════════════════════════════════════════════════════════════════════
/-- GCL separates existence from authority. Objects exist but must earn authority. -/
inductive AuthorityState where
| U_scope -- Unscoped: exploratory, no authority
| HOLD -- Important but unresolved; preserve but do not promote
| V_scope -- Valid under declared local scope only
| REVIEWED -- Review or audit receipts exist
| CANONICAL_LEAN -- Formal artifact builds without hidden gaps
| QUARANTINE -- Unsafe, misleading, or category-confused
deriving BEq, DecidableEq, Repr, Inhabited
/-- Check if authority state permits promotion -/
def canPromote (auth : AuthorityState) : Bool :=
match auth with
| AuthorityState.CANONICAL_LEAN => true
| AuthorityState.REVIEWED => true
| _ => false
-- ═══════════════════════════════════════════════════════════════════════════
-- §11 COMBINED GCL CODING OBJECT (v3 Delta Definitions)
-- ═══════════════════════════════════════════════════════════════════════════
/-- Combined GCL Coding Object for unified inspection across regimes.
All coding values are CodingQ. Raw measurements use BioCodingProjection. -/
structure CombinedGCLCodingObject where
gclId : String
preferredName : String
aliases : List String
codingVariant : String
kind : String
claimState : String
authorityScope : AuthorityState
definition : String
genotype : String
expression : String
expansionSlots : List String
gates : List String
receipts : List String
projections : List String
mutationHistory : List String
repairPaths : List String
blockedUsages : List String
dpglAudit : Option DeltaPhiGammaLambdaAudit
deriving Repr, Inhabited
/-- Convert EncodingFamily to String for genotype field -/
def encodingFamilyToString (ef : EncodingFamily) : String :=
match ef with
| EncodingFamily.fourSymbolBlock => "4sym"
| EncodingFamily.eightSymbolBlock => "8sym"
| EncodingFamily.sixteenSymbolBlock => "16sym"
| EncodingFamily.binaryBlock => "bin"
| EncodingFamily.custom n => s!"c{n}"
/-- Create a synthetic genetic coding object with GCL v3 structure.
All normalized values are CodingQ. -/
def makeSyntheticGCLObject
(name : String)
(encFamily : EncodingFamily)
(alphabetSize : Nat)
(auth : AuthorityState) : CombinedGCLCodingObject :=
{ gclId := s!"gcl_synthetic_{name}",
preferredName := name,
aliases := [],
codingVariant := match encFamily with
| EncodingFamily.fourSymbolBlock => "4-symbol"
| EncodingFamily.eightSymbolBlock => "8-symbol"
| EncodingFamily.sixteenSymbolBlock => "16-symbol"
| EncodingFamily.binaryBlock => "binary"
| EncodingFamily.custom n => s!"custom-{n}",
kind := "synthetic_genetic",
claimState := "experimental",
authorityScope := auth,
definition := s!"Block code with {alphabetSize}-symbol alphabet",
genotype := s!"family={encodingFamilyToString encFamily}, alphabet={alphabetSize}",
expression := "surface_projection_pending",
expansionSlots := ["epigenetic_marks", "modified_bases"],
gates := ["channel_stability_gate", "decoding_efficiency_gate"],
receipts := [],
projections := [],
mutationHistory := [],
repairPaths := ["reverse_collapse_to_binary"],
blockedUsages := if auth == AuthorityState.QUARANTINE then ["therapeutic_use"] else [],
dpglAudit := none
}
-- ═══════════════════════════════════════════════════════════════════════════
-- §12 WARDEN VALIDATION RULES (v3 Delta Definitions)
-- ═══════════════════════════════════════════════════════════════════════════
/-- Warden emission types for combined surface validation -/
inductive WardenEmission where
| bioOverclaim -- Biological analogy presented as evidence
| aliasBoundaryBlur -- Aliases collapse incompatible meanings
| projectionProofConfusion -- Surface used as proof
| missingTestReceipt -- Algorithmic collapse lacks behavior tests
| recursiveAbstractionWithoutGround -- No reverse-collapse target
| fixedPointViolation -- Floats in fixed-point hot path
| codingAtomTypeViolation -- Field marked coding_atom but not CodingQ
| deltaUnbounded -- Residual change exceeds threshold
| phiNotPreserved -- Invariant failed under compression
deriving BEq, DecidableEq, Repr, Inhabited
/-- Warden validation result -/
structure WardenValidation where
passed : Bool
emissions : List WardenEmission
requiredHolds : Bool
deriving Repr, Inhabited
/-- Check if emissions list is empty -/
def emissionsEmpty (emissions : List WardenEmission) : Bool :=
match emissions with
| [] => true
| _ => false
/-- Validate a synthetic genetic object against Warden rules -/
def wardenValidateSynthetic (obj : CombinedGCLCodingObject) : WardenValidation :=
let emissions : List WardenEmission := []
-- Check 1: If claiming biological relevance, need external receipts
let emissions := if obj.claimState == "biological_evidence" && obj.receipts == []
then WardenEmission.bioOverclaim :: emissions else emissions
-- Check 2: If aliases present but no repair paths
let emissions := if obj.aliases != [] && obj.repairPaths == []
then WardenEmission.aliasBoundaryBlur :: emissions else emissions
-- Check 3: If no reverse collapse path
let emissions := if obj.repairPaths == []
then WardenEmission.recursiveAbstractionWithoutGround :: emissions else emissions
-- Check 4: Authority state check
let passed := emissionsEmpty emissions && canPromote obj.authorityScope
{ passed := passed,
emissions := emissions,
requiredHolds := !emissionsEmpty emissions
}
-- ═══════════════════════════════════════════════════════════════════════════
-- §13 REVERSE COLLAPSE SAFETY
-- ═══════════════════════════════════════════════════════════════════════════
/-- Reverse collapse path: can abstraction unfold back to concrete anchor? -/
structure ReverseCollapsePath where
targetAbstraction : String
concreteAnchor : String
collapseSteps : Nat
recoveryTest : Option String
deriving Repr, Inhabited
/-- Verify reverse collapse is possible -/
def verifyReverseCollapse
(obj : CombinedGCLCodingObject)
(path : ReverseCollapsePath) : Bool :=
path.collapseSteps > 0 && path.recoveryTest != none && obj.repairPaths != []
-- ═══════════════════════════════════════════════════════════════════════════
-- §14 THEOREMS (Formal Verification)
-- ═══════════════════════════════════════════════════════════════════════════
/-- Theorem: 512-block space is 8x larger than 64-block -/
theorem block512vs64 :
code512 = 8 * code64 := by
rfl
/-- Theorem: Extended 4-block system has 4x more blocks than 3-block -/
theorem block256vs64 :
code256 = 4 * code64 := by
rfl
-- ═══════════════════════════════════════════════════════════════════════════
-- §15 #eval WITNESSES
-- ═══════════════════════════════════════════════════════════════════════════
#eval code64 -- 64
#eval code512 -- 512
#eval code256 -- 256
#eval codeByte -- 256
#eval cap4 -- CodingQ with ~0.25
#eval cap8 -- CodingQ with ~0.375
#eval cap2 -- CodingQ with ~0.125
#eval cap16 -- CodingQ with ~0.5
#eval highStabilityChannel.stabilityScore
#eval flexibleChannel.stabilityScore
#eval neutralChannel.copyFidelity
#eval compressionPotential 4 1000 (CodingQ.mk (Q0_64.ofRatio 3 10))
#eval channelStabilityScore highStabilityChannel
#eval informationalBind standardCodeSystem
#eval controlBind extendedCodeSystem
#eval canPromote AuthorityState.CANONICAL_LEAN
#eval canPromote AuthorityState.HOLD
#eval (makeSyntheticGCLObject "test_4sym" EncodingFamily.fourSymbolBlock 4 AuthorityState.HOLD).authorityScope
#eval (wardenValidateSynthetic (makeSyntheticGCLObject "test_xna" EncodingFamily.eightSymbolBlock 8 AuthorityState.U_scope)).passed
end Semantics.SyntheticGeneticCoding