Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Monoidal structure on cartesian categories #1031

Open
wants to merge 10 commits into
base: master
Choose a base branch
from

Conversation

langston-barrett
Copy link
Collaborator

With certain properties of products, some of which were necessary for the proofs.

@DanGrayson
Copy link
Member

lgtm.

Wait for #1030 and it will be an easy corollary that categories with coproducts have a monoidal structure.

Copy link
Member

@benediktahrens benediktahrens left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Absence of automation is one of the characteristic features of UniMath, and it would be good to keep it that way.
The use of rewrite by itself is quite bad already, since no information on where this rewrite is being done is retained in the proof script (imagine lhs of your rewrite lemma occurs more than once in the goal). Automated rewrite does not even retain the information which lemma should be rewritten with.

Please change those proofs.

Definition binprod_assoc_r {x y z} : C⟦x ⊗ (y ⊗ z), (x ⊗ y) ⊗ z⟧.
Proof.
eauto with binprod.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Can you please replace this automated tactic by an explicit constructon?

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The construction found by eauto here turns out to be this one:

  Proof.
    apply BinProductArrow.
    - apply BinProductArrow.
      + apply BinProductPr1.
      + exact (BinProductPr2 _ _ · BinProductPr1 _ _).
    - exact (BinProductPr2 _ _ · BinProductPr2 _ _).
  Defined.

Definition binprod_assoc_l {x y z} : C⟦(x ⊗ y) ⊗ z, x ⊗ (y ⊗ z)⟧.
Proof.
eauto with binprod.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Can you please replace this automated tactic by an explicit constructon?

@langston-barrett
Copy link
Collaborator Author

langston-barrett commented Oct 29, 2018

While I certainly understand the concerns about automation in Unimath, there are certain proofs I'd rather not write out in full. Perhaps I'll put these in a separate repository. Feel free to cherry-pick the less problematic commits from the PR (e.g. uniqueness of products), or to close this.

@DanGrayson
Copy link
Member

I don't know a definition of "automation" in proof scripts, Benedikt.

@benediktahrens
Copy link
Member

benediktahrens commented Oct 29, 2018 via email

@benediktahrens
Copy link
Member

It seems particularly worrying that the automation is being used to define a structure (Defined.), not to do a proof (Qed.).

@DanGrayson
Copy link
Member

I've never used any of those, nor do I use eapply, but let me take a look at this pull request and see whether there is something problematic about such proofs.

We currently have no appeals to eauto, so portability would be enhanced by not admitting its use. On the other hand, we have some additions to hint databases that Vladimir installed. Did he use them?

@varkor
Copy link
Contributor

varkor commented Oct 29, 2018

We currently have no appeals to eauto, so portability would be enhanced by not admitting its use.

Is there anywhere the reasoning behind the portability arguments is set forth? I don't see how UniMath could realistically transition to another proof assistant without effectively reproving everything, as the tactic language (even without automation) seems heavily specific to Coq — but perhaps such methods have been discussed in the past?

@langston-barrett
Copy link
Collaborator Author

I'm fine rewriting the eauto proofs, that would be easy. Note that autorewrite is only used in the proofs of axioms, it could be made opaque with abstract or similar.

@DanGrayson
Copy link
Member

We currently have no appeals to eauto, so portability would be enhanced by not admitting its use.

Is there anywhere the reasoning behind the portability arguments is set forth? I don't see how UniMath could realistically transition to another proof assistant without effectively reproving everything, as the tactic language (even without automation) seems heavily specific to Coq — but perhaps such methods have been discussed in the past?

Well, yes, it's probably a vain hope, and no, there is no "argument" set forth, especially since now we have 960274 lines of proofs.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

4 participants