{"action":"opened","number":98,"pull_request":{"url":"https://api.github.com/repos/mit-plv/fiat-crypto/pulls/98","id":93270587,"html_url":"https://github.com/mit-plv/fiat-crypto/pull/98","diff_url":"https://github.com/mit-plv/fiat-crypto/pull/98.diff","patch_url":"https://github.com/mit-plv/fiat-crypto/pull/98.patch","issue_url":"https://api.github.com/repos/mit-plv/fiat-crypto/issues/98","number":98,"state":"open","locked":false,"title":"Remove special conditional subtract","user":{"login":"JasonGross","id":396076,"avatar_url":"https://avatars.githubusercontent.com/u/396076?v=3","gravatar_id":"","url":"https://api.github.com/users/JasonGross","html_url":"https://github.com/JasonGross","followers_url":"https://api.github.com/users/JasonGross/followers","following_url":"https://api.github.com/users/JasonGross/following{/other_user}","gists_url":"https://api.github.com/users/JasonGross/gists{/gist_id}","starred_url":"https://api.github.com/users/JasonGross/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/JasonGross/subscriptions","organizations_url":"https://api.github.com/users/JasonGross/orgs","repos_url":"https://api.github.com/users/JasonGross/repos","events_url":"https://api.github.com/users/JasonGross/events{/privacy}","received_events_url":"https://api.github.com/users/JasonGross/received_events","type":"User","site_admin":false},"body":"This is on top of #97.  Here's the current list of `Print Assumptions` in 8.6:\r\n```coq\r\nAxioms:\r\nWordUtil.wlast_combine : forall (sz : nat) (a : Word.word sz) (b : bool),\r\n                         WordUtil.wlast (Word.combine a (Word.WS b Word.WO)) =\r\n                         b\r\nWordUtil.wlast : forall sz : nat, Word.word (sz + 1) -> bool\r\nWordUtil.winit_combine : forall (sz : nat) (a : Word.word sz)\r\n                           (b : Word.word 1),\r\n                         WordUtil.winit (Word.combine a b) = a\r\nWordUtil.winit : forall sz : nat, Word.word (sz + 1) -> Word.word sz\r\nshiftr_range : forall a n m : Z,\r\n               (0 <= a < 2 ^ (n + m))%Z -> (0 <= Z.shiftr a n < 2 ^ m)%Z\r\nGF25519BoundedCommon.proof_admitted : False\r\n used in postfreezeW_subproof to prove: GF25519BoundedCommon.fe25519W ->\r\n                                        GF25519BoundedCommon.fe25519W\r\nprime_q : Znumtheory.prime (2 ^ 255 - 19)\r\nprime_l : Znumtheory.prime (2 ^ 252 + 27742317777372353535851937790883648493)\r\npow2_mod_range : forall a n m : Z,\r\n                 (n <= m)%Z -> (0 <= ZUtil.Z.pow2_mod a n < 2 ^ m)%Z\r\nGF25519BoundedCommon.postfreezeW_correct_and_bounded :\r\nforall x : GF25519BoundedCommon.fe25519W,\r\nGF25519BoundedCommon.is_bounded (GF25519BoundedCommon.fe25519WToZ x) = true ->\r\nGF25519BoundedCommon.fe25519WToZ (GF25519BoundedCommon.postfreezeW x) =\r\nGF25519BoundedCommon.postfreeze (GF25519BoundedCommon.fe25519WToZ x) /\\\r\nGF25519BoundedCommon.is_bounded\r\n  (GF25519BoundedCommon.fe25519WToZ (GF25519BoundedCommon.postfreezeW x)) =\r\ntrue\r\nGF25519BoundedCommon.postfreeze : GF25519.fe25519 -> GF25519.fe25519\r\nTuple.map_S : forall (n : nat) (A B : Type) (f : A -> B)\r\n                (xs : Tuple.tuple' A n) (x : A),\r\n              Tuple.map f (xs, x) = (Tuple.map f xs, f x)\r\nTuple.map2_S : forall (n : nat) (A B C : Type) (f : A -> B -> C)\r\n                 (xs : Tuple.tuple' A n) (ys : Tuple.tuple' B n)\r\n                 (x : A) (y : B),\r\n               Tuple.map2 f (xs, x) (ys, y) = (Tuple.map2 f xs ys, f x y)\r\nGF25519BoundedCommon.freeze_prepost_freeze : forall\r\n                                               x :\r\n                                                Z * Z * Z * Z * Z * Z * Z * Z *\r\n                                                Z * Z,\r\n                                             GF25519BoundedCommon.postfreeze\r\n                                               (GF25519BoundedCommon.prefreeze\r\n                                                 x) =\r\n                                             GF25519.freeze x\r\nWordUtil.combine_winit_wlast : forall (sz : nat) (a : Word.word sz)\r\n                                 (b : Word.word 1)\r\n                                 (c : Word.word (sz + 1)),\r\n                               Word.combine a b = c <->\r\n                               a = WordUtil.winit c /\\\r\n                               b = Word.WS (WordUtil.wlast c) Word.WO\r\nWordNZ_split2 : forall (n m : nat) (w : Word.word (n + m)),\r\n                Z.of_N (Word.wordToN (Word.split2 n m w)) =\r\n                Z.shiftr (Z.of_N (Word.wordToN w)) (Z.of_nat n)\r\nWordNZ_split1 : forall (n m : nat) (w : Word.word (n + m)),\r\n                Z.of_N (Word.wordToN (Word.split1 n m w)) =\r\n                ZUtil.Z.pow2_mod (Z.of_N (Word.wordToN w)) (Z.of_nat n)\r\nWordNZ_range_mono : forall (n : nat) (m : Z) (w : Word.word n),\r\n                    (Z.of_nat n <= m)%Z ->\r\n                    (0 <= Z.of_N (Word.wordToN w) < 2 ^ m)%Z\r\nWordNZ_range : forall (n : nat) (B : Z) (w : Word.word n),\r\n               (2 ^ Z.of_nat n <= B)%Z ->\r\n               (0 <= Z.of_N (Word.wordToN w) < B)%Z\r\nProper_sqrt : Proper (GF25519BoundedCommon.eq ==> GF25519BoundedCommon.eq)\r\n                GF25519Bounded.sqrt\r\nH : forall n : nat, Word.word n -> Word.word (b + b)\r\nB_order_l : CompleteEdwardsCurveTheorems.E.eq\r\n              (CompleteEdwardsCurve.E.mul (Z.to_nat l) B)\r\n              CompleteEdwardsCurve.E.zero\r\n```\r\n(There are also a bunch of `admit`s from `feDec_correct` in 8.4 only.)\r\n\r\nJust in case you're curious where the time in `Experiments/Ed25519.v` is spent in 8.6:\r\n```\r\ntotal time:     35.736s\r\n\r\n tactic                                   local  total   calls       max\r\n────────────────────────────────────────┴──────┴──────┴───────┴─────────┘\r\n─destruct X eqn:? ----------------------  16.3%  16.3%       2    2.920s\r\n─destruct (ModularBaseSystemListProofs.g  14.6%  14.6%       1    5.228s\r\n─discriminate --------------------------  10.7%  10.7%       7    1.964s\r\n─vm_decide -----------------------------   8.9%   9.0%      22    3.144s\r\n─rewrite Hgm in * ----------------------   6.7%   6.7%       1    2.392s\r\n─omega ---------------------------------   3.4%   3.4%     470    0.340s\r\n─rewrite Tuple.to_list_from_list -------   3.4%   3.4%      14    0.408s\r\n─rewrite A in * ------------------------   3.4%   3.4%       1    1.212s\r\n─vm_decide_no_check --------------------   0.0%   2.0%      26    0.660s\r\n─apply dec_bool ------------------------   1.9%   2.0%      27    0.660s\r\n```","created_at":"2016-11-11T02:44:42Z","updated_at":"2016-11-11T02:44:42Z","closed_at":null,"merged_at":null,"merge_commit_sha":null,"assignee":null,"assignees":[],"milestone":null,"commits_url":"https://api.github.com/repos/mit-plv/fiat-crypto/pulls/98/commits","review_comments_url":"https://api.github.com/repos/mit-plv/fiat-crypto/pulls/98/comments","review_comment_url":"https://api.github.com/repos/mit-plv/fiat-crypto/pulls/comments{/number}","comments_url":"https://api.github.com/repos/mit-plv/fiat-crypto/issues/98/comments","statuses_url":"https://api.github.com/repos/mit-plv/fiat-crypto/statuses/51166ad15d40f6e1dc75f0a5f2ab5df65d236ed7","head":{"label":"JasonGross:remove-special-conditional-subtract","ref":"remove-special-conditional-subtract","sha":"51166ad15d40f6e1dc75f0a5f2ab5df65d236ed7","user":{"login":"JasonGross","id":396076,"avatar_url":"https://avatars.githubusercontent.com/u/396076?v=3","gravatar_id":"","url":"https://api.github.com/users/JasonGross","html_url":"https://github.com/JasonGross","followers_url":"https://api.github.com/users/JasonGross/followers","following_url":"https://api.github.com/users/JasonGross/following{/other_user}","gists_url":"https://api.github.com/users/JasonGross/gists{/gist_id}","starred_url":"https://api.github.com/users/JasonGross/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/JasonGross/subscriptions","organizations_url":"https://api.github.com/users/JasonGross/orgs","repos_url":"https://api.github.com/users/JasonGross/repos","events_url":"https://api.github.com/users/JasonGross/events{/privacy}","received_events_url":"https://api.github.com/users/JasonGross/received_events","type":"User","site_admin":false},"repo":{"id":61231032,"name":"fiat-crypto","full_name":"JasonGross/fiat-crypto","owner":{"login":"JasonGross","id":396076,"avatar_url":"https://avatars.githubusercontent.com/u/396076?v=3","gravatar_id":"","url":"https://api.github.com/users/JasonGross","html_url":"https://github.com/JasonGross","followers_url":"https://api.github.com/users/JasonGross/followers","following_url":"https://api.github.com/users/JasonGross/following{/other_user}","gists_url":"https://api.github.com/users/JasonGross/gists{/gist_id}","starred_url":"https://api.github.com/users/JasonGross/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/JasonGross/subscriptions","organizations_url":"https://api.github.com/users/JasonGross/orgs","repos_url":"https://api.github.com/users/JasonGross/repos","events_url":"https://api.github.com/users/JasonGross/events{/privacy}","received_events_url":"https://api.github.com/users/JasonGross/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/JasonGross/fiat-crypto","description":"Cryptographic Primitive Code Generation in Fiat","fork":true,"url":"https://api.github.com/repos/JasonGross/fiat-crypto","forks_url":"https://api.github.com/repos/JasonGross/fiat-crypto/forks","keys_url":"https://api.github.com/repos/JasonGross/fiat-crypto/keys{/key_id}","collaborators_url":"https://api.github.com/repos/JasonGross/fiat-crypto/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/JasonGross/fiat-crypto/teams","hooks_url":"https://api.github.com/repos/JasonGross/fiat-crypto/hooks","issue_events_url":"https://api.github.com/repos/JasonGross/fiat-crypto/issues/events{/number}","events_url":"https://api.github.com/repos/JasonGross/fiat-crypto/events","assignees_url":"https://api.github.com/repos/JasonGross/fiat-crypto/assignees{/user}","branches_url":"https://api.github.com/repos/JasonGross/fiat-crypto/branches{/branch}","tags_url":"https://api.github.com/repos/JasonGross/fiat-crypto/tags","blobs_url":"https://api.github.com/repos/JasonGross/fiat-crypto/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/JasonGross/fiat-crypto/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/JasonGross/fiat-crypto/git/refs{/sha}","trees_url":"https://api.github.com/repos/JasonGross/fiat-crypto/git/trees{/sha}","statuses_url":"https://api.github.com/repos/JasonGross/fiat-crypto/statuses/{sha}","languages_url":"https://api.github.com/repos/JasonGross/fiat-crypto/languages","stargazers_url":"https://api.github.com/repos/JasonGross/fiat-crypto/stargazers","contributors_url":"https://api.github.com/repos/JasonGross/fiat-crypto/contributors","subscribers_url":"https://api.github.com/repos/JasonGross/fiat-crypto/subscribers","subscription_url":"https://api.github.com/repos/JasonGross/fiat-crypto/subscription","commits_url":"https://api.github.com/repos/JasonGross/fiat-crypto/commits{/sha}","git_commits_url":"https://api.github.com/repos/JasonGross/fiat-crypto/git/commits{/sha}","comments_url":"https://api.github.com/repos/JasonGross/fiat-crypto/comments{/number}","issue_comment_url":"https://api.github.com/repos/JasonGross/fiat-crypto/issues/comments{/number}","contents_url":"https://api.github.com/repos/JasonGross/fiat-crypto/contents/{+path}","compare_url":"https://api.github.com/repos/JasonGross/fiat-crypto/compare/{base}...{head}","merges_url":"https://api.github.com/repos/JasonGross/fiat-crypto/merges","archive_url":"https://api.github.com/repos/JasonGross/fiat-crypto/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/JasonGross/fiat-crypto/downloads","issues_url":"https://api.github.com/repos/JasonGross/fiat-crypto/issues{/number}","pulls_url":"https://api.github.com/repos/JasonGross/fiat-crypto/pulls{/number}","milestones_url":"https://api.github.com/repos/JasonGross/fiat-crypto/milestones{/number}","notifications_url":"https://api.github.com/repos/JasonGross/fiat-crypto/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/JasonGross/fiat-crypto/labels{/name}","releases_url":"https://api.github.com/repos/JasonGross/fiat-crypto/releases{/id}","deployments_url":"https://api.github.com/repos/JasonGross/fiat-crypto/deployments","created_at":"2016-06-15T18:28:56Z","updated_at":"2016-06-15T18:28:57Z","pushed_at":"2016-11-11T02:28:38Z","git_url":"git://github.com/JasonGross/fiat-crypto.git","ssh_url":"git@github.com:JasonGross/fiat-crypto.git","clone_url":"https://github.com/JasonGross/fiat-crypto.git","svn_url":"https://github.com/JasonGross/fiat-crypto","homepage":null,"size":3796,"stargazers_count":0,"watchers_count":0,"language":"Coq","has_issues":false,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":0,"mirror_url":null,"open_issues_count":0,"forks":0,"open_issues":0,"watchers":0,"default_branch":"master"}},"base":{"label":"mit-plv:master","ref":"master","sha":"c19c7aa0b4efa8a2529304d4c4e46435d765699e","user":{"login":"mit-plv","id":11860253,"avatar_url":"https://avatars.githubusercontent.com/u/11860253?v=3","gravatar_id":"","url":"https://api.github.com/users/mit-plv","html_url":"https://github.com/mit-plv","followers_url":"https://api.github.com/users/mit-plv/followers","following_url":"https://api.github.com/users/mit-plv/following{/other_user}","gists_url":"https://api.github.com/users/mit-plv/gists{/gist_id}","starred_url":"https://api.github.com/users/mit-plv/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mit-plv/subscriptions","organizations_url":"https://api.github.com/users/mit-plv/orgs","repos_url":"https://api.github.com/users/mit-plv/repos","events_url":"https://api.github.com/users/mit-plv/events{/privacy}","received_events_url":"https://api.github.com/users/mit-plv/received_events","type":"Organization","site_admin":false},"repo":{"id":42269036,"name":"fiat-crypto","full_name":"mit-plv/fiat-crypto","owner":{"login":"mit-plv","id":11860253,"avatar_url":"https://avatars.githubusercontent.com/u/11860253?v=3","gravatar_id":"","url":"https://api.github.com/users/mit-plv","html_url":"https://github.com/mit-plv","followers_url":"https://api.github.com/users/mit-plv/followers","following_url":"https://api.github.com/users/mit-plv/following{/other_user}","gists_url":"https://api.github.com/users/mit-plv/gists{/gist_id}","starred_url":"https://api.github.com/users/mit-plv/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mit-plv/subscriptions","organizations_url":"https://api.github.com/users/mit-plv/orgs","repos_url":"https://api.github.com/users/mit-plv/repos","events_url":"https://api.github.com/users/mit-plv/events{/privacy}","received_events_url":"https://api.github.com/users/mit-plv/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/mit-plv/fiat-crypto","description":"Cryptographic Primitive Code Generation in Fiat","fork":false,"url":"https://api.github.com/repos/mit-plv/fiat-crypto","forks_url":"https://api.github.com/repos/mit-plv/fiat-crypto/forks","keys_url":"https://api.github.com/repos/mit-plv/fiat-crypto/keys{/key_id}","collaborators_url":"https://api.github.com/repos/mit-plv/fiat-crypto/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/mit-plv/fiat-crypto/teams","hooks_url":"https://api.github.com/repos/mit-plv/fiat-crypto/hooks","issue_events_url":"https://api.github.com/repos/mit-plv/fiat-crypto/issues/events{/number}","events_url":"https://api.github.com/repos/mit-plv/fiat-crypto/events","assignees_url":"https://api.github.com/repos/mit-plv/fiat-crypto/assignees{/user}","branches_url":"https://api.github.com/repos/mit-plv/fiat-crypto/branches{/branch}","tags_url":"https://api.github.com/repos/mit-plv/fiat-crypto/tags","blobs_url":"https://api.github.com/repos/mit-plv/fiat-crypto/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/mit-plv/fiat-crypto/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/mit-plv/fiat-crypto/git/refs{/sha}","trees_url":"https://api.github.com/repos/mit-plv/fiat-crypto/git/trees{/sha}","statuses_url":"https://api.github.com/repos/mit-plv/fiat-crypto/statuses/{sha}","languages_url":"https://api.github.com/repos/mit-plv/fiat-crypto/languages","stargazers_url":"https://api.github.com/repos/mit-plv/fiat-crypto/stargazers","contributors_url":"https://api.github.com/repos/mit-plv/fiat-crypto/contributors","subscribers_url":"https://api.github.com/repos/mit-plv/fiat-crypto/subscribers","subscription_url":"https://api.github.com/repos/mit-plv/fiat-crypto/subscription","commits_url":"https://api.github.com/repos/mit-plv/fiat-crypto/commits{/sha}","git_commits_url":"https://api.github.com/repos/mit-plv/fiat-crypto/git/commits{/sha}","comments_url":"https://api.github.com/repos/mit-plv/fiat-crypto/comments{/number}","issue_comment_url":"https://api.github.com/repos/mit-plv/fiat-crypto/issues/comments{/number}","contents_url":"https://api.github.com/repos/mit-plv/fiat-crypto/contents/{+path}","compare_url":"https://api.github.com/repos/mit-plv/fiat-crypto/compare/{base}...{head}","merges_url":"https://api.github.com/repos/mit-plv/fiat-crypto/merges","archive_url":"https://api.github.com/repos/mit-plv/fiat-crypto/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/mit-plv/fiat-crypto/downloads","issues_url":"https://api.github.com/repos/mit-plv/fiat-crypto/issues{/number}","pulls_url":"https://api.github.com/repos/mit-plv/fiat-crypto/pulls{/number}","milestones_url":"https://api.github.com/repos/mit-plv/fiat-crypto/milestones{/number}","notifications_url":"https://api.github.com/repos/mit-plv/fiat-crypto/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/mit-plv/fiat-crypto/labels{/name}","releases_url":"https://api.github.com/repos/mit-plv/fiat-crypto/releases{/id}","deployments_url":"https://api.github.com/repos/mit-plv/fiat-crypto/deployments","created_at":"2015-09-10T20:29:16Z","updated_at":"2016-10-22T03:14:13Z","pushed_at":"2016-11-11T02:18:24Z","git_url":"git://github.com/mit-plv/fiat-crypto.git","ssh_url":"git@github.com:mit-plv/fiat-crypto.git","clone_url":"https://github.com/mit-plv/fiat-crypto.git","svn_url":"https://github.com/mit-plv/fiat-crypto","homepage":null,"size":3662,"stargazers_count":9,"watchers_count":9,"language":"Coq","has_issues":true,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":4,"mirror_url":null,"open_issues_count":10,"forks":4,"open_issues":10,"watchers":9,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/mit-plv/fiat-crypto/pulls/98"},"html":{"href":"https://github.com/mit-plv/fiat-crypto/pull/98"},"issue":{"href":"https://api.github.com/repos/mit-plv/fiat-crypto/issues/98"},"comments":{"href":"https://api.github.com/repos/mit-plv/fiat-crypto/issues/98/comments"},"review_comments":{"href":"https://api.github.com/repos/mit-plv/fiat-crypto/pulls/98/comments"},"review_comment":{"href":"https://api.github.com/repos/mit-plv/fiat-crypto/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/mit-plv/fiat-crypto/pulls/98/commits"},"statuses":{"href":"https://api.github.com/repos/mit-plv/fiat-crypto/statuses/51166ad15d40f6e1dc75f0a5f2ab5df65d236ed7"}},"merged":false,"mergeable":null,"mergeable_state":"unknown","merged_by":null,"comments":0,"review_comments":0,"commits":4,"additions":139,"deletions":521,"changed_files":24}}
{"actor":{"display_login":"JasonGross"}}