+bool ModelAction::is_read()
+{
+ return type == ATOMIC_READ;
+}
+
+bool ModelAction::is_write()
+{
+ return type == ATOMIC_WRITE;
+}
+
+bool ModelAction::same_var(ModelAction *act)
+{
+ return location == act->location;
+}
+
+bool ModelAction::same_thread(ModelAction *act)
+{
+ return tid == act->tid;
+}
+
+bool ModelAction::is_dependent(ModelAction *act)
+{
+ if (!is_read() && !is_write())
+ return false;
+ if (!act->is_read() && !act->is_write())
+ return false;
+ if (same_var(act) && !same_thread(act) &&
+ (is_write() || act->is_write()))
+ return true;
+ return false;
+}
+