{"action":"created","comment":{"url":"https://api.github.com/repos/snu-sf/CompCert/pulls/comments/32802352","id":32802352,"diff_hunk":"@@ -234,10 +247,228 @@ Ltac simplify :=\n          end;\n   subst; auto.\n \n-Theorem linker_correct\n+Definition transf_rtl_program_to_asm (f: RTL.program) : res Asm.program :=\n+   OK f\n+   @@ print (print_RTL 0)\n+   @@@ time \"Register allocation\" Allocation.transf_program\n+   @@ print print_LTL\n+   @@ time \"Branch tunneling\" Tunneling.tunnel_program\n+  @@@ Linearize.transf_program\n+   @@ time \"Label cleanup\" CleanupLabels.transf_program\n+  @@@ time \"Mach generation\" Stacking.transf_program\n+   @@ print print_Mach\n+  @@@ time \"Asm generation\" Asmgen.transf_program.\n+\n+Definition transf_cminor_program_to_rtl (p: Cminor.program) : res RTL.program :=\n+   OK p\n+   @@ print print_Cminor\n+  @@@ time \"Instruction selection\" Selection.sel_program\n+  @@@ time \"RTL generation\" RTLgen.transl_program.\n+\n+Definition transf_clight_program_to_rtl (p: Clight.program) : res RTL.program :=\n+  OK p \n+   @@ print print_Clight\n+  @@@ time \"Simplification of locals\" SimplLocals.transf_program\n+  @@@ time \"C#minor generation\" Cshmgen.transl_program\n+  @@@ time \"Cminor generation\" Cminorgen.transl_program\n+  @@@ transf_cminor_program_to_rtl.\n+\n+Definition transf_c_program_to_rtl (p: Csyntax.program) : res RTL.program :=\n+  OK p \n+  @@@ time \"Clight generation\" SimplExpr.transl_program\n+  @@@ transf_clight_program_to_rtl.\n+\n+Lemma Tree_Forall2_split2:\n+  forall (A B C : Type) (pred1 : A -> B -> Prop) (predb : B -> B -> Prop)\n+         (pred2 : B -> C -> Prop) (treeA : Tree.t A) (treeC : Tree.t C),\n+    Tree.Forall2\n+      (fun (a : A) (c : C) => exists (b1 b2:B), pred1 a b1 /\\ (predb b1 b2 /\\ pred2 b2 c)) treeA treeC <->\n+    (exists (treeB1 treeB2: Tree.t B),\n+       Tree.Forall2 pred1 treeA treeB1 /\\ Tree.Forall2 predb treeB1 treeB2 /\\ Tree.Forall2 pred2 treeB2 treeC).\n+Proof.\n+  intros.\n+  remember (fun a c => exists b1 b2, pred1 a b1 /\\ predb b1 b2 /\\ pred2 b2 c) as predA.\n+  remember (fun a c => exists b1, pred1 a b1 /\\ exists b2, predb b1 b2 /\\ pred2 b2 c) as predB.\n+  assert (pcomp: Tree.Forall2 predA treeA treeC <-> Tree.Forall2 predB treeA treeC).\n+  { apply Tree.Forall2_compat. subst. split; intros; des; eauto. }\n+  subst. rewrite -> pcomp.\n+  generalize (Tree.Forall2_split pred1 (fun b c => exists b2, predb b b2 /\\ pred2 b2 c) treeA treeC). intros. rewrite -> H.\n+  split; intros; des.\n+  - apply Tree.Forall2_split in H1. des. eauto.\n+  - exists treeB1. split; auto. apply Tree.Forall2_split. eauto.\n+Qed.\n+\n+Inductive rtl_optimized_1: forall (rtl: RTL.program) (ortl: RTL.program), Prop:=\n+| rtlopt_tailcall: forall r1,\n+                     rtl_optimized_1 r1 (Tailcall.transf_program r1)\n+| rtlopt_inlining: forall r1 r1' (TR_OK: Inlining.transf_program r1 = OK r1'),\n+                     rtl_optimized_1 r1 r1'\n+| rtlopt_renumber: forall r1,\n+                     rtl_optimized_1 r1 (Renumber.transf_program r1)\n+| rtlopt_constprop: forall r1,\n+                      rtl_optimized_1 r1 (Constprop.transf_program r1)\n+| rtlopt_cse: forall r1 r1' (TR_OK: CSE.transf_program r1 = OK r1'),\n+                rtl_optimized_1 r1 r1'\n+| rtlopt_deadcode: forall r1 r1' (TR_OK: Deadcode.transf_program r1 = OK r1'),\n+                     rtl_optimized_1 r1 r1'.\n+\n+Definition rtl_optimized := Relation_Operators.clos_refl_trans  RTL.program rtl_optimized_1.","path":"sepcomp/Linkerproof.v","position":231,"original_position":231,"commit_id":"63a3a44b65b7a2a95593ad1debe46b0e13fd2cee","original_commit_id":"63a3a44b65b7a2a95593ad1debe46b0e13fd2cee","user":{"login":"kim-yoonseung","id":8612957,"avatar_url":"https://avatars.githubusercontent.com/u/8612957?v=3","gravatar_id":"","url":"https://api.github.com/users/kim-yoonseung","html_url":"https://github.com/kim-yoonseung","followers_url":"https://api.github.com/users/kim-yoonseung/followers","following_url":"https://api.github.com/users/kim-yoonseung/following{/other_user}","gists_url":"https://api.github.com/users/kim-yoonseung/gists{/gist_id}","starred_url":"https://api.github.com/users/kim-yoonseung/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/kim-yoonseung/subscriptions","organizations_url":"https://api.github.com/users/kim-yoonseung/orgs","repos_url":"https://api.github.com/users/kim-yoonseung/repos","events_url":"https://api.github.com/users/kim-yoonseung/events{/privacy}","received_events_url":"https://api.github.com/users/kim-yoonseung/received_events","type":"User","site_admin":false},"body":"sepcomp 랑 CompCert repository의 sflib.v 파일 버전이 다르군요","created_at":"2015-06-19T05:25:35Z","updated_at":"2015-06-19T05:25:35Z","html_url":"https://github.com/snu-sf/CompCert/pull/5#discussion_r32802352","pull_request_url":"https://api.github.com/repos/snu-sf/CompCert/pulls/5","_links":{"self":{"href":"https://api.github.com/repos/snu-sf/CompCert/pulls/comments/32802352"},"html":{"href":"https://github.com/snu-sf/CompCert/pull/5#discussion_r32802352"},"pull_request":{"href":"https://api.github.com/repos/snu-sf/CompCert/pulls/5"}}},"pull_request":{"url":"https://api.github.com/repos/snu-sf/CompCert/pulls/5","id":36999358,"html_url":"https://github.com/snu-sf/CompCert/pull/5","diff_url":"https://github.com/snu-sf/CompCert/pull/5.diff","patch_url":"https://github.com/snu-sf/CompCert/pull/5.patch","issue_url":"https://api.github.com/repos/snu-sf/CompCert/issues/5","number":5,"state":"open","locked":false,"title":"Complete Linkerproof.","user":{"login":"kim-yoonseung","id":8612957,"avatar_url":"https://avatars.githubusercontent.com/u/8612957?v=3","gravatar_id":"","url":"https://api.github.com/users/kim-yoonseung","html_url":"https://github.com/kim-yoonseung","followers_url":"https://api.github.com/users/kim-yoonseung/followers","following_url":"https://api.github.com/users/kim-yoonseung/following{/other_user}","gists_url":"https://api.github.com/users/kim-yoonseung/gists{/gist_id}","starred_url":"https://api.github.com/users/kim-yoonseung/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/kim-yoonseung/subscriptions","organizations_url":"https://api.github.com/users/kim-yoonseung/orgs","repos_url":"https://api.github.com/users/kim-yoonseung/repos","events_url":"https://api.github.com/users/kim-yoonseung/events{/privacy}","received_events_url":"https://api.github.com/users/kim-yoonseung/received_events","type":"User","site_admin":false},"body":"문의:\r\n- 증명 중 Linkerproof.v에서 forward_simulation이 reflexive라는 것을 보일 일이 있었는데, 존재하는 lemma 중에서 쓸 만한 것을 못 찾아서, 447줄부터 match_state_refl이라는 이상한 것을 정의해서 증명에 사용하였습니다. 괜찮을지..\r\n\r\n- SepcompRel.v 파일의 달라진 점을 보면, 프로그램이 변환을 안 거쳤을 때를 위해 TRANSF_ID라는 section을 만들어서 ???_identical이라는 lemma를 증명하였는데요, 그냥 TRANSF section과 하나로 합쳐서, 변환이 되거나 안 되었을 때를 동시에 한 lemma로 하는 게 낫지 않을까 하는 생각이 드네요.","created_at":"2015-06-05T04:02:23Z","updated_at":"2015-06-19T05:25:35Z","closed_at":null,"merged_at":null,"merge_commit_sha":"49e99192c82fbb434b9be3db3f481f3ebbee38ca","assignee":null,"milestone":null,"commits_url":"https://api.github.com/repos/snu-sf/CompCert/pulls/5/commits","review_comments_url":"https://api.github.com/repos/snu-sf/CompCert/pulls/5/comments","review_comment_url":"https://api.github.com/repos/snu-sf/CompCert/pulls/comments{/number}","comments_url":"https://api.github.com/repos/snu-sf/CompCert/issues/5/comments","statuses_url":"https://api.github.com/repos/snu-sf/CompCert/statuses/63a3a44b65b7a2a95593ad1debe46b0e13fd2cee","head":{"label":"kim-yoonseung:sepcomp","ref":"sepcomp","sha":"63a3a44b65b7a2a95593ad1debe46b0e13fd2cee","user":{"login":"kim-yoonseung","id":8612957,"avatar_url":"https://avatars.githubusercontent.com/u/8612957?v=3","gravatar_id":"","url":"https://api.github.com/users/kim-yoonseung","html_url":"https://github.com/kim-yoonseung","followers_url":"https://api.github.com/users/kim-yoonseung/followers","following_url":"https://api.github.com/users/kim-yoonseung/following{/other_user}","gists_url":"https://api.github.com/users/kim-yoonseung/gists{/gist_id}","starred_url":"https://api.github.com/users/kim-yoonseung/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/kim-yoonseung/subscriptions","organizations_url":"https://api.github.com/users/kim-yoonseung/orgs","repos_url":"https://api.github.com/users/kim-yoonseung/repos","events_url":"https://api.github.com/users/kim-yoonseung/events{/privacy}","received_events_url":"https://api.github.com/users/kim-yoonseung/received_events","type":"User","site_admin":false},"repo":{"id":36051390,"name":"CompCert","full_name":"kim-yoonseung/CompCert","owner":{"login":"kim-yoonseung","id":8612957,"avatar_url":"https://avatars.githubusercontent.com/u/8612957?v=3","gravatar_id":"","url":"https://api.github.com/users/kim-yoonseung","html_url":"https://github.com/kim-yoonseung","followers_url":"https://api.github.com/users/kim-yoonseung/followers","following_url":"https://api.github.com/users/kim-yoonseung/following{/other_user}","gists_url":"https://api.github.com/users/kim-yoonseung/gists{/gist_id}","starred_url":"https://api.github.com/users/kim-yoonseung/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/kim-yoonseung/subscriptions","organizations_url":"https://api.github.com/users/kim-yoonseung/orgs","repos_url":"https://api.github.com/users/kim-yoonseung/repos","events_url":"https://api.github.com/users/kim-yoonseung/events{/privacy}","received_events_url":"https://api.github.com/users/kim-yoonseung/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/kim-yoonseung/CompCert","description":"The CompCert C verified compiler","fork":true,"url":"https://api.github.com/repos/kim-yoonseung/CompCert","forks_url":"https://api.github.com/repos/kim-yoonseung/CompCert/forks","keys_url":"https://api.github.com/repos/kim-yoonseung/CompCert/keys{/key_id}","collaborators_url":"https://api.github.com/repos/kim-yoonseung/CompCert/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/kim-yoonseung/CompCert/teams","hooks_url":"https://api.github.com/repos/kim-yoonseung/CompCert/hooks","issue_events_url":"https://api.github.com/repos/kim-yoonseung/CompCert/issues/events{/number}","events_url":"https://api.github.com/repos/kim-yoonseung/CompCert/events","assignees_url":"https://api.github.com/repos/kim-yoonseung/CompCert/assignees{/user}","branches_url":"https://api.github.com/repos/kim-yoonseung/CompCert/branches{/branch}","tags_url":"https://api.github.com/repos/kim-yoonseung/CompCert/tags","blobs_url":"https://api.github.com/repos/kim-yoonseung/CompCert/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/kim-yoonseung/CompCert/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/kim-yoonseung/CompCert/git/refs{/sha}","trees_url":"https://api.github.com/repos/kim-yoonseung/CompCert/git/trees{/sha}","statuses_url":"https://api.github.com/repos/kim-yoonseung/CompCert/statuses/{sha}","languages_url":"https://api.github.com/repos/kim-yoonseung/CompCert/languages","stargazers_url":"https://api.github.com/repos/kim-yoonseung/CompCert/stargazers","contributors_url":"https://api.github.com/repos/kim-yoonseung/CompCert/contributors","subscribers_url":"https://api.github.com/repos/kim-yoonseung/CompCert/subscribers","subscription_url":"https://api.github.com/repos/kim-yoonseung/CompCert/subscription","commits_url":"https://api.github.com/repos/kim-yoonseung/CompCert/commits{/sha}","git_commits_url":"https://api.github.com/repos/kim-yoonseung/CompCert/git/commits{/sha}","comments_url":"https://api.github.com/repos/kim-yoonseung/CompCert/comments{/number}","issue_comment_url":"https://api.github.com/repos/kim-yoonseung/CompCert/issues/comments{/number}","contents_url":"https://api.github.com/repos/kim-yoonseung/CompCert/contents/{+path}","compare_url":"https://api.github.com/repos/kim-yoonseung/CompCert/compare/{base}...{head}","merges_url":"https://api.github.com/repos/kim-yoonseung/CompCert/merges","archive_url":"https://api.github.com/repos/kim-yoonseung/CompCert/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/kim-yoonseung/CompCert/downloads","issues_url":"https://api.github.com/repos/kim-yoonseung/CompCert/issues{/number}","pulls_url":"https://api.github.com/repos/kim-yoonseung/CompCert/pulls{/number}","milestones_url":"https://api.github.com/repos/kim-yoonseung/CompCert/milestones{/number}","notifications_url":"https://api.github.com/repos/kim-yoonseung/CompCert/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/kim-yoonseung/CompCert/labels{/name}","releases_url":"https://api.github.com/repos/kim-yoonseung/CompCert/releases{/id}","created_at":"2015-05-22T03:59:55Z","updated_at":"2015-05-22T04:00:01Z","pushed_at":"2015-06-18T07:37:45Z","git_url":"git://github.com/kim-yoonseung/CompCert.git","ssh_url":"git@github.com:kim-yoonseung/CompCert.git","clone_url":"https://github.com/kim-yoonseung/CompCert.git","svn_url":"https://github.com/kim-yoonseung/CompCert","homepage":"http://compcert.inria.fr/","size":11220,"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":"sepcomp"}},"base":{"label":"snu-sf:sepcomp","ref":"sepcomp","sha":"ea71c55fbc430323967458d0de5b52c18b0f1d8e","user":{"login":"snu-sf","id":8771070,"avatar_url":"https://avatars.githubusercontent.com/u/8771070?v=3","gravatar_id":"","url":"https://api.github.com/users/snu-sf","html_url":"https://github.com/snu-sf","followers_url":"https://api.github.com/users/snu-sf/followers","following_url":"https://api.github.com/users/snu-sf/following{/other_user}","gists_url":"https://api.github.com/users/snu-sf/gists{/gist_id}","starred_url":"https://api.github.com/users/snu-sf/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/snu-sf/subscriptions","organizations_url":"https://api.github.com/users/snu-sf/orgs","repos_url":"https://api.github.com/users/snu-sf/repos","events_url":"https://api.github.com/users/snu-sf/events{/privacy}","received_events_url":"https://api.github.com/users/snu-sf/received_events","type":"Organization","site_admin":false},"repo":{"id":29428886,"name":"CompCert","full_name":"snu-sf/CompCert","owner":{"login":"snu-sf","id":8771070,"avatar_url":"https://avatars.githubusercontent.com/u/8771070?v=3","gravatar_id":"","url":"https://api.github.com/users/snu-sf","html_url":"https://github.com/snu-sf","followers_url":"https://api.github.com/users/snu-sf/followers","following_url":"https://api.github.com/users/snu-sf/following{/other_user}","gists_url":"https://api.github.com/users/snu-sf/gists{/gist_id}","starred_url":"https://api.github.com/users/snu-sf/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/snu-sf/subscriptions","organizations_url":"https://api.github.com/users/snu-sf/orgs","repos_url":"https://api.github.com/users/snu-sf/repos","events_url":"https://api.github.com/users/snu-sf/events{/privacy}","received_events_url":"https://api.github.com/users/snu-sf/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/snu-sf/CompCert","description":"The CompCert C verified compiler","fork":true,"url":"https://api.github.com/repos/snu-sf/CompCert","forks_url":"https://api.github.com/repos/snu-sf/CompCert/forks","keys_url":"https://api.github.com/repos/snu-sf/CompCert/keys{/key_id}","collaborators_url":"https://api.github.com/repos/snu-sf/CompCert/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/snu-sf/CompCert/teams","hooks_url":"https://api.github.com/repos/snu-sf/CompCert/hooks","issue_events_url":"https://api.github.com/repos/snu-sf/CompCert/issues/events{/number}","events_url":"https://api.github.com/repos/snu-sf/CompCert/events","assignees_url":"https://api.github.com/repos/snu-sf/CompCert/assignees{/user}","branches_url":"https://api.github.com/repos/snu-sf/CompCert/branches{/branch}","tags_url":"https://api.github.com/repos/snu-sf/CompCert/tags","blobs_url":"https://api.github.com/repos/snu-sf/CompCert/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/snu-sf/CompCert/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/snu-sf/CompCert/git/refs{/sha}","trees_url":"https://api.github.com/repos/snu-sf/CompCert/git/trees{/sha}","statuses_url":"https://api.github.com/repos/snu-sf/CompCert/statuses/{sha}","languages_url":"https://api.github.com/repos/snu-sf/CompCert/languages","stargazers_url":"https://api.github.com/repos/snu-sf/CompCert/stargazers","contributors_url":"https://api.github.com/repos/snu-sf/CompCert/contributors","subscribers_url":"https://api.github.com/repos/snu-sf/CompCert/subscribers","subscription_url":"https://api.github.com/repos/snu-sf/CompCert/subscription","commits_url":"https://api.github.com/repos/snu-sf/CompCert/commits{/sha}","git_commits_url":"https://api.github.com/repos/snu-sf/CompCert/git/commits{/sha}","comments_url":"https://api.github.com/repos/snu-sf/CompCert/comments{/number}","issue_comment_url":"https://api.github.com/repos/snu-sf/CompCert/issues/comments{/number}","contents_url":"https://api.github.com/repos/snu-sf/CompCert/contents/{+path}","compare_url":"https://api.github.com/repos/snu-sf/CompCert/compare/{base}...{head}","merges_url":"https://api.github.com/repos/snu-sf/CompCert/merges","archive_url":"https://api.github.com/repos/snu-sf/CompCert/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/snu-sf/CompCert/downloads","issues_url":"https://api.github.com/repos/snu-sf/CompCert/issues{/number}","pulls_url":"https://api.github.com/repos/snu-sf/CompCert/pulls{/number}","milestones_url":"https://api.github.com/repos/snu-sf/CompCert/milestones{/number}","notifications_url":"https://api.github.com/repos/snu-sf/CompCert/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/snu-sf/CompCert/labels{/name}","releases_url":"https://api.github.com/repos/snu-sf/CompCert/releases{/id}","created_at":"2015-01-18T14:42:32Z","updated_at":"2015-05-28T04:30:48Z","pushed_at":"2015-06-18T07:37:45Z","git_url":"git://github.com/snu-sf/CompCert.git","ssh_url":"git@github.com:snu-sf/CompCert.git","clone_url":"https://github.com/snu-sf/CompCert.git","svn_url":"https://github.com/snu-sf/CompCert","homepage":"http://compcert.inria.fr/","size":11376,"stargazers_count":1,"watchers_count":1,"language":"Coq","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":1,"mirror_url":null,"open_issues_count":5,"forks":1,"open_issues":5,"watchers":1,"default_branch":"sepcomp"}},"_links":{"self":{"href":"https://api.github.com/repos/snu-sf/CompCert/pulls/5"},"html":{"href":"https://github.com/snu-sf/CompCert/pull/5"},"issue":{"href":"https://api.github.com/repos/snu-sf/CompCert/issues/5"},"comments":{"href":"https://api.github.com/repos/snu-sf/CompCert/issues/5/comments"},"review_comments":{"href":"https://api.github.com/repos/snu-sf/CompCert/pulls/5/comments"},"review_comment":{"href":"https://api.github.com/repos/snu-sf/CompCert/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/snu-sf/CompCert/pulls/5/commits"},"statuses":{"href":"https://api.github.com/repos/snu-sf/CompCert/statuses/63a3a44b65b7a2a95593ad1debe46b0e13fd2cee"}}}}