То, что вы пытаетесь построить, - это не отрицание LEM, которое скажет, что «существует некоторый P, такой, что EM не имеет места», а утверждение, которое говорит, что ни одно предложение не является разрешимым, что, конечно, приводит к тривиальное несоответствие:
Axiom not_lem : forall (P : Prop), ~ (P \/ ~ P).
Goal False.
now apply (not_lem True); left.
Нет необходимости использовать причудливую лемму о двойном отрицании; поскольку это явно противоречиво [представьте, что это будет так!]
«Классическое» отрицание LEM действительно:
Axiom not_lem : exists (P : Prop), ~ (P \/ ~ P).
и это не доказуемо [в противном случае EM не было бы приемлемым], но вы можете предположить, что это безопасно; однако это не принесет вам особой пользы.