Commit 2021-01-13 18:52 7ce47174
View on Github →refactor(computability/reduce): define many-one degrees without parameter (#2630)
The file reduce.lean
defines many-one degrees for computable reductions. At the moment every primcodable type α
has a separate type of degrees many_one_degree α
. This is completely antithetical to the notion of degrees, which are introduced to classify problems up to many-one equivalence.
This PR defines a single many_one_degree
type that lives in Type 0
. We use the ulower
infrastructure from #2574 which shows that every type is computably equivalent to a subset of natural numbers. The function many_one_degree.of
which assigns to every set of a primcodable type a degree is still universe polymorphic. In particular, we show that of p = of q ↔ many_one_equiv p q
, etc. in maximal generality, where p
and q
are subsets of different types in different universes.
See previous discussion at #1203.