SemOpt  $Revision:83+[c2a47fa11ed3+]$
GroundedSemantics.cpp
Go to the documentation of this file.
1 
9 #include "GroundedSemantics.h"
10 
15 {
17  vector<Labelling>::iterator it;
18  bool erased = false;
19  do
20  {
21  erased = false;
22 
23  for (it = this->labellings.begin(); it != this->labellings.end(); it++)
24  {
25  vector<Labelling>::iterator inner;
26  for (inner = this->labellings.begin();
27  inner != this->labellings.end(); inner++)
28  {
29  if (inner == it)
30  continue;
31 
32  if ((*it).inargs()->is_subset((*inner).inargs()))
33  {
34  this->labellings.erase(inner);
35  erased = true;
36  break;
37  }
38  }
39  if (erased)
40  break;
41  }
42  } while (erased);
43 }
44 
49 {
50  this->cleanlabs();
51  Labelling grounded = Labelling();
52  SetArguments toexplore = SetArguments();
53  this->af->get_arguments()->clone(&toexplore);
54  SetArguments oldexplore = SetArguments();
55 
56  do
57  {
58  oldexplore = SetArguments();
59  toexplore.clone(&oldexplore);
60  bool erased = false;
61  do
62  {
63  erased = false;
64  SetArguments to_erase = SetArguments();
65 
66  for (SetArgumentsIterator it = toexplore.begin();
67  it != toexplore.end(); it++)
68  {
69  if ((*it)->get_attackers()->empty()
70  || (*it)->get_attackers()->is_subset_equal(
71  grounded.outargs()))
72  {
73  grounded.add_label((*it), Labelling::lab_in);
74  to_erase.add_Argument((*it));
75  erased = true;
76  for (SetArgumentsIterator def =
77  (*it)->get_attacks()->begin();
78  def != (*it)->get_attacks()->end(); def++)
79  {
80  grounded.add_label((*def), Labelling::lab_out);
81  to_erase.add_Argument(*def);
82 
83  }
84  }
85  if (erased)
86  {
87  for (SetArgumentsIterator itrem = to_erase.begin();
88  itrem != to_erase.end(); itrem++)
89  {
90  toexplore.remove((*itrem));
91  }
92  break;
93  }
94  }
95  } while (erased);
96  } while (!(oldexplore == toexplore));
97 
98  this->labellings.push_back(grounded);
99 }
100 
101 GroundedSemantics::~GroundedSemantics()
102 {
103 // TODO Auto-generated destructor stub
104 }
105