A ≤ₘ B iff A is many-one reducible to B.
Equations
- «term_≤ₘ_» = Lean.ParserDescr.trailingNode `term_≤ₘ_ 50 51 (Lean.ParserDescr.binary `andthen (Lean.ParserDescr.symbol " ≤ₘ ") (Lean.ParserDescr.cat `term 51))
Instances For
A ≡ₘ B iff A is many-one equivalent to B.
Equations
- «term_≡ₘ_» = Lean.ParserDescr.trailingNode `term_≡ₘ_ 50 51 (Lean.ParserDescr.binary `andthen (Lean.ParserDescr.symbol " ≡ₘ ") (Lean.ParserDescr.cat `term 51))
Instances For
To do calc proofs with m-reducibility we create a Trans instance.
Equations
- instTransForallNatBoolM_reducible = { trans := ⋯ }
Equivalent reals have equal upper cones.
For example 𝓓₁ is a partial order (if not a semilattice).
Equations
- instPartialOrder𝓓 = PartialOrder.mk ⋯
Make sure ♯ binds stronger than ≤ₘ.
Equations
- «term_⊕__1» = Lean.ParserDescr.trailingNode `term_⊕__1 70 71 (Lean.ParserDescr.binary `andthen (Lean.ParserDescr.symbol " ⊕ ") (Lean.ParserDescr.cat `term 71))
Instances For
Swapping ∅ and ℕ is surjective on 𝓓ₘ.
An automorphism of a partial order is a bijection that preserves and reflects the order.
Equations
- automorphism π = (Function.Bijective π ∧ ∀ (a b : α), a ≤ b ↔ π a ≤ π b)
Instances For
The identity automorphism is induced by a function on ℕ.
The complement automorphism is not induced by a function on ℕ.
A partial order is rigid if there are no nontrivial automorphisms.
Equations
- rigid α = ∀ (π : α → α), automorphism π → π = id
Instances For
An arithmetical characterization of "Even" is primitive recursive.
The usual join of functions on ℕ is computable.
Requirement for a semilattice like 𝓓ₘ.
Instances For
The botSwap automorphism is induced by a function on reals.
The computable functions satisfy the requirement for a semilattice like 𝓓ₘ.
Equations
- comput = { func := Computable, id := comput.proof_1, comp := @comput.proof_2, inl := comput.proof_3, inr := comput.proof_4, join := ⋯, const := comput.proof_5 }
Instances For
The primitive recursive functions satisfy the requirement for a semilattice like 𝓓ₘ.
Equations
- primrec = { func := Primrec, id := primrec.proof_1, comp := @primrec.proof_2, inl := Primrec.nat_double, inr := Primrec.nat_double_succ, join := ⋯, const := primrec.proof_3 }
Instances For
𝓓ₘ is a join-semilattice.
Equations
- instSemilatticeSup𝓓 = SemilatticeSup.mk ⋯ ⋯ ⋯
The complement map is not the identity map of 𝓓ₘ.
The complement map is a surjective map of 𝓓ₘ.
The complement map is an injective map of 𝓓ₘ.
Complementation is an automorphism not only of the partial order 𝓓ₘ,
but of the preorder m_reducible! (That is true for Turing degrees too.
To rule out that there is an automorphism of the preorder
for Turing degrees that maps something to an element of a different Turing degree
we would have to rule out e.g. a homeomorphism inducing an automorphism.
)
The complement map is an automorphism of 𝓓ₘ.
Over a rich enough monoid, botSwap is an automorphism.
Equations
- is_minimal a = ∀ b ≤ a, b = a
Instances For
Defining the halting set K as {e | φₑ(0)↓}. (There are other possible, essentially equivalent, definitions.)
Equations
- K e = decide ((Denumerable.ofNat Nat.Partrec.Code e).eval 0).Dom
Instances For
The complement of the halting set K is not computable.
If B is computable and A ≤ₘ B then A is computable.
Two m-degrees are automorphic if some automorphism maps one to the other.
Equations
- automorphic a b = ∃ (π : 𝓓 → 𝓓), automorphism π ∧ π a = b
Instances For
Surely this should already exist in Mathlib?
Equations
- automorphic_le a b = ∃ (c : 𝓓), a ≤ c ∧ automorphic b c
Instances For
is this the same as just automorphic?
Equations
- automorphic_equiv a b = (automorphic_le a b ∧ automorphic_le b a)