Can I use $query->set() (in a pre_get_posts() hook) with a custom taxonomy in WP 3?

For what it’s worth, I just gave up on the ‘__not_in’ approach and went with the following somewhat sneaky solution:

//Create the exclusion rule
$new_tax_query = array(
    array(
        'taxonomy' => 'x_category',
        'field'    => 'slug',
        'terms'    => array('y-slug'),
        'operator' => 'NOT IN',
    )
);

//If there is already a tax_query, 'AND' our new rule with the entire existing rule.
$tax_query = $query->get('tax_query');
if(!empty($tax_query)) {
    $new_tax_query = array(
        'relation' => 'AND',
        $tax_query,
        $new_tax_query
    );              
}

// var_dump($new_tax_query);

$query->set('tax_query', $new_tax_query);