Constraint and Consequence
 
   
  Craig Holman   Research   Jabberwocky   Quotations   Contact
 
  Home > Jabberwocky           Previous      Next
 
 
 

Jabberwocky for June 13, 2008

 
 

Sample run of the Reduce to Elegance Algorithm

          First in thread      Previous in thread      Next in thread

This is a sample run of my Satisfy application up through reduction to Elegant Normal Form.

The expression was generated with the following parameters:

  • Number of literals = 50
  • Number of variables = 10
  • Probability that a junctor is an And rather than an Or = 50%
  • Probability that a literal is negated = 50%
  • Probability that a junctor is negated = 0%

I've annotated the run listing in red.

This program run, without the colors, is available as a file.

The C++ source code that performed the reduction to elegance was presented on June 10.

Expression

And : &, Or : |, Not : -

((-1&((8&(((-5|-5)&0)&-3))&-1))|(7|((7|((((-9|9)&(4&1))|((-5|(-9|3))|(((((-1&(8|
(-2|(-8&7))))|(7|6))|-5)&4)|(((4|-2)&(0|6))|9))))&((-0|(2&(-4|(2|4))))&(8|(9&-3)
))))|((-4|(8&(((9&-8)|4)|((-8&(-8&8))|(9&(-1&-2))))))&8))))

Binary Expression Tree

The Build Tree algorithm built the following binary expression tree from 
the original expression.

The root of the tree is at the left edge at the bottom of this section.

The children of a node appear somewhere above and below it and are indented four
spaces more than their parent.

                    Literal 8
                And
                                                Literal 2
                                            Not
                                        And
                                                Literal 1
                                            Not
                                    And
                                        Literal 9
                                Or
                                            Literal 8
                                        And
                                                Literal 8
                                            Not
                                    And
                                            Literal 8
                                        Not
                            Or
                                    Literal 4
                                Or
                                            Literal 8
                                        Not
                                    And
                                        Literal 9
                        And
                            Literal 8
                    Or
                            Literal 4
                        Not
            Or
                                        Literal 3
                                    Not
                                And
                                    Literal 9
                            Or
                                Literal 8
                        And
                                            Literal 4
                                        Or
                                            Literal 2
                                    Or
                                            Literal 4
                                        Not
                                And
                                    Literal 2
                            Or
                                    Literal 0
                                Not
                    And
                                        Literal 9
                                    Or
                                                Literal 6
                                            Or
                                                Literal 0
                                        And
                                                    Literal 2
                                                Not
                                            Or
                                                Literal 4
                                Or
                                        Literal 4
                                    And
                                                Literal 5
                                            Not
                                        Or
                                                    Literal 6
                                                Or
                                                    Literal 7
                                            Or
                                                                Literal 7
                                                            And
                                                                    Literal 8
                                                                Not
                                                        Or
                                                                Literal 2
                                                            Not
                                                    Or
                                                        Literal 8
                                                And
                                                        Literal 1
                                                    Not
                            Or
                                        Literal 3
                                    Or
                                            Literal 9
                                        Not
                                Or
                                        Literal 5
                                    Not
                        Or
                                    Literal 1
                                And
                                    Literal 4
                            And
                                    Literal 9
                                Or
                                        Literal 9
                                    Not
                Or
                    Literal 7
        Or
            Literal 7
    Or
                    Literal 1
                Not
            And
                            Literal 3
                        Not
                    And
                            Literal 0
                        And
                                    Literal 5
                                Not
                            Or
                                    Literal 5
                                Not
                And
                    Literal 8
        And
                Literal 1
            Not
Root

Binary Constraint Tree

The Propagate Truth Value algorithm was applied to the binary expression tree
with the value of True being propagated from the root, resulting in the following 
binary constraint tree.

At each literal node, the literal is constrained to the truth value following 
the arrow. 

                    Literal 8 -> true
                And
                                            Literal 2 -> false
                                        And
                                            Literal 1 -> false
                                    And
                                        Literal 9 -> true
                                Or
                                            Literal 8 -> true
                                        And
                                            Literal 8 -> false
                                    And
                                        Literal 8 -> false
                            Or
                                    Literal 4 -> true
                                Or
                                        Literal 8 -> false
                                    And
                                        Literal 9 -> true
                        And
                            Literal 8 -> true
                    Or
                        Literal 4 -> false
            Or
                                    Literal 3 -> false
                                And
                                    Literal 9 -> true
                            Or
                                Literal 8 -> true
                        And
                                            Literal 4 -> true
                                        Or
                                            Literal 2 -> true
                                    Or
                                        Literal 4 -> false
                                And
                                    Literal 2 -> true
                            Or
                                Literal 0 -> false
                    And
                                        Literal 9 -> true
                                    Or
                                                Literal 6 -> true
                                            Or
                                                Literal 0 -> true
                                        And
                                                Literal 2 -> false
                                            Or
                                                Literal 4 -> true
                                Or
                                        Literal 4 -> true
                                    And
                                            Literal 5 -> false
                                        Or
                                                    Literal 6 -> true
                                                Or
                                                    Literal 7 -> true
                                            Or
                                                                Literal 7 -> true
                                                            And
                                                                Literal 8 -> false
                                                        Or
                                                            Literal 2 -> false
                                                    Or
                                                        Literal 8 -> true
                                                And
                                                    Literal 1 -> false
                            Or
                                        Literal 3 -> true
                                    Or
                                        Literal 9 -> false
                                Or
                                    Literal 5 -> false
                        Or
                                    Literal 1 -> true
                                And
                                    Literal 4 -> true
                            And
                                    Literal 9 -> true
                                Or
                                    Literal 9 -> false
                Or
                    Literal 7 -> true
        Or
            Literal 7 -> true
    Or
                Literal 1 -> false
            And
                        Literal 3 -> false
                    And
                            Literal 0 -> true
                        And
                                Literal 5 -> false
                            Or
                                Literal 5 -> false
                And
                    Literal 8 -> true
        And
            Literal 1 -> false
Root

Constraint Tree

The Gather Junctors algorithm was applied to the binary constraint tree,
resulting in the following constraint tree.

The address in memory of each node is shown to the left for reference.

The root of the tree is the uppermost And node.

Each And node is associated with its guard set that contains its constraints, 
shown within { }

00A21E90        And { }
00A21F50            Or
00A22070                And { +0, -1, -3, +8 }
00A22430                    Or
00A223D0                        And { -5 }
00A224F0                        And { -5 }
00A226D0                And { +7 }
00A22850                And { +7 }
00A22970                And { }
00A229D0                    Or
00A22A30                        And { +1, +4 }
00A22B50                            Or
00A22AF0                                And { -9 }
00A22BB0                                And { +9 }
00A22E50                        And { -5 }
00A22FD0                        And { -9 }
00A23090                        And { +3 }
00A23150                        And { +4 }
00A231B0                            Or
00A23330                                And { -1 }
00A23450                                    Or
00A233F0                                        And { +8 }
00A23570                                        And { -2 }
00A23750                                        And { +7, -8 }
00A234B0                                And { +7 }
00A23810                                And { +6 }
00A23870                                And { -5 }
00A239F0                        And { }
00A23AB0                            Or
00A23A50                                And { +4 }
00A23B70                                And { -2 }
00A23C90                            Or
00A23C30                                And { +0 }
00A23CF0                                And { +6 }
00A23BD0                        And { +9 }
00A23DB0                    Or
00A23D50                        And { -0 }
00A23ED0                        And { +2 }
00A24050                            Or
00A23FF0                                And { -4 }
00A24110                                And { +2 }
00A241D0                                And { +4 }
00A240B0                    Or
00A23F30                        And { +8 }
00A242F0                        And { -3, +9 }
00A24590                And { +8 }
00A24410                    Or
00A227F0                        And { -4 }
00A24530                        And { +8 }
00A245F0                            Or
00A24710                                And { -8, +9 }
00A24830                                And { +4 }
00A24A10                                And { +8, -8 }
00A24CB0                                And { -1, -2, +9 }

The Reduce to Elegance algorithm is applied to the constraint tree in order to
reduce it to Elegant Normal Form.

After each group of changes in the constraint tree, a snapshot of the constraint
tree will be displayed. I've colored some important messages in the output in blue,
colored nodes at or near the points of application in blue, and used red to highlight 
some relevant constraints.

A close study of this example will reveal that the algorithm can be improved.
It can and will be.

The remainder of this run is the output of the Reduce to Elegance algorithm

ReduceToElegance()
   about to call AndReduceToElegance
AndReduceToElegance( 00A21E90,  dominant: { },  command: { } )
   major cycle of reduction
      current node = 00A21E90
InconsistentHandle( 00A21E90, dominant: { }, handle: { } )
   handle is consistent
      child = 00A21F50
         calling OrReduceToElegance
OrReduceToElegance( 00A21F50, dominant: { }, command: { } )
   child = 00A22070
      local command set = { +7 }
      calling AndReduceToElegance
AndReduceToElegance( 00A22070,  dominant: { },  command: { +7 } )
   major cycle of reduction
      current node = 00A22070
InconsistentHandle( 00A22070, dominant: { }, handle: { } )
   handle is consistent
      child = 00A22430
         calling OrReduceToElegance
OrReduceToElegance( 00A22430, dominant: { +0, -1, -3, +8 }, command: { +7 } )
   child = 00A223D0
      local command set = { -5, +7 }
      calling AndReduceToElegance
AndReduceToElegance( 00A223D0,  dominant: { +0, -1, -3, +8 },  command: { -5, +7 } )
   deleting current node 00A223D0 due to one-constraint subsumption
      AndReduceToElegance returned kersDelete
         there is more than one child
ReleaseTree( 00A223D0 )

Constraint Tree

00A21E90        And { }
00A21F50            Or
00A22070                And { +0, -1, -3, +8 }
00A22430                    Or
00A224F0                        And { -5 }
00A226D0                And { +7 }
00A22850                And { +7 }
00A22970                And { }
00A229D0                    Or
00A22A30                        And { +1, +4 }
00A22B50                            Or
00A22AF0                                And { -9 }
00A22BB0                                And { +9 }
00A22E50                        And { -5 }
00A22FD0                        And { -9 }
00A23090                        And { +3 }
00A23150                        And { +4 }
00A231B0                            Or
00A23330                                And { -1 }
00A23450                                    Or
00A233F0                                        And { +8 }
00A23570                                        And { -2 }
00A23750                                        And { +7, -8 }
00A234B0                                And { +7 }
00A23810                                And { +6 }
00A23870                                And { -5 }
00A239F0                        And { }
00A23AB0                            Or
00A23A50                                And { +4 }
00A23B70                                And { -2 }
00A23C90                            Or
00A23C30                                And { +0 }
00A23CF0                                And { +6 }
00A23BD0                        And { +9 }
00A23DB0                    Or
00A23D50                        And { -0 }
00A23ED0                        And { +2 }
00A24050                            Or
00A23FF0                                And { -4 }
00A24110                                And { +2 }
00A241D0                                And { +4 }
00A240B0                    Or
00A23F30                        And { +8 }
00A242F0                        And { -3, +9 }
00A24590                And { +8 }
00A24410                    Or
00A227F0                        And { -4 }
00A24530                        And { +8 }
00A245F0                            Or
00A24710                                And { -8, +9 }
00A24830                                And { +4 }
00A24A10                                And { +8, -8 }
00A24CB0                                And { -1, -2, +9 }

   child = 00A224F0
      local command set = { +7 }
      calling AndReduceToElegance
AndReduceToElegance( 00A224F0,  dominant: { +0, -1, -3, +8 },  command: { +7 } )
   major cycle of reduction
      current node = 00A224F0
InconsistentHandle( 00A224F0, dominant: { +0, -1, -3, +8 }, handle: { } )
   handle is consistent
OrCut( 00A224F0 )
   end of major cycle of reduction - AndReduceToElegance
        AndReduceToElegance returned kersKeep
      checking for promotability of constraints
         promote constraints { -5 }
         OrReduceToElegance returned kersPromoteConstraints

Constraint Tree

00A21E90        And { }
00A21F50            Or
00A22070                And { +0, -0, -1, -3, -5, +8 }
00A22430                    Or
00A224F0                        And { }
00A226D0                And { +7 }
00A22850                And { +7 }
00A22970                And { }
00A229D0                    Or
00A22A30                        And { +1, +4 }
00A22B50                            Or
00A22AF0                                And { -9 }
00A22BB0                                And { +9 }
00A22E50                        And { -5 }
00A22FD0                        And { -9 }
00A23090                        And { +3 }
00A23150                        And { +4 }
00A231B0                            Or
00A23330                                And { -1 }
00A23450                                    Or
00A233F0                                        And { +8 }
00A23570                                        And { -2 }
00A23750                                        And { +7, -8 }
00A234B0                                And { +7 }
00A23810                                And { +6 }
00A23870                                And { -5 }
00A239F0                        And { }
00A23AB0                            Or
00A23A50                                And { +4 }
00A23B70                                And { -2 }
00A23C90                            Or
00A23C30                                And { +0 }
00A23CF0                                And { +6 }
00A23BD0                        And { +9 }
00A23DB0                    Or
00A23D50                        And { -0 }
00A23ED0                        And { +2 }
00A24050                            Or
00A23FF0                                And { -4 }
00A24110                                And { +2 }
00A241D0                                And { +4 }
00A240B0                    Or
00A23F30                        And { +8 }
00A242F0                        And { -3, +9 }
00A24590                And { +8 }
00A24410                    Or
00A227F0                        And { -4 }
00A24530                        And { +8 }
00A245F0                            Or
00A24710                                And { -8, +9 }
00A24830                                And { +4 }
00A24A10                                And { +8, -8 }
00A24CB0                                And { -1, -2, +9 }

AndCut( 00A22430 )
   child = 00A224F0
      child = 00A22430
         calling OrReduceToElegance
OrReduceToElegance( 00A22430, dominant: { +0, -1, -3, +8 }, command: { +7 } )
   child = 00A224F0
      local command set = { +7 }
      calling AndReduceToElegance
AndReduceToElegance( 00A224F0,  dominant: { +0, -1, -3, +8 },  command: { +7 } )
   disconnecting current node 00A224F0 due to zero-constraint subsumption
        AndReduceToElegance returned kersDisconnect
         OrReduceToElegance returned kersDisconnect
ReleaseTree( 00A22430 )
ReleaseTree( 00A224F0 )
         erasing child = 00A22430

Constraint Tree

00A21E90        And { }
00A21F50            Or
00A22070                And { +0, -0, -1, -3, -5, +8 }
00A226D0                And { +7 }
00A22850                And { +7 }
00A22970                And { }
00A229D0                    Or
00A22A30                        And { +1, +4 }
00A22B50                            Or
00A22AF0                                And { -9 }
00A22BB0                                And { +9 }
00A22E50                        And { -5 }
00A22FD0                        And { -9 }
00A23090                        And { +3 }
00A23150                        And { +4 }
00A231B0                            Or
00A23330                                And { -1 }
00A23450                                    Or
00A233F0                                        And { +8 }
00A23570                                        And { -2 }
00A23750                                        And { +7, -8 }
00A234B0                                And { +7 }
00A23810                                And { +6 }
00A23870                                And { -5 }
00A239F0                        And { }
00A23AB0                            Or
00A23A50                                And { +4 }
00A23B70                                And { -2 }
00A23C90                            Or
00A23C30                                And { +0 }
00A23CF0                                And { +6 }
00A23BD0                        And { +9 }
00A23DB0                    Or
00A23D50                        And { -0 }
00A23ED0                        And { +2 }
00A24050                            Or
00A23FF0                                And { -4 }
00A24110                                And { +2 }
00A241D0                                And { +4 }
00A240B0                    Or
00A23F30                        And { +8 }
00A242F0                        And { -3, +9 }
00A24590                And { +8 }
00A24410                    Or
00A227F0                        And { -4 }
00A24530                        And { +8 }
00A245F0                            Or
00A24710                                And { -8, +9 }
00A24830                                And { +4 }
00A24A10                                And { +8, -8 }
00A24CB0                                And { -1, -2, +9 }

        AndReduceToElegance returned kersKeep
   child = 00A226D0
      local command set = { +7 }
      calling AndReduceToElegance
AndReduceToElegance( 00A226D0,  dominant: { },  command: { +7 } )
   deleting current node 00A226D0 due to one-constraint subsumption
      AndReduceToElegance returned kersDelete
         there is more than one child
ReleaseTree( 00A226D0 )

Constraint Tree

00A21E90        And { }
00A21F50            Or
00A22070                And { +0, -0, -1, -3, -5, +8 }
00A22850                And { +7 }
00A22970                And { }
00A229D0                    Or
00A22A30                        And { +1, +4 }
00A22B50                            Or
00A22AF0                                And { -9 }
00A22BB0                                And { +9 }
00A22E50                        And { -5 }
00A22FD0                        And { -9 }
00A23090                        And { +3 }
00A23150                        And { +4 }
00A231B0                            Or
00A23330                                And { -1 }
00A23450                                    Or
00A233F0                                        And { +8 }
00A23570                                        And { -2 }
00A23750                                        And { +7, -8 }
00A234B0                                And { +7 }
00A23810                                And { +6 }
00A23870                                And { -5 }
00A239F0                        And { }
00A23AB0                            Or
00A23A50                                And { +4 }
00A23B70                                And { -2 }
00A23C90                            Or
00A23C30                                And { +0 }
00A23CF0                                And { +6 }
00A23BD0                        And { +9 }
00A23DB0                    Or
00A23D50                        And { -0 }
00A23ED0                        And { +2 }
00A24050                            Or
00A23FF0                                And { -4 }
00A24110                                And { +2 }
00A241D0                                And { +4 }
00A240B0                    Or
00A23F30                        And { +8 }
00A242F0                        And { -3, +9 }
00A24590                And { +8 }
00A24410                    Or
00A227F0                        And { -4 }
00A24530                        And { +8 }
00A245F0                            Or
00A24710                                And { -8, +9 }
00A24830                                And { +4 }
00A24A10                                And { +8, -8 }
00A24CB0                                And { -1, -2, +9 }

   child = 00A22850
      local command set = { }
      calling AndReduceToElegance
AndReduceToElegance( 00A22850,  dominant: { },  command: { } )
   major cycle of reduction
      current node = 00A22850
InconsistentHandle( 00A22850, dominant: { }, handle: { } )
   handle is consistent
OrCut( 00A22850 )
   end of major cycle of reduction - AndReduceToElegance
        AndReduceToElegance returned kersKeep
   child = 00A22970
      local command set = { +7 }
      calling AndReduceToElegance
AndReduceToElegance( 00A22970,  dominant: { },  command: { +7 } )
   major cycle of reduction
      current node = 00A22970
InconsistentHandle( 00A22970, dominant: { }, handle: { } )
   handle is consistent
      child = 00A229D0
         calling OrReduceToElegance
OrReduceToElegance( 00A229D0, dominant: { }, command: { +7 } )
   child = 00A22A30
      local command set = { +3, -5, +7, +9, -9 }
      requesting disconnect due to inconsistent command set
         OrReduceToElegance returned kersDisconnect
ReleaseTree( 00A229D0 )
ReleaseTree( 00A22A30 )
ReleaseTree( 00A22B50 )
ReleaseTree( 00A22AF0 )
ReleaseTree( 00A22BB0 )
ReleaseTree( 00A22E50 )
ReleaseTree( 00A22FD0 )
ReleaseTree( 00A23090 )
ReleaseTree( 00A23150 )
ReleaseTree( 00A231B0 )
ReleaseTree( 00A23330 )
ReleaseTree( 00A23450 )
ReleaseTree( 00A233F0 )
ReleaseTree( 00A23570 )
ReleaseTree( 00A23750 )
ReleaseTree( 00A234B0 )
ReleaseTree( 00A23810 )
ReleaseTree( 00A23870 )
ReleaseTree( 00A239F0 )
ReleaseTree( 00A23AB0 )
ReleaseTree( 00A23A50 )
ReleaseTree( 00A23B70 )
ReleaseTree( 00A23C90 )
ReleaseTree( 00A23C30 )
ReleaseTree( 00A23CF0 )
ReleaseTree( 00A23BD0 )
         erasing child = 00A229D0

Constraint Tree

00A21E90        And { }
00A21F50            Or
00A22070                And { +0, -0, -1, -3, -5, +8 }
00A22850                And { +7 }
00A22970                And { }
00A23DB0                    Or
00A23D50                        And { -0 }
00A23ED0                        And { +2 }
00A24050                            Or
00A23FF0                                And { -4 }
00A24110                                And { +2 }
00A241D0                                And { +4 }
00A240B0                    Or
00A23F30                        And { +8 }
00A242F0                        And { -3, +9 }
00A24590                And { +8 }
00A24410                    Or
00A227F0                        And { -4 }
00A24530                        And { +8 }
00A245F0                            Or
00A24710                                And { -8, +9 }
00A24830                                And { +4 }
00A24A10                                And { +8, -8 }
00A24CB0                                And { -1, -2, +9 }

      child = 00A23DB0
         calling OrReduceToElegance
OrReduceToElegance( 00A23DB0, dominant: { }, command: { +7 } )
   child = 00A23D50
      local command set = { +7 }
      calling AndReduceToElegance
AndReduceToElegance( 00A23D50,  dominant: { },  command: { +7 } )
   major cycle of reduction
      current node = 00A23D50
InconsistentHandle( 00A23D50, dominant: { }, handle: { } )
   handle is consistent
OrCut( 00A23D50 )
   end of major cycle of reduction - AndReduceToElegance
        AndReduceToElegance returned kersKeep
   child = 00A23ED0
      local command set = { -0, +7 }
      calling AndReduceToElegance
AndReduceToElegance( 00A23ED0,  dominant: { },  command: { -0, +7 } )
   major cycle of reduction
      current node = 00A23ED0
InconsistentHandle( 00A23ED0, dominant: { }, handle: { } )
   handle is consistent
      child = 00A24050
         calling OrReduceToElegance
OrReduceToElegance( 00A24050, dominant: { +2 }, command: { -0, +7 } )
   child = 00A23FF0
      local command set = { -0, +2, +4, +7 }
      calling AndReduceToElegance
AndReduceToElegance( 00A23FF0,  dominant: { +2 },  command: { -0, +2, +4, +7 } )
   subtracted some opposing command constraints

Constraint Tree

00A21E90        And { }
00A21F50            Or
00A22070                And { +0, -0, -1, -3, -5, +8 }
00A22850                And { +7 }
00A22970                And { }
00A23DB0                    Or
00A23D50                        And { -0 }
00A23ED0                        And { +2 }
00A24050                            Or
00A23FF0                                And { }
00A24110                                And { +2 }
00A241D0                                And { +4 }
00A240B0                    Or
00A23F30                        And { +8 }
00A242F0                        And { -3, +9 }
00A24590                And { +8 }
00A24410                    Or
00A227F0                        And { -4 }
00A24530                        And { +8 }
00A245F0                            Or
00A24710                                And { -8, +9 }
00A24830                                And { +4 }
00A24A10                                And { +8, -8 }
00A24CB0                                And { -1, -2, +9 }

   disconnecting current node 00A23FF0 due to zero-constraint subsumption
        AndReduceToElegance returned kersDisconnect
         OrReduceToElegance returned kersDisconnect
ReleaseTree( 00A24050 )
ReleaseTree( 00A23FF0 )
ReleaseTree( 00A24110 )
ReleaseTree( 00A241D0 )
         erasing child = 00A24050

Constraint Tree

00A21E90        And { }
00A21F50            Or
00A22070                And { +0, -0, -1, -3, -5, +8 }
00A22850                And { +7 }
00A22970                And { }
00A23DB0                    Or
00A23D50                        And { -0 }
00A23ED0                        And { +2 }
00A240B0                    Or
00A23F30                        And { +8 }
00A242F0                        And { -3, +9 }
00A24590                And { +8 }
00A24410                    Or
00A227F0                        And { -4 }
00A24530                        And { +8 }
00A245F0                            Or
00A24710                                And { -8, +9 }
00A24830                                And { +4 }
00A24A10                                And { +8, -8 }
00A24CB0                                And { -1, -2, +9 }

        AndReduceToElegance returned kersKeepNewTerminalUnit
            starting with the first child again
   child = 00A23D50
      local command set = { +2, +7 }
      calling AndReduceToElegance
AndReduceToElegance( 00A23D50,  dominant: { },  command: { +2, +7 } )
   major cycle of reduction
      current node = 00A23D50
InconsistentHandle( 00A23D50, dominant: { }, handle: { } )
   handle is consistent
OrCut( 00A23D50 )
   end of major cycle of reduction - AndReduceToElegance
        AndReduceToElegance returned kersKeep
   child = 00A23ED0
      local command set = { -0, +7 }
      calling AndReduceToElegance
AndReduceToElegance( 00A23ED0,  dominant: { },  command: { -0, +7 } )
   major cycle of reduction
      current node = 00A23ED0
InconsistentHandle( 00A23ED0, dominant: { }, handle: { } )
   handle is consistent
OrCut( 00A23ED0 )
   end of major cycle of reduction - AndReduceToElegance
        AndReduceToElegance returned kersKeep
      checking for promotability of constraints
         there are no common constraints to promote
         OrReduceToElegance returned kersKeep
AndCut( 00A23DB0 )
   child = 00A23D50
   child = 00A23ED0
            no need to rereduce child
      child = 00A240B0
         calling OrReduceToElegance
OrReduceToElegance( 00A240B0, dominant: { }, command: { +7 } )
   child = 00A23F30
      local command set = { +7 }
      calling AndReduceToElegance
AndReduceToElegance( 00A23F30,  dominant: { },  command: { +7 } )
   major cycle of reduction
      current node = 00A23F30
InconsistentHandle( 00A23F30, dominant: { }, handle: { } )
   handle is consistent
OrCut( 00A23F30 )
   end of major cycle of reduction - AndReduceToElegance
        AndReduceToElegance returned kersKeep
   child = 00A242F0
      local command set = { +7, +8 }
      calling AndReduceToElegance
AndReduceToElegance( 00A242F0,  dominant: { },  command: { +7, +8 } )
   major cycle of reduction
      current node = 00A242F0
InconsistentHandle( 00A242F0, dominant: { }, handle: { } )
   handle is consistent
OrCut( 00A242F0 )
   end of major cycle of reduction - AndReduceToElegance
        AndReduceToElegance returned kersKeep
      checking for promotability of constraints
         there are no common constraints to promote
         OrReduceToElegance returned kersKeep
AndCut( 00A240B0 )
   child = 00A23F30
   child = 00A242F0
            no need to rereduce child
OrCut( 00A22970 )
   child = 00A23DB0
   child = 00A240B0
   end of major cycle of reduction - AndReduceToElegance
        AndReduceToElegance returned kersKeep
   child = 00A24590
      local command set = { +7 }
      calling AndReduceToElegance
AndReduceToElegance( 00A24590,  dominant: { },  command: { +7 } )
   major cycle of reduction
      current node = 00A24590
InconsistentHandle( 00A24590, dominant: { }, handle: { } )
   handle is consistent
      child = 00A24410
         calling OrReduceToElegance
OrReduceToElegance( 00A24410, dominant: { +8 }, command: { +7 } )
   child = 00A227F0
      local command set = { +7 }
      calling AndReduceToElegance
AndReduceToElegance( 00A227F0,  dominant: { +8 },  command: { +7 } )
   major cycle of reduction
      current node = 00A227F0
InconsistentHandle( 00A227F0, dominant: { +8 }, handle: { } )
   handle is consistent
OrCut( 00A227F0 )
   end of major cycle of reduction - AndReduceToElegance
        AndReduceToElegance returned kersKeep
   child = 00A24530
      local command set = { -4, +7 }
      calling AndReduceToElegance
AndReduceToElegance( 00A24530,  dominant: { +8 },  command: { -4, +7 } )
   removed some redundant constraints

Constraint Tree

00A21E90        And { }
00A21F50            Or
00A22070                And { +0, -0, -1, -3, -5, +8 }
00A22850                And { +7 }
00A22970                And { }
00A23DB0                    Or
00A23D50                        And { -0 }
00A23ED0                        And { +2 }
00A240B0                    Or
00A23F30                        And { +8 }
00A242F0                        And { -3, +9 }
00A24590                And { +8 }
00A24410                    Or
00A227F0                        And { -4 }
00A24530                        And { }
00A245F0                            Or
00A24710                                And { -8, +9 }
00A24830                                And { +4 }
00A24A10                                And { +8, -8 }
00A24CB0                                And { -1, -2, +9 }

   major cycle of reduction
      current node = 00A24530
InconsistentHandle( 00A24530, dominant: { +8 }, handle: { } )
   handle is consistent
      child = 00A245F0
         calling OrReduceToElegance
OrReduceToElegance( 00A245F0, dominant: { +8 }, command: { -4, +7 } )
   child = 00A24710
      local command set = { +4, -4, +7 }
      requesting disconnect due to inconsistent command set
         OrReduceToElegance returned kersDisconnect
ReleaseTree( 00A245F0 )
ReleaseTree( 00A24710 )
ReleaseTree( 00A24830 )
ReleaseTree( 00A24A10 )
ReleaseTree( 00A24CB0 )
         erasing child = 00A245F0

Constraint Tree

00A21E90        And { }
00A21F50            Or
00A22070                And { +0, -0, -1, -3, -5, +8 }
00A22850                And { +7 }
00A22970                And { }
00A23DB0                    Or
00A23D50                        And { -0 }
00A23ED0                        And { +2 }
00A240B0                    Or
00A23F30                        And { +8 }
00A242F0                        And { -3, +9 }
00A24590                And { +8 }
00A24410                    Or
00A227F0                        And { -4 }
00A24530                        And { }

        discovered zero-constraint subsumption at 00A227F0 [message was missing]
        AndReduceToElegance returned kersDisconnect
            OrReduceToElegance returned kersDisconnect
ReleaseTree( 00A24410 )
ReleaseTree( 00A227F0 )
ReleaseTree( 00A24530 )
         erasing child = 00A24410

Constraint Tree

00A21E90        And { }
00A21F50            Or
00A22070                And { +0, -0, -1, -3, -5, +8 }
00A22850                And { +7 }
00A22970                And { }
00A23DB0                    Or
00A23D50                        And { -0 }
00A23ED0                        And { +2 }
00A240B0                    Or
00A23F30                        And { +8 }
00A242F0                        And { -3, +9 }
00A24590                And { +8 }

        AndReduceToElegance returned kersKeepNewTerminalUnit
            starting with the first child again
   child = 00A22070
      local command set = { +7, +8 }
      calling AndReduceToElegance
AndReduceToElegance( 00A22070,  dominant: { },  command: { +7, +8 } )
   deleting current node 00A22070 due to one-constraint subsumption
      AndReduceToElegance returned kersDelete
         there is more than one child
ReleaseTree( 00A22070 )

Constraint Tree

00A21E90        And { }
00A21F50            Or
00A22850                And { +7 }
00A22970                And { }
00A23DB0                    Or
00A23D50                        And { -0 }
00A23ED0                        And { +2 }
00A240B0                    Or
00A23F30                        And { +8 }
00A242F0                        And { -3, +9 }
00A24590                And { +8 }

   child = 00A22850
      local command set = { +8 }
      calling AndReduceToElegance
AndReduceToElegance( 00A22850,  dominant: { },  command: { +8 } )
   major cycle of reduction
      current node = 00A22850
InconsistentHandle( 00A22850, dominant: { }, handle: { } )
   handle is consistent
OrCut( 00A22850 )
   end of major cycle of reduction - AndReduceToElegance
        AndReduceToElegance returned kersKeep
   child = 00A22970
      local command set = { +7, +8 }
      calling AndReduceToElegance
AndReduceToElegance( 00A22970,  dominant: { },  command: { +7, +8 } )
   major cycle of reduction
      current node = 00A22970
InconsistentHandle( 00A22970, dominant: { }, handle: { } )
   handle is consistent
      child = 00A23DB0
         calling OrReduceToElegance
OrReduceToElegance( 00A23DB0, dominant: { }, command: { +7, +8 } )
   child = 00A23D50
      local command set = { +2, +7, +8 }
      calling AndReduceToElegance
AndReduceToElegance( 00A23D50,  dominant: { },  command: { +2, +7, +8 } )
   major cycle of reduction
      current node = 00A23D50
InconsistentHandle( 00A23D50, dominant: { }, handle: { } )
   handle is consistent
OrCut( 00A23D50 )
   end of major cycle of reduction - AndReduceToElegance
        AndReduceToElegance returned kersKeep
   child = 00A23ED0
      local command set = { -0, +7, +8 }
      calling AndReduceToElegance
AndReduceToElegance( 00A23ED0,  dominant: { },  command: { -0, +7, +8 } )
   major cycle of reduction
      current node = 00A23ED0
InconsistentHandle( 00A23ED0, dominant: { }, handle: { } )
   handle is consistent
OrCut( 00A23ED0 )
   end of major cycle of reduction - AndReduceToElegance
        AndReduceToElegance returned kersKeep
      checking for promotability of constraints
         there are no common constraints to promote
         OrReduceToElegance returned kersKeep
AndCut( 00A23DB0 )
   child = 00A23D50
   child = 00A23ED0
            no need to rereduce child
      child = 00A240B0
         calling OrReduceToElegance
OrReduceToElegance( 00A240B0, dominant: { }, command: { +7, +8 } )
   child = 00A23F30
      local command set = { +7, +8 }
      calling AndReduceToElegance
AndReduceToElegance( 00A23F30,  dominant: { },  command: { +7, +8 } )
   deleting current node 00A23F30 due to one-constraint subsumption
      AndReduceToElegance returned kersDelete
         there is more than one child
ReleaseTree( 00A23F30 )

Constraint Tree

00A21E90        And { }
00A21F50            Or
00A22850                And { +7 }
00A22970                And { }
00A23DB0                    Or
00A23D50                        And { -0 }
00A23ED0                        And { +2 }
00A240B0                    Or
00A242F0                        And { -3, +9 }
00A24590                And { +8 }

   child = 00A242F0
      local command set = { +7, +8 }
      calling AndReduceToElegance
AndReduceToElegance( 00A242F0,  dominant: { },  command: { +7, +8 } )
   major cycle of reduction
      current node = 00A242F0
InconsistentHandle( 00A242F0, dominant: { }, handle: { } )
   handle is consistent
OrCut( 00A242F0 )
   end of major cycle of reduction - AndReduceToElegance
        AndReduceToElegance returned kersKeep
      checking for promotability of constraints
         promote constraints { -3, +9 }
         OrReduceToElegance returned kersPromoteConstraints

Constraint Tree

00A21E90        And { }
00A21F50            Or
00A22850                And { +7 }
00A22970                And { -3, +9 }
00A23DB0                    Or
00A23D50                        And { -0 }
00A23ED0                        And { +2 }
00A240B0                    Or
00A242F0                        And { }
00A24590                And { +8 }

AndCut( 00A240B0 )
   child = 00A242F0
      child = 00A23DB0
         calling OrReduceToElegance
OrReduceToElegance( 00A23DB0, dominant: { }, command: { +7, +8 } )
   child = 00A23D50
      local command set = { +2, +7, +8 }
      calling AndReduceToElegance
AndReduceToElegance( 00A23D50,  dominant: { },  command: { +2, +7, +8 } )
   major cycle of reduction
      current node = 00A23D50
InconsistentHandle( 00A23D50, dominant: { }, handle: { } )
   handle is consistent
OrCut( 00A23D50 )
   end of major cycle of reduction - AndReduceToElegance
        AndReduceToElegance returned kersKeep
   child = 00A23ED0
      local command set = { -0, +7, +8 }
      calling AndReduceToElegance
AndReduceToElegance( 00A23ED0,  dominant: { },  command: { -0, +7, +8 } )
   major cycle of reduction
      current node = 00A23ED0
InconsistentHandle( 00A23ED0, dominant: { }, handle: { } )
   handle is consistent
OrCut( 00A23ED0 )
   end of major cycle of reduction - AndReduceToElegance
        AndReduceToElegance returned kersKeep
      checking for promotability of constraints
         there are no common constraints to promote
         OrReduceToElegance returned kersKeep
AndCut( 00A23DB0 )
   child = 00A23D50
   child = 00A23ED0
            no need to rereduce child
      child = 00A240B0
         calling OrReduceToElegance
OrReduceToElegance( 00A240B0, dominant: { }, command: { +7, +8 } )
   child = 00A242F0
      local command set = { +7, +8 }
      calling AndReduceToElegance
AndReduceToElegance( 00A242F0,  dominant: { },  command: { +7, +8 } )
   disconnecting current node 00A242F0 due to zero-constraint subsumption
        AndReduceToElegance returned kersDisconnect
         OrReduceToElegance returned kersDisconnect
ReleaseTree( 00A240B0 )
ReleaseTree( 00A242F0 )
         erasing child = 00A240B0

Constraint Tree

00A21E90        And { }
00A21F50            Or
00A22850                And { +7 }
00A22970                And { -3, +9 }
00A23DB0                    Or
00A23D50                        And { -0 }
00A23ED0                        And { +2 }
00A24590                And { +8 }

OrCut( 00A22970 )
   child = 00A23DB0
      current node = 00A22970
InconsistentHandle( 00A22970, dominant: { }, handle: { } )
   handle is consistent
      child = 00A23DB0
         calling OrReduceToElegance
OrReduceToElegance( 00A23DB0, dominant: { -3, +9 }, command: { +7, +8 } )
   child = 00A23D50
      local command set = { +2, +7, +8 }
      calling AndReduceToElegance
AndReduceToElegance( 00A23D50,  dominant: { -3, +9 },  command: { +2, +7, +8 } )
   major cycle of reduction
      current node = 00A23D50
InconsistentHandle( 00A23D50, dominant: { -3, +9 }, handle: { } )
   handle is consistent
OrCut( 00A23D50 )
   end of major cycle of reduction - AndReduceToElegance
        AndReduceToElegance returned kersKeep
   child = 00A23ED0
      local command set = { -0, +7, +8 }
      calling AndReduceToElegance
AndReduceToElegance( 00A23ED0,  dominant: { -3, +9 },  command: { -0, +7, +8 } )
   major cycle of reduction
      current node = 00A23ED0
InconsistentHandle( 00A23ED0, dominant: { -3, +9 }, handle: { } )
   handle is consistent
OrCut( 00A23ED0 )
   end of major cycle of reduction - AndReduceToElegance
        AndReduceToElegance returned kersKeep
      checking for promotability of constraints
         there are no common constraints to promote
         OrReduceToElegance returned kersKeep
AndCut( 00A23DB0 )
   child = 00A23D50
   child = 00A23ED0
            no need to rereduce child
OrCut( 00A22970 )
   child = 00A23DB0
   end of major cycle of reduction - AndReduceToElegance
        AndReduceToElegance returned kersKeep
   child = 00A24590
      local command set = { +7 }
      calling AndReduceToElegance
AndReduceToElegance( 00A24590,  dominant: { },  command: { +7 } )
   major cycle of reduction
      current node = 00A24590
InconsistentHandle( 00A24590, dominant: { }, handle: { } )
   handle is consistent
OrCut( 00A24590 )
   end of major cycle of reduction - AndReduceToElegance
        AndReduceToElegance returned kersKeep
      checking for promotability of constraints
         there are no common constraints to promote
         OrReduceToElegance returned kersKeep
AndCut( 00A21F50 )
   child = 00A22850
   child = 00A22970
   child = 00A24590
            no need to rereduce child
OrCut( 00A21E90 )
   child = 00A21F50
   end of major cycle of reduction - AndReduceToElegance
   AndReduceToElegance returned kersKeep

Elegant Constraint Tree

00A21E90        And { }
00A21F50            Or
00A22850                And { +7 }
00A22970                And { -3, +9 }
00A23DB0                    Or
00A23D50                        And { -0 }
00A23ED0                        And { +2 }
00A24590                And { +8 }

Since the elegant constraint tree retains some constraints but
does not contain any opposing constraints, we know that it is both 
Satisfiable and Falsifiable.

          First in thread      Next in thread

 
 
 
  Home > Jabberwocky           Previous      Next
 
  Craig Holman   Research   Jabberwocky   Quotations   Contact  
 
 
 
  Patterncraft™ and Constraint and Consequence™
are trademarks of Craig Stewart Holman

Copyright © 2008 Craig Stewart Holman

Copyright and Legal Notices

All Rights Reserved.

 
   
 
  Patterncraft logo