Skip to Content.
Sympa Menu

coq-club - [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

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


Chronological Thread 
  • From: Benoît Viguier <beviguier AT gmail.com>
  • To: "coq-club AT inria.fr" <coq-club AT inria.fr>
  • Subject: [Coq-Club] Computation and proofs over proof objects | How to prove that two proofs objects are equal?
  • Date: Wed, 24 Apr 2019 16:27:03 +0200
  • Authentication-results: mail2-smtp-roc.national.inria.fr; spf=None smtp.pra=beviguier AT gmail.com; spf=Pass smtp.mailfrom=beviguier AT gmail.com; spf=None smtp.helo=postmaster AT mail-ed1-f51.google.com
  • Ironport-phdr: 9a23:pnZveBCe4WEgmLcjgLg6UyQJP3N1i/DPJgcQr6AfoPdwSPv+osbcNUDSrc9gkEXOFd2Cra4d0qyL6uu5AiQp2tWoiDg6aptCVhsI2409vjcLJ4q7M3D9N+PgdCcgHc5PBxdP9nC/NlVJSo6lPwWB6nK94iQPFRrhKAF7Ovr6GpLIj8Swyuu+54Dfbx9HiTagfL9+NhW7oRjeusULj4ZpN7o8xAbOrnZUYepd2HlmJUiUnxby58ew+IBs/iFNsP8/9MBOTLv3cb0gQbNXEDopPWY15Nb2tRbYVguA+mEcUmQNnRVWBQXO8Qz3UY3wsiv+sep9xTWaMMjrRr06RTiu86FmQwLuhSwaNTA27XvXh9RugqxbvRyvpBJxzIDbb46JL/dxZL/RcMkASGZdUMtcVSpMCZ68YYsVCOoBOP5VopTjqFsIqhumCxWsC/vgxT9JiX/2wKw63Po7EQrb2wEvBMwBsGrVrNX6KacSUP66zLPTwDXMavNZwzb96IzSfh89pvGMWKt9fMzMwkcsDwPIlkucpZDhMj+P1ekAs3KX4/R8We+skWIqqxx9riCyysojioTFnJ8Zxk3F+Clj3Yo4K9K1RFRlbdOkDpddsTyROZFsTcM4WW5ovT43yr0Ytp6/eygH0JEnyATea/yDaoSH/A/sWPuILTd2hH9pZaizhxm18Uinxe38Ute73ExWoSpCl9nArnEN1xrN5cibUvZx4Fut1DKV2w3Q6uxIO144mbbYJpI7wrM8i4IfsUHZES/3nEX2grWWdkIh+uWw8OvofKvmpp6TN49piwHxLL4ul9ewAeQ9KAcOXmyb9f6g273k+E31WK9KgeEukqnFrJDaItwWqbK+Aw9My4os9xK/Dyq939kDhnkGLFdFeAqdgITzOlHOJur4DfaljFi2njdr3aOOArq0SJ7KNz3IlKrrVbd78U9VjgQph5gL7JVNT7oFPfjbW0nrtdWeAAVvYCKuxOOyIth70QUCblyODbKYPbma5VWF+OMgPuiBfqcavT/8L74u4Pu43ixxokMUYaT8hchfU3u/BPkzexzIM0qpuc8IFCIxhiR7SeXrjFOYVjsKPiS9Wqs94ncwD4f0VN6fFLDou6SI2WKAJrMTfnpPUwneHnLhdoHCUPAJOnrLf51R1wccXL3kcLcPkBGjsAigluhiJ+vQvyAU7NftiYEz6OrUmhU/szdzCpbF3g==

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