//! Stage 3 — Attack computation implementations.
//!
//! Concrete implementations of the
//! [`AttackComputer`](crate::pipeline::traits::AttackComputer) trait,
//! which identifies rebut, undermine, and undercut attacks between arguments
//! using the system's [`ContrarinessFunction`](crate::system::contrariness::ContrarinessFunction).
//!
//! | Implementation | Strategy | Complexity |
//! |----------------|----------|------------|
//! | [`PairwiseAttackComputer`] | Brute-force enumeration of all argument pairs | O(n² · s) |
//! | [`IndexedAttackComputer`] | Pre-indexed hash lookup by attacker conclusion | O(n · s) amortised |
//!
//! Here *n* is the number of arguments and *s* the average number of sub-arguments.

pub mod indexed;
pub mod pairwise;

pub use indexed::IndexedAttackComputer;
pub use pairwise::PairwiseAttackComputer;
