ConstraintTemplateRewriteSystem.hpp File Reference

Plans for the constraint rewrite system. More...

Go to the source code of this file.

Detailed Description

Plans for the constraint rewrite system.

Notion of "constraint"
  • Currently in the AES translation system we use the notion of "constraint" and "constraint template"; see ComputerAlgebra/Cryptology/Lisp/Cryptanalysis/Rijndael/docus/Translations.hpp.
  • This is not the same as the notion of a constraint used for "linear constraints in 'The notion of a "linear constraint"' in ComputerAlgebra/Satisfiability/Lisp/LinearConditions/plans/general.hpp.
  • For linear constraints, a constraint is very specific and one always knows implicitly what it is; there is no name embedded in the object.
  • In the AES translation system, each constraint has a constraint template name, and carries with it all the parameters it needs for evaluation (even if not actually evaluated).
  • Removing type information from constraints from "AES constraints":
    • Rather than dealing with a list of constraints, where the "type" of the constraint is listed within the constraint itself, perhaps it would be better to have a list of list of constraints where different types of constraint are separated into different lists.
    • So, for example, instead of:
      [["examp1", [1,...,n],namespace],["examp2",[1,...,m],namespace2],["examp2",[1,...,o],namespace3]]
      you have something like:
    • The advantages here are that:
      • The system avoids pushing type information into the constraint object itself, and is therefore more in line with the rest of the OKlibrary.
      • Determining the number of any given type of constraint is much easier.
      The disadvantages are:
      • There is some lose of information, in that the order of constraints in relation to each other is lost. However, this isn't actually used for anything currently.
      • The concept is more complicated; rather than just a list/set of constraints, we now partition this into lists.
  • Both notions need to be considered and somehow brought together.
  • The notion of "constraint" rather than "constraint template" also needs to be standardised.

Definition in file ConstraintTemplateRewriteSystem.hpp.