text: #ifndef PRUNING_STUBBORN_SETS_EC_H
  #define PRUNING_STUBBORN_SETS_EC_H
  
  #include "stubborn_sets.h"
  
  namespace stubborn_sets_ec {
  class StubbornSetsEC : public stubborn_sets::StubbornSets {
  private:
      std::vector<std::vector<std::vector<bool>>> reachability_map;
      std::vector<std::vector<int>> op_preconditions_on_var;
      std::vector<bool> active_ops;
      std::vector<std::vector<int>> conflicting_and_disabling;
      std::vector<bool> conflicting_and_disabling_computed;
      std::vector<std::vector<int>> disabled;
      std::vector<bool> disabled_computed;
      std::vector<bool> written_vars;
      std::vector<std::vector<bool>> nes_computed;
  
      bool is_applicable(int op_no, const State &state) const;
      void get_disabled_vars(int op1_no, int op2_no,
                             std::vector<int> &disabled_vars) const;
      void build_reachability_map(const TaskProxy &task_proxy);
      void compute_operator_preconditions(const TaskProxy &task_proxy);
      const std::vector<int> &get_conflicting_and_disabling(int op1_no);
      const std::vector<int> &get_disabled(int op1_no);
      void add_conflicting_and_disabling(int op_no, const State &state);
      void compute_active_operators(const State &state);
      void mark_as_stubborn_and_remember_written_vars(int op_no, const State &state);
      void add_nes_for_fact(const FactPair &fact, const State &state);
      void apply_s5(int op_no, const State &state);
  protected:
      virtual void initialize_stubborn_set(const State &state) override;
      virtual void handle_stubborn_operator(const State &state, int op_no) override;
  public:
      virtual void initialize(const std::shared_ptr<AbstractTask> &task) override;
  
      explicit StubbornSetsEC(const options::Options &opts);
  };
  }
  #endif
  