"Vincent DIEMUNSCH" wrote in message news:c7db12c1-10fa-40ee-a2df-ff8a8b2177bc@googlegroups.com... >Le mercredi 8 avril 2015 08:38:19 UTC+2, Dmitry A. Kazakov a écrit : >> I would not call it "fundamental". It is simply a tree with factored out >> subtrees. Need not to be binary, BTW. >A BINARY decision diagram needs to be binary, by definition. It is not >"simply" a tree, > but a highly optimised data structure, not only by factoring the tree, but > through variable > ordering, which is the key idea. (Briant's paper is about ORDERED BDD). It > is usefull > for the implementation of Sets and operations on sets. Sounds like premature optimization to me. If you want sets, use Ada.Containers.Ordered_Sets and see if it is fast enough. In the unlikely case that it is not, implement your own body to a similar specification using a different technology to handle the ordering. The vast majority of uses of anything do not need "highly optimized" data structures. On top of which, it's likely that your implementer has spent plenty of time optimizing the standard containers, so it's quite likely that they will be faster than you might expect. That's a lesson we all need to learn, and re-learn, and re-learn again, because "highly optimized data structures" are a lot more fun and satisfying to a programmer. But they're rarely actually needed. (I've made that mistake plenty of times.) [Side note to another thread. That of course goes for GC as well. There is lots of junkware that doesn't need to be engineered well; that's why dynamic languages have such a following. But that's not Ada's target market.] Whatever BDD is, it can't be very important since I've never heard of it until today. :-) I'm pretty sure I would have run across something that's actually fundamental in 30 years. YMMV. Randy.