mirror of
https://github.com/allaunthefox/Research-Stack.git
synced 2026-07-31 03:05:21 +00:00
301 lines
9.7 KiB
Text
301 lines
9.7 KiB
Text
import Semantics.PhysicsScalar
|
|
import Semantics.RegimeCore
|
|
import Semantics.ElectromagneticSpectrum
|
|
import Semantics.ExoticSpacetime
|
|
import Semantics.SpikingDynamics
|
|
import Semantics.MagnetoPlasma
|
|
import Semantics.Errors
|
|
|
|
namespace Semantics.BoundaryDynamics
|
|
|
|
open Semantics.PhysicsScalar
|
|
open Semantics.RegimeCore
|
|
open Semantics.ElectromagneticSpectrum
|
|
open Semantics.ExoticSpacetime
|
|
open Semantics.SpikingDynamics
|
|
open Semantics.MagnetoPlasma
|
|
open Semantics.Errors
|
|
|
|
abbrev BoundaryId := UInt16
|
|
abbrev SeparatrixId := UInt16
|
|
abbrev IntersectionId := UInt16
|
|
|
|
inductive BoundaryKind
|
|
| interface
|
|
| sheath
|
|
| throat
|
|
| spectralCurtain
|
|
| reconnectionSurface
|
|
| dimensionalSeam
|
|
deriving Repr, DecidableEq
|
|
|
|
inductive BoundaryRegime
|
|
| open
|
|
| reflective
|
|
| absorptive
|
|
| transmissive
|
|
| gated
|
|
| reconnectionDominant
|
|
| collapsed
|
|
deriving Repr, DecidableEq
|
|
|
|
inductive ReconnectionMode
|
|
| none
|
|
| latent
|
|
| partial
|
|
| active
|
|
| cascading
|
|
deriving Repr, DecidableEq
|
|
|
|
inductive BoundaryStability
|
|
| stable
|
|
| metastable
|
|
| unstable
|
|
| collapseProne
|
|
deriving Repr, DecidableEq
|
|
|
|
inductive BoundaryFluidity
|
|
| rigid
|
|
| viscous
|
|
| adaptive
|
|
| diffuse
|
|
| turbulent
|
|
deriving Repr, DecidableEq
|
|
|
|
inductive IntersectionFlow
|
|
| passThrough
|
|
| reflect
|
|
| absorb
|
|
| split
|
|
| entrain
|
|
| reconnect
|
|
| pinch
|
|
deriving Repr, DecidableEq
|
|
|
|
structure BoundaryLayer where
|
|
boundaryId : BoundaryId
|
|
label : String
|
|
kind : BoundaryKind
|
|
sourceRegionId : RegionId
|
|
targetRegionId : RegionId
|
|
thickness : Q16_16
|
|
tension : Q16_16
|
|
permeability : Q16_16
|
|
coherence : Q16_16
|
|
fluidity : Q16_16
|
|
spectralCondition? : Option GateSpectralCondition
|
|
deriving Repr, DecidableEq
|
|
|
|
structure Separatrix where
|
|
separatrixId : SeparatrixId
|
|
label : String
|
|
boundaryId : BoundaryId
|
|
sourceRegime : RegimeClass
|
|
targetRegime : RegimeClass
|
|
gradient : Q16_16
|
|
narrowness : Q16_16
|
|
active : Bool
|
|
deriving Repr, DecidableEq
|
|
|
|
structure BoundarySignature where
|
|
thickness : Q16_16
|
|
tension : Q16_16
|
|
permeability : Q16_16
|
|
coherence : Q16_16
|
|
fluidity : Q16_16
|
|
spectralAffinity : Q16_16
|
|
temporalGradient : Q16_16
|
|
reconnectionPotential : Q16_16
|
|
spikeAffinity : Q16_16
|
|
aliasDetected : Bool
|
|
scaffoldingRole : ErrorScaffoldingRole
|
|
deriving Repr, DecidableEq
|
|
|
|
structure BoundaryIntersection where
|
|
intersectionId : IntersectionId
|
|
leftBoundaryId : BoundaryId
|
|
rightBoundaryId : BoundaryId
|
|
flow : IntersectionFlow
|
|
reconnectionMode : ReconnectionMode
|
|
stability : BoundaryStability
|
|
fluidityClass : BoundaryFluidity
|
|
scaffoldingRole : ErrorScaffoldingRole
|
|
deriving Repr, DecidableEq
|
|
|
|
structure BoundaryTransitionRequest where
|
|
boundary : BoundaryLayer
|
|
sourceAssignment : RegionAssignment
|
|
targetAssignment : RegionAssignment
|
|
sample? : Option ElectromagneticSample
|
|
sourceTemporalRegime : TemporalRegime
|
|
targetTemporalRegime : TemporalRegime
|
|
spikeEvent? : Option SpikeEvent
|
|
magnetoSignature? : Option MagnetoPlasmaSignature
|
|
errorField? : Option ErrorField
|
|
deriving Repr, DecidableEq
|
|
|
|
structure BoundaryTransitionResult where
|
|
admitted : Bool
|
|
regime : BoundaryRegime
|
|
flow : IntersectionFlow
|
|
reconnectionMode : ReconnectionMode
|
|
resultingRegionId : RegionId
|
|
stability : BoundaryStability
|
|
fluidityClass : BoundaryFluidity
|
|
aliasDetected : Bool
|
|
scaffoldingRole : ErrorScaffoldingRole
|
|
requiresAttention : Bool
|
|
deriving Repr, DecidableEq
|
|
|
|
|
|
def spectralAffinityOf
|
|
(boundary : BoundaryLayer)
|
|
(sample? : Option ElectromagneticSample) : Q16_16 :=
|
|
match boundary.spectralCondition?, sample? with
|
|
| some cond, some sample =>
|
|
if gateAllowsSample cond sample then
|
|
Q16_16.mean3 sample.intensity sample.coherence sample.modulation
|
|
else
|
|
Q16_16.zero
|
|
| none, some sample => Q16_16.mean3 sample.intensity sample.coherence sample.modulation
|
|
| _, none => Q16_16.zero
|
|
|
|
|
|
def spikeAffinityOf (event? : Option SpikeEvent) : Q16_16 :=
|
|
match event? with
|
|
| none => Q16_16.zero
|
|
| some event => event.intensity
|
|
|
|
|
|
def reconnectionPotentialOf
|
|
(boundary : BoundaryLayer)
|
|
(magnetoSignature? : Option MagnetoPlasmaSignature) : Q16_16 :=
|
|
match magnetoSignature? with
|
|
| none => Q16_16.zero
|
|
| some signature => Q16_16.mean3 boundary.tension signature.reconnectionPotential signature.loopCoherence
|
|
|
|
|
|
def explicitAliasDetected (request : BoundaryTransitionRequest) : Bool :=
|
|
request.sourceAssignment.regionId = request.targetAssignment.regionId ||
|
|
request.boundary.sourceRegionId = request.boundary.targetRegionId ||
|
|
request.sourceAssignment.regionId = request.boundary.targetRegionId ||
|
|
request.targetAssignment.regionId = request.boundary.sourceRegionId
|
|
|
|
|
|
def scaffoldingRoleOf (errorField? : Option ErrorField) : ErrorScaffoldingRole :=
|
|
match errorField? with
|
|
| none => ErrorScaffoldingRole.none
|
|
| some field => (classifyErrorField field).scaffoldingRole
|
|
|
|
|
|
def boundarySignatureOf
|
|
(request : BoundaryTransitionRequest) : BoundarySignature :=
|
|
let temporalGradient :=
|
|
if request.sourceTemporalRegime = request.targetTemporalRegime then Q16_16.zero else Q16_16.half
|
|
{ thickness := request.boundary.thickness
|
|
, tension := request.boundary.tension
|
|
, permeability := request.boundary.permeability
|
|
, coherence := request.boundary.coherence
|
|
, fluidity := request.boundary.fluidity
|
|
, spectralAffinity := spectralAffinityOf request.boundary request.sample?
|
|
, temporalGradient := temporalGradient
|
|
, reconnectionPotential := reconnectionPotentialOf request.boundary request.magnetoSignature?
|
|
, spikeAffinity := spikeAffinityOf request.spikeEvent?
|
|
, aliasDetected := explicitAliasDetected request
|
|
, scaffoldingRole := scaffoldingRoleOf request.errorField? }
|
|
|
|
|
|
def classifyReconnectionMode (signature : BoundarySignature) : ReconnectionMode :=
|
|
if Q16_16.ge signature.reconnectionPotential Q16_16.one then .cascading
|
|
else if Q16_16.ge signature.reconnectionPotential (Q16_16.add Q16_16.half Q16_16.quarter) then .active
|
|
else if Q16_16.ge signature.reconnectionPotential Q16_16.half then .partial
|
|
else if Q16_16.nonZero signature.reconnectionPotential then .latent
|
|
else .none
|
|
|
|
|
|
def classifyBoundaryStability (signature : BoundarySignature) : BoundaryStability :=
|
|
if signature.aliasDetected then .collapseProne
|
|
else if Q16_16.ge signature.tension Q16_16.one && Q16_16.ge signature.temporalGradient Q16_16.half then .collapseProne
|
|
else if Q16_16.ge signature.fluidity Q16_16.two then .unstable
|
|
else if Q16_16.ge signature.coherence Q16_16.half then .stable
|
|
else .metastable
|
|
|
|
|
|
def classifyBoundaryFluidity (signature : BoundarySignature) : BoundaryFluidity :=
|
|
if Q16_16.ge signature.fluidity (Q16_16.add Q16_16.half Q16_16.quarter) &&
|
|
Q16_16.ge signature.reconnectionPotential Q16_16.half then .turbulent
|
|
else if Q16_16.ge signature.fluidity (Q16_16.add Q16_16.half Q16_16.quarter) then .diffuse
|
|
else if Q16_16.ge signature.fluidity Q16_16.half then .adaptive
|
|
else if Q16_16.nonZero signature.fluidity then .viscous
|
|
else .rigid
|
|
|
|
|
|
def effectivePermeability (signature : BoundarySignature) : Q16_16 :=
|
|
let baseBonus := Q16_16.avg signature.fluidity signature.spikeAffinity
|
|
let scaffoldBonus :=
|
|
match signature.scaffoldingRole with
|
|
| .boundaryScaffold => Q16_16.half
|
|
| .dimensionalScaffold => Q16_16.quarter
|
|
| .causalScaffold => Q16_16.quarter
|
|
| .criticalScaffold => Q16_16.quarter
|
|
| .none => Q16_16.zero
|
|
Q16_16.clamp (Q16_16.addSaturating signature.permeability (Q16_16.add baseBonus scaffoldBonus)) Q16_16.zero Q16_16.four
|
|
|
|
|
|
def classifyBoundaryRegime (signature : BoundarySignature) : BoundaryRegime :=
|
|
if signature.aliasDetected then .collapsed
|
|
else match classifyReconnectionMode signature with
|
|
| .active | .cascading => .reconnectionDominant
|
|
| .partial | .latent => .gated
|
|
| .none =>
|
|
if Q16_16.ge (effectivePermeability signature) (Q16_16.add Q16_16.half Q16_16.quarter) then .transmissive
|
|
else if Q16_16.isZero (effectivePermeability signature) then .reflective
|
|
else if Q16_16.ge signature.spectralAffinity Q16_16.half then .absorptive
|
|
else .open
|
|
|
|
|
|
def classifyIntersectionFlow (signature : BoundarySignature) : IntersectionFlow :=
|
|
if signature.aliasDetected then .pinch
|
|
else match classifyReconnectionMode signature with
|
|
| .active | .cascading => .reconnect
|
|
| .partial => .split
|
|
| .latent => .entrain
|
|
| .none =>
|
|
let permeability := effectivePermeability signature
|
|
if Q16_16.ge permeability Q16_16.one then .passThrough
|
|
else if Q16_16.isZero permeability then .reflect
|
|
else if Q16_16.ge signature.spectralAffinity Q16_16.half then .absorb
|
|
else .split
|
|
|
|
|
|
def boundaryAdmits (request : BoundaryTransitionRequest) : Bool :=
|
|
request.sourceAssignment.regionId = request.boundary.sourceRegionId &&
|
|
request.targetAssignment.regionId = request.boundary.targetRegionId &&
|
|
!explicitAliasDetected request
|
|
|
|
|
|
def resolveBoundaryTransition (request : BoundaryTransitionRequest) : BoundaryTransitionResult :=
|
|
let signature := boundarySignatureOf request
|
|
let aliasDetected := signature.aliasDetected
|
|
let regime := classifyBoundaryRegime signature
|
|
let stability := classifyBoundaryStability signature
|
|
let fluidityClass := classifyBoundaryFluidity signature
|
|
let flow := classifyIntersectionFlow signature
|
|
let admitted := boundaryAdmits request && regime != BoundaryRegime.collapsed
|
|
let scaffoldingRole := signature.scaffoldingRole
|
|
let requiresAttention :=
|
|
match request.errorField? with
|
|
| some field => requiresImmediateAction field || aliasDetected
|
|
| none => aliasDetected
|
|
{ admitted := admitted
|
|
, regime := regime
|
|
, flow := flow
|
|
, reconnectionMode := classifyReconnectionMode signature
|
|
, resultingRegionId := if admitted then request.targetAssignment.regionId else request.sourceAssignment.regionId
|
|
, stability := stability
|
|
, fluidityClass := fluidityClass
|
|
, aliasDetected := aliasDetected
|
|
, scaffoldingRole := scaffoldingRole
|
|
, requiresAttention := requiresAttention }
|
|
|
|
end Semantics.BoundaryDynamics
|