The number written by a circuit: definition #
The function counterpart of the circuit value problem
(DescriptiveComplexity.CVP). An instance is a Boolean circuit with several
output gates and a comparison below between them; the outputs, read in that
order, are the binary digits of a natural number, and
DescriptiveComplexity.CircuitNumber is the problem of computing it.
FirstOrder.Language.numCircuit: the vocabulary of circuits (FirstOrder.Language.circuit) with one more binary symbol,below.- A circuit over it is a circuit in the sense of
DescriptiveComplexity.CVP, by forgettingbelow(DescriptiveComplexity.circuitOfNum): its gates are evaluated byDescriptiveComplexity.GateVal. DescriptiveComplexity.circuitNumber: an output gategderiving the value1contributes2 ^ r, whereris the number of output gates strictly belowg(DescriptiveComplexity.outRank). This is the number whose binary digits are the values of the output gates, the lowest holding the least significant digit, whenbelowlinearly orders the output gates (DescriptiveComplexity.OutOrder); an instance whosebelowdoes not writes0.
Dependency graph
Dependency graph
Dependency graph
isNot g: the element g is a negation gate, its argument read off
left.
Instances For
Dependency graph
The relation symbols of the language.
- isTrue : numCircuitRel 1
isTrue g: the elementgis a constant input gate holding1. - isFalse : numCircuitRel 1
isFalse g: the elementgis a constant input gate holding0. - isAnd : numCircuitRel 1
isAnd g: the elementgis a conjunction gate. - isOr : numCircuitRel 1
isOr g: the elementgis a disjunction gate. - isNot : numCircuitRel 1
- out : numCircuitRel 1
out g: the elementgis an output gate, holding one digit. - left : numCircuitRel 2
left g x: the gategtakesxas its first argument. - right : numCircuitRel 2
right g x: the gategtakesxas its second argument. - below : numCircuitRel 2
below h g: the digit held byhis at most as significant as the one held byg.
Instances For
Dependency graph
Dependency graph
Dependency graph
Dependency graph
Dependency graph
The relational language of Boolean circuits writing a number: the symbols
of FirstOrder.Language.circuit, and a comparison of the output gates.
Equations
- FirstOrder.Language.numCircuit = { Functions := fun (x : ℕ) => Empty, Relations := FirstOrder.Language.numCircuitRel }
Instances For
Dependency graph
Dependency graph
Equations
- One or more equations did not get rendered due to their size.
Instances For
Dependency graph
Dependency graph
below h g: the digit held by h is at most as significant as the one
held by g.
Instances For
Dependency graph
The underlying circuit #
Forgetting the comparison of the outputs: the vocabulary of circuits, read in the vocabulary of circuits writing a number.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Dependency graph
A circuit writing a number is a circuit.
Dependency graph
An isomorphism of circuits writing a number is an isomorphism of the underlying circuits.
Equations
- DescriptiveComplexity.numCircuitEquiv e = { toEquiv := e.toEquiv, map_fun' := ⋯, map_rel' := ⋯ }
Instances For
Dependency graph
The number #
The output gate g holds the digit 1.
Equations
Instances For
Dependency graph
h is an output gate strictly below g.
Equations
Instances For
Dependency graph
The rank of a gate among the outputs: the number of output gates strictly below it.
Equations
Instances For
Dependency graph
The comparison of the outputs is a linear order on them: reflexive, transitive, antisymmetric and total among the output gates.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Dependency graph
The number written by a circuit: each output gate deriving the value
1 contributes two to the power of its rank among the outputs; 0 unless the
outputs are linearly ordered.
Equations
Instances For
Dependency graph
Isomorphism-invariance and the bundled problem #
The number written is isomorphism-invariant.
Dependency graph
The number written by a circuit, as a counting problem on
Language.numCircuit-structures: the function counterpart of
DescriptiveComplexity.CVP.
Equations
- DescriptiveComplexity.CircuitNumber = { Count := fun (A : Type) (inst : FirstOrder.Language.numCircuit.Structure A) => DescriptiveComplexity.circuitNumber A, iso_invariant := ⋯ }