Skip to content

The build_circuit() function may disable the structured decomposability property? #385

@chenweixin107

Description

@chenweixin107

I am trying to load a Logical Circuit from SDD as follows:

with NamedTemporaryFile() as f:
    # export the SDD to a file
    alpha.save(f.name.encode())
    f.flush()

    # parse the SDD representation using the SDD class
    alpha_sdd = SDD.from_file(f.name)
    alpha_symbolic = alpha_sdd.build_circuit()

It's known that an SDD satisfies both structured decomposability and partitioned determinism. So, this Logical Circuit is supposed to have these properties as well.

However, when I printed out the properties of this Logical Circuit, it turned out that it does not satisfy structured decomposability.

alpha_symbolic.properties
StructuralProperties(smooth=True, decomposable=True, structured_decomposable=False, omni_compatible=False)

Meanwhile, I noticed that the build_circuit() function will trim and compress the SDD using unit propagation. So I assume these operations may damage the structure of SDD, making the resulting Logical Circuit does not possess the good properties held in SDDs.
I wonder whether my intuition is correct. Thanks!

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions