Documentation

Complexitylib.Algebraic.MassProduction.Nonuniform.RoutingSources

Identifying source records without key uniqueness #

In the packed routing layout, the false tag identifies exactly the source prefix. Source keys and payloads may repeat arbitrarily.

theorem Algebraic.MassProduction.Nonuniform.Broadcast.routingRecordSequence_sourceOfTag {sourceCount keyWidth payloadWidth destinationCount paddingCount : ℕ} (sourceKeys : Fin sourceCount → Fin keyWidth → Bool) (sourcePayloads : Fin sourceCount → Fin payloadWidth → Bool) (destinationKeys : Fin destinationCount → Fin keyWidth → Bool) (destinationPayloads : Fin destinationCount → Fin payloadWidth → Bool) (paddingKeys : Fin paddingCount → Fin keyWidth → Bool) (paddingPayloads : Fin paddingCount → Fin payloadWidth → Bool) (index : Fin (sourceCount + destinationCount + paddingCount)) (sourceTag : Routing.packedRecordTag (Routing.routingRecordSequence sourceKeys sourcePayloads destinationKeys destinationPayloads paddingKeys paddingPayloads index) = false) :
∃ (source : Fin sourceCount), Routing.routingRecordSequence sourceKeys sourcePayloads destinationKeys destinationPayloads paddingKeys paddingPayloads index = Routing.packRecord (sourceKeys source) false (sourcePayloads source)

Every false-tagged raw routing record is one of the declared sources.

theorem Algebraic.MassProduction.Nonuniform.Broadcast.routingInputBits_sourceOfTag {sourceCount keyWidth payloadWidth destinationCount paddingCount depth : ℕ} (sourceKeys : Fin sourceCount → Fin keyWidth → Bool) (sourcePayloads : Fin sourceCount → Fin payloadWidth → Bool) (destinationKeys : Fin destinationCount → Fin keyWidth → Bool) (destinationPayloads : Fin destinationCount → Fin payloadWidth → Bool) (paddingKeys : Fin paddingCount → Fin keyWidth → Bool) (paddingPayloads : Fin paddingCount → Fin payloadWidth → Bool) (recordCount : sourceCount + destinationCount + paddingCount = Sorting.networkRecords depth) (index : Fin (Sorting.networkRecords depth)) (sourceTag : Routing.recordTag (Routing.routingInputBits sourceKeys sourcePayloads destinationKeys destinationPayloads paddingKeys paddingPayloads recordCount) index = false) :
∃ (source : Fin sourceCount), Sorting.flatRecords (Routing.routingInputBits sourceKeys sourcePayloads destinationKeys destinationPayloads paddingKeys paddingPayloads recordCount) index = Routing.packRecord (sourceKeys source) false (sourcePayloads source)

The same source classification holds after casting and flattening to the exact power-of-two routing capacity.