FormalConjecturesForMathlib/Computability/TuringMachine/PostTuringMachine.lean

GitHub source file

Explanation legend Lean4 Domain Explanation Language (L4DEL)

L4DEL explanations are a separate layer. They do not change the Lean source. Intuition is explanatory prose; numbered items are a reading path; sources link the wording back to evidence.

L4DEL
Lean4 Domain Explanation Language

Credit: The upstream authors and contributors retain credit for the project and mathematics. lean4-explainer only renders their pinned source and adds the separately disclosed explanation layer.

Project sources: Pinned project documentation, Formal Conjectures paper, arXiv v1

6 declarations, 0 contain sorry, 0 declared as axioms

Imports (2)
Imported by 2 files
  1. theorem Part.get_eq_get line 23 source

    standard axioms: Quot.sound, propext what this means

    Statement uses: Part, Part.Dom, Membership.mem, Part.get, Eq

    Proof uses: Iff.mpr, Exists, Part.dom_iff_mem, Exists.intro, Eq.mp, congrArg, propext, Part.eq_iff_of_dom, Eq.symm, Part.eq_get_iff_mem

    2 instances, coercions and auxiliary constants left out.

    Tactic trace: 2 steps

    Open to load the checked before-and-after goal states.

  2. lemma StateTransition.dom_of_apply_eq_none line 29 source

    standard axioms: Classical.choice, Quot.sound, propext what this means

    Statement uses: Option, Eq, Option.none, Membership.mem, Part, StateTransition.eval

    Proof uses: PFun.fix_stop, Part.some, Sum, Option.elim, Sum.inl, Sum.inr, of_eq_true, Eq.trans, True, congrFun', congrArg, eq_self

    3 instances, coercions and auxiliary constants left out.

    Tactic trace: 2 steps

    Open to load the checked before-and-after goal states.

  3. theorem StateTransition.apply_get_eval line 34 source

    standard axioms: Classical.choice, Quot.sound, propext what this means

    Statement uses: Option, Part.Dom, StateTransition.eval, Eq, Part.get, Option.none

    Proof uses: Membership.mem, Part, Part.get_mem, And.right, StateTransition.Reaches, Eq.mp, And, congrArg, propext, StateTransition.mem_eval

    1 instances, coercions and auxiliary constants left out.

    Tactic trace: 3 steps

    Open to load the checked before-and-after goal states.

  4. theorem StateTransition.eval_get_eval TODO(Paul-Lez): also prove this for PFun.fix/golf using the PFun.fix API line 41 source

    Source comment

    TODO(Paul-Lez): also prove this for `PFun.fix`/golf using the `PFun.fix` API

    standard axioms: Classical.choice, Quot.sound, propext what this means

    Statement uses: Option, Part.Dom, StateTransition.eval, Eq, Part, Part.get

    Proof uses: Eq.symm, Part.get_eq_get, StateTransition.dom_of_apply_eq_none, of_eq_true, Option.none, Eq.trans, True, congrFun', congrArg, StateTransition.apply_get_eval, eq_self

    Tactic trace: 3 steps

    Open to load the checked before-and-after goal states.

    theorem eval_get_eval {σ : Type*} {f : σ → Option σ} {s : σ} (H : (eval f s).Dom) :
        eval f ((eval f s).get H) = eval f s := by
    …
  5. theorem StateTransition.eval_eq_eval TODO(Paul-Lez): also prove this for PFun.fix/golf using the PFun.fix API line 48 source

    Source comment

    TODO(Paul-Lez): also prove this for `PFun.fix`/golf using the `PFun.fix` API

    standard axioms: Classical.choice, Quot.sound, propext what this means

    Statement uses: Option, Eq, Option.some, Part, StateTransition.eval

    Proof uses: StateTransition.reaches_eval, Relation.ReflTransGen.single, Membership.mem, Eq.mpr, id, congrArg, Eq.refl

    1 instances, coercions and auxiliary constants left out.

    Tactic trace: 4 steps

    Open to load the checked before-and-after goal states.

    theorem eval_eq_eval {σ : Type*} {f : σ → Option σ} {a a' : σ} (H : f a = some a'):
        eval f a = eval f a' := by
    …
  6. theorem StateTransition.eval_dom_iff TODO(lezeau): this should be generalized to PFun.fix line 56 source

    Source comment

    TODO(lezeau): this should be generalized to `PFun.fix`

    standard axioms: Classical.choice, Quot.sound, propext what this means

    Statement uses: Option, Iff, Exists, Nat, Eq, Nat.iterate, Option.bind, HAdd.hAdd, OfNat.ofNat, Option.some, Option.none, Part.Dom, StateTransition.eval

    Proof uses: Iff.intro, Nat.recAux, Eq.mpr, Membership.mem, Part, id, Exists.intro, StateTransition.dom_of_apply_eq_none, Eq.mp, congrArg, Option.bind_some, Function.iterate_one, zero_add, Or, Option.eq_none_or_eq_some, congrFun', Option.bind_congr', Eq.refl, StateTransition.eval_eq_eval, StateTransition.evalInduction and 9 more

    18 instances, coercions and auxiliary constants left out.

    Tactic trace: 27 steps

    Open to load the checked before-and-after goal states.

    theorem eval_dom_iff {σ : Type*} {f : σ → Option σ} {s : σ} :
        (∃ n, ((Option.bind · f)^[n+1] s) = none) ↔ (eval f s).Dom := by
    …