620 proposition homotopic_paths_lid: |
620 proposition homotopic_paths_lid: |
621 "\<lbrakk>path p; path_image p \<subseteq> S\<rbrakk> \<Longrightarrow> homotopic_paths S (linepath (pathstart p) (pathstart p) +++ p) p" |
621 "\<lbrakk>path p; path_image p \<subseteq> S\<rbrakk> \<Longrightarrow> homotopic_paths S (linepath (pathstart p) (pathstart p) +++ p) p" |
622 using homotopic_paths_rid [of "reversepath p" S] |
622 using homotopic_paths_rid [of "reversepath p" S] |
623 by (metis homotopic_paths_reversepath path_image_reversepath path_reversepath pathfinish_linepath |
623 by (metis homotopic_paths_reversepath path_image_reversepath path_reversepath pathfinish_linepath |
624 pathfinish_reversepath reversepath_joinpaths reversepath_linepath) |
624 pathfinish_reversepath reversepath_joinpaths reversepath_linepath) |
|
625 |
|
626 lemma homotopic_paths_rid': |
|
627 assumes "path p" "path_image p \<subseteq> s" "x = pathfinish p" |
|
628 shows "homotopic_paths s (p +++ linepath x x) p" |
|
629 using homotopic_paths_rid[of p s] assms by simp |
|
630 |
|
631 lemma homotopic_paths_lid': |
|
632 "\<lbrakk>path p; path_image p \<subseteq> s; x = pathstart p\<rbrakk> \<Longrightarrow> homotopic_paths s (linepath x x +++ p) p" |
|
633 using homotopic_paths_lid[of p s] by simp |
625 |
634 |
626 proposition homotopic_paths_assoc: |
635 proposition homotopic_paths_assoc: |
627 "\<lbrakk>path p; path_image p \<subseteq> S; path q; path_image q \<subseteq> S; path r; path_image r \<subseteq> S; pathfinish p = pathstart q; |
636 "\<lbrakk>path p; path_image p \<subseteq> S; path q; path_image q \<subseteq> S; path r; path_image r \<subseteq> S; pathfinish p = pathstart q; |
628 pathfinish q = pathstart r\<rbrakk> |
637 pathfinish q = pathstart r\<rbrakk> |
629 \<Longrightarrow> homotopic_paths S (p +++ (q +++ r)) ((p +++ q) +++ r)" |
638 \<Longrightarrow> homotopic_paths S (p +++ (q +++ r)) ((p +++ q) +++ r)" |