Constructive logic and witnesses
Track the evidence supplied by a proof and distinguish an explicit construction from double-negated existence.
On this page
The question for today
What you’ll understand
- Explain the computational evidence associated with conjunction, disjunction, implication, and existence.
- Separate a witness-producing proof from a proof of double-negated existence.
- Construct a bounded-search witness and verify its minimality without an unrestricted excluded-middle principle.
Constructive mathematics asks what information a proof actually delivers. A proof that an object exists should explain how to obtain it, while a proof of an implication should transform supplied evidence into the promised conclusion. This perspective changes which classical arguments can be used without further assumptions. It does not prohibit contradiction or ordinary finite calculation. We will identify the precise point where a negative argument stops short of returning data, then construct and certify a small search result.
Logical connectives describe ways to use evidence
Under the propositions-as-types interpretation used here, conjunction is represented by a pair, and an implication by a function taking evidence of its hypothesis to evidence of its conclusion. An untruncated disjunction includes a tag indicating the chosen alternative and evidence for that alternative. An untruncated existential includes an object and evidence that it satisfies the predicate. These descriptions concern proof-relevant data; later we will distinguish them from mere propositions and truncated existence.
The introduction and elimination rules must agree. To use a conjunction, project its components; to use a disjunction, handle either possible tag. A function proves an implication only when it works for every admitted input, rather than for a favorable example. The empty type represents falsity, and negation means a function into that empty type. Thus proving a negative statement is itself constructive when the proposed counterexample is transformed into a contradiction.
Double negation forgets a useful distinction
A proof of P always yields a proof that P cannot be refuted: send any proposed refutation the supplied proof. The reverse conversion is not a rule of intuitionistic logic for arbitrary P. In particular, refuting the claim that no witness exists need not provide a witness. Adding a general conversion from double negation to positive evidence recovers a classical principle, so an argument that uses it should declare the extra assumption.
Even the excluded-middle disjunction has a constructive double negation. Suppose a refutation rejects every proof of either P or its negation. It would reject any proof of P through the left tag, thereby itself providing a negation of P. The right tag containing that negation is then also rejected, giving a contradiction. This argument constructs double-negated excluded middle without deciding P. Keeping the tags and function types visible makes the difference precise.
Decidable predicates permit certified finite search
For a decidable predicate on a finite list, compare each candidate in order and stop at the first success. A successful run returns the candidate, a verification of its predicate, and the failed comparisons for all preceding candidates. If the list is exhausted, it returns a proof that no member of that list works. Every branch is justified by the supplied decision procedure, so this algorithm needs no unrestricted decision principle for arbitrary mathematical propositions.
The finiteness qualification matters. Searching all natural numbers for a decidable property may never terminate when no witness exists. A proof that a bounded search succeeds can supply a termination bound, while a bare promise that the property is not refutable may not do so. Constructive proof design therefore records both the predicate and the information guaranteeing that its search completes. The resulting certificate can be checked independently of the strategy used to discover it.
Work it through
Return the first square above a bound
Search the natural numbers from zero through eight for the least n whose square is at least thirty. Specify both the returned data and the failed comparisons that certify minimality.
Compute the squares at zero through five: zero, one, four, nine, sixteen, and twenty-five. Each is strictly smaller than thirty, so every earlier candidate is rejected by a decidable integer comparison.
The square of six is thirty-six, which is at least thirty. Return six with this positive comparison. The search terminates within the stated finite list and does not need to inspect seven or eight.
Package the successful comparison with the six earlier failures. Together they prove both existence in the list and leastness among natural numbers, since any natural number smaller than six is one of those six checked values.
The witness is six, carrying evidence that its square is at least thirty and that every smaller natural number fails the predicate.
The living notebook
Explore the model
Interactive lab · modular
Inspect a finite candidate enumeration
Pause and Reset, then set modulus to 9 and additive step to 1. Predict residues 0, 1, 2, 3, 4, 5, 6 on the initial frame and next six Steps; check the square predicate separately on paper. The orbit enumerates this finite candidate set but does not evaluate the predicate or verify a proof. For a fresh comparison Reset and set modulus to 9 and step to 3: only 0, 3, 6 appear, so this orbit would miss other candidates. Editing retains time; Reset and both settings are required for each run.
- Residue r0
- 0
- Orbit period · m/gcd(m,a)
- 12
- Distinct residues visited
- 1 of 12
Addition modulo m starts at zero: rₙ = na mod m. Playback advances two additions per second. The orbit has period m/gcd(m,a), including period one for a = 0. This is not a cryptographic security test or a primality algorithm. Parameter changes pause playback and recompute the model at the current elapsed time. Reset restores both parameters and returns time to zero. Playback starts paused. Adjust either parameter, then choose Play or Step.
Look forA witness search needs a justified enumeration as well as a decidable predicate.
Pause & reason
Check your understanding
Your turn
Try it yourself
Find the least natural number whose square is strictly greater than fifty, and explain why this finite construction does not establish a decision procedure for unbounded existential questions.
Take a moment to make a prediction or work it out on paper. Open a hint when you need one.
Give me a hint
Compare the squares around seven and eight, and retain evidence about all smaller candidates.
Compare with the solution
The square of seven is forty-nine, while the square of eight is sixty-four. The squares of zero through six are no larger than thirty-six, so eight is the least witness. The finite comparisons certify this particular result. They do not supply a bound for searching an arbitrary decidable predicate on all natural numbers; in an unsuccessful unbounded search, no last comparison need occur.
Keep the idea
Take it with you
- Proof-relevant existence carries an object and its certificate.
- Negative reasoning is constructive, but double-negation elimination is an extra general principle.
- Finite decidable search can return a checkable least-witness certificate.
Read further
Original sources and deeper explanations to follow at your own pace.
Optional progress, saved in this browser when available. Revisit any lesson at any time.
Lesson not marked complete.