Cortex.Wire.AdmissionArtifact.Select
On this page
Imports
Overview
Select admission artifact rows for decoded Wire admission artifacts.
This page models persisted select(...) rows: base variants, source-arm
resolution modes, latent body summaries, and projection into the generic
LatentSelectAdmission carrier.
namespace Cortex.Wirenamespace AdmissionArtifactopen Cortex.Wire.ElaborationIRSelect Artifacts
Haskell select arm resolution mode. Labels are tried before contract fallback.
inductive SelectResolutionMode where
| resolvedByLabel
| resolvedByContract
deriving ReprInterpret an artifact field label as a source select-arm key.
def selectArmKeyOfFieldLabel (label : FieldLabel) : SelectArmKey :=
⟨label.name⟩Valid artifact field labels remain valid when used as select-arm keys.
theorem selectArmKeyOfFieldLabel_valid
{label : FieldLabel}
(hValid : label.Valid) :
(selectArmKeyOfFieldLabel label).Valid :=
hValidOne variant exposed by the selected base node.
structure SelectVariantArtifact where
key : FieldLabel
port : AdmissionBoundaryPort
deriving Reprnamespace SelectVariantArtifactThe persisted variant key is the label-first key derived from the boundary row.
def KeyCanonical (variant : SelectVariantArtifact) : Prop :=
variant.key = variant.port.selectKeyVariant key as the generic select-admission carrier expects it.
def selectArmKey (variant : SelectVariantArtifact) : SelectArmKey :=
selectArmKeyOfFieldLabel variant.keyVariant row projected into a selectable output-shape arm port.
def armPort (variant : SelectVariantArtifact) : SelectArmKey × PortSignature :=
(variant.selectArmKey, { label := variant.key, contract := variant.port.contract })Select variant rows carry a valid arm key, boundary port, and canonicalized key.
structure Valid (variant : SelectVariantArtifact) : Prop where
keyValid : variant.key.Valid
portValid : variant.port.Valid
keyCanonical : variant.KeyCanonicalValid select variants expose canonicalized label-first keys.
theorem valid_keyCanonical
{variant : SelectVariantArtifact}
(hValid : variant.Valid) :
variant.KeyCanonical :=
hValid.keyCanonicalValid select variants project to valid selectable output-shape arm keys.
theorem valid_selectArmKey
{variant : SelectVariantArtifact}
(hValid : variant.Valid) :
variant.selectArmKey.Valid :=
selectArmKeyOfFieldLabel_valid hValid.keyValidValid select variants project to valid selectable output-shape port signatures.
theorem valid_armPort_signature
{variant : SelectVariantArtifact}
(hValid : variant.Valid) :
variant.armPort.snd.Valid :=
⟨hValid.keyValid, AdmissionBoundaryPort.valid_contractValid hValid.portValid⟩end SelectVariantArtifactOne source arm admitted against a canonical variant.
structure SelectArmAdmissionArtifact where
sourceIndex : Nat
sourceKey : FieldLabel
canonicalKey : FieldLabel
mode : SelectResolutionMode
bodyNodes : List NodeId
bodyEntries : List AdmissionBoundaryPort
bodyExits : List AdmissionBoundaryPort
deriving Reprnamespace SelectArmAdmissionArtifactSerialized body-entry endpoint identities for this select arm.
def bodyEntryKeys (arm : SelectArmAdmissionArtifact) :
List (NodeId × FieldLabel × ContractId) :=
arm.bodyEntries.map AdmissionBoundaryPort.keySerialized body-exit endpoint identities for this select arm.
def bodyExitKeys (arm : SelectArmAdmissionArtifact) :
List (NodeId × FieldLabel × ContractId) :=
arm.bodyExits.map AdmissionBoundaryPort.keyCanonical arm key as the generic select-admission carrier expects it.
def canonicalSelectArmKey (arm : SelectArmAdmissionArtifact) : SelectArmKey :=
selectArmKeyOfFieldLabel arm.canonicalKeyBody boundary rows belong to nodes serialized in the arm body.
def BodyBoundariesClosed (arm : SelectArmAdmissionArtifact) : Prop :=
BoundaryPortsClosed arm.bodyNodes arm.bodyEntries ∧
BoundaryPortsClosed arm.bodyNodes arm.bodyExitsSelect arm body rows are duplicate-free by serialized identity.
def BodyRowsUnique (arm : SelectArmAdmissionArtifact) : Prop :=
arm.bodyNodes.Nodup ∧ arm.bodyEntryKeys.Nodup ∧ arm.bodyExitKeys.NodupSelect arm rows carry valid keys, body nodes, and boundary summaries.
structure Valid (arm : SelectArmAdmissionArtifact) : Prop where
sourceKeyValid : arm.sourceKey.Valid
canonicalKeyValid : arm.canonicalKey.Valid
bodyBoundariesClosed : arm.BodyBoundariesClosed
bodyRowsUnique : arm.BodyRowsUnique
bodyNodesValid : ∀ node, node ∈ arm.bodyNodes → node.Valid
bodyEntriesValid : BoundaryPortsValid arm.bodyEntries
bodyExitsValid : BoundaryPortsValid arm.bodyExitsend SelectArmAdmissionArtifact
Source select(...) admission artifact emitted for one condition node.
structure SelectAdmissionArtifact where
owner : NodeId
variants : List SelectVariantArtifact
arms : List SelectArmAdmissionArtifact
conditionNode : NodeId
deriving Reprnamespace SelectAdmissionArtifactCanonical variant keys exposed by the selected base node.
def variantKeys (artifact : SelectAdmissionArtifact) : List FieldLabel :=
artifact.variants.map SelectVariantArtifact.keyCanonical variant keys as generic select-admission arm keys.
def variantSelectArmKeys (artifact : SelectAdmissionArtifact) : List SelectArmKey :=
artifact.variants.map SelectVariantArtifact.selectArmKeyVariant rows projected into a selectable output shape.
def variantArmPorts (artifact : SelectAdmissionArtifact) :
List (SelectArmKey × PortSignature) :=
artifact.variants.map SelectVariantArtifact.armPortCanonical variant keys covered by source arms after label/contract fallback resolution.
def armCanonicalKeys (artifact : SelectAdmissionArtifact) : List FieldLabel :=
artifact.arms.map SelectArmAdmissionArtifact.canonicalKeyCanonical arm keys as generic select-admission arm keys.
def armCanonicalSelectArmKeys (artifact : SelectAdmissionArtifact) :
List SelectArmKey :=
artifact.arms.map SelectArmAdmissionArtifact.canonicalSelectArmKeySource-arm indexes persisted by the compiler artifact.
def armSourceIndexes (artifact : SelectAdmissionArtifact) : List Nat :=
artifact.arms.map SelectArmAdmissionArtifact.sourceIndexVariant keys exposed by the selected base node are unique.
def VariantKeysUnique (artifact : SelectAdmissionArtifact) : Prop :=
artifact.variantKeys.NodupSelect admission artifacts describe real exclusive output groups, not singleton outputs.
def VariantsAtLeastTwo (artifact : SelectAdmissionArtifact) : Prop :=
2 ≤ artifact.variants.lengthSelect variant ports all come from one source exclusive output group.
The compiler obtains these variants only after resolveExclusiveBoundary
accepts one non-empty exclusive frontier. The decoded artifact mirrors that
source obligation directly instead of relying on downstream bridge rows.
def (artifact : SelectAdmissionArtifact) : Prop :=
∃ owner index,
∀ variant, variant ∈ artifact.variants →
variant.port.exclusiveGroup = some (owner, index)Canonical arm keys are unique after label/contract fallback resolution.
def ArmCanonicalKeysUnique (artifact : SelectAdmissionArtifact) : Prop :=
artifact.armCanonicalKeys.NodupSource-arm indexes are unique in the serialized artifact.
def ArmSourceIndexesUnique (artifact : SelectAdmissionArtifact) : Prop :=
artifact.armSourceIndexes.NodupSource-arm indexes preserve executable source-order enumeration.
def ArmSourceIndexesCanonical (artifact : SelectAdmissionArtifact) : Prop :=
artifact.armSourceIndexes = List.range artifact.arms.lengthThe condition node that owns the latent branch family is the artifact owner.
def OwnerMatchesCondition (artifact : SelectAdmissionArtifact) : Prop :=
artifact.owner = artifact.conditionNodeSource arms cover exactly the base variants, order-insensitively.
This mirrors LatentSelectAdmission.entries_keys_perm in SelectAdmission.
def KeysCovered (artifact : SelectAdmissionArtifact) : Prop :=
artifact.armCanonicalKeys.Perm artifact.variantKeysSelect admission rows carry valid owner/condition identifiers and child rows.
structure RowsValid (artifact : SelectAdmissionArtifact) : Prop where
ownerValid : artifact.owner.Valid
conditionNodeValid : artifact.conditionNode.Valid
variantsValid : ∀ variant, variant ∈ artifact.variants → variant.Valid
armsValid : ∀ arm, arm ∈ artifact.arms → arm.ValidSelect admission owner, condition, and base variants are closed over the top-level node summary.
Arm body nodes are not checked here because they describe latent branch fragments: they need not be present in the already-compiled top-level node summary until runtime selected-branch replay materializes them.
structure DomainClosed (nodes : List NodeId) (artifact : SelectAdmissionArtifact) : Prop where
ownerClosed : artifact.owner ∈ nodes
conditionNodeClosed : artifact.conditionNode ∈ nodes
variantPortsClosed : ∀ variant, variant ∈ artifact.variants → variant.port.node ∈ nodesA serialized select arm's resolution mode matches the variant rows it was resolved against.
Label resolution must target a variant whose serialized label is the source key. Contract fallback must be unshadowed by any label of the same spelling and must identify exactly one variant contract. This mirrors executable Wire's label-first, unique-contract-fallback rule.
def ArmResolutionSound (artifact : SelectAdmissionArtifact) : Prop :=
∀ arm, arm ∈ artifact.arms →
match arm.mode with
| .resolvedByLabel =>
arm.sourceKey = arm.canonicalKey ∧
∃ variant, variant ∈ artifact.variants ∧
variant.key = arm.canonicalKey ∧
variant.port.label = AdmissionPortLabel.label arm.sourceKey
| .resolvedByContract =>
(∀ variant, variant ∈ artifact.variants →
variant.port.label ≠ AdmissionPortLabel.label arm.sourceKey) ∧
(∀ variant, variant ∈ artifact.variants →
(variant.port.contract.name = arm.sourceKey.name ↔
variant.key = arm.canonicalKey))Row-level validator obligations for a select-admission artifact.
structure Valid (artifact : SelectAdmissionArtifact) : Prop where
ownerMatchesCondition : artifact.OwnerMatchesCondition
keysCovered : artifact.KeysCovered
variantKeysUnique : artifact.VariantKeysUnique
variantsAtLeastTwo : artifact.VariantsAtLeastTwo
: artifact.VariantsShareExclusiveGroup
armCanonicalKeysUnique : artifact.ArmCanonicalKeysUnique
armSourceIndexesUnique : artifact.ArmSourceIndexesUnique
armSourceIndexesCanonical : artifact.ArmSourceIndexesCanonical
rowsValid : artifact.RowsValid
armResolutionSound : artifact.ArmResolutionSoundKey coverage forces the number of admitted arms to match the number of base variants.
theorem keysCovered_length_eq
{artifact : SelectAdmissionArtifact}
(hCovered : artifact.KeysCovered) :
artifact.arms.length = artifact.variants.length := artifact:SelectAdmissionArtifacthCovered:artifact.KeysCovered⊢ artifact.arms.length = artifact.variants.length
All goals completed! 🐙Field-label key coverage transports to the generic select-admission key carrier.
theorem keysCovered_selectArmKeys_perm
{artifact : SelectAdmissionArtifact}
(hCovered : artifact.KeysCovered) :
artifact.armCanonicalSelectArmKeys.Perm artifact.variantSelectArmKeys := artifact:SelectAdmissionArtifacthCovered:artifact.KeysCovered⊢ artifact.armCanonicalSelectArmKeys.Perm artifact.variantSelectArmKeys
artifact:SelectAdmissionArtifacthCovered:artifact.KeysCoveredhMapped:(List.map selectArmKeyOfFieldLabel artifact.armCanonicalKeys).Perm
(List.map selectArmKeyOfFieldLabel artifact.variantKeys)⊢ artifact.armCanonicalSelectArmKeys.Perm artifact.variantSelectArmKeys
All goals completed! 🐙Valid select artifacts project to the generic source-select output-shape carrier.
def toSelectableOutputShape
(artifact : SelectAdmissionArtifact)
(hValid : artifact.Valid) :
SelectAdmission.SelectableOutputShape where
armPorts := artifact.variantArmPorts
armsAtLeastTwo := artifact:SelectAdmissionArtifacthValid:artifact.Valid⊢ 2 ≤ artifact.variantArmPorts.length
All goals completed! 🐙
armKeysUnique := artifact:SelectAdmissionArtifacthValid:artifact.Valid⊢ (List.map Prod.fst artifact.variantArmPorts).Nodup
have hKeys :
artifact.variantSelectArmKeys.Nodup := artifact:SelectAdmissionArtifacthValid:artifact.Valid⊢ (List.map Prod.fst artifact.variantArmPorts).Nodup
have hMapped :
(artifact.variantKeys.map selectArmKeyOfFieldLabel).Nodup := artifact:SelectAdmissionArtifacthValid:artifact.Valid⊢ (List.map Prod.fst artifact.variantArmPorts).Nodup
exact
hValid.variantKeysUnique.map
(artifact:SelectAdmissionArtifacthValid:artifact.Valid⊢ Function.Injective selectArmKeyOfFieldLabel
intro left artifact:SelectAdmissionArtifacthValid:artifact.Validleft:FieldLabelright:FieldLabel⊢ selectArmKeyOfFieldLabel left = selectArmKeyOfFieldLabel right → left = right artifact:SelectAdmissionArtifacthValid:artifact.Validleft:FieldLabelright:FieldLabelhEq:selectArmKeyOfFieldLabel left = selectArmKeyOfFieldLabel right⊢ left = right
artifact:SelectAdmissionArtifacthValid:artifact.Validright:FieldLabelname✝:StringhEq:selectArmKeyOfFieldLabel { name := name✝ } = selectArmKeyOfFieldLabel right⊢ { name := name✝ } = right
artifact:SelectAdmissionArtifacthValid:artifact.Validname✝¹:Stringname✝:StringhEq:selectArmKeyOfFieldLabel { name := name✝¹ } = selectArmKeyOfFieldLabel { name := name✝ }⊢ { name := name✝¹ } = { name := name✝ }
artifact:SelectAdmissionArtifacthValid:artifact.Validname✝:String⊢ { name := name✝ } = { name := name✝ }
All goals completed! 🐙)
All goals completed! 🐙
All goals completed! 🐙
portLabelsUnique := artifact:SelectAdmissionArtifacthValid:artifact.Valid⊢ (List.map (fun entry => entry.2.label) artifact.variantArmPorts).Nodup
All goals completed! 🐙
armKeysValid := artifact:SelectAdmissionArtifacthValid:artifact.Valid⊢ ∀ entry ∈ artifact.variantArmPorts, entry.1.Valid
intro entry artifact:SelectAdmissionArtifacthValid:artifact.Validentry:SelectArmKey × PortSignaturehEntry:entry ∈ artifact.variantArmPorts⊢ entry.1.Valid
artifact:SelectAdmissionArtifacthValid:artifact.Validentry:SelectArmKey × PortSignaturehEntry:entry ∈ artifact.variantArmPortsvariant:SelectVariantArtifacthVariant:variant ∈ artifact.variantshEq:variant.armPort = entry⊢ entry.1.Valid
artifact:SelectAdmissionArtifacthValid:artifact.Validvariant:SelectVariantArtifacthVariant:variant ∈ artifact.variantshEntry:variant.armPort ∈ artifact.variantArmPorts⊢ variant.armPort.1.Valid
All goals completed! 🐙
armPortsValid := artifact:SelectAdmissionArtifacthValid:artifact.Valid⊢ ∀ entry ∈ artifact.variantArmPorts, entry.2.Valid
intro entry artifact:SelectAdmissionArtifacthValid:artifact.Validentry:SelectArmKey × PortSignaturehEntry:entry ∈ artifact.variantArmPorts⊢ entry.2.Valid
artifact:SelectAdmissionArtifacthValid:artifact.Validentry:SelectArmKey × PortSignaturehEntry:entry ∈ artifact.variantArmPortsvariant:SelectVariantArtifacthVariant:variant ∈ artifact.variantshEq:variant.armPort = entry⊢ entry.2.Valid
artifact:SelectAdmissionArtifacthValid:artifact.Validvariant:SelectVariantArtifacthVariant:variant ∈ artifact.variantshEntry:variant.armPort ∈ artifact.variantArmPorts⊢ variant.armPort.2.Valid
All goals completed! 🐙Valid select artifacts project to the generic latent-select key carrier.
The latent body is still the decoded artifact arm row, not a SubgraphSpec.
This is the first artifact-to-admission bridge: it proves that persisted arm
rows have the same key coverage shape as SelectAdmission.LatentSelectAdmission.
def toLatentSelectAdmission
(artifact : SelectAdmissionArtifact)
(hValid : artifact.Valid) :
SelectAdmission.LatentSelectAdmission SelectArmAdmissionArtifact where
shape := artifact.toSelectableOutputShape hValid
entries := artifact.arms.map fun arm => (arm.canonicalSelectArmKey, arm)
entries_keys_perm := artifact:SelectAdmissionArtifacthValid:artifact.Valid⊢ (List.map Prod.fst (List.map (fun arm => (arm.canonicalSelectArmKey, arm)) artifact.arms)).Perm
(artifact.toSelectableOutputShape hValid).armKeys
artifact:SelectAdmissionArtifacthValid:artifact.ValidhPerm:artifact.armCanonicalSelectArmKeys.Perm artifact.variantSelectArmKeys⊢ (List.map Prod.fst (List.map (fun arm => (arm.canonicalSelectArmKey, arm)) artifact.arms)).Perm
(artifact.toSelectableOutputShape hValid).armKeys
All goals completed! 🐙Entries in the artifact-projected latent admission are exactly decoded source arm rows.
theorem toLatentSelectAdmission_entry_sourceArm
{artifact : SelectAdmissionArtifact}
{hValid : artifact.Valid}
{entry : SelectArmKey × SelectArmAdmissionArtifact}
(hEntry : entry ∈ (artifact.toLatentSelectAdmission hValid).entries) :
∃ arm, arm ∈ artifact.arms ∧ entry = (arm.canonicalSelectArmKey, arm) := artifact:SelectAdmissionArtifacthValid:artifact.Validentry:SelectArmKey × SelectArmAdmissionArtifacthEntry:entry ∈ (artifact.toLatentSelectAdmission hValid).entries⊢ ∃ arm ∈ artifact.arms, entry = (arm.canonicalSelectArmKey, arm)
artifact:SelectAdmissionArtifacthValid:artifact.Validentry:SelectArmKey × SelectArmAdmissionArtifacthEntry:entry ∈ List.map (fun arm => (arm.canonicalSelectArmKey, arm)) artifact.arms⊢ ∃ arm ∈ artifact.arms, entry = (arm.canonicalSelectArmKey, arm)
artifact:SelectAdmissionArtifacthValid:artifact.Validentry:SelectArmKey × SelectArmAdmissionArtifacthEntry:entry ∈ List.map (fun arm => (arm.canonicalSelectArmKey, arm)) artifact.armsarm:SelectArmAdmissionArtifacthArm:arm ∈ artifact.armshEq:(arm.canonicalSelectArmKey, arm) = entry⊢ ∃ arm ∈ artifact.arms, entry = (arm.canonicalSelectArmKey, arm)
All goals completed! 🐙Latent entry keys are the canonical keys of their decoded source arm rows.
theorem toLatentSelectAdmission_entry_key_eq_bodyCanonical
{artifact : SelectAdmissionArtifact}
{hValid : artifact.Valid}
{entry : SelectArmKey × SelectArmAdmissionArtifact}
(hEntry : entry ∈ (artifact.toLatentSelectAdmission hValid).entries) :
entry.fst = entry.snd.canonicalSelectArmKey := artifact:SelectAdmissionArtifacthValid:artifact.Validentry:SelectArmKey × SelectArmAdmissionArtifacthEntry:entry ∈ (artifact.toLatentSelectAdmission hValid).entries⊢ entry.1 = entry.2.canonicalSelectArmKey
artifact:SelectAdmissionArtifacthValid:artifact.Validentry:SelectArmKey × SelectArmAdmissionArtifacthEntry:entry ∈ (artifact.toLatentSelectAdmission hValid).entriesarm:SelectArmAdmissionArtifact_hArm:arm ∈ artifact.armshEq:entry = (arm.canonicalSelectArmKey, arm)⊢ entry.1 = entry.2.canonicalSelectArmKey
artifact:SelectAdmissionArtifacthValid:artifact.Validarm:SelectArmAdmissionArtifact_hArm:arm ∈ artifact.armshEntry:(arm.canonicalSelectArmKey, arm) ∈ (artifact.toLatentSelectAdmission hValid).entries⊢ (arm.canonicalSelectArmKey, arm).1 = (arm.canonicalSelectArmKey, arm).2.canonicalSelectArmKey
All goals completed! 🐙Every decoded source arm appears in the artifact-projected latent admission.
theorem toLatentSelectAdmission_sourceArm_entry
{artifact : SelectAdmissionArtifact}
{hValid : artifact.Valid}
{arm : SelectArmAdmissionArtifact}
(hArm : arm ∈ artifact.arms) :
(arm.canonicalSelectArmKey, arm) ∈
(artifact.toLatentSelectAdmission hValid).entries := artifact:SelectAdmissionArtifacthValid:artifact.Validarm:SelectArmAdmissionArtifacthArm:arm ∈ artifact.arms⊢ (arm.canonicalSelectArmKey, arm) ∈ (artifact.toLatentSelectAdmission hValid).entries
artifact:SelectAdmissionArtifacthValid:artifact.Validarm:SelectArmAdmissionArtifacthArm:arm ∈ artifact.arms⊢ (arm.canonicalSelectArmKey, arm) ∈ List.map (fun arm => (arm.canonicalSelectArmKey, arm)) artifact.arms
All goals completed! 🐙Latent bodies produced from valid artifacts retain source-arm row validity.
theorem toLatentSelectAdmission_entry_body_valid
{artifact : SelectAdmissionArtifact}
{hValid : artifact.Valid}
{entry : SelectArmKey × SelectArmAdmissionArtifact}
(hEntry : entry ∈ (artifact.toLatentSelectAdmission hValid).entries) :
entry.snd.Valid := artifact:SelectAdmissionArtifacthValid:artifact.Validentry:SelectArmKey × SelectArmAdmissionArtifacthEntry:entry ∈ (artifact.toLatentSelectAdmission hValid).entries⊢ entry.2.Valid
artifact:SelectAdmissionArtifacthValid:artifact.Validentry:SelectArmKey × SelectArmAdmissionArtifacthEntry:entry ∈ (artifact.toLatentSelectAdmission hValid).entriesarm:SelectArmAdmissionArtifacthArm:arm ∈ artifact.armshEq:entry = (arm.canonicalSelectArmKey, arm)⊢ entry.2.Valid
artifact:SelectAdmissionArtifacthValid:artifact.Validarm:SelectArmAdmissionArtifacthArm:arm ∈ artifact.armshEntry:(arm.canonicalSelectArmKey, arm) ∈ (artifact.toLatentSelectAdmission hValid).entries⊢ (arm.canonicalSelectArmKey, arm).2.Valid
All goals completed! 🐙end SelectAdmissionArtifactend AdmissionArtifactend Cortex.Wire