Core Logic is not paraconsistent: one proof, six certifications
Table of Contents
This note provides a proof that asserting Tennant’s Core logic \(\mathbb{C}\) to be paraconsistent — by claiming that the antisequent \[\lnot A, A \nvdash B\] is justified in \(\mathbb{C}\) — entails a contradiction within \(\mathbb{C}\) and, consequently, if this paraconsistency claim about \(\mathbb{C}\) is not rejected as false, renders \(\mathbb{C}\) inconsistent. The proof is purely logical and proceeds in four steps within a five-rule fragment \(\mathcal{F}\) of Core logic and its refutation system in the sense of Łukasiewicz and Goranko. Each step has been machine-verified in three certifications — Coq, Lean 4 and Athena — under each of the two structural readings of \(\mathcal{F}\), six in all.
Anti-Realism and Logic – Truth as Eternal was Tennant’s third book, where he developed philosophical justifications for his invention of IR, his system of intuitionistic relevant logic, characterized primarily by two theses: first, the ban on the Ex Falso Quodlibet rule (for short, EFQ); second, an overlap with minimal logic (for short, M) [1, pp. 184–200]. With the publication of his eighth book in 2017 [2], exactly thirty years later, Tennant changed the name of his logical system, now called “Core logic” (and labelled \(\mathbb{C}\) instead of IR), though he changed neither of these two points.
Indeed, Tennant persists in claiming that his system is paraconsistent [2, p. 156], that is to say, in agreement with the negative definition of paraconsistency, that any instance of EFQ, for example
\begin{equation} \label{eq:1} \lnot A, A \vdash B \end{equation}entails an absurdity and is therefore false in \(\mathbb{C}\), which also means that the corresponding antisequent of \eqref{eq:1}, that is to say its negation, formalized by
\begin{equation} \lnot A, A \nvdash B \tag{Claim 1}\label{claim1} \end{equation}is justified in \(\mathbb{C}\), as it is in M. Note that Tennant himself indeed asserts the following semantic antisequent [2, p. 186]:
\begin{equation} \label{eq:2} \lnot A, A \nvDash B \end{equation}Assuming that \(\mathbb{C}\) is sound, \eqref{claim1} is thus granted on Tennant’s own terms. Finally, to be complete on this point, it must be stressed that \(\mathbb{C}\)’s paraconsistency is claimed only “at the level of the turnstile” [2, p. 41], where the differences between this system and minimal or intuitionistic logic are established [2, p. 43].
As for the second point, the overlap between M and \(\mathbb{C}\) [2, p. 35] can be described as follows:
\(\mathbb{C} \cap \mathbf{M} \neq \emptyset\), which means that M and \(\mathbb{C}\) share the proofs of some sequents, such as
\begin{equation} \label{eq:3} A \to B, A \vdash B \end{equation}\(\mathbb{C} \not\subseteq \mathbf{M}\), because the following sequent is provable in \(\mathbb{C}\) but not in M:
\begin{equation} \label{eq:4} \lnot A \vdash A \to B \end{equation}\(\mathbf{M} \not\subseteq \mathbb{C}\), because
\begin{equation} \label{claim2} \tag{Claim 2} \lnot A, A \nvdash \lnot B \end{equation}is an antisequent that Tennant justifies in \(\mathbb{C}\), while \begin{equation} \label{eq:5} \lnot A, A \vdash \lnot B \end{equation} is provable in M.
But the Theorem and its Corollary below make both of these points indefensible.
1. Theorem
The thesis according to which \(\mathbb{C}\) is paraconsistent is false, because \eqref{claim1} entails a contradiction in \(\mathbb{C}\). Therefore, to preserve consistency, the Core logician must reject \eqref{claim1}, that is to say the claim that his system is paraconsistent.
The proof below is purely logical: four steps in \(\mathcal{F}\), readable without any proof assistant. Every step is certified in Coq and in Lean 4; the final section explains, once the four steps have been read, exactly what the proof files establish and how.
Proof in four steps, in \(\mathcal{F}\) and in its refutation system in the sense of Łukasiewicz and Goranko.
| \begin{prooftree} \AxiomC{} \RightLabel{\scriptsize{\textit{Ax.}}} \UnaryInfC{$A \vdash A$} \end{prooftree} | ||
| \begin{prooftree} \AxiomC{$\Delta \vdash A$} \RightLabel{\scriptsize{$L\lnot$}} \UnaryInfC{$\lnot A, \Delta \vdash$} \end{prooftree} | \begin{prooftree} \AxiomC{$\Delta \vdash B$} \RightLabel{\scriptsize{$R\to$}} \UnaryInfC{\(\Delta \backslash \{A\} \vdash A \to B\)} \end{prooftree} | |
| \begin{prooftree} \AxiomC{$\Delta \vdash A$} \AxiomC{$B, \Gamma \vdash C$} \RightLabel{\scriptsize{$L\to$}} \BinaryInfC{$A \to B, \Delta, \Gamma \vdash C$} \end{prooftree} | \begin{prooftree} \AxiomC{$A, \Delta \vdash$} \RightLabel{\scriptsize{\(R\to_{\mathbb{C}}\)}} \UnaryInfC{$\Delta \vdash A \to B$} \end{prooftree} |
Table 1 reproduces a fragment \(\mathcal{F}\) of the rules of \(\mathbb{C}\) [2, pp. 159–163]. The label \(R\to_{\mathbb{C}}\) is mine, not Tennant’s; I use it because it is the only Core-specific rule in \(\mathcal{F}\), the other four being exactly the same as in M. These four shared rules constitute \(\mathcal{F}\) under its minimal reading \(\mathcal{F}_{\mathbf{M}}\); adding \(R\to_{\mathbb{C}}\) yields its Core reading \(\mathcal{F}_{\mathbb{C}}\). Every rule of \(\mathcal{F}_{\mathbf{M}}\) is a rule of \(\mathbb{C}\).
Two Remarks
- First, in this syntax, \[\Delta \vdash B\] presupposes that \(\Delta\) is consistent, otherwise \[\Delta \vdash\] must be written.
- Second, in textbooks, rule \(R\to\) is usually written as \begin{prooftree} \AxiomC{$A, \Delta \vdash B$} \RightLabel{\scriptsize{$R\to$}} \UnaryInfC{$\Delta \vdash A \to B$} \end{prooftree} The unusual form of rule \(R\to\) in Table 1 means that, with consistent contexts, the discharge of A is optional.
1.1. Derivation: DNS.1 & DNS.2
`DNS’ being an acronym for `Double Negation à la Slaney’ [3], I call `DNS.1’ and `DNS.2’ the rules listed in Table 2 below, together with their respective derivations in \(\mathcal{F}\), which prove that they are derivable in \(\mathbb{C}\). (By definition, a rule is derivable in a given system of rules if its conclusion is derivable from its premisses within the system [4, p. 47].)
| \begin{prooftree}\AxiomC{$A, \Delta \vdash B$}\RightLabel{\scriptsize{DNS.1}}\UnaryInfC{$(A \to B) \to B, \Delta \vdash B$}\end{prooftree} | \begin{prooftree}\AxiomC{$A, \Delta \vdash$}\RightLabel{\scriptsize{DNS.2}}\UnaryInfC{$(A \to B) \to B, \Delta \vdash B$}\end{prooftree} | |
| \begin{prooftree}\AxiomC{$A, \Delta \vdash B$}\RightLabel{\scriptsize{$R\to$}}\UnaryInfC{$\Delta \vdash A \to B$}\AxiomC{} \RightLabel{\scriptsize{$Ax$}}\UnaryInfC{$B \vdash B$}\RightLabel{\scriptsize{$L\to$}}\BinaryInfC{$(A \to B) \to B, \Delta \vdash B$}\end{prooftree} | \begin{prooftree}\AxiomC{$A, \Delta \vdash$}\RightLabel{\scriptsize{\(R\to_{\mathbb{C}}\)}}\UnaryInfC{$\Delta \vdash A \to B$} \AxiomC{}\RightLabel{\scriptsize{$Ax$}}\UnaryInfC{$B \vdash B$}\RightLabel{\scriptsize{$L\to$}}\BinaryInfC{$(A \to B) \to B, \Delta \vdash B$}\end{prooftree} |
1.2. Invertibility of DNS.1
A rule is invertible when, from the derivability of a sequent of the form of its conclusion, the derivability of all its premisses follows [5, p. 93]. By inspection of the derivation of DNS.1 in Table 2 above, it is provable in \(\mathcal{F}_{\mathbf{M}}\) that DNS.1 is invertible.
Indeed, from root to top, this derivation starts from an application of rule \(L\to\), whose right premiss is an axiom, so that invertibility on that side is trivial. On the left of this derivation, there is an application of rule \(R\to\). Consequently, DNS.1’s invertibility depends on \(R\to\)’s, which is itself provable. Note that in his discussion of the converse of the Deduction theorem, Tennant himself acknowledged the invertibility of \(R\to\) [2, p. 46] and, because the context of \(R\to\) is assumed as consistent, the application of Cut i.e.
\begin{prooftree} \AxiomC{$\Delta \vdash A \to B$} \AxiomC{} \RightLabel{\scriptsize{$Ax$}} \UnaryInfC{$A \vdash A$} \AxiomC{} \RightLabel{\scriptsize{$Ax$}} \UnaryInfC{$B \vdash B$} \BinaryInfC{$A \to B, A \vdash B$} \RightLabel{\scriptsize{$Cut$}} \BinaryInfC{$A, \Delta \vdash B$} \end{prooftree}
is \(\mathbb{C}\)-admissible in this case [2, p. 154] and
therefore impossible to deny. Note also that DNS.1, provably valid in
M and containing no negation, cannot have its invertibility
invalidated in \(\mathbb{C}\); but, for the most skeptical reader, an
invertibility proof for DNS.1 is done by structural induction on
derivation trees in \(\mathcal{F}_{\mathbf{M}}\), both in
[6] and in mechanised proofs whose
links are given at the end of this note. The
\(\mathbb{C}\)-admissibility of Cut makes this proof of
invertibility easy, by contrast with the structural induction,
which is longer and harder but appeals to no Cut at all. Either
way, DNS.1 is derivable in \(\mathbb{C}\), and its invertibility is a
metatheorem of \(\mathcal{F}_{\mathbf{M}}\). That this invertibility
also governs \(\mathbb{C}\)’s own rejection assertions is the one
commitment that the final certified theorem displays as a named
hypothesis (anti_DNS1_rule_for_ℂ; named conservativity_at_DNS1 in
the Version 4 files) — precisely the overlap commitment of
[2, p. 35].
1.3. Deduction of \(\overline{DNS.1}\)
The invertibility of DNS.1 means that whenever the conclusion is derivable, the premiss is derivable too. By contraposition, whenever the premiss is not derivable, the conclusion is not derivable either. This is precisely rule \(\overline{DNS.1}\):
\begin{prooftree} \AxiomC{$A, \Delta \nvdash B$} \RightLabel{\scriptsize{$\overline{DNS.1}$}} \UnaryInfC{$(A \to B) \to B, \Delta \nvdash B$} \end{prooftree}In the terminology of refutation systems — the deductive systems for rejected statements initiated by Łukasiewicz [7] and developed for sequents by Tiomkin [8] and by Goranko [9]; for a survey, see [10] — \(\overline{DNS.1}\) is a refutation rule, and its licence is exactly Goranko’s correctness discipline for antisequent calculi: a refutation rule is correct when its converse is a correct rule, and the converse of \(\overline{DNS.1}\) is the invertibility of DNS.1, established above. \(\overline{DNS.1}\) is therefore not a meta-rule imported into the kernel from outside: it is a rule derivable from the kernel’s own invertibility, latent in the shadow of the system.
1.4. Contradiction
This point is the conclusion of the proof: as premiss of \(\overline{DNS.1}\), \eqref{claim1} entails an antisequent which is in contradiction with a consequence of DNS.2:
\begin{prooftree} \AxiomC{} \RightLabel{\scriptsize{(Claim 1)}} \UnaryInfC{$\lnot A, A \nvdash B$} \RightLabel{\scriptsize{$\overline{DNS.1}$}} \UnaryInfC{$\lnot A, (A \to B) \to B \nvdash B$} \AxiomC{} \RightLabel{\scriptsize{\emph{Ax.}}} \UnaryInfC{$A \vdash A$} \RightLabel{\scriptsize{$L\lnot$}} \UnaryInfC{$\lnot A, A \vdash$} \RightLabel{\scriptsize{DNS.2}} \UnaryInfC{$\lnot A, (A \to B) \to B \vdash B$} \BinaryInfC{$\bot$} \end{prooftree}Therefore, \eqref{claim1} cannot be maintained in \(\mathbb{C}\) without contradiction: if Core logic is consistent, it cannot be paraconsistent. \(\blacksquare\)
2. Corollary
\eqref{claim2} is false, therefore it cannot correctly establish that \(\mathbb{C}\) overlaps M.
Proof. \eqref{claim2} meets exactly the same contradiction:
\begin{prooftree} \AxiomC{} \RightLabel{\scriptsize{(Claim 2)}} \UnaryInfC{$\lnot A, A \nvdash \lnot B$} \RightLabel{\scriptsize{$\overline{DNS.1}$}} \UnaryInfC{$\lnot A, (A \to \lnot B) \to \lnot B \nvdash \lnot B$} \AxiomC{} \RightLabel{\scriptsize{\emph{Ax.}}} \UnaryInfC{$A \vdash A$} \RightLabel{\scriptsize{$L\lnot$}} \UnaryInfC{$\lnot A, A \vdash$} \RightLabel{\scriptsize{DNS.2}} \UnaryInfC{$\lnot A, (A \to \lnot B) \to \lnot B \vdash \lnot B$} \BinaryInfC{$\bot$} \end{prooftree}Therefore, \eqref{claim2} is false and cannot correctly establish that \(\mathbb{C}\) overlaps M. \(\blacksquare\)
3. Certification and Adequacy
3.1. Scope
Every step of the proof just read is machine-checked.
- Step 1: DNS.1 and DNS.2 are derivable — DNS.1 uniformly in the two readings of \(\mathcal{F}\), since its derivation uses only the four shared rules, and DNS.2 in \(\mathcal{F}_{\mathbb{C}}\) through \(R\to_{\mathbb{C}}\).
- Step 2: DNS.1 is invertible in \(\mathcal{F}_{\mathbf{M}}\), by one structural induction on derivations, without Cut.
- Step 3: \(\overline{DNS.1}\) is a metatheorem of \(\mathcal{F}_{\mathbf{M}}\), the contrapositive of that invertibility — Goranko’s converse-correctness licence [9], mechanised — and the refutation system whose only rejection axiom is \eqref{claim1} and whose only refutation rule is \(\overline{DNS.1}\) is Ł-correct for \(\mathcal{F}_{\mathbf{M}}\).
- Step 4: the contradiction, in two forms — the Ł-incorrectness of
that same system for \(\mathcal{F}_{\mathbb{C}}\), which rejects a
sequent that \(\mathcal{F}_{\mathbb{C}}\) derives, and the
conditional theorem
claim1_false, whose two hypotheses are displayed rather than hidden.
Nothing is postulated in support of the argument: in Coq, every Print
Assumptions reports Closed under the global context, and in Lean 4
the proof depends on propext alone — an axiom of the ambient logic,
not a premiss of the argument; the two principles granted to Tennant
are antecedents of the final theorem. Whoever wishes to resist the
conclusion must reject one of them — at the price, for the second, of
giving up the refutation discipline of the very kernel that grounds
the overlap of \(\mathbb{C}\) with \(\mathbf{M}\). These two horns
are precisely the two points recalled in the introduction: the
paraconsistency of \(\mathbb{C}\), and its overlap with
\(\mathbf{M}\).
3.2. The two readings
Table 1 fixes five rules, and a formal encoding must settle two things that their notation leaves open: whether an initial sequent may carry side formulæ, and whether \(L\to\) shares one context or splits it. The twelve statements are certified under both settlements, in three proof languages with distinct foundations — Coq and Lean 4 (dependent type theory), Athena (a denotational proof language over many-sorted first-order logic). Table 3 begins with the two clauses that differ and, beneath each, its three certifications. Each of the other three clauses, that is to say \(L\neg\), \(R\to\), \(R\to_{\mathbb{C}}\), is exactly the same on both sides.
| Additive reading of Ax. and \(L\to\) | Table 1: Ax. atomic, \(L\to\) multiplicative |
|---|---|
| Weakening admissible on consistent contexts | No Weakening is available |
| \begin{prooftree} \AxiomC{} \RightLabel{\scriptsize{\textit{Ax.}}} \UnaryInfC{$\Delta, A \vdash A$} \end{prooftree} | \begin{prooftree} \AxiomC{} \RightLabel{\scriptsize{\textit{Ax.}}} \UnaryInfC{$A \vdash A$} \end{prooftree} |
| \begin{prooftree} \AxiomC{$\Delta \vdash A$} \AxiomC{$B, \Delta \vdash C$} \RightLabel{\scriptsize{$L\to$}} \BinaryInfC{$A \to B, \Delta \vdash C$} \end{prooftree} | \begin{prooftree} \AxiomC{$\Delta \vdash A$} \AxiomC{$B, \Gamma \vdash C$} \RightLabel{\scriptsize{$L\to$}} \BinaryInfC{$A \to B, \Delta, \Gamma \vdash C$} \end{prooftree} |
| Coq 8.18 — step through it in the browser | Coq 8.18 — step through it in the browser |
| Lean 4 — check it with the Comparator | Lean 4 — check it with the Comparator |
| Athena — run it in the browser | Athena — run it in the browser |
The right-hand column is Table 1 read literally: reflexivity at the singleton, contexts split between the premisses, and no monotonicity lemma declared or used anywhere. This literalism comes at a price: with the axiom no longer diluted, \(R\to\) no longer involves an optional discharge but only a mandatory one, so that the following sequent, where \(A\) and \(B\) are distinct atoms, valid both in M and in \(\mathbb{C}\) [2, p. 35]:
\begin{equation} \label{eq:6} A \vdash B \to A \end{equation}
is certified as being no longer derivable. One qualification is
worth making here, since the cell above reads atomic: the encoded
axiom quantifies over formulæ, not over atoms, and is therefore more
generous than Table 1 on that point. The generosity runs
in the safe direction. It can only enlarge the set of derivations,
and the negative results — claim1_general, DNS1_inversion_lemma,
atomic_relevance — are proved by induction over the enlarged system,
hence hold a fortiori of the atomically restricted one. These files
therefore certify a strict subsystem of \(\mathcal{F}_{\mathbb{C}}\),
weakening-free by theorem rather than by inspection:
atomic_relevance and no_dilution establish that no side formula
can enter a context at all.
The left-hand column departs from Table 1 at those two
clauses only, and the two are not independent. The diluted axiom is
precisely what restores, in the textbook form of \(R\to\) (see syecond
remark), the optional discharge that Table 1 writes
\(\Delta \backslash \{A\}\): from \(B, A \vdash A\) by Ax.,
\eqref{eq:6} follows by \(R\to\). This is why Weakening on the left,
though not a rule of \(\mathbb{C}\), must be admissible in it on
consistent contexts. And context_monotonicity performs, as a lemma
proved by structural induction, the merging of contexts that the
multiplicative \(L\to\) effects notationally; it is certified inert
and adds no theorem. The additive presentation is thus
\(\mathbb{C}\)’s fragment \(\mathcal{F}\) as faithfully as
additive-\(\mathbf{LJ}\) is \(\mathbf{LJ}\), with at most the latitude
that \(\mathbb{C}\) itself admits. It is taken as the reference for
the same reason that additive contraction-free calculi are standard
throughout structural proof theory [11]: determinism in
backward search, principal formulæ located by membership, no context
split to guess.
3.3. The inadequacy objection
The reader will see that, in the Comments section, an anonymous reader granted the theorem but doubted the system:
I’m extremely confident that you’ve proved the theorem in your challenge […] but I’m now quite certain that the system you’ve proven something about isn’t Core Logic.
The doubt bore on \(L\to\), read as a covert Weakening on the left.
The two columns of Table 3 bracket the fragment,
\[\text{multiplicative} \subsetneq \mathcal{F}_{\mathbb{C}} \subseteq
\text{additive}\] and each half of the proof is certified at the bound
where the inclusion carries it. The derivable half —
absurdity_core, DNS1_in_ℱ, DNS2_instantiated, hence the sequent
that collides — is certified at the lower bound: what a subsystem
derives, \(\mathbb{C}\) derives a fortiori. The underivable half
— claim1_holds_in_ℱ_ℂ, DNS1_conclusion_underivable_in_ℱ_M — is
certified at the upper bound: what a system with more derivations
still refuses to derive, \(\mathbb{C}\) refuses a fortiori. And
claim1_false needs neither concession: it receives \eqref{claim1}
from Tennant as a hypothesis and consumes only the derivable half, so
it is certified at both bounds. The contradiction is therefore not an
artefact of the structural settlement: it arises on every reading of
\(\mathcal{F}\) that lies between the two bounds.
Two further silences are worth breaking, since faithfulness was the
issue. In the derivations of Table 2 the multiplicative
\(L\to\) is applied with its right context \(\Gamma\) empty — the
right premiss being the axiom \(B \vdash B\) — so the split does no
work there, and the additive version reaches the same conclusion by
its single context_monotonicity step: two derivations of one
sequent, not two logics. And Table 1 gives a left rule for
negation and no right rule; the encoding transcribes this exactly,
with L_neg and no R_neg. Negation enters the argument at exactly
one point, through that one rule. In absurdity_core, the axiom \(A
\vdash A\) becomes \(\lnot A, A \vdash\) by \(L\neg\), which
introduces the negation on the left and empties the succedent — the
sequent without which \(R\to_{\mathbb{C}}\) would have nothing to
discharge. Everything after that is implicational:
DNS2_instantiated reaches the decisive sequent by \(L\to\),
\(R\to_{\mathbb{C}}\) and \(Ax.\). In both DNS steps \(\lnot A\)
instantiates \(\Delta\), the context of the DNS rules — the
“possible additional assumptions that are not active in a rule”, in
Negri and von Plato’s terms [12, p. 15]. There the
principal formula is \((A \to B) \to B\); \(\lnot A\) is neither
principal nor active, and no rule for negation occurs anywhere in
DNS.1, in DNS.2, or in their derivations in Table 2. So the
chain turns on the implication rules, \(R\to_{\mathbb{C}}\) above all,
and on the single left rule for negation that Table 1
supplies. There is no right rule for negation to tighten, to weaken,
or to fault. The encoding of negation is examined on its own in the
repository, which pins it between an upper and a lower bound in the
same manner, and perturbs it with the very rules an objector would
want.
Adequacy itself cannot be the object of a certification — de Bruijn’s criterion: the gap between an informal calculus and its formalisation is not closed by a machine, on pain of regress. But the burden it leaves is precise, because the fragment is small. Each of the five rules stands beside its encoding, clause by clause, in Coq, Lean 4, Athena and Prolog, in the rule-correspondence table; the companion note on the Prolog engine lets the reader generate derivations by the clauses themselves — a corroboration, since proof search exhibits witnesses whereas the six certifications above check proofs. To show the encoding inadequate it suffices to exhibit either a rule of \(\mathcal{F}\) that it fails to derive, or a rule of it not admissible in \(\mathbb{C}\). \(L\to\), the one rule named, is answered twice over in Table 3. A general doubt, unaccompanied by such an example, is not an objection that can be met, because it is not one that can be stated.
3.4. The checks
The six source files, the Comparator challenges, the config.json for
the two-kernel procedure and the SHA256 of every frozen file are in
the
GitHub
repository, whose README documents each check. Beyond the one-click
links above, the additive Lean proof has been validated at the gold
standard of the
Lean
reference manual: exported to a serialised proof term in a sandbox
and replayed through two independently implemented kernels, Lean’s own
and nanoda, written in Rust.
'claim1_false' depends on axioms: [propext]
Build completed successfully (3 jobs).
Running nanoda kernel on solution
Nanoda kernel accepts the solution
Running Lean default kernel on solution.
Lean default kernel accepts the solution
Your solution is okay!
Both kernels accept the proof term, whose only axiom is propext, and
the statement they accept is, by construction, exactly that of the
trusted challenge (SHA256:
6147a4234a2420a420d2c67eb145ace7b3d9ec14fc1e2dc368c35010e54804cc) —
neither a weaker one nor a cleverly disguised one.
3.5. Why Athena
Coq and Lean 4 are two kernels of a single family: both implement a
calculus of inductive constructions, so a proof that passes both has
been checked twice against one foundation. A defect in that
foundation — or in the way inductive definitions are elaborated within
it — would be invisible to both. Athena is not of that family. It is
a denotational proof language over polymorphic many-sorted first-order
logic, with an assumption-base semantics in the LCF tradition
[13]: there are no dependent types, no inductive
definitions and no proof terms. A derivation is a datatype, its
well-formedness a first-order predicate, and the twelve statements are
re-proved from the free-generation axioms of that datatype alone.
Athena can dispatch goals to automated provers; neither of these two
files does. Every step is a kernel step — uspec, mp, directed
chain rewriting — so verification succeeds or fails independently of
any resource limit or prover heuristic.
This is precisely the value of Athena for the certification of this proof. The same twelve statements hold in two dependent type theories and in a framework that shares with them neither kernel, nor elaborator, nor notion of proof term — and, as Table 3 shows, under both structural readings of \(L\to\). Six certifications, three foundations, two presentations of the fragment: the contradiction owes nothing to the idiosyncrasies of a single system, nor to a single reading of the rules. It is the logical consequence of the small fragment \(\mathcal{F}\) of \(\mathbb{C}\) together with \eqref{claim1}. And the Corollary follows by the same reasoning, mutatis mutandis.
4. References