Expand description
Attack relations between ASPIC+ arguments.
Per Modgil & Prakken 2014 §3.3.1 Definition 3.10:
- Undermining:
AunderminesB(onϕ) iffA’s conclusion is the contrary of some ordinary premiseϕused anywhere inB’s tree. - Undercutting:
AundercutsB(onB') iffA’s conclusion expresses “the defeasible rulerdoes not apply,” for some defeasible rulerused in a defeasible-topped sub-argumentB' ∈ Sub(B). Our encoding uses the reserved literal namespace¬__applicable_<rule_id>; consumers should usecrate::aspic::StructuredSystem::add_undercut_rulerather than constructing this literal by hand. - Rebutting:
ArebutsB(onB') iffA’s conclusion is the contrary of some sub-argumentB' ∈ Sub(B)’s conclusion, andB'’s top rule is defeasible.
All three attack kinds are recorded against the outer target B, not
just against the sub-argument where the conflict lands. This matches the
paper’s “A rebuts B on B’” phrasing: the Dung AF edge is (A, B). Because
construct_arguments also materialises every intermediate sub-argument as
its own Argument with its own id, the (attacker, target) iteration
additionally yields (A, B') as a separate edge — both edges exist in the
resulting framework, which is consistent with the paper’s treatment of
every sub-argument as an independent argument.
Historical note: an earlier version of this module only checked the
target’s top-level conclusion for rebut, which produced logically
inconsistent extensions when strict rules wrapped defeasible
sub-arguments (e.g. Example 4.1 Married/Bachelor from M&P 2014). The
sub-argument traversal in compute_attacks’s rebut loop is the fix.
Structs§
- Attack
- An attack between two ASPIC+ arguments.
Enums§
- Attack
Kind - The kind of attack.
Functions§
- compute_
attacks - Compute all attacks between arguments.