Skip to Content.
Sympa Menu

coq-club - Re: [Coq-Club] Computation and proofs over proof objects | How to prove that two proofs objects are equal?

coq-club AT inria.fr

Subject: The Coq mailing list

List archive

Re: [Coq-Club] Computation and proofs over proof objects | How to prove that two proofs objects are equal?


Chronological Thread 
  • From: Gaëtan Gilbert <gaetan.gilbert AT skyskimmer.net>
  • To: coq-club AT inria.fr
  • Subject: Re: [Coq-Club] Computation and proofs over proof objects | How to prove that two proofs objects are equal?
  • Date: Wed, 24 Apr 2019 17:07:15 +0200
  • Authentication-results: mail2-smtp-roc.national.inria.fr; spf=None smtp.pra=gaetan.gilbert AT skyskimmer.net; spf=Pass smtp.mailfrom=gaetan.gilbert AT skyskimmer.net; spf=None smtp.helo=postmaster AT relay3-d.mail.gandi.net
  • Ironport-phdr: 9a23:1ETsrxKNo7/w2qvb0NmcpTZWNBhigK39O0sv0rFitYgRI//xwZ3uMQTl6Ol3ixeRBMOHsqsC1rOd6fmocFdDyK7JiGoFfp1IWk1NouQttCtkPvS4D1bmJuXhdS0wEZcKflZk+3amLRodQ56mNBXdrXKo8DEdBAj0OxZrKeTpAI7SiNm82/yv95HJbAhEmSexbalyIRmrogndqNQaipZ+J6gszRfEvmFGcPlMy2NyIlKTkRf85sOu85Nm7i9dpfEv+dNeXKvjZ6g3QqBWAzogM2Au+c3krgLDQheV5nsdSWoZjBxFCBXY4R7gX5fxtiz6tvdh2CSfIMb7Q6w4VSik4qx2ThLjlSUJOCMj8GzPl8J+kqxbrhKiqRJxzYHbb4OaO+ZxcK7GYdMXRnBMUtpNWyFPAI6xaZYEAeobPeZfqonwv1oAogGiAgmwHuzvzCdHiH733a0+yOsuDxvG3BA9FN8Jv3Tbtsv6NLsIXuCz1qXIwjTDb/dN1jjj8ojIbgssoeqPXbNwasrRykgvFwbAjlqOs4zpJTWV2foRs2WC6edrSOGhi3Y/pg1vvzSixN0gh4vVio4P11zJ9it0zJwoKdC8SEN3ecCoHIZeui2AKod7Qt0uT3t1tCs717EKo4O3cDUIxZkh2hXRceaIc5KS7RLmTOuRISl3hHZieL+nnRa970ygxff8V8S6yVpFszBJktzWuXAM0xzf8MeHReF7/ki82DaDzQbT5f9YIUwslKrbLYAuwqIom5YNrEjOHDX6lUfqgKOMa0kp+eal5/76brjippKQL4p0hRv/MqQqlMy/G+M4Mg0WUmiU4+uzyqHj8lf/QLlQgf02k63Zv4vEKsQBuq60GBRV0oUj6hakDDem0dEYnXwZI1JfYh6HiZbmO03WLPDiEfi/m0iskCtsx/3eIrLhBYzNImHfn7flYLZy8FVRyBEzzNBa/5JbEKsNIPP1Wk/rtdzXFAU1MwKuw7WvNNIo3YQHHGmLH6WxMaXIsFbO6Ph8DfOLYdo6sbXhIv4SyP/qh3IjhRdJcqCkwZIRLn+5Gv5rOVmxenn9mdQAFGIHpEw4QfC82w7KaiJae3vnB/F03To8Eo/zVd6eFLDou6SI2WKAJrMTZm1CDQrRQ23lc4yVALIALiebI8snnTUCWbnnTYI9h0n36F3KjoF/J++RwRU28Ir53YErtfbQhAox9DlxAt7b1WyRHTktzzE4AgQu1aU6mnRTj1KK0Kx2mftdTIIB/PBYSQQ7MJvR1ap8BsygAw8=


> proof_of p = another_proof_of p

You should be able to prove that by applying Eqdep_dec.eq_proofs_unicity


Gaëtan Gilbert

On 24/04/2019 16:27, Benoît Viguier wrote:
Dear all,

I have a type defined in the following kind:

  Definition oncurve (p : point K) := (     match p with     | EC_Inf    => true     | EC_In x y => M#b * y^+2 == x^+3 + M#a * x^+2 + x     end).   Inductive mc : Type := MC p of oncurve p.   Coercion point_of_mc p := let: MC p _ := p in p.

and at some point I am trying to prove that :

MC p (proof_of p) = MC p (another_proof_of p).

Reflexivity do not work in this case because : (proof_of_p p) and (another_proof_of p) while being the same in some senses are not the same object.

However by doing f_equal, the goal becomes:

proof_of p = another_proof_of p

I can unfold both of them and the subsequent definitions, applying a compute leads me to the following state:

match   match     introTF (c:=true) idP       (equivPif idP (fun _view_subject_ : true = true => _view_subject_)          (fun _view_subject_ : true = true => _view_subject_)) in     (_ = y) return (y = true)   with   | Logic.eq_refl => Logic.eq_refl   end in (_ = y) return (y = true) with | Logic.eq_refl =>     match       introTF (c:=true) idP         (equivPif idP (fun _view_subject_ : true = true => _view_subject_)            (fun _view_subject_ : true = true => _view_subject_)) in       (_ = y) return (y = true)     with     | Logic.eq_refl => Logic.eq_refl     end end = is_true_true

Thus my question would be is there anyway to un-opaque those last part ? It says that introTF is defined as Opaque, thus Transparent does not go through either. How can I proceed forward?

From which I cannot work further as introTF etc are opaque. Is there any other way I can prove my equality?

Thanks a lot for any help or insight you can provide me with.

Kind Regards,

Benoit Viguier.




Archive powered by MHonArc 2.6.18.

Top of Page