Choice-free 2 ^ α and the cut-elimination inequalities below ε₀ #
The height-doubling map twoPow' (2 ^ α) and the inequalities L1–L5 of Gentzen's cut
elimination on Mathlib's ONote, stated with the syntactic order slt / sle and the syntactic
normal form SNF of Formalizations.SetTheory.Ordinal.Gentzen.Acc, without Ordinal or repr.
Writing α = ω·γ + m, twoPow' α = ω ^ γ · 2 ^ m. Syntactic addition sadd is Mathlib's
ONote.add (as data), and ssucc is the syntactic successor.
All results before the bridge section depend only on propext. (Mathlib's ONote.opow and the
core lemma Nat.pow_lt_pow_right depend on Classical.choice; they are not used.) The bridge
section, which does use choice, proves that twoPow', sadd and ssucc denote 2 ^ α, α + β
and α + 1, and that twoPow' agrees with Mathlib's ONote.opow, hence with
Gentzen.Ordinals.twoPow.
Main results #
twoPow',ssucc,sadd,smaxand their closure underSNF(SNF_twoPow',SNF_ssucc,SNF_sadd,SNF_smax);twoPow'_slt,twoPow'_sle(L3),twoPow'_smax(L4);L1,L2,L5and the counterexamplesL1_fails_at_zero,L2_fails_at_one;twoPow'_add_le:2^a + 2^b ≤ 2^(max a b + 1)(two-premise cut);- bridge:
repr_sadd,repr_ssucc,repr_twoPow',twoPow'_eq_opow,ssucc_eq_add_one.
References #
- B. Bryce, R. Goré, arXiv:2603.00487 (2026): Gentzen's consistency proof for PA in Coq.
2^i < 2^j for i < j (own proof; Nat.pow_lt_pow_right pulls Classical.choice).
Max via cmp.
Equations
- Gentzen.TwoPow.smax a b = match a.cmp b with | Ordering.lt => b | x => a
Instances For
The notation 1.
Equations
Instances For
The notation 2.
Equations
Instances For
Finite numerals.
Equations
Instances For
Syntactic addition, successor, and 2^α #
Syntactic addition: Mathlib's ONote.add (data only; choice-free as a definition).
Equations
- Gentzen.TwoPow.sadd a b = a.add b
Instances For
Syntactic successor.
Equations
- Gentzen.TwoPow.ssucc ONote.zero = Gentzen.TwoPow.one'
- Gentzen.TwoPow.ssucc (ONote.zero.oadd n a) = ONote.zero.oadd (n + 1) a
- Gentzen.TwoPow.ssucc (e.oadd n a) = e.oadd n (Gentzen.TwoPow.ssucc a)
Instances For
"Left predecessor" of a nonzero exponent: 1 + dec e = e.
Equations
- Gentzen.TwoPow.dec (ONote.zero.oadd n a) = Gentzen.TwoPow.num (↑n - 1)
- Gentzen.TwoPow.dec x✝ = x✝
Instances For
Split α = ω·γ + m (γ, m) on Cantor normal forms.
Equations
- Gentzen.TwoPow.ssplit ONote.zero = (ONote.zero, 0)
- Gentzen.TwoPow.ssplit (ONote.zero.oadd n a) = (ONote.zero, ↑n)
- Gentzen.TwoPow.ssplit (e.oadd n a) = ((Gentzen.TwoPow.dec e).oadd n (Gentzen.TwoPow.ssplit a).1, (Gentzen.TwoPow.ssplit a).2)
Instances For
2 ^ α = ω ^ γ · 2 ^ m where α = ω·γ + m.
Equations
Instances For
SNF closure #
L3: monotonicity #
Addition of the special shapes #
If a is finite (γ = 0) and j ≤ a, then j ≤ m.
L1, L2, L5 #
Generic form: 2^α + j < 2^(α+1) when j < 2^m in the finite case.
Two-premise cut bound #
Counterexamples at the excluded points (choice-free, by evaluation) #
L1 fails at a = 0: 2^0 + 1 = 2 = 2^1.
twoPow' agrees with Mathlib's ONote.opow (hence with Gentzen.Ordinals.twoPow,
whose underlying notation is ONote.ofNat 2 ^ a).
Checks on samples (by decide) #
Samples: 0, 1, 2, ω, ω+1, ω·2, ω^ω.
Equations
- Gentzen.TwoPow.samples = [0, 1, ↑2, ONote.oadd 1 1 0, ONote.oadd 1 1 1, ONote.oadd 1 2 0, (ONote.oadd 1 1 0).oadd 1 0]