Polynomial-time membership tests #
Reduction maps and verifiers test membership as they are written on paper, for example keeping
the pairs (u, v) with (u, v) ∉ G.2. fun_prop already certifies decide of conjunctions,
disjunctions, equalities and disequalities
(Turing.MultiTapeTM.ComputableTidilyInPolyTime.decide_and and its neighbours). This file adds
negation and membership of a computed value in a computed list, so such tests need no rewriting
into Boolean operations before fun_prop or polytime runs. Membership is decided by scanning
the list for an equal element (Turing.MultiTapeTM.ComputableTidilyInPolyTime.anyWithInput).
Main results #
Turing.MultiTapeTM.ComputableTidilyInPolyTime.decide_not: negating a decided proposition.Turing.MultiTapeTM.ComputableTidilyInPolyTime.decide_mem: membership in a computed list.Turing.MultiTapeTM.ComputableInPolyTime.contains: Boolean list membership viaList.contains.
Negation of an efficiently decidable proposition uses the standard Boolean encoding.
Membership of a computed value in a computed list is decided by scanning the list for an equal element.
Plain polynomial-time automation #
Membership of a computed value in a computed list is decided by scanning the list for an equal element.
Negation of an efficiently decidable proposition uses the standard Boolean encoding.
Membership of a computed value in a computed list, tested with List.contains, is
polynomial-time computable.