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:

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.

Table 1: Fragment \(\mathcal{F}\) of \(\mathbb{C}\)
  \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].)

Table 2: DNS rules and their respective derivations in \(\mathcal{F}\)
\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.

Table 3: The two readings of \(\mathcal{F}\), and the six certifications
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

1.
Tennant, N. Anti-Realism and Logic – Truth as Eternal. Oxford University Press, 1987.
2.
Tennant, N. Core Logic. Oxford University Press, 2017, 1st ed.
3.
Slaney, J. MINLOG. 1994, [Online]. Available: http://users.cecs.anu.edu.au/~jks/software/.
4.
von Plato, J. Elements of Logical Reasoning. Cambridge University Press, 2013.
5.
Negri, S., von Plato, J. Proof Analysis: A Contribution to Hilbert’s Last Problem. Cambridge, U.K., U.S.A.: Cambridge University Press, 2011.
6.
Vidal-Rosset, J. A Proof in Coq that Core Logic is not Paraconsistent. 2026, [Online]. Available: https://arxiv.org/abs/2606.05953.
7.
Łukasiewicz, J. Aristotle’s Syllogistic from the Standpoint of Modern Formal Logic. Oxford: Clarendon Press, 1957, Second, enlarged.
8.
Tiomkin, M. L. Proving Unprovability. In: Proceedings of the Third Annual Symposium on Logic in Computer Science (LICS ’88), 1988, 22–26, doi: 10.1109/LICS.1988.5097.
9.
Goranko, V. Refutation Systems in Modal Logic. Studia Logica, 1994, 53(2), 299–324, doi: 10.1007/BF01054714.
10.
Goranko, V., Pulcini, G., Skura, T. Refutation Systems: An Overview and Some Applications to Philosophical Logics. 2020, 173–197.
11.
Dyckhoff, R. Contraction-Free Sequent Calculi for Intuitionistic Logic. Journal of Symbolic Logic, 1992, 57(3), 795–807, [Online]. Available: http://www.jstor.org/stable/2275431?origin=JSTOR-pdf.
12.
Negri, S., von Plato, J. Structural Proof Theory. Cambridge: Cambridge University Press, 2001.
13.
Arkoudas, K., Musser, D. Fundamental Proof Methods in Computer Science: A Computer-Based Approach. Cambridge, MA: The MIT Press, 2017, 976.

Published: 2026-05-01 | Updated: 2026-08-04