mirror of
https://github.com/allaunthefox/Research-Stack.git
synced 2026-07-31 03:05:21 +00:00
325 lines
11 KiB
Text
325 lines
11 KiB
Text
import Semantics.PhysicsScalar
|
||
import Semantics.ElectromagneticSpectrum
|
||
import Semantics.RegimeCore
|
||
import Semantics.BoundaryDynamics
|
||
import Semantics.CausalGeometry
|
||
import Semantics.ManifoldStructures
|
||
import Semantics.DomainState
|
||
|
||
namespace Semantics.SubstrateProfile
|
||
|
||
open Semantics.PhysicsScalar
|
||
open Semantics.ElectromagneticSpectrum
|
||
open Semantics.RegimeCore
|
||
open Semantics.BoundaryDynamics
|
||
open Semantics.CausalGeometry
|
||
open Semantics.ManifoldStructures
|
||
open Semantics.DomainState
|
||
|
||
inductive BoundaryKind
|
||
| interface
|
||
| sheath
|
||
| throat
|
||
| spectralCurtain
|
||
| reconnectionSurface
|
||
| dimensionalSeam
|
||
deriving Repr, DecidableEq
|
||
|
||
inductive CausalOrientation
|
||
| forward
|
||
| backward
|
||
| lateral
|
||
| cyclic
|
||
| folded
|
||
deriving Repr, DecidableEq
|
||
|
||
inductive InteractionClass
|
||
| communication
|
||
| passiveSensing
|
||
| activeSensing
|
||
| imaging
|
||
| illumination
|
||
| heating
|
||
| ionizingExposure
|
||
| plasmaCoupling
|
||
deriving Repr, DecidableEq
|
||
|
||
structure CausalLink where
|
||
orientation : CausalOrientation
|
||
delay : PhysicsScalar.Q16_16
|
||
requiresGate : Bool
|
||
deriving Repr, DecidableEq
|
||
|
||
abbrev SubstrateId := UInt16
|
||
|
||
inductive SubstrateKind
|
||
| software
|
||
| fpga
|
||
| asic
|
||
| cpu
|
||
| gpu
|
||
| optical
|
||
| memristive
|
||
| spintronic
|
||
| biologicalLike
|
||
| hybrid
|
||
deriving Repr, DecidableEq
|
||
|
||
inductive TimingResolution
|
||
| coarse
|
||
| tick
|
||
| fine
|
||
| phaseAware
|
||
| eventDriven
|
||
deriving Repr, DecidableEq
|
||
|
||
inductive ExecutionStyle
|
||
| deterministic
|
||
| gated
|
||
| streaming
|
||
| eventDriven
|
||
| reconfigurable
|
||
| hybrid
|
||
deriving Repr, DecidableEq
|
||
|
||
structure SpectralSupport where
|
||
supportedBands : List SpectrumBand
|
||
lineOfSightPreferred : Bool
|
||
supportsActiveProbe : Bool
|
||
supportsPassiveSensing : Bool
|
||
supportsCommunication : Bool
|
||
ionizingTolerance : PhysicsScalar.Q16_16
|
||
deriving Repr, DecidableEq
|
||
|
||
structure BoundarySupport where
|
||
supportedKinds : List BoundaryKind
|
||
supportsDiffuseBoundaries : Bool
|
||
supportsTurbulentBoundaries : Bool
|
||
maximumFluidity : PhysicsScalar.Q16_16
|
||
minimumCoherence : PhysicsScalar.Q16_16
|
||
deriving Repr, DecidableEq
|
||
|
||
structure CausalSupport where
|
||
supportedOrientations : List CausalOrientation
|
||
supportsDelayedLinks : Bool
|
||
supportsFoldedLinks : Bool
|
||
supportsCyclicTraversal : Bool
|
||
requiresGuardedTraversal : Bool
|
||
maximumDelayMass : PhysicsScalar.Q16_16
|
||
deriving Repr, DecidableEq
|
||
|
||
structure ResourceEnvelope where
|
||
maxStateDim : Nat
|
||
maxTransportDim : Nat
|
||
maxTopologyDim : Nat
|
||
maxRenderDim : Nat
|
||
channelBudget : UInt16
|
||
nodeBudget : UInt16
|
||
linkBudget : UInt16
|
||
deriving Repr, DecidableEq
|
||
|
||
structure SubstrateProfile where
|
||
substrateId : SubstrateId
|
||
label : String
|
||
kind : SubstrateKind
|
||
timingResolution : TimingResolution
|
||
executionStyle : ExecutionStyle
|
||
resourceEnvelope : ResourceEnvelope
|
||
supportsResolvedOnly : Bool
|
||
spectralSupport : SpectralSupport
|
||
boundarySupport : BoundarySupport
|
||
causalSupport : CausalSupport
|
||
deriving Repr, DecidableEq
|
||
|
||
|
||
def supportsBand (profile : SubstrateProfile) (band : SpectrumBand) : Bool :=
|
||
band ∈ profile.spectralSupport.supportedBands
|
||
|
||
|
||
def supportsBoundaryKind (profile : SubstrateProfile) (kind : BoundaryKind) : Bool :=
|
||
kind ∈ profile.boundarySupport.supportedKinds
|
||
|
||
|
||
def supportsOrientation (profile : SubstrateProfile) (orientation : CausalOrientation) : Bool :=
|
||
orientation ∈ profile.causalSupport.supportedOrientations
|
||
|
||
|
||
def supportsDimensions (profile : SubstrateProfile) (stateDim transportDim topologyDim renderDim : Nat) : Bool :=
|
||
stateDim <= profile.resourceEnvelope.maxStateDim &&
|
||
transportDim <= profile.resourceEnvelope.maxTransportDim &&
|
||
topologyDim <= profile.resourceEnvelope.maxTopologyDim &&
|
||
renderDim <= profile.resourceEnvelope.maxRenderDim
|
||
|
||
|
||
def supportsFluidity (profile : SubstrateProfile) (fluidity : PhysicsScalar.Q16_16) : Bool :=
|
||
PhysicsScalar.Q16_16.le fluidity profile.boundarySupport.maximumFluidity
|
||
|
||
|
||
def supportsDelayMass (profile : SubstrateProfile) (delayMass : PhysicsScalar.Q16_16) : Bool :=
|
||
PhysicsScalar.Q16_16.le delayMass profile.causalSupport.maximumDelayMass
|
||
|
||
|
||
def compatibleWithBoundary (profile : SubstrateProfile) (boundary : BoundaryLayer) (kind : BoundaryKind) : Bool :=
|
||
supportsBoundaryKind profile kind &&
|
||
supportsFluidity profile boundary.fluidity &&
|
||
PhysicsScalar.Q16_16.ge boundary.coherence profile.boundarySupport.minimumCoherence &&
|
||
(profile.boundarySupport.supportsDiffuseBoundaries || kind != BoundaryKind.sheath) &&
|
||
(profile.boundarySupport.supportsTurbulentBoundaries || !PhysicsScalar.Q16_16.gt boundary.fluidity PhysicsScalar.Q16_16.half)
|
||
|
||
|
||
def compatibleWithSample (profile : SubstrateProfile) (sample : ElectromagneticSample) (ic : InteractionClass) : Bool :=
|
||
supportsBand profile sample.bandProfile.band &&
|
||
match ic with
|
||
| .communication => profile.spectralSupport.supportsCommunication
|
||
| .passiveSensing => profile.spectralSupport.supportsPassiveSensing
|
||
| .activeSensing => profile.spectralSupport.supportsActiveProbe
|
||
| .imaging => profile.spectralSupport.supportsPassiveSensing || profile.spectralSupport.supportsActiveProbe
|
||
| .illumination => true
|
||
| .heating => true
|
||
| .ionizingExposure => PhysicsScalar.Q16_16.gt profile.spectralSupport.ionizingTolerance PhysicsScalar.Q16_16.quarter
|
||
| .plasmaCoupling => true
|
||
|
||
|
||
def compatibleWithLink (profile : SubstrateProfile) (link : CausalLink) : Bool :=
|
||
supportsOrientation profile link.orientation &&
|
||
supportsDelayMass profile link.delay &&
|
||
(profile.causalSupport.supportsDelayedLinks || !PhysicsScalar.Q16_16.gt link.delay PhysicsScalar.Q16_16.zero) &&
|
||
(profile.causalSupport.supportsFoldedLinks || link.orientation != CausalOrientation.folded) &&
|
||
(profile.causalSupport.supportsCyclicTraversal || link.orientation != CausalOrientation.cyclic) &&
|
||
(!profile.causalSupport.requiresGuardedTraversal || link.requiresGate)
|
||
|
||
|
||
def compatibleWithRegionAssignment (profile : SubstrateProfile) (assignment : RegionAssignment) : Bool :=
|
||
!profile.supportsResolvedOnly || assignment.state.resolutionStatus = .resolved
|
||
|
||
|
||
def substrateAdmitsTransition
|
||
(profile : SubstrateProfile)
|
||
(assignment : RegionAssignment)
|
||
(sample? : Option (ElectromagneticSample × InteractionClass))
|
||
(boundary? : Option (BoundaryLayer × BoundaryKind))
|
||
(link? : Option CausalLink)
|
||
(stateDim transportDim topologyDim renderDim : Nat)
|
||
: Bool :=
|
||
compatibleWithRegionAssignment profile assignment &&
|
||
supportsDimensions profile stateDim transportDim topologyDim renderDim &&
|
||
match sample?, boundary?, link? with
|
||
| some (sample, ic), some (boundary, bk), some link =>
|
||
compatibleWithSample profile sample ic &&
|
||
compatibleWithBoundary profile boundary bk &&
|
||
compatibleWithLink profile link
|
||
| some (sample, ic), some (boundary, bk), none =>
|
||
compatibleWithSample profile sample ic &&
|
||
compatibleWithBoundary profile boundary bk
|
||
| some (sample, ic), none, some link =>
|
||
compatibleWithSample profile sample ic &&
|
||
compatibleWithLink profile link
|
||
| none, some (boundary, bk), some link =>
|
||
compatibleWithBoundary profile boundary bk &&
|
||
compatibleWithLink profile link
|
||
| some (sample, ic), none, none => compatibleWithSample profile sample ic
|
||
| none, some (boundary, bk), none => compatibleWithBoundary profile boundary bk
|
||
| none, none, some link => compatibleWithLink profile link
|
||
| none, none, none => true
|
||
|
||
|
||
def fpgaSpectralSupport : SpectralSupport :=
|
||
{ supportedBands := [SpectrumBand.radio, SpectrumBand.microwave, SpectrumBand.infrared, SpectrumBand.optical]
|
||
, lineOfSightPreferred := false
|
||
, supportsActiveProbe := true
|
||
, supportsPassiveSensing := true
|
||
, supportsCommunication := true
|
||
, ionizingTolerance := PhysicsScalar.Q16_16.quarter }
|
||
|
||
|
||
def fpgaBoundarySupport : BoundarySupport :=
|
||
{ supportedKinds :=
|
||
[ BoundaryKind.interface
|
||
, BoundaryKind.sheath
|
||
, BoundaryKind.throat
|
||
, BoundaryKind.spectralCurtain
|
||
, BoundaryKind.reconnectionSurface
|
||
, BoundaryKind.dimensionalSeam ]
|
||
, supportsDiffuseBoundaries := true
|
||
, supportsTurbulentBoundaries := false
|
||
, maximumFluidity := PhysicsScalar.Q16_16.three
|
||
, minimumCoherence := PhysicsScalar.Q16_16.quarter }
|
||
|
||
|
||
def fpgaCausalSupport : CausalSupport :=
|
||
{ supportedOrientations := [CausalOrientation.forward, CausalOrientation.lateral, CausalOrientation.folded]
|
||
, supportsDelayedLinks := true
|
||
, supportsFoldedLinks := true
|
||
, supportsCyclicTraversal := false
|
||
, requiresGuardedTraversal := true
|
||
, maximumDelayMass := PhysicsScalar.Q16_16.four }
|
||
|
||
|
||
def fpgaSubstrateProfile : SubstrateProfile :=
|
||
{ substrateId := UInt16.ofNat 1
|
||
, label := "fpga-default"
|
||
, kind := SubstrateKind.fpga
|
||
, timingResolution := TimingResolution.tick
|
||
, executionStyle := ExecutionStyle.reconfigurable
|
||
, resourceEnvelope :=
|
||
{ maxStateDim := 8
|
||
, maxTransportDim := 8
|
||
, maxTopologyDim := 8
|
||
, maxRenderDim := 4
|
||
, channelBudget := UInt16.ofNat 4096
|
||
, nodeBudget := UInt16.ofNat 4096
|
||
, linkBudget := UInt16.ofNat 8192 }
|
||
, supportsResolvedOnly := true
|
||
, spectralSupport := fpgaSpectralSupport
|
||
, boundarySupport := fpgaBoundarySupport
|
||
, causalSupport := fpgaCausalSupport }
|
||
|
||
|
||
def softwareResearchSubstrateProfile : SubstrateProfile :=
|
||
{ substrateId := UInt16.ofNat 2
|
||
, label := "software-research"
|
||
, kind := SubstrateKind.software
|
||
, timingResolution := TimingResolution.phaseAware
|
||
, executionStyle := ExecutionStyle.hybrid
|
||
, resourceEnvelope :=
|
||
{ maxStateDim := 32
|
||
, maxTransportDim := 32
|
||
, maxTopologyDim := 32
|
||
, maxRenderDim := 8
|
||
, channelBudget := UInt16.ofNat 65535
|
||
, nodeBudget := UInt16.ofNat 65535
|
||
, linkBudget := UInt16.ofNat 65535 }
|
||
, supportsResolvedOnly := false
|
||
, spectralSupport :=
|
||
{ supportedBands := [SpectrumBand.radio, SpectrumBand.microwave, SpectrumBand.infrared, SpectrumBand.optical, SpectrumBand.ultraviolet, SpectrumBand.xray, SpectrumBand.gamma]
|
||
, lineOfSightPreferred := false
|
||
, supportsActiveProbe := true
|
||
, supportsPassiveSensing := true
|
||
, supportsCommunication := true
|
||
, ionizingTolerance := PhysicsScalar.Q16_16.four }
|
||
, boundarySupport :=
|
||
{ supportedKinds :=
|
||
[ BoundaryKind.interface
|
||
, BoundaryKind.sheath
|
||
, BoundaryKind.throat
|
||
, BoundaryKind.spectralCurtain
|
||
, BoundaryKind.reconnectionSurface
|
||
, BoundaryKind.dimensionalSeam ]
|
||
, supportsDiffuseBoundaries := true
|
||
, supportsTurbulentBoundaries := true
|
||
, maximumFluidity := PhysicsScalar.Q16_16.four
|
||
, minimumCoherence := PhysicsScalar.Q16_16.zero }
|
||
, causalSupport :=
|
||
{ supportedOrientations :=
|
||
[ CausalOrientation.forward
|
||
, CausalOrientation.backward
|
||
, CausalOrientation.lateral
|
||
, CausalOrientation.cyclic
|
||
, CausalOrientation.folded ]
|
||
, supportsDelayedLinks := true
|
||
, supportsFoldedLinks := true
|
||
, supportsCyclicTraversal := true
|
||
, requiresGuardedTraversal := false
|
||
, maximumDelayMass := PhysicsScalar.Q16_16.maxValue } }
|
||
|
||
end Semantics.SubstrateProfile
|