Repository navigation
Derive defeat between packages and settle disputes with Dung semantics - #72
Merged
Merged
Conversation
Closes #62. Entailment is monotonic, so it can say that a reply removes a ground but never that one argument defeats another. This adds the layer that can: - Testimony.Logic.Framework: Dung's abstract argumentation semantics over any relation — conflict-free, admissible, complete, preferred — with the grounded extension as OrderHom.lfp and preferred extensions by Zorn. No Lean 4 argumentation library exists to reuse; Mathlib supplies the fixed point and the maximality argument. - Testimony.Logic.Dispute: attack derived from entailment (undermining a premise, rebutting a conclusion), and defeat as attack filtered by the cited confidences on the weakest-link principle. Without a preference, premise attacks between classical arguments are always mutual and the semantics collapse into a consistency check (Cayrol 1995). The ratings are therefore load-bearing in a dispute, and the docs say so. - BornOfAVirgin/Dispute: the Isaiah 7:14 positions as a dispute. The critical denial prevails over the scriptural reading alone; once Berry and Postell are heard nothing prevails, and the scriptural reading is reinstated as one of two preferred extensions. - SolaScriptura: seven theorems classifying the existing replies as refusals of a ground (not attacks) or denials of it (attacks). statusgen now orders the headline table by import order, so a directory argument's Dispute results follow its Results rather than preceding them. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01VGgpRWs6WLZF6e3Qb3fWRP
deanberris
commented
Sep 23, 2026
Justin (Dialogue with Trypho), Irenaeus (Against Heresies III.21), Origen (Against Celsus I.34-35) and Jerome (Against Jovinianus I.32), cited through the Ante-Nicene and Nicene and Post-Nicene Fathers volumes whose text was consulted. The series have no ISBN, so the entries carry none. They are added as supporting references for the predictive reading, for עַלְמָה as a virgin, for the Genesis 24:43 case, and for the Three's νεᾶνις. Where they deny a critical premise — the near-term reading, an ordinary pregnancy — they are recorded in comments, not as support. Origen's appeal to Deuteronomy 22 is left out: that law's Hebrew is נַעֲרָה בְתוּלָה. No rating changes. The Dispute docstring says why: the same texts record the reading contested from the second century, and under the weakest-link rule support for one premise changes nothing unless it lifts the lowest. Agent gains a `single` constructor for authors known by one name, so "Origen" is not split into an invented given and family name. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01VGgpRWs6WLZF6e3Qb3fWRP
nearTermExcludesMessianicSense was cited wellSupported on Brown's authority while the same argument records Berry and Postell denying it, and Motyer with them. The library defines `disputed` as actively contested by competent scholars, so that is its rating. The critic's weakest link is now that premise, and the dispute changes: - the scriptural reading's rebuttal of the critic becomes a defeat (christian_defeats_critical), so unanswered the two defeat each other and nothing prevails (nothing_prevails_unanswered); - the critic no longer defeats Berry or Postell back, and neither undermines the other: each premise case has a named world; - with the replies heard, the scriptural reading prevails: the grounded extension is it with both replies (scriptural_reading_prevails_once_replies_are_heard), and the critic is in no admissible set (critical_denial_indefensible). These replace critical_prevails_unanswered, nothing_prevails_once_replies_are_heard, scriptural_reading_reinstated, critical_denial_remains_defensible and christian_does_not_defeat_critical. The module docstring, the argument's root, the roadmap finding, reading-the-logic, logic and scope-and-limits now describe the new outcome and name the ratings it rests on: the replies' own. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01VGgpRWs6WLZF6e3Qb3fWRP
J. A. Motyer, "Context and Content in the Interpretation of Isaiah 7:14", Tyndale Bulletin 21.1 (1970): 118-125, DOI 10.53751/001c.30667 (checked against Crossref; text read in full from the open-access PDF). It is the most direct answer in the library to the critical denial: the sign confirms events after the fact rather than persuading Ahaz (120), Maher-shalal-hash-baz carries the timetable so Immanuel belongs to the undated future (124), and 7:14 cannot be severed from 8:8, 8:10, 9:6-7 and 11 (123). Cited as support for the predictive reading, for עַלְמָה (125) and for the chapters 2-12 frame (122-123); its denial of the near-term reading is recorded in a comment on that critic's atom. No rating or result changes. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01VGgpRWs6WLZF6e3Qb3fWRP
R. Bruce Compton, "The Immanuel Prophecy in Isaiah 7:14-16 and Its Use in Matthew 1:23: Harmonizing Historical Context and Single Meaning", Detroit Baptist Seminary Journal 12 (2007): 3-15, read in full from the publisher's PDF. Compton disputes both premises of the critical denial. 7:14 is addressed to the house of David in plural pronouns, not to Ahaz, and is no confirmation of Ahaz's deliverance (12); every near-term candidate fails (9). And 7:15-16, the part that does address Ahaz, measures time by the child's infancy and so does not need the child born in Ahaz's day (14). Cited as support for the predictive reading (12-14), for עַלְמָה (7-8), for the other clear עַלְמָה passages (8), and for Berry's premise that the near-term fulfilment is unsettled (5, 9). His denials of the two critical premises are recorded in comments on those atoms. No rating or result changes. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01VGgpRWs6WLZF6e3Qb3fWRP
isaiahIsNearTermSignToAhaz was cited wellSupported on Brown's authority. Motyer (1970) and Compton (2007), both now cited and read in full, deny it outright, so on the library's definition it is disputed, like the exclusion premise before it. No result changes: the critic's weakest link was already disputed. The rating would decide a dispute in which a reply attacked this premise, as Motyer's would, and the Dispute docstring now says so. The prose that named the exclusion premise as the critic's only weak one is updated in the Dispute module, the argument's root, the roadmap finding and the brownOnBirth docstring. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01VGgpRWs6WLZF6e3Qb3fWRP
Motyer (1970), with Compton (2007), denies the critic's near-term premise rather than its exclusion premise. Encoded on the Berry and Postell pattern: the atoms are what the text says, and the contested move is the step. - Atoms: signGivenToHouseOfDavid (the plural address of 7:13-14 against 7:16's singular, consensus as grammar) and maherShalalHashBazRepeatsTheTimetable (8:4 repeats 7:16's timetable, wellSupported; the critics who identify the two children rely on it). - Step timetablePassesToMaherShalalHashBaz: so 7:14 is not a near-term sign to Ahaz. Motyer's own disjunction, 1970, 124. - The rival first: sameChildReading, on which both observations hold and the near-term sign stands. motyer_rests_on_his_inference proves the grounds alone do not decide it, so the weight is on the step. In the dispute Motyer defeats the critic by undermining its near-term premise, is defeated by nothing, and stands with every other party. The grounded extension gains him. A three-party hearing without Berry or Postell shows he is enough alone (scriptural_reading_prevails_on_motyer_alone), so the verdict no longer hangs on the one premise both of them contest. The Dispute docstring gains "Where Motyer's contest lies": an unranked step does not lower a reply's strength, but an attack on a step always defeats, so a critic who granted his observations and held the near-term reading would defeat him. The critical denial as encoded does not grant them. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01VGgpRWs6WLZF6e3Qb3fWRP
E. J. Young, "The Immanuel Prophecy: Isaiah 7:14-16", Westminster Theological Journal 15.2 (1953): 97-124, read in full from the Galaxie text, which keeps the journal's pagination. This is the first of two parts; it ends "(to be concluded)", and its verdict on a near-term fulfilment is in the second, which is not cited. So Young is cited only for what this part argues: the plural address of the imposed sign (112), for signGivenToHouseOfDavid; הָרָה as a verbal adjective with present reference (115-117), for harahIsPredicateAdjective and isaianicAlmahIsAlreadyPregnant; and Ugaritic ǵlmt never used of a married woman (120-124), for almahAdmitsVirginSense. No rating or result changes. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01VGgpRWs6WLZF6e3Qb3fWRP
A dispute weighed each position by its weakest premise, but inference steps carried no rank. So a reply that put its contested move in a step was weighed by its observations alone, and where an encoding placed a contested move - atom or step - decided who prevailed. - ArgumentPackage gains `inferences : List Source` and Line an optional `inference` citation, carried by asPackage. Steps rank at the lowest cited inference of their package; a Dispute now requires every node to cite one (`rated`), so no party enters a dispute with unweighed steps. - The rule for a rating: a step is `disputed` when a cited source grants its grounds and denies its conclusion. - Isaiah ratings: the critic's step `consensus` (it only applies the exclusion); Berry's `disputed` (Watts grants the uncertain chronology and keeps Hezekiah, as Compton reports); Motyer's `disputed` (the readers who identify the two children); Postell's `plausible` (no cited source grants his grounds and keeps the exclusion); the scriptural strands' `disputed`. Results: the critic now defeats Berry and Motyer back, but not Postell. The scriptural reading still prevails with the replies heard, now resting on Postell alone: he is unattacked and defends the rest. critical_denial_indefensible goes through Postell. Motyer alone no longer suffices: scriptural_reading_prevails_on_motyer_alone is replaced by nothing_prevails_on_motyer_alone. The docs say the verdict rests on the rating of Postell's inference. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01VGgpRWs6WLZF6e3Qb3fWRP
The Isaiah dispute proved every ordered pair as its own theorem: twelve joint-model non-defeats, per-premise countermodels for each blocked attack, a hand-written table proof, and a separate party type, node map and defeat table for every hearing. The module ran to 717 lines. New in Testimony.Logic.Dispute and Framework: - Dispute.StandTogether: one named world satisfies a group of parties, so none defeats another - one fact for every pair in the group. - not_defeats_of_outweighed: a weaker attacker whose every target premise holds alongside it. - Dispute.restrict: a hearing of some parties, with the defeats already proved. grounded_eq_empty_of_attacked: nothing prevails when everyone has a defeater. - Tactics defeat_table (the table from the diagonal, the defeats and the groups, deciding memberships) and grounded_by (a grounded extension as an iterate). The Isaiah module is now 504 lines. The defeats stay named theorems; the twelve non-defeats are replies_stand_with_the_scriptural_reading; the exchange and both hearings are restrictions. Named countermodels stay named. One new result the prose had only asserted: nothing_prevails_without_postell. The exchange's two preferred extensions (exchange_alone_preferred) are dropped, and the prose no longer claims them. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01VGgpRWs6WLZF6e3Qb3fWRP
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01VGgpRWs6WLZF6e3Qb3fWRP
Luke never quotes Isaiah 7:14, so Luke is encoded as an allusion, never a quotation, and with both readings attributed: - lukeAllusionEdge: Luke 1:31 -> Isaiah 7:14, `.allusion`, `disputed`. Rhodea, JETS 56.1 (2013), 71 n. 66: Davies and Allison find an influence from Isaiah 7:14, Fitzmyer rejects it. Cites the Greek of both verses (NA28, Septuagint). - annunciationFormEdge: the rival - Luke 1:31 -> Genesis 16:11, `.thematic`, the stock birth-announcement form, of which Isaiah 7:14 is itself an instance. Johnson, JETS 53.2 (2010), 270 n. 6, reporting Neff, Conrad and Brown; Young (1953) 113-14. - independentAttestation gains Rhodea (71) as support: Luke is parallel to Matthew and independent of it - for the conception, not the prophecy. Both articles read in full from their open-access PDFs. The argument's root now says Luke adds to independentAttestation and nothing to the rating of the predictive reading. No result changes. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01VGgpRWs6WLZF6e3Qb3fWRP
maryConceivedAsVirgin cited Scripture alone. It now cites Brown, "The Problem of the Virginal Conception of Jesus", Theological Studies 33.1 (1972) 3-34, for the historical case: no parallel explains how the idea arose (30-32), and the charge of illegitimacy has to be explained by anyone who denies it (32-33). Brown's verdict is "an unresolved problem" (33), and Fitzmyer, TS 34.4 (1973) 541-575, finds the NT data "not unambiguous" (572): so the premise stays `disputed`, and the comment says why. Also: Brown (24) supports independentAttestation - neither evangelist knew the other's infancy narrative, so the shared tradition is older than both; and Brown (31) supports the rival to Luke's allusion - "no proof that Is 7:14 played any major role in shaping the Lucan account". Both read in full from the journal's open-access PDFs; DOIs checked on Crossref. No rating or result changes. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01VGgpRWs6WLZF6e3Qb3fWRP
Postell, JETS 68.3 (2025) 481 n. 72, gives a second counterexample to
the exclusion premise: the Bethlehem ruler of Micah 5 is set against the
Assyrian invasion (5:5-6) and was read messianically - which Brown, the
critic's own authority, grants ("there was an expectation of the
Messiah's birth at Bethlehem (Mt 2:4-6; Jn 7:42)", TS 1972, 26 n. 64).
- Atoms micahRulerFacesAssyria (`consensus`, what the text says) and
micahRulerReadMessianically (`wellSupported`, granted by Brown).
- Step micahParityDefeatsNearTermExclusion, rated `plausible` as
Postell's Isaiah step is, for the same reason and with the same likely
answer (a disanalogy: Micah 5 is no sign to Ahaz).
- The rival first: laterMessianicReading, on which both grounds hold and
the exclusion stands; micah_parity_rests_on_its_inference.
Results: nothing defeats the counterexample, and it stands with every
party but the critic. The grounded extension gains it. Without Postell's
Isaiah argument the scriptural reading still prevails
(scriptural_reading_prevails_without_postell), so an attack on either
counterexample's grounds leaves the verdict standing; without both,
nothing prevails (nothing_prevails_without_the_counterexamples), which
replaces nothing_prevails_without_postell. The two share one inference,
and the docs say so: the verdict rests on its rating.
reading-the-logic.md no longer claims the critic defeats no reply back,
or the exchange's two preferred extensions, which were dropped earlier.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VGgpRWs6WLZF6e3Qb3fWRP
This was referenced Sep 23, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Closes #62.
The issue's three questions
Does a Lean 4 argumentation library exist? No. I checked Reservoir, the GitHub
argumentationtopic and the literature. The only mechanised prior art is Isabelle/HOL (Steen & Fuenmayor, arXiv:2110.09174). SoTestimony.Logic.Frameworkimplements Dung's semantics itself, taking Knaster–Tarski (OrderHom.lfp) and Zorn (zorn_subset_nonempty) from Mathlib instead of proving them again.Should the attack relation be recorded or computed? Computed. Recording it would have mislabelled half the existing replies. The existing replies built with
Line.onGroundsturn out to make two different moves:Each of these nine classifications is now a theorem: five
*_refuses_rather_than_deniesby countermodel, four*_denies_the_groundbyestablish.Would a framework change existing results? No existing entailment result changes. What it adds is a result entailment cannot state: who prevails.
Two findings that shaped the design
Premise attacks between classical arguments always come in pairs. Under symmetric attack, Dung's semantics reduce to a consistency check (Cayrol, IJCAI 1995), and no argument ever wins. So attack is filtered into defeat by cited confidence, on ASPIC+'s weakest-link rule. This makes the ratings load-bearing, and the docs say so.
The weakest link has to include inference steps. Otherwise the placement of a contested move decides the result: in an atom it is rated, in a step it is not. So a
Disputerefuses any node whose inferences are unrated. The rule for rating a step is that it isdisputedwhen a cited source grants its grounds and denies its conclusion.What's added
Testimony/Logic/Framework.lean: conflict-free, admissible, complete, preferred and grounded extensions, and skeptical and credulous acceptance. Alsogrounded_eq_of_iterate,grounded_eq_empty_of_attackedandpreferred_of_blocked.Testimony/Logic/Dispute.lean:UnderminesOn,Rebuts,Attacks,strength,Defeats.Dispute, whose nodes must be satisfiable, must establish their conclusions, and must have rated inferences.Dispute.StandTogether: one named world settles every pair in a group.not_defeats_of_outweighed.Dispute.restrict, for hearings.defeat_tableandgrounded_bytactics.Line.inferenceandArgumentPackage.inferences: citations rating the steps.Testimony/Arguments/BornOfAVirgin/Dispute.lean: six parties (the scriptural reading, the critic, Berry, Postell on Isaiah 9 and 11, Postell on Micah 5, and Motyer). All 36 pairs are proved, and there are eight headlines:christian_defeats_critical, andnothing_prevails_unanswered: the two tie.scriptural_reading_prevails_once_replies_are_heard: grounded = {scriptural, Berry, Postell, Motyer, Micah}.critical_denial_indefensible: nothing defeats Postell, and he defeats the critic.scriptural_reading_prevails_without_postell: the Micah counterexample suffices on its own.nothing_prevails_without_the_counterexamples: the verdict rests on Postell's inference, ratedplausible, in its two instances.nothing_prevails_on_motyer_aloneandmotyer_rests_on_his_inference.SolaScriptura/Results.lean: the refusal/denial theorems.reading-the-logic.md, a "Disputes" section inlogic.md, a roadmap finding, a limits paragraph, and CLAUDE.md entries.statusgen: now sorts headlines by import order.Added in review
disputed.disputed.disputed;disputed;plausible;consensus.Checks
lake buildpasses. The only warnings are the two inEntail.leanthat are already on main.lake lintpasses.lake exe axiom-auditpasses, with only propext, Classical.choice and Quot.sound.testimony_lint.pypasses, and so do its 84 tests.--checkruns for bibgen, statusgen, argdoc and argtex all pass.mdbookandtectonic. CI runs mdbook.🤖 Generated with Claude Code
https://claude.ai/code/session_01VGgpRWs6WLZF6e3Qb3fWRP