Skip to content

Advanced Simplification #8

@haz

Description

@haz

Either a modification of the simplify method or an extended version / separate:

  • If an internal node has both a literal and it's negation, replace it with true (if an Or) or false (if an And), as appropriate.
  • If every child of an Or node n is either literal L, or of the form And([L, ...]), then remove L from the children and add it to the parent of n. If n is the root, then a new root is created: And([L, n])

The first fixes some degenerate cases, and the second propagates recognized backbones up the structure. It needs to be revised slightly for DAGs instead of trees -- (1) only remove the literal if there's no other incoming edge to the And node child of n; and (2) another simplification to remove redundant literals if they are already implied (all ancestor paths have an And node with the literal as a sibling) -- but it's an important step in being able to assess backbones quickly (useful in other fields like planning with partial observability).

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions