Threshold counting for decomposable representations #
A smooth decomposable DAG has unions on a common scope and binary products on disjoint scopes. Leaves have at most one assignment. Its denotations satisfy the usual local semantics; a decreasing rank rules out cycles. Unions need not be disjoint, and different branches may use different partitions.
An occurrence in an accepting certificate supplies an outside context. Substituting any
assignment accepted by that node preserves acceptance at the root. Thus a node and all its
contexts form a rectangle. Descending a certificate to the cardinality threshold charges
at most (K - 1)^2 inputs to a union edge and (K - 1)^3 to a product node.
The certificate-context rectangle construction is standard in the DNNF literature; see Bova, Capelli, Mengel and Slivovsky, IJCAI 2016. The threshold estimate here does not require deterministic unions or a single tree of coordinate partitions.
The three node types of a smooth decomposable representation.
- leaf {N : Type u_1} : DecomposableGate N
- union {N : Type u_1} (children : Finset N) : DecomposableGate N
- product {N : Type u_1} (left right : N) : DecomposableGate N
Instances For
A finite acyclic union/product representation, with its local denotational semantics.
Literal leaves and constants satisfy leaf_small; arbitrary predicates are not free leaves.
Finiteness of the node type is needed only for the size bound.
- scope : N → Set ι
The coordinates each node is about.
- root : N
The root node, whose scope is everything.
- gate : N → DecomposableGate N
The gate at each node: a leaf, a union of children, or a product of two.
- rank : N → ℕ
A rank that decreases from each node to its children.
The partial inputs each node accepts, on its scope.
- union_values (v : N) (c : Finset N) : self.gate v = DecomposableGate.union c → ∀ (x : ι → U), (self.scope v).domRestrict x ∈ self.values v ↔ ∃ u ∈ c, (self.scope u).domRestrict x ∈ self.values u
- product_values (v l r : N) : self.gate v = DecomposableGate.product l r → ∀ (x : ι → U), (self.scope v).domRestrict x ∈ self.values v ↔ (self.scope l).domRestrict x ∈ self.values l ∧ (self.scope r).domRestrict x ∈ self.values r
Instances For
A node occurs on an accepting certificate for x. At a union, any accepting child
can be selected. At a product, both children occur.
- root {ι : Type u_1} {U : Type u_2} {N : Type u_3} {P : Decomposable ι U N} {x : ι → U} : x ∈ P.accepted → P.Occurs x P.root
- union {ι : Type u_1} {U : Type u_2} {N : Type u_3} {P : Decomposable ι U N} {x : ι → U} {v u : N} {c : Finset N} : P.Occurs x v → P.gate v = DecomposableGate.union c → u ∈ c → x ∈ P.accepts u → P.Occurs x u
- left {ι : Type u_1} {U : Type u_2} {N : Type u_3} {P : Decomposable ι U N} {x : ι → U} {v l r : N} : P.Occurs x v → P.gate v = DecomposableGate.product l r → P.Occurs x l
- right {ι : Type u_1} {U : Type u_2} {N : Type u_3} {P : Decomposable ι U N} {x : ι → U} {v l r : N} : P.Occurs x v → P.gate v = DecomposableGate.product l r → P.Occurs x r
Instances For
The substitution property follows from the syntax and decomposability.
Outside assignments supplied by accepting certificates through a node.
Instances For
Inputs for which threshold descent can stop at this node.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Every accepted input has a stopping node. Rank makes the descent finite even with sharing.
The local threshold budget of a node.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Count outgoing union edges, including shared children once for each parent.
Equations
- P.unionEdges = ∑ v : N, match P.gate v with | Complexity.Frontier.DecomposableGate.union c => c.card | x => 0
Instances For
Count binary product nodes.
Equations
- P.products = ∑ v : N, match P.gate v with | Complexity.Frontier.DecomposableGate.product left right => 1 | x => 0
Instances For
Decomposable threshold counting. The denotation of a smooth decomposable DAG cannot be both large and rectangle-free unless the DAG has many nodes or edges.
A simpler bound charging the same cubic budget to each union edge or product node.