Documentation

InfinitaryLogic.Admissible.AmbientHF

The honest HF ambient instance (issue #19A) #

Element := ℕ under Ackermann membership. Sentence codes are the enc-image of the finitary sentences, theory codes are exactly the finite sets of sentence codes, and pairing and union are ordinary arithmetic. The four kinds overlap, which is correct: in HF every code is a number.

A-finiteness is not plain finiteness #

Theory codes are built from finitary sentence codes, so a finite theory containing an infinitary sentence is not an element of HF. The characterization is hfAmbient_aFinite_iff:

AFinite T ↔ T.Finite ∧ T ⊆ finitaryFragment L

with hfAmbient_aFinite_iff_of_finitary as the consumer-friendly form. Both conjuncts are necessary: encoding arbitrary infinitary sentences into HF is ruled out by the uncountability of L.Sentenceω (docs/admissible-19a-checkpoint.md §1). not_hfAmbient_aFinite_iff_finite exhibits a finite non-A-finite theory rather than merely asserting the distinction.

What injectivity does and does not give #

FinitaryCoding stores an injective numbering. Injectivity gives numbering-independence of the decoded range — hence of adequacy and containment, which is hfAmbient_range_indep — but not of Sigma1: two injective numberings can disagree about which theories are c.e. Sigma1 invariance is a separate layer, and holds only against an explicit ComputablyEquivalent witness; see Admissible/Numbering.lean.

Main definitions #

Main results #

The stored coding. Not [Encodable L.Sentence]: an ambient instance is chosen by instance search and gives no invariance between numberings, so the encoding is carried as data. Same lesson as codedIInf_uses_presentation_encoding.

  • enc : L.Sentence → ℕ

    The numbering of finitary sentences.

  • enc_injective : Function.Injective self.enc

    Injectivity — enough for range-invariance, not enough for Sigma1-invariance.

Instances For

    The honest HF ambient presentation, relative to a stored coding.

    noncomputable only because decodeSentence inverts enc by choice; the coding itself is concrete data, which is the point of storing it.

    Equations
    • One or more equations did not get rendered due to their size.
    Instances For

      The ambient instance and the family-layer HF presentation agree, definitionally.

      hfFamily is what the HF syntax consumers (isEmpty_codedFamily_hf, hf_coded_closure_vacuous, hfAdmissibleFragment) are stated over, and this is what ties them to the ambient instance without either one depending on the other's extra layers. It is also independent of the coding C, as it must be: the family layer sees no sentence numbering.

      theorem FirstOrder.Language.hfAmbient_decode {L : Language} (C : L.FinitaryCoding) (φ₀ : L.Sentence) (h : (hfAmbient C).IsSentenceCode (C.enc φ₀)) :

      Decoding a stored code returns that very sentence — this is where enc_injective is used, and why the coding must be stored rather than assumed.

      Adequacy: the HF sentence codes decode onto exactly finitaryFragment L.

      Numbering invariance, stated the only way it can be. The decoded range is finitaryFragment L for every stored coding, so adequacy — and hence containment — does not depend on which numbering was chosen.

      What is not claimed is that Sigma1 is numbering-invariant; that needs acceptable / computably equivalent encodings and is the open half of checkpoint §6(a).

      The theory layer #

      Theory codes are the Ackermann codes all of whose members are sentence codes — so, exactly the finite sets of sentence codes. Nat.finite_ackMem gives one direction, Nat.exists_ack_of_finite the other.

      The members of a theory code form a finite set of sentence codes.

      The corrected A-finiteness characterization.

      Both conjuncts are necessary. Finiteness comes from Nat.finite_ackMem: an Ackermann code has finitely many bits set. Containment comes from adequacy: the members are sentence codes, and those decode into the finitary fragment and nowhere else.

      The global form AFinite T ↔ T.Finite is FALSE here; not_hfAmbient_aFinite_iff_finite exhibits a counterexample.

      The consumer-friendly form. Inside the finitary fragment — which is where every HF consumer lives — A-finiteness is ordinary finiteness.

      The distinction is real, not cosmetic. A singleton iInf theory is finite yet not A-finite, so AFinite T ↔ T.Finite genuinely fails.

      Exhibiting the counterexample is the point: it is what stops that equation from being adopted "for convenience".

      KP closure, discharged #

      Nat.mem_ackPair and Nat.mem_ackUnion are exactly the specification laws WithKP demands, so the HF instance is a structure literal. That it is nearly definitional is the signal that membership was the missing ingredient — the earlier totality-only fields were satisfiable by fun _ _ _ => True and proved nothing.

      HF with pairing and union.

      Equations
      Instances For

        The KP layer adds laws, not a different presentation.

        The assembled regression #

        The public form takes the presentation's own Sigma1; there is no free Sig parameter and no caller-supplied containment.

        Containment for HF, derived from adequacy — no manual hypothesis.

        Universe-general: only the ambient compactness theorem below is pinned to Language.{0, 0}, because its published interface still concludes the universe-zero Theoryω.IsSatisfiable. The underlying first-order route is universe-general via finitaryFragment_compactIn; no coding fact imposes the restriction.

        Inside the fragment, the Barwise premise IS ordinary finite satisfiability.

        One direction only, and that is the honest shape: a finite subtheory of a finitary theory is itself finitary, so hfAmbient_aFinite_iff's containment conjunct comes for free and every ordinarily finite subtheory is A-finite.

        Only this direction is needed, and it is all that holds without further hypotheses.

        The assembled HF compactness theorem, on the honest route end to end: both premises come from hfAmbient's own coding data, and the proof goes straight to finitaryFragment_compact — i.e. to Mathlib's first-order compactness.

        Containment is discharged internally by hfAmbient_subset_finitary; the caller supplies only Σ-definability and the Barwise premise.

        HF inhabits the compactness interface.