pcp/propagation/ops.rs
1// Copyright 2015 Pierre Talbot (IRCAM)
2
3// Licensed under the Apache License, Version 2.0 (the "License");
4// you may not use this file except in compliance with the License.
5// You may obtain a copy of the License at
6
7// http://www.apache.org/licenses/LICENSE-2.0
8
9// Unless required by applicable law or agreed to in writing, software
10// distributed under the License is distributed on an "AS IS" BASIS,
11// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12// See the License for the specific language governing permissions and
13// limitations under the License.
14
15use trilean::SKleene;
16
17pub trait Subsumption<Store>
18{
19 fn is_subsumed(&self, store: &Store) -> SKleene;
20}
21
22pub trait Propagator<VStore>
23{
24 /// Returns `false` if it failed to propagate (a variable has an empty domain after propagation).
25 fn propagate(&mut self, store: &mut VStore) -> bool;
26}
27
28pub trait PropagatorDependencies<Event>
29{
30 /// Each event on a variable that can change the result of the `is_subsumed` method should be listed here.
31 fn dependencies(&self) -> Vec<(usize, Event)>;
32}