proposition: Lemma encoding_first_order e : first_order (encode_problem e).
proof: Proof. destruct e as [p q]; cbn. destruct (find_largest_variable p) as [n H1]. destruct (find_largest_variable q) as [m H2]. apply exists_n_first_order. repeat split; apply polynomial_first_order. Qed.
imports: PeanoNat Lia Vector List Undecidability.SOL(SOL PA2) Undecidability.Shared.Libs.PSL(Vectors) Undecidability.SOL.Util(Syntax Subst Tarski PA2_facts PA2_categoricity) Undecidability.Synthetic(Definitions DecidabilityFacts EnumerabilityFacts ListEnumerabilityFacts ReducibilityFacts) Undecidability.H10(H10p) Undecidability.Shared.Dec