aGrUM 3.1.1
a C++ library for (probabilistic) graphical models
O3prm.h
Go to the documentation of this file.
1/****************************************************************************
2 * This file is part of the aGrUM/pyAgrum library. *
3 * *
4 * Copyright (c) 2005-2026 by *
5 * - Pierre-Henri WUILLEMIN(_at_LIP6) *
6 * - Christophe GONZALES(_at_AMU) *
7 * *
8 * The aGrUM/pyAgrum library is free software; you can redistribute it *
9 * and/or modify it under the terms of either : *
10 * *
11 * - the GNU Lesser General Public License as published by *
12 * the Free Software Foundation, either version 3 of the License, *
13 * or (at your option) any later version, *
14 * - the MIT license (MIT), *
15 * - or both in dual license, as here. *
16 * *
17 * (see https://agrum.gitlab.io/articles/dual-licenses-lgplv3mit.html) *
18 * *
19 * This aGrUM/pyAgrum library is distributed in the hope that it will be *
20 * useful, but WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, *
21 * INCLUDING BUT NOT LIMITED TO THE WARRANTIES MERCHANTABILITY or FITNESS *
22 * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE *
23 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER *
24 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, *
25 * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR *
26 * OTHER DEALINGS IN THE SOFTWARE. *
27 * *
28 * See LICENCES for more details. *
29 * *
30 * SPDX-FileCopyrightText: Copyright 2005-2026 *
31 * - Pierre-Henri WUILLEMIN(_at_LIP6) *
32 * - Christophe GONZALES(_at_AMU) *
33 * SPDX-License-Identifier: LGPL-3.0-or-later OR MIT *
34 * *
35 * Contact : info_at_agrum_dot_org *
36 * homepage : http://agrum.gitlab.io *
37 * gitlab : https://gitlab.com/agrumery/agrum *
38 * *
39 ****************************************************************************/
40
41
49
50#include <string>
51#include <utility>
52#include <vector>
53
54#include <agrum/agrum.h>
55
57
58#include <string_view>
59
60#ifndef GUM_PRM_O3PRM_PRM_H
61# define GUM_PRM_O3PRM_PRM_H
62
63namespace gum {
64 namespace prm {
65 namespace o3prm {
66
74 class O3Position {
75 public:
76 O3Position();
77 O3Position(std::string_view filename, int line, int column);
78 O3Position(const O3Position& src);
81
82 O3Position& operator=(const O3Position& src);
84
85 std::string& file();
86 const std::string& file() const;
87
88 int& line();
89 int line() const;
90
91 int& column();
92 int column() const;
93
94 private:
95 std::string _file_;
96 int _line_;
98 };
99
107 class O3Formula {
108 public:
109 O3Formula();
110 O3Formula(const O3Position& pos, const Formula& formula);
111 O3Formula(const O3Formula& src);
112 O3Formula(O3Formula&& src);
113 ~O3Formula();
114
115 O3Formula& operator=(const O3Formula& src);
117
119 const O3Position& position() const;
120
121 Formula& formula();
122 const Formula& formula() const;
123
124 private:
126 std::unique_ptr< Formula > _formula_;
127 };
128
136 class O3Float {
137 public:
138 O3Float();
139 O3Float(const O3Position& pos, float value);
140 O3Float(const O3Float& src);
141 O3Float(O3Float&& src);
142 ~O3Float();
143
144 O3Float& operator=(const O3Float& src);
145 O3Float& operator=(O3Float&& src);
146
148 const O3Position& position() const;
149
150 float& value();
151 float value() const;
152
153 private:
155 float _value_;
156 };
157
165 class O3Integer {
166 public:
167 O3Integer();
168 O3Integer(const O3Position& pos, int value);
169 O3Integer(const O3Integer& src);
170 O3Integer(O3Integer&& src);
171 ~O3Integer();
172
173 O3Integer& operator=(const O3Integer& src);
175
177 const O3Position& position() const;
178
179 int& value();
180 int value() const;
181
182 private:
185 };
186
194 class O3Label {
195 public:
196 O3Label();
197 O3Label(const O3Position& pos, std::string_view label);
198 O3Label(const O3Label& src);
199 O3Label(O3Label&& src);
200 ~O3Label();
201
202 O3Label& operator=(const O3Label& src);
203 O3Label& operator=(O3Label&& src);
204
206 const O3Position& position() const;
207
208 std::string& label();
209 const std::string& label() const;
210
211 private:
213 std::string _label_;
214 };
215
216 std::ostream& operator<<(std::ostream& o, const O3Label& src);
217
225 class O3Type {
226 public:
227 using LabelPair = std::pair< O3Label, O3Label >;
228 using LabelMap = std::vector< LabelPair >;
229
230 O3Type();
231 O3Type(const O3Type& src);
232 O3Type(O3Type&& src);
233 ~O3Type();
234
235 O3Type& operator=(const O3Type& src);
236 O3Type& operator=(O3Type&& src);
237
239 const O3Position& position() const;
240
241 O3Label& name();
242 const O3Label& name() const;
243
245 const O3Label& superLabel() const;
246
247 LabelMap& labels();
248 const LabelMap& labels() const;
249
250 bool& o3prm_deprecated();
251 const bool& o3prm_deprecated() const;
252
253 private:
259 };
260
268 class O3IntType {
269 public:
270 O3IntType();
271 O3IntType(const O3IntType& src);
272 O3IntType(O3IntType&& src);
273 ~O3IntType();
274
275 O3IntType& operator=(const O3IntType& src);
277
279 const O3Position& position() const;
280
281 O3Label& name();
282 const O3Label& name() const;
283
284 O3Integer& start();
285 const O3Integer& start() const;
286
287 O3Integer& end();
288 const O3Integer& end() const;
289
290 bool& o3prm_deprecated();
291 const bool& o3prm_deprecated() const;
292
293 private:
299 };
300
309 public:
310 O3RealType();
311 O3RealType(const O3RealType& src);
312 O3RealType(O3RealType&& src);
313 ~O3RealType();
314
315 O3RealType& operator=(const O3RealType& src);
317
319 const O3Position& position() const;
320
321 O3Label& name();
322 const O3Label& name() const;
323
324 std::vector< O3Float >& values();
325 const std::vector< O3Float >& values() const;
326
327 bool& o3prm_deprecated();
328 const bool& o3prm_deprecated() const;
329
330 private:
333 std::vector< O3Float > _values_;
335 };
336
345 public:
347 O3InterfaceElement(const O3Label& type, const O3Label& name, bool isArray);
351
354
355 O3Label& type();
356 const O3Label& type() const;
357
358 O3Label& name();
359 const O3Label& name() const;
360
361 bool& isArray();
362 bool isArray() const;
363
364 private:
368 };
369
378 public:
379 using O3InterfaceElementList = std::vector< O3InterfaceElement >;
380
381 O3Interface();
382 O3Interface(const O3Interface& src);
384 ~O3Interface();
385
386 O3Interface& operator=(const O3Interface& src);
388
390 const O3Position& position() const;
391
392 O3Label& name();
393 const O3Label& name() const;
394
396 const O3Label& superLabel() const;
397
399 const O3InterfaceElementList& elements() const;
400
401 private:
405 std::unique_ptr< O3InterfaceElementList > _elts_;
406 };
407
416 public:
417 enum class PRMType { NONE, INT, FLOAT };
418
419 O3Parameter();
420 O3Parameter(const O3Position& pos, const O3Label& name, const O3Integer& value);
421 O3Parameter(const O3Position& pos, const O3Label& name, const O3Float& value);
422 O3Parameter(const O3Parameter& src);
424 ~O3Parameter();
425
426 O3Parameter& operator=(const O3Parameter& src);
428
429 PRMType& type();
430 PRMType type() const;
431
433 const O3Position& position() const;
434
435 O3Label& name();
436 const O3Label& name() const;
437
438 O3Float& value();
439 const O3Float& value() const;
440
441 private:
446 };
447
456 public:
458 O3ReferenceSlot(const O3Label& type, const O3Label& name, bool isArray);
462
465
466 O3Label& type();
467 const O3Label& type() const;
468
469 O3Label& name();
470 const O3Label& name() const;
471
472 bool& isArray();
473 bool isArray() const;
474
475 private:
479 };
480
489 public:
490 using O3LabelList = std::vector< O3Label >;
491
492 O3Attribute();
493 O3Attribute(const O3Label& type, const O3Label& name, const O3LabelList& parents);
494 O3Attribute(const O3Attribute& src);
496 virtual ~O3Attribute();
497
498 virtual O3Attribute& operator=(const O3Attribute& src);
499 virtual O3Attribute& operator=(O3Attribute&& src);
500
501 virtual O3Label& type();
502 virtual const O3Label& type() const;
503
504 virtual O3Label& name();
505 virtual const O3Label& name() const;
506
507 virtual O3LabelList& parents();
508 virtual const O3LabelList& parents() const;
509
510 virtual std::unique_ptr< O3Attribute > copy() const = 0;
511
512 private:
516 };
517
525 class O3RawCPT: public O3Attribute {
526 public:
527 using O3FormulaList = std::vector< O3Formula >;
528
529 O3RawCPT();
530 O3RawCPT(const O3Label& type,
531 const O3Label& name,
533 const O3FormulaList& values);
534 O3RawCPT(const O3RawCPT& src);
535 O3RawCPT(O3RawCPT&& src);
536 ~O3RawCPT() override;
537
538 private: // best attempt to get rid of overloaded virtual warnings
539 using O3Attribute::operator=;
540
541 public:
542 virtual O3RawCPT& operator=(const O3RawCPT& src);
543 virtual O3RawCPT& operator=(O3RawCPT&& src);
544
545 virtual O3FormulaList& values();
546 virtual const O3FormulaList& values() const;
547
548 std::unique_ptr< O3Attribute > copy() const override;
549
550 private:
551 std::unique_ptr< O3FormulaList > _values_;
552 };
553
561 class O3RuleCPT: public O3Attribute {
562 public:
563 using O3LabelList = std::vector< O3Label >;
564 using O3FormulaList = std::vector< O3Formula >;
565 using O3Rule = std::pair< O3LabelList, O3FormulaList >;
566 using O3RuleList = std::vector< O3Rule >;
567
568 O3RuleCPT();
569 O3RuleCPT(const O3Label& type,
570 const O3Label& name,
572 O3RuleList&& rules);
573 O3RuleCPT(const O3RuleCPT& src);
574 O3RuleCPT(O3RuleCPT&& src);
575 ~O3RuleCPT() override;
576
577 private: // best attempt to get rid of overloaded virtual warnings
578 using O3Attribute::operator=;
579
580 public:
581 virtual O3RuleCPT& operator=(const O3RuleCPT& src);
582 virtual O3RuleCPT& operator=(O3RuleCPT&& src);
583
584 virtual O3RuleList& rules();
585 virtual const O3RuleList& rules() const;
586
587 std::unique_ptr< O3Attribute > copy() const override;
588
589 private:
590 std::unique_ptr< O3RuleList > _rules_;
591 };
592
601 public:
602 using O3LabelList = std::vector< O3Label >;
603
604 O3Aggregate();
605 O3Aggregate(const O3Aggregate& src);
607 virtual ~O3Aggregate();
608
609 O3Aggregate& operator=(const O3Aggregate& src);
611
613 const O3Label& variableType() const;
614
616 const O3Label& aggregateType() const;
617
618 O3Label& name();
619 const O3Label& name() const;
620
622 const O3LabelList& parents() const;
623
625 const O3LabelList& parameters() const;
626
627 private:
633 };
634
642 class O3Class {
643 public:
644 using O3LabelList = std::vector< O3Label >;
645 using O3ParameterList = std::vector< O3Parameter >;
646 using O3ReferenceSlotList = std::vector< O3ReferenceSlot >;
647 using O3AttributeList = std::vector< std::unique_ptr< O3Attribute > >;
648 using O3AggregateList = std::vector< O3Aggregate >;
649
650 O3Class();
651 O3Class(const O3Class& src);
652 O3Class(O3Class&& src);
653 ~O3Class();
654
655 O3Class& operator=(const O3Class& src);
656 O3Class& operator=(O3Class&& src);
657
659 const O3Position& position() const;
660
661 O3Label& name();
662 const O3Label& name() const;
663
665 const O3Label& superLabel() const;
666
668 const O3LabelList& interfaces() const;
669
671 const O3ParameterList& parameters() const;
672
674 const O3ReferenceSlotList& referenceSlots() const;
675
677 const O3AttributeList& attributes() const;
678
680 const O3AggregateList& aggregates() const;
681
682 private:
686 std::unique_ptr< O3LabelList > _interfaces_;
687 std::unique_ptr< O3ParameterList > _params_;
688 std::unique_ptr< O3ReferenceSlotList > _refs_;
689 std::unique_ptr< O3AttributeList > _attrs_;
690 std::unique_ptr< O3AggregateList > _aggs_;
691 };
692
701 public:
702 O3Assignment();
703 O3Assignment(const O3Assignment& src);
706
709
711 const O3Label& leftInstance() const;
712
714 const O3Integer& leftIndex() const;
715
717 const O3Label& leftReference() const;
718
720 const O3Label& rightInstance() const;
721
723 const O3Integer& rightIndex() const;
724
725 private:
731 };
732
741 public:
742 O3Increment();
743 O3Increment(const O3Increment& src);
745 ~O3Increment();
746
747 O3Increment& operator=(const O3Increment& src);
749
751 const O3Label& leftInstance() const;
752
754 const O3Integer& leftIndex() const;
755
757 const O3Label& leftReference() const;
758
760 const O3Label& rightInstance() const;
761
763 const O3Integer& rightIndex() const;
764
765 private:
771 };
772
782 public:
787
790
791 O3Label& name();
792 const O3Label& name() const;
793
794 O3Float& value();
795 const O3Float& value() const;
796
797 bool& isInteger();
798 bool isInteger() const;
799
800 private:
804 };
805
814 public:
815 using O3InstanceParameterList = std::vector< O3InstanceParameter >;
816
817 O3Instance();
818 O3Instance(const O3Instance& src);
819 O3Instance(O3Instance&& src);
820 ~O3Instance();
821
822 O3Instance& operator=(const O3Instance& src);
824
825 O3Label& type();
826 const O3Label& type() const;
827
828 O3Label& name();
829 const O3Label& name() const;
830
831 O3Integer& size();
832 const O3Integer& size() const;
833
835 const O3InstanceParameterList& parameters() const;
836
837 private:
842 };
843
851 class O3System {
852 public:
853 using O3InstanceList = std::vector< O3Instance >;
854 using O3AssignmentList = std::vector< O3Assignment >;
855 using O3IncrementList = std::vector< O3Increment >;
856
857 O3System();
858 O3System(const O3System& src);
859 O3System(O3System&& src);
860 ~O3System();
861
862 O3System& operator=(const O3System& src);
864
865 O3Label& name();
866 const O3Label& name() const;
867
869 const O3InstanceList& instances() const;
870
872 const O3AssignmentList& assignments() const;
873
875 const O3IncrementList& increments() const;
876
877 private:
882 };
883
891 class O3Import {
892 public:
893 O3Import();
894 O3Import(const O3Import& src);
895 O3Import(O3Import&& src);
896 ~O3Import();
897
898 O3Import& operator=(const O3Import& src);
900
901 O3Label& import();
902 const O3Label& import() const;
903
904 private:
906 };
907
915 class O3PRM {
916 public:
917 using O3TypeList = std::vector< std::unique_ptr< O3Type > >;
918 using O3IntTypeList = std::vector< std::unique_ptr< O3IntType > >;
919 using O3RealTypeList = std::vector< std::unique_ptr< O3RealType > >;
920 using O3InterfaceList = std::vector< std::unique_ptr< O3Interface > >;
921 using O3ClassList = std::vector< std::unique_ptr< O3Class > >;
922 using O3SystemList = std::vector< std::unique_ptr< O3System > >;
923 using O3ImportList = std::vector< std::unique_ptr< O3Import > >;
924
925 O3PRM();
926 O3PRM(const O3PRM& src);
927 O3PRM(O3PRM&& src);
928 ~O3PRM();
929
930 O3PRM& operator=(const O3PRM& src);
931 O3PRM& operator=(O3PRM&& src);
932
933 O3TypeList& types();
934 const O3TypeList& types() const;
935
937 const O3IntTypeList& int_types() const;
938
940 const O3RealTypeList& real_types() const;
941
943 const O3InterfaceList& interfaces() const;
944
946 const O3ClassList& classes() const;
947
949 const O3SystemList& systems() const;
950
952 const O3ImportList& imports() const;
953
954 private:
962 };
963
964 } // namespace o3prm
965 } // namespace prm
966} // namespace gum
967
968#endif // GUM_PRM_O3PRM_PRM_H
Evaluates a string as a algebraic formula.
Definition formula.h:293
This is a decoration of the DiscreteVariable class.
Definition PRMType.h:78
O3LabelList & parameters()
Definition O3prm.cpp:1162
O3Aggregate & operator=(const O3Aggregate &src)
Definition O3prm.cpp:1126
O3LabelList & parents()
Definition O3prm.cpp:1158
std::vector< O3Label > O3LabelList
Definition O3prm.h:602
O3Assignment & operator=(const O3Assignment &src)
Definition O3prm.cpp:1191
virtual std::unique_ptr< O3Attribute > copy() const =0
virtual O3Label & type()
Definition O3prm.cpp:743
virtual O3Attribute & operator=(const O3Attribute &src)
Definition O3prm.cpp:727
virtual O3Label & name()
Definition O3prm.cpp:747
std::vector< O3Label > O3LabelList
Definition O3prm.h:490
virtual O3LabelList & parents()
Definition O3prm.cpp:751
O3ParameterList & parameters()
Definition O3prm.cpp:970
std::vector< std::unique_ptr< O3Attribute > > O3AttributeList
Definition O3prm.h:647
std::unique_ptr< O3ParameterList > _params_
Definition O3prm.h:687
std::vector< O3Aggregate > O3AggregateList
Definition O3prm.h:648
O3Position & position()
Definition O3prm.cpp:954
std::vector< O3Label > O3LabelList
Definition O3prm.h:644
std::vector< O3Parameter > O3ParameterList
Definition O3prm.h:645
std::unique_ptr< O3ReferenceSlotList > _refs_
Definition O3prm.h:688
O3AggregateList & aggregates()
Definition O3prm.cpp:980
O3LabelList & interfaces()
Definition O3prm.cpp:966
std::unique_ptr< O3AttributeList > _attrs_
Definition O3prm.h:689
std::unique_ptr< O3LabelList > _interfaces_
Definition O3prm.h:686
std::unique_ptr< O3AggregateList > _aggs_
Definition O3prm.h:690
O3ReferenceSlotList & referenceSlots()
Definition O3prm.cpp:974
O3Label & superLabel()
Definition O3prm.cpp:962
O3Class & operator=(const O3Class &src)
Definition O3prm.cpp:913
std::vector< O3ReferenceSlot > O3ReferenceSlotList
Definition O3prm.h:646
O3AttributeList & attributes()
Definition O3prm.cpp:976
The O3Float is part of the AST of the O3PRM language.
Definition O3prm.h:136
O3Position & position()
Definition O3prm.cpp:191
O3Float & operator=(const O3Float &src)
Definition O3prm.cpp:175
std::unique_ptr< Formula > _formula_
Definition O3prm.h:126
O3Formula & operator=(const O3Formula &src)
Definition O3prm.cpp:221
O3Position & position()
Definition O3prm.cpp:237
O3Import & operator=(const O3Import &src)
Definition O3prm.cpp:1478
O3Increment & operator=(const O3Increment &src)
Definition O3prm.cpp:1256
O3InstanceParameter & operator=(const O3InstanceParameter &src)
Definition O3prm.cpp:1432
O3InstanceParameterList _parameters_
Definition O3prm.h:841
O3Instance & operator=(const O3Instance &src)
Definition O3prm.cpp:1318
O3InstanceParameterList & parameters()
Definition O3prm.cpp:1352
std::vector< O3InstanceParameter > O3InstanceParameterList
Definition O3prm.h:815
O3IntType & operator=(const O3IntType &src)
Definition O3prm.cpp:374
O3Position & position()
Definition O3prm.cpp:406
The O3Integer is part of the AST of the O3PRM language.
Definition O3prm.h:165
O3Integer & operator=(const O3Integer &src)
Definition O3prm.cpp:130
O3Position & position()
Definition O3prm.cpp:146
O3InterfaceElement & operator=(const O3InterfaceElement &src)
Definition O3prm.cpp:614
std::vector< O3InterfaceElement > O3InterfaceElementList
Definition O3prm.h:379
O3Interface & operator=(const O3Interface &src)
Definition O3prm.cpp:664
std::unique_ptr< O3InterfaceElementList > _elts_
Definition O3prm.h:405
O3Position & position()
Definition O3prm.cpp:683
O3InterfaceElementList & elements()
Definition O3prm.cpp:695
The O3Label is part of the AST of the O3PRM language.
Definition O3prm.h:194
std::string _label_
Definition O3prm.h:213
O3Label & operator=(const O3Label &src)
Definition O3prm.cpp:266
std::string & label()
Definition O3prm.cpp:286
O3Position & position()
Definition O3prm.cpp:282
O3SystemList _systems_
Definition O3prm.h:960
O3ImportList _imports_
Definition O3prm.h:961
std::vector< std::unique_ptr< O3Type > > O3TypeList
Definition O3prm.h:917
std::vector< std::unique_ptr< O3Interface > > O3InterfaceList
Definition O3prm.h:920
std::vector< std::unique_ptr< O3IntType > > O3IntTypeList
Definition O3prm.h:918
O3PRM & operator=(const O3PRM &src)
Definition O3prm.cpp:524
O3ClassList _classes_
Definition O3prm.h:959
O3ImportList & imports()
Definition O3prm.cpp:586
O3TypeList & types()
Definition O3prm.cpp:562
O3RealTypeList _real_types_
Definition O3prm.h:957
O3InterfaceList _interfaces_
Definition O3prm.h:958
std::vector< std::unique_ptr< O3RealType > > O3RealTypeList
Definition O3prm.h:919
O3ClassList & classes()
Definition O3prm.cpp:578
O3InterfaceList & interfaces()
Definition O3prm.cpp:574
O3RealTypeList & real_types()
Definition O3prm.cpp:570
std::vector< std::unique_ptr< O3Class > > O3ClassList
Definition O3prm.h:921
std::vector< std::unique_ptr< O3System > > O3SystemList
Definition O3prm.h:922
O3IntTypeList _int_types_
Definition O3prm.h:956
O3TypeList _types_
Definition O3prm.h:955
std::vector< std::unique_ptr< O3Import > > O3ImportList
Definition O3prm.h:923
O3SystemList & systems()
Definition O3prm.cpp:582
O3IntTypeList & int_types()
Definition O3prm.cpp:566
The O3Parameter is part of the AST of the O3PRM language.
Definition O3prm.h:415
O3Parameter & operator=(const O3Parameter &src)
Definition O3prm.cpp:1015
The O3Position is part of the AST of the O3PRM language.
Definition O3prm.h:74
std::string & file()
Definition O3prm.cpp:95
O3Position & operator=(const O3Position &src)
Definition O3prm.cpp:79
virtual O3FormulaList & values()
Definition O3prm.cpp:798
std::unique_ptr< O3FormulaList > _values_
Definition O3prm.h:551
std::vector< O3Formula > O3FormulaList
Definition O3prm.h:527
std::unique_ptr< O3Attribute > copy() const override
Definition O3prm.cpp:802
virtual O3RawCPT & operator=(const O3RawCPT &src)
Definition O3prm.cpp:783
std::vector< O3Float > _values_
Definition O3prm.h:333
O3Position & position()
Definition O3prm.cpp:455
O3RealType & operator=(const O3RealType &src)
Definition O3prm.cpp:435
std::vector< O3Float > & values()
Definition O3prm.cpp:463
O3ReferenceSlot & operator=(const O3ReferenceSlot &src)
Definition O3prm.cpp:1075
std::vector< O3Label > O3LabelList
Definition O3prm.h:563
std::pair< O3LabelList, O3FormulaList > O3Rule
Definition O3prm.h:565
std::unique_ptr< O3Attribute > copy() const override
Definition O3prm.cpp:854
std::vector< O3Formula > O3FormulaList
Definition O3prm.h:564
virtual O3RuleCPT & operator=(const O3RuleCPT &src)
Definition O3prm.cpp:834
virtual O3RuleList & rules()
Definition O3prm.cpp:850
std::vector< O3Rule > O3RuleList
Definition O3prm.h:566
std::unique_ptr< O3RuleList > _rules_
Definition O3prm.h:590
std::vector< O3Increment > O3IncrementList
Definition O3prm.h:855
O3AssignmentList & assignments()
Definition O3prm.cpp:1404
O3AssignmentList _assigments_
Definition O3prm.h:880
std::vector< O3Instance > O3InstanceList
Definition O3prm.h:853
O3InstanceList & instances()
Definition O3prm.cpp:1400
O3System & operator=(const O3System &src)
Definition O3prm.cpp:1376
O3IncrementList & increments()
Definition O3prm.cpp:1408
O3InstanceList _instances_
Definition O3prm.h:879
O3IncrementList _increments_
Definition O3prm.h:881
std::vector< O3Assignment > O3AssignmentList
Definition O3prm.h:854
O3Label & superLabel()
Definition O3prm.cpp:335
O3Type & operator=(const O3Type &src)
Definition O3prm.cpp:311
O3Position & position()
Definition O3prm.cpp:343
std::pair< O3Label, O3Label > LabelPair
Definition O3prm.h:227
std::vector< LabelPair > LabelMap
Definition O3prm.h:228
bool & o3prm_deprecated()
Definition O3prm.cpp:347
LabelMap & labels()
Definition O3prm.cpp:339
Headers files for the gum::FormulaPart and gum::Formula classes.
std::ostream & operator<<(std::ostream &o, const O3Label &src)
Definition O3prm.cpp:1410
namespace for all probabilistic relational models entities
Definition agrum.h:68
gum is the global namespace for all aGrUM entities
Definition agrum.h:46