Created
September 26, 2018 13:47
-
-
Save ryuta-ito/ca2909b2012545f8daa3f9284b8772e6 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Structure group M := { | |
| id : M; | |
| bin : M -> M -> M; | |
| inverse : M -> M; | |
| assoc : forall x y z, bin x (bin y z) = bin (bin x y) z; | |
| idR : forall g, bin g id = g; | |
| idL : forall g, bin id g = g; | |
| invR : forall g, bin g (inverse g) = id; | |
| invL : forall g, bin (inverse g) g = id | |
| }. | |
| Structure hom M G M' G' := { | |
| f : M -> M'; | |
| hom_law : forall x y, f (bin M G x y) = bin M' G' (f x) (f y) | |
| }. | |
| Lemma both_sides_L : forall {M : Type} (bin : M -> M -> M) (x y z : M), | |
| x = y -> bin z x = bin z y. | |
| Proof. | |
| intros. | |
| rewrite H. | |
| reflexivity. | |
| Qed. | |
| Example hom_id_map_id : forall {M M' : Type} (G : group M) (G' : group M') (h : hom M G M' G'), | |
| f M G M' G' h (id M G) = id M' G'. | |
| Proof. | |
| intros. | |
| assert (f M G M' G' h (id M G) = f M G M' G' h (bin M G (id M G) (id M G))) | |
| as f_id_G_eq_f__id_G_id_G | |
| by (rewrite (idR M G (id M G)); reflexivity). | |
| rewrite (hom_law M G M' G' h (id M G) (id M G)) in f_id_G_eq_f__id_G_id_G. | |
| rename f_id_G_eq_f__id_G_id_G into f_id_G_eq_f_id_G_f_id_G. | |
| apply (both_sides_L (bin M' G') (f M G M' G' h (id M G)) (bin M' G' (f M G M' G' h (id M G)) (f M G M' G' h (id M G))) (inverse M' G' (f M G M' G' h (id M G)))) | |
| in f_id_G_eq_f_id_G_f_id_G. | |
| rename f_id_G_eq_f_id_G_f_id_G into inv_f_id_G_f_id_G_eq_inv_f_id_G_f_id_G_f_id_G. | |
| rewrite (assoc M' G' (inverse M' G' (f M G M' G' h (id M G))) (f M G M' G' h (id M G)) (f M G M' G' h (id M G))) | |
| in inv_f_id_G_f_id_G_eq_inv_f_id_G_f_id_G_f_id_G. | |
| rewrite (invL M' G' (f M G M' G' h (id M G))) | |
| in inv_f_id_G_f_id_G_eq_inv_f_id_G_f_id_G_f_id_G. | |
| rename inv_f_id_G_f_id_G_eq_inv_f_id_G_f_id_G_f_id_G | |
| into f_id_G_eq_inv_f_id_G_f_id_G_f_id_G. | |
| rewrite (idL M' G' (f M G M' G' h (id M G))) in f_id_G_eq_inv_f_id_G_f_id_G_f_id_G. | |
| symmetry. | |
| assumption. | |
| Qed. |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment