public void DeletePreservesClause(Preserves clause)
 {
     PreservesClauses.Remove(clause);
 }
        private void addClauseButton_Click(object sender, EventArgs e)
        {
            Actor epsilonActor = new Actor("ϵ");

            switch (currentClause)
            {
            case 0:
            {
                Initially stmt = ((InitiallyClauseControl)clauseControls[currentClause]).getClause();
                if (stmt != null)
                {
                    clausesListBox.Items.Add(stmt);
                    _domain.AddInitiallyClause(stmt);
                }
                break;
            }

            case 1:
            {
                Causes stmt = ((CausesClauseControl)clauseControls[currentClause]).getClause();
                if (stmt != null)
                {
                    if (stmt.Actors.Contains(epsilonActor))
                    {
                        stmt = new Causes(stmt.Action, stmt.Exclusion, availableActors, stmt.Effect, stmt.Condition);
                    }
                    clausesListBox.Items.Add(stmt);
                    _domain.AddCausesClause(stmt);
                }
                break;
            }

            case 2:
            {
                TypicallyCauses stmt = ((TypicallyCausesClauseControl)clauseControls[currentClause]).getClause();
                if (stmt != null)
                {
                    if (stmt.Actors.Contains(epsilonActor))
                    {
                        stmt = new TypicallyCauses(stmt.Action, stmt.Exclusion, availableActors, stmt.Effect, stmt.Condition);
                    }
                    clausesListBox.Items.Add(stmt);
                    _domain.AddTypicallyCausesClause(stmt);
                }
                break;
            }

            case 3:
            {
                Releases stmt = ((ReleasesClauseControl)clauseControls[currentClause]).getClause();
                if (stmt != null)
                {
                    if (stmt.Actors.Contains(epsilonActor))
                    {
                        stmt = new Releases(stmt.Action, stmt.Exclusion, availableActors, stmt.Fluent, stmt.Condition);
                    }
                    clausesListBox.Items.Add(stmt);
                    _domain.AddReleasesClause(stmt);
                }
                break;
            }

            case 4:
            {
                Preserves stmt = ((PreservesClauseControl)clauseControls[currentClause]).getClause();
                if (stmt != null)
                {
                    if (stmt.Actors.Contains(epsilonActor))
                    {
                        stmt = new Preserves(stmt.Action, stmt.Exclusion, availableActors, stmt.Fluent, stmt.Condition);
                    }
                    clausesListBox.Items.Add(stmt);
                    _domain.AddPreservesClause(stmt);
                }
                break;
            }

            case 5:
            {
                Always stmt = ((AlwaysClauseControl)clauseControls[currentClause]).getClause();
                if (stmt != null)
                {
                    clausesListBox.Items.Add(stmt);
                    _domain.AddAlwaysClause(stmt);
                }
                break;
            }

            case 6:
            {
                Impossible stmt = ((ImpossibleClauseControl)clauseControls[currentClause]).getClause();
                if (stmt != null)
                {
                    if (stmt.Actors.Contains(epsilonActor))
                    {
                        stmt = new Impossible(stmt.Action, stmt.Exclusion, availableActors, stmt.Condition);
                    }
                    clausesListBox.Items.Add(stmt);
                    _domain.AddImpossibleClause(stmt);
                }
                break;
            }
            }
        }
 public void AddPreservesClause(Preserves clause)
 {
     PreservesClauses.Add(clause);
 }