This is an inofficial mirror of http://metamath.tirix.org for personal testing of a visualizer extension only.
Description: A simple path of length 2 between two vertices as length 3 string in a pseudograph. (Contributed by Alexander van der Vekens, 28-Feb-2018) (Revised by AV, 18-May-2021) (Proof shortened by AV, 16-Mar-2022)
| Ref | Expression | ||
|---|---|---|---|
| Hypothesis | elwwlks2.v | |- V = ( Vtx ` G ) |
|
| Assertion | elwspths2spth | |- ( G e. UPGraph -> ( W e. ( 2 WSPathsN G ) <-> E. a e. V E. b e. V E. c e. V ( W = <" a b c "> /\ E. f E. p ( f ( SPaths ` G ) p /\ ( # ` f ) = 2 /\ ( a = ( p ` 0 ) /\ b = ( p ` 1 ) /\ c = ( p ` 2 ) ) ) ) ) ) |
| Step | Hyp | Ref | Expression |
|---|---|---|---|
| 1 | elwwlks2.v | |- V = ( Vtx ` G ) |
|
| 2 | 1 | wspthsnwspthsnon | |- ( W e. ( 2 WSPathsN G ) <-> E. a e. V E. c e. V W e. ( a ( 2 WSPathsNOn G ) c ) ) |
| 3 | 2 | a1i | |- ( G e. UPGraph -> ( W e. ( 2 WSPathsN G ) <-> E. a e. V E. c e. V W e. ( a ( 2 WSPathsNOn G ) c ) ) ) |
| 4 | 1 | elwspths2on | |- ( ( G e. UPGraph /\ a e. V /\ c e. V ) -> ( W e. ( a ( 2 WSPathsNOn G ) c ) <-> E. b e. V ( W = <" a b c "> /\ <" a b c "> e. ( a ( 2 WSPathsNOn G ) c ) ) ) ) |
| 5 | 4 | 3expb | |- ( ( G e. UPGraph /\ ( a e. V /\ c e. V ) ) -> ( W e. ( a ( 2 WSPathsNOn G ) c ) <-> E. b e. V ( W = <" a b c "> /\ <" a b c "> e. ( a ( 2 WSPathsNOn G ) c ) ) ) ) |
| 6 | 5 | 2rexbidva | |- ( G e. UPGraph -> ( E. a e. V E. c e. V W e. ( a ( 2 WSPathsNOn G ) c ) <-> E. a e. V E. c e. V E. b e. V ( W = <" a b c "> /\ <" a b c "> e. ( a ( 2 WSPathsNOn G ) c ) ) ) ) |
| 7 | rexcom | |- ( E. c e. V E. b e. V ( W = <" a b c "> /\ <" a b c "> e. ( a ( 2 WSPathsNOn G ) c ) ) <-> E. b e. V E. c e. V ( W = <" a b c "> /\ <" a b c "> e. ( a ( 2 WSPathsNOn G ) c ) ) ) |
|
| 8 | wspthnon | |- ( <" a b c "> e. ( a ( 2 WSPathsNOn G ) c ) <-> ( <" a b c "> e. ( a ( 2 WWalksNOn G ) c ) /\ E. f f ( a ( SPathsOn ` G ) c ) <" a b c "> ) ) |
|
| 9 | ancom | |- ( ( <" a b c "> e. ( a ( 2 WWalksNOn G ) c ) /\ E. f f ( a ( SPathsOn ` G ) c ) <" a b c "> ) <-> ( E. f f ( a ( SPathsOn ` G ) c ) <" a b c "> /\ <" a b c "> e. ( a ( 2 WWalksNOn G ) c ) ) ) |
|
| 10 | 19.41v | |- ( E. f ( f ( a ( SPathsOn ` G ) c ) <" a b c "> /\ <" a b c "> e. ( a ( 2 WWalksNOn G ) c ) ) <-> ( E. f f ( a ( SPathsOn ` G ) c ) <" a b c "> /\ <" a b c "> e. ( a ( 2 WWalksNOn G ) c ) ) ) |
|
| 11 | 9 10 | bitr4i | |- ( ( <" a b c "> e. ( a ( 2 WWalksNOn G ) c ) /\ E. f f ( a ( SPathsOn ` G ) c ) <" a b c "> ) <-> E. f ( f ( a ( SPathsOn ` G ) c ) <" a b c "> /\ <" a b c "> e. ( a ( 2 WWalksNOn G ) c ) ) ) |
| 12 | simpr | |- ( ( G e. UPGraph /\ a e. V ) -> a e. V ) |
|
| 13 | simpr | |- ( ( b e. V /\ c e. V ) -> c e. V ) |
|
| 14 | 12 13 | anim12i | |- ( ( ( G e. UPGraph /\ a e. V ) /\ ( b e. V /\ c e. V ) ) -> ( a e. V /\ c e. V ) ) |
| 15 | vex | |- f e. _V |
|
| 16 | s3cli | |- <" a b c "> e. Word _V |
|
| 17 | 15 16 | pm3.2i | |- ( f e. _V /\ <" a b c "> e. Word _V ) |
| 18 | 1 | isspthonpth | |- ( ( ( a e. V /\ c e. V ) /\ ( f e. _V /\ <" a b c "> e. Word _V ) ) -> ( f ( a ( SPathsOn ` G ) c ) <" a b c "> <-> ( f ( SPaths ` G ) <" a b c "> /\ ( <" a b c "> ` 0 ) = a /\ ( <" a b c "> ` ( # ` f ) ) = c ) ) ) |
| 19 | 14 17 18 | sylancl | |- ( ( ( G e. UPGraph /\ a e. V ) /\ ( b e. V /\ c e. V ) ) -> ( f ( a ( SPathsOn ` G ) c ) <" a b c "> <-> ( f ( SPaths ` G ) <" a b c "> /\ ( <" a b c "> ` 0 ) = a /\ ( <" a b c "> ` ( # ` f ) ) = c ) ) ) |
| 20 | wwlknon | |- ( <" a b c "> e. ( a ( 2 WWalksNOn G ) c ) <-> ( <" a b c "> e. ( 2 WWalksN G ) /\ ( <" a b c "> ` 0 ) = a /\ ( <" a b c "> ` 2 ) = c ) ) |
|
| 21 | 2nn0 | |- 2 e. NN0 |
|
| 22 | iswwlksn | |- ( 2 e. NN0 -> ( <" a b c "> e. ( 2 WWalksN G ) <-> ( <" a b c "> e. ( WWalks ` G ) /\ ( # ` <" a b c "> ) = ( 2 + 1 ) ) ) ) |
|
| 23 | 21 22 | mp1i | |- ( ( ( G e. UPGraph /\ a e. V ) /\ ( b e. V /\ c e. V ) ) -> ( <" a b c "> e. ( 2 WWalksN G ) <-> ( <" a b c "> e. ( WWalks ` G ) /\ ( # ` <" a b c "> ) = ( 2 + 1 ) ) ) ) |
| 24 | 23 | 3anbi1d | |- ( ( ( G e. UPGraph /\ a e. V ) /\ ( b e. V /\ c e. V ) ) -> ( ( <" a b c "> e. ( 2 WWalksN G ) /\ ( <" a b c "> ` 0 ) = a /\ ( <" a b c "> ` 2 ) = c ) <-> ( ( <" a b c "> e. ( WWalks ` G ) /\ ( # ` <" a b c "> ) = ( 2 + 1 ) ) /\ ( <" a b c "> ` 0 ) = a /\ ( <" a b c "> ` 2 ) = c ) ) ) |
| 25 | 20 24 | bitrid | |- ( ( ( G e. UPGraph /\ a e. V ) /\ ( b e. V /\ c e. V ) ) -> ( <" a b c "> e. ( a ( 2 WWalksNOn G ) c ) <-> ( ( <" a b c "> e. ( WWalks ` G ) /\ ( # ` <" a b c "> ) = ( 2 + 1 ) ) /\ ( <" a b c "> ` 0 ) = a /\ ( <" a b c "> ` 2 ) = c ) ) ) |
| 26 | 19 25 | anbi12d | |- ( ( ( G e. UPGraph /\ a e. V ) /\ ( b e. V /\ c e. V ) ) -> ( ( f ( a ( SPathsOn ` G ) c ) <" a b c "> /\ <" a b c "> e. ( a ( 2 WWalksNOn G ) c ) ) <-> ( ( f ( SPaths ` G ) <" a b c "> /\ ( <" a b c "> ` 0 ) = a /\ ( <" a b c "> ` ( # ` f ) ) = c ) /\ ( ( <" a b c "> e. ( WWalks ` G ) /\ ( # ` <" a b c "> ) = ( 2 + 1 ) ) /\ ( <" a b c "> ` 0 ) = a /\ ( <" a b c "> ` 2 ) = c ) ) ) ) |
| 27 | 26 | adantr | |- ( ( ( ( G e. UPGraph /\ a e. V ) /\ ( b e. V /\ c e. V ) ) /\ W = <" a b c "> ) -> ( ( f ( a ( SPathsOn ` G ) c ) <" a b c "> /\ <" a b c "> e. ( a ( 2 WWalksNOn G ) c ) ) <-> ( ( f ( SPaths ` G ) <" a b c "> /\ ( <" a b c "> ` 0 ) = a /\ ( <" a b c "> ` ( # ` f ) ) = c ) /\ ( ( <" a b c "> e. ( WWalks ` G ) /\ ( # ` <" a b c "> ) = ( 2 + 1 ) ) /\ ( <" a b c "> ` 0 ) = a /\ ( <" a b c "> ` 2 ) = c ) ) ) ) |
| 28 | 16 | a1i | |- ( ( ( G e. UPGraph /\ a e. V ) /\ ( b e. V /\ c e. V ) ) -> <" a b c "> e. Word _V ) |
| 29 | simprl1 | |- ( ( ( ( ( G e. UPGraph /\ a e. V ) /\ ( b e. V /\ c e. V ) ) /\ p = <" a b c "> ) /\ ( ( f ( SPaths ` G ) <" a b c "> /\ ( <" a b c "> ` 0 ) = a /\ ( <" a b c "> ` ( # ` f ) ) = c ) /\ ( ( <" a b c "> e. ( WWalks ` G ) /\ ( # ` <" a b c "> ) = ( 2 + 1 ) ) /\ ( <" a b c "> ` 0 ) = a /\ ( <" a b c "> ` 2 ) = c ) ) ) -> f ( SPaths ` G ) <" a b c "> ) |
|
| 30 | spthiswlk | |- ( f ( SPaths ` G ) <" a b c "> -> f ( Walks ` G ) <" a b c "> ) |
|
| 31 | wlklenvm1 | |- ( f ( Walks ` G ) <" a b c "> -> ( # ` f ) = ( ( # ` <" a b c "> ) - 1 ) ) |
|
| 32 | simpl | |- ( ( ( # ` f ) = ( ( # ` <" a b c "> ) - 1 ) /\ ( ( <" a b c "> e. ( WWalks ` G ) /\ ( # ` <" a b c "> ) = ( 2 + 1 ) ) /\ ( <" a b c "> ` 0 ) = a /\ ( <" a b c "> ` 2 ) = c ) ) -> ( # ` f ) = ( ( # ` <" a b c "> ) - 1 ) ) |
|
| 33 | oveq1 | |- ( ( # ` <" a b c "> ) = ( 2 + 1 ) -> ( ( # ` <" a b c "> ) - 1 ) = ( ( 2 + 1 ) - 1 ) ) |
|
| 34 | 2cn | |- 2 e. CC |
|
| 35 | pncan1 | |- ( 2 e. CC -> ( ( 2 + 1 ) - 1 ) = 2 ) |
|
| 36 | 34 35 | ax-mp | |- ( ( 2 + 1 ) - 1 ) = 2 |
| 37 | 33 36 | eqtrdi | |- ( ( # ` <" a b c "> ) = ( 2 + 1 ) -> ( ( # ` <" a b c "> ) - 1 ) = 2 ) |
| 38 | 37 | adantl | |- ( ( <" a b c "> e. ( WWalks ` G ) /\ ( # ` <" a b c "> ) = ( 2 + 1 ) ) -> ( ( # ` <" a b c "> ) - 1 ) = 2 ) |
| 39 | 38 | 3ad2ant1 | |- ( ( ( <" a b c "> e. ( WWalks ` G ) /\ ( # ` <" a b c "> ) = ( 2 + 1 ) ) /\ ( <" a b c "> ` 0 ) = a /\ ( <" a b c "> ` 2 ) = c ) -> ( ( # ` <" a b c "> ) - 1 ) = 2 ) |
| 40 | 39 | adantl | |- ( ( ( # ` f ) = ( ( # ` <" a b c "> ) - 1 ) /\ ( ( <" a b c "> e. ( WWalks ` G ) /\ ( # ` <" a b c "> ) = ( 2 + 1 ) ) /\ ( <" a b c "> ` 0 ) = a /\ ( <" a b c "> ` 2 ) = c ) ) -> ( ( # ` <" a b c "> ) - 1 ) = 2 ) |
| 41 | 32 40 | eqtrd | |- ( ( ( # ` f ) = ( ( # ` <" a b c "> ) - 1 ) /\ ( ( <" a b c "> e. ( WWalks ` G ) /\ ( # ` <" a b c "> ) = ( 2 + 1 ) ) /\ ( <" a b c "> ` 0 ) = a /\ ( <" a b c "> ` 2 ) = c ) ) -> ( # ` f ) = 2 ) |
| 42 | 41 | ex | |- ( ( # ` f ) = ( ( # ` <" a b c "> ) - 1 ) -> ( ( ( <" a b c "> e. ( WWalks ` G ) /\ ( # ` <" a b c "> ) = ( 2 + 1 ) ) /\ ( <" a b c "> ` 0 ) = a /\ ( <" a b c "> ` 2 ) = c ) -> ( # ` f ) = 2 ) ) |
| 43 | 30 31 42 | 3syl | |- ( f ( SPaths ` G ) <" a b c "> -> ( ( ( <" a b c "> e. ( WWalks ` G ) /\ ( # ` <" a b c "> ) = ( 2 + 1 ) ) /\ ( <" a b c "> ` 0 ) = a /\ ( <" a b c "> ` 2 ) = c ) -> ( # ` f ) = 2 ) ) |
| 44 | 43 | 3ad2ant1 | |- ( ( f ( SPaths ` G ) <" a b c "> /\ ( <" a b c "> ` 0 ) = a /\ ( <" a b c "> ` ( # ` f ) ) = c ) -> ( ( ( <" a b c "> e. ( WWalks ` G ) /\ ( # ` <" a b c "> ) = ( 2 + 1 ) ) /\ ( <" a b c "> ` 0 ) = a /\ ( <" a b c "> ` 2 ) = c ) -> ( # ` f ) = 2 ) ) |
| 45 | 44 | imp | |- ( ( ( f ( SPaths ` G ) <" a b c "> /\ ( <" a b c "> ` 0 ) = a /\ ( <" a b c "> ` ( # ` f ) ) = c ) /\ ( ( <" a b c "> e. ( WWalks ` G ) /\ ( # ` <" a b c "> ) = ( 2 + 1 ) ) /\ ( <" a b c "> ` 0 ) = a /\ ( <" a b c "> ` 2 ) = c ) ) -> ( # ` f ) = 2 ) |
| 46 | 45 | adantl | |- ( ( ( ( ( G e. UPGraph /\ a e. V ) /\ ( b e. V /\ c e. V ) ) /\ p = <" a b c "> ) /\ ( ( f ( SPaths ` G ) <" a b c "> /\ ( <" a b c "> ` 0 ) = a /\ ( <" a b c "> ` ( # ` f ) ) = c ) /\ ( ( <" a b c "> e. ( WWalks ` G ) /\ ( # ` <" a b c "> ) = ( 2 + 1 ) ) /\ ( <" a b c "> ` 0 ) = a /\ ( <" a b c "> ` 2 ) = c ) ) ) -> ( # ` f ) = 2 ) |
| 47 | s3fv0 | |- ( a e. _V -> ( <" a b c "> ` 0 ) = a ) |
|
| 48 | 47 | elv | |- ( <" a b c "> ` 0 ) = a |
| 49 | 48 | eqcomi | |- a = ( <" a b c "> ` 0 ) |
| 50 | s3fv1 | |- ( b e. _V -> ( <" a b c "> ` 1 ) = b ) |
|
| 51 | 50 | elv | |- ( <" a b c "> ` 1 ) = b |
| 52 | 51 | eqcomi | |- b = ( <" a b c "> ` 1 ) |
| 53 | s3fv2 | |- ( c e. _V -> ( <" a b c "> ` 2 ) = c ) |
|
| 54 | 53 | elv | |- ( <" a b c "> ` 2 ) = c |
| 55 | 54 | eqcomi | |- c = ( <" a b c "> ` 2 ) |
| 56 | 49 52 55 | 3pm3.2i | |- ( a = ( <" a b c "> ` 0 ) /\ b = ( <" a b c "> ` 1 ) /\ c = ( <" a b c "> ` 2 ) ) |
| 57 | 56 | a1i | |- ( ( ( ( ( G e. UPGraph /\ a e. V ) /\ ( b e. V /\ c e. V ) ) /\ p = <" a b c "> ) /\ ( ( f ( SPaths ` G ) <" a b c "> /\ ( <" a b c "> ` 0 ) = a /\ ( <" a b c "> ` ( # ` f ) ) = c ) /\ ( ( <" a b c "> e. ( WWalks ` G ) /\ ( # ` <" a b c "> ) = ( 2 + 1 ) ) /\ ( <" a b c "> ` 0 ) = a /\ ( <" a b c "> ` 2 ) = c ) ) ) -> ( a = ( <" a b c "> ` 0 ) /\ b = ( <" a b c "> ` 1 ) /\ c = ( <" a b c "> ` 2 ) ) ) |
| 58 | 29 46 57 | 3jca | |- ( ( ( ( ( G e. UPGraph /\ a e. V ) /\ ( b e. V /\ c e. V ) ) /\ p = <" a b c "> ) /\ ( ( f ( SPaths ` G ) <" a b c "> /\ ( <" a b c "> ` 0 ) = a /\ ( <" a b c "> ` ( # ` f ) ) = c ) /\ ( ( <" a b c "> e. ( WWalks ` G ) /\ ( # ` <" a b c "> ) = ( 2 + 1 ) ) /\ ( <" a b c "> ` 0 ) = a /\ ( <" a b c "> ` 2 ) = c ) ) ) -> ( f ( SPaths ` G ) <" a b c "> /\ ( # ` f ) = 2 /\ ( a = ( <" a b c "> ` 0 ) /\ b = ( <" a b c "> ` 1 ) /\ c = ( <" a b c "> ` 2 ) ) ) ) |
| 59 | breq2 | |- ( p = <" a b c "> -> ( f ( SPaths ` G ) p <-> f ( SPaths ` G ) <" a b c "> ) ) |
|
| 60 | fveq1 | |- ( p = <" a b c "> -> ( p ` 0 ) = ( <" a b c "> ` 0 ) ) |
|
| 61 | 60 | eqeq2d | |- ( p = <" a b c "> -> ( a = ( p ` 0 ) <-> a = ( <" a b c "> ` 0 ) ) ) |
| 62 | fveq1 | |- ( p = <" a b c "> -> ( p ` 1 ) = ( <" a b c "> ` 1 ) ) |
|
| 63 | 62 | eqeq2d | |- ( p = <" a b c "> -> ( b = ( p ` 1 ) <-> b = ( <" a b c "> ` 1 ) ) ) |
| 64 | fveq1 | |- ( p = <" a b c "> -> ( p ` 2 ) = ( <" a b c "> ` 2 ) ) |
|
| 65 | 64 | eqeq2d | |- ( p = <" a b c "> -> ( c = ( p ` 2 ) <-> c = ( <" a b c "> ` 2 ) ) ) |
| 66 | 61 63 65 | 3anbi123d | |- ( p = <" a b c "> -> ( ( a = ( p ` 0 ) /\ b = ( p ` 1 ) /\ c = ( p ` 2 ) ) <-> ( a = ( <" a b c "> ` 0 ) /\ b = ( <" a b c "> ` 1 ) /\ c = ( <" a b c "> ` 2 ) ) ) ) |
| 67 | 59 66 | 3anbi13d | |- ( p = <" a b c "> -> ( ( f ( SPaths ` G ) p /\ ( # ` f ) = 2 /\ ( a = ( p ` 0 ) /\ b = ( p ` 1 ) /\ c = ( p ` 2 ) ) ) <-> ( f ( SPaths ` G ) <" a b c "> /\ ( # ` f ) = 2 /\ ( a = ( <" a b c "> ` 0 ) /\ b = ( <" a b c "> ` 1 ) /\ c = ( <" a b c "> ` 2 ) ) ) ) ) |
| 68 | 67 | ad2antlr | |- ( ( ( ( ( G e. UPGraph /\ a e. V ) /\ ( b e. V /\ c e. V ) ) /\ p = <" a b c "> ) /\ ( ( f ( SPaths ` G ) <" a b c "> /\ ( <" a b c "> ` 0 ) = a /\ ( <" a b c "> ` ( # ` f ) ) = c ) /\ ( ( <" a b c "> e. ( WWalks ` G ) /\ ( # ` <" a b c "> ) = ( 2 + 1 ) ) /\ ( <" a b c "> ` 0 ) = a /\ ( <" a b c "> ` 2 ) = c ) ) ) -> ( ( f ( SPaths ` G ) p /\ ( # ` f ) = 2 /\ ( a = ( p ` 0 ) /\ b = ( p ` 1 ) /\ c = ( p ` 2 ) ) ) <-> ( f ( SPaths ` G ) <" a b c "> /\ ( # ` f ) = 2 /\ ( a = ( <" a b c "> ` 0 ) /\ b = ( <" a b c "> ` 1 ) /\ c = ( <" a b c "> ` 2 ) ) ) ) ) |
| 69 | 58 68 | mpbird | |- ( ( ( ( ( G e. UPGraph /\ a e. V ) /\ ( b e. V /\ c e. V ) ) /\ p = <" a b c "> ) /\ ( ( f ( SPaths ` G ) <" a b c "> /\ ( <" a b c "> ` 0 ) = a /\ ( <" a b c "> ` ( # ` f ) ) = c ) /\ ( ( <" a b c "> e. ( WWalks ` G ) /\ ( # ` <" a b c "> ) = ( 2 + 1 ) ) /\ ( <" a b c "> ` 0 ) = a /\ ( <" a b c "> ` 2 ) = c ) ) ) -> ( f ( SPaths ` G ) p /\ ( # ` f ) = 2 /\ ( a = ( p ` 0 ) /\ b = ( p ` 1 ) /\ c = ( p ` 2 ) ) ) ) |
| 70 | 69 | ex | |- ( ( ( ( G e. UPGraph /\ a e. V ) /\ ( b e. V /\ c e. V ) ) /\ p = <" a b c "> ) -> ( ( ( f ( SPaths ` G ) <" a b c "> /\ ( <" a b c "> ` 0 ) = a /\ ( <" a b c "> ` ( # ` f ) ) = c ) /\ ( ( <" a b c "> e. ( WWalks ` G ) /\ ( # ` <" a b c "> ) = ( 2 + 1 ) ) /\ ( <" a b c "> ` 0 ) = a /\ ( <" a b c "> ` 2 ) = c ) ) -> ( f ( SPaths ` G ) p /\ ( # ` f ) = 2 /\ ( a = ( p ` 0 ) /\ b = ( p ` 1 ) /\ c = ( p ` 2 ) ) ) ) ) |
| 71 | 28 70 | spcimedv | |- ( ( ( G e. UPGraph /\ a e. V ) /\ ( b e. V /\ c e. V ) ) -> ( ( ( f ( SPaths ` G ) <" a b c "> /\ ( <" a b c "> ` 0 ) = a /\ ( <" a b c "> ` ( # ` f ) ) = c ) /\ ( ( <" a b c "> e. ( WWalks ` G ) /\ ( # ` <" a b c "> ) = ( 2 + 1 ) ) /\ ( <" a b c "> ` 0 ) = a /\ ( <" a b c "> ` 2 ) = c ) ) -> E. p ( f ( SPaths ` G ) p /\ ( # ` f ) = 2 /\ ( a = ( p ` 0 ) /\ b = ( p ` 1 ) /\ c = ( p ` 2 ) ) ) ) ) |
| 72 | spthiswlk | |- ( f ( SPaths ` G ) p -> f ( Walks ` G ) p ) |
|
| 73 | wlklenvp1 | |- ( f ( Walks ` G ) p -> ( # ` p ) = ( ( # ` f ) + 1 ) ) |
|
| 74 | oveq1 | |- ( ( # ` f ) = 2 -> ( ( # ` f ) + 1 ) = ( 2 + 1 ) ) |
|
| 75 | 2p1e3 | |- ( 2 + 1 ) = 3 |
|
| 76 | 74 75 | eqtrdi | |- ( ( # ` f ) = 2 -> ( ( # ` f ) + 1 ) = 3 ) |
| 77 | 76 | eqeq2d | |- ( ( # ` f ) = 2 -> ( ( # ` p ) = ( ( # ` f ) + 1 ) <-> ( # ` p ) = 3 ) ) |
| 78 | 77 | biimpcd | |- ( ( # ` p ) = ( ( # ` f ) + 1 ) -> ( ( # ` f ) = 2 -> ( # ` p ) = 3 ) ) |
| 79 | 72 73 78 | 3syl | |- ( f ( SPaths ` G ) p -> ( ( # ` f ) = 2 -> ( # ` p ) = 3 ) ) |
| 80 | 79 | imp | |- ( ( f ( SPaths ` G ) p /\ ( # ` f ) = 2 ) -> ( # ` p ) = 3 ) |
| 81 | 80 | 3adant3 | |- ( ( f ( SPaths ` G ) p /\ ( # ` f ) = 2 /\ ( a = ( p ` 0 ) /\ b = ( p ` 1 ) /\ c = ( p ` 2 ) ) ) -> ( # ` p ) = 3 ) |
| 82 | 81 | adantl | |- ( ( ( ( G e. UPGraph /\ a e. V ) /\ ( b e. V /\ c e. V ) ) /\ ( f ( SPaths ` G ) p /\ ( # ` f ) = 2 /\ ( a = ( p ` 0 ) /\ b = ( p ` 1 ) /\ c = ( p ` 2 ) ) ) ) -> ( # ` p ) = 3 ) |
| 83 | eqcom | |- ( a = ( p ` 0 ) <-> ( p ` 0 ) = a ) |
|
| 84 | eqcom | |- ( b = ( p ` 1 ) <-> ( p ` 1 ) = b ) |
|
| 85 | eqcom | |- ( c = ( p ` 2 ) <-> ( p ` 2 ) = c ) |
|
| 86 | 83 84 85 | 3anbi123i | |- ( ( a = ( p ` 0 ) /\ b = ( p ` 1 ) /\ c = ( p ` 2 ) ) <-> ( ( p ` 0 ) = a /\ ( p ` 1 ) = b /\ ( p ` 2 ) = c ) ) |
| 87 | 86 | biimpi | |- ( ( a = ( p ` 0 ) /\ b = ( p ` 1 ) /\ c = ( p ` 2 ) ) -> ( ( p ` 0 ) = a /\ ( p ` 1 ) = b /\ ( p ` 2 ) = c ) ) |
| 88 | 87 | 3ad2ant3 | |- ( ( f ( SPaths ` G ) p /\ ( # ` f ) = 2 /\ ( a = ( p ` 0 ) /\ b = ( p ` 1 ) /\ c = ( p ` 2 ) ) ) -> ( ( p ` 0 ) = a /\ ( p ` 1 ) = b /\ ( p ` 2 ) = c ) ) |
| 89 | 88 | adantl | |- ( ( ( ( G e. UPGraph /\ a e. V ) /\ ( b e. V /\ c e. V ) ) /\ ( f ( SPaths ` G ) p /\ ( # ` f ) = 2 /\ ( a = ( p ` 0 ) /\ b = ( p ` 1 ) /\ c = ( p ` 2 ) ) ) ) -> ( ( p ` 0 ) = a /\ ( p ` 1 ) = b /\ ( p ` 2 ) = c ) ) |
| 90 | 82 89 | jca | |- ( ( ( ( G e. UPGraph /\ a e. V ) /\ ( b e. V /\ c e. V ) ) /\ ( f ( SPaths ` G ) p /\ ( # ` f ) = 2 /\ ( a = ( p ` 0 ) /\ b = ( p ` 1 ) /\ c = ( p ` 2 ) ) ) ) -> ( ( # ` p ) = 3 /\ ( ( p ` 0 ) = a /\ ( p ` 1 ) = b /\ ( p ` 2 ) = c ) ) ) |
| 91 | 1 | wlkpwrd | |- ( f ( Walks ` G ) p -> p e. Word V ) |
| 92 | 72 91 | syl | |- ( f ( SPaths ` G ) p -> p e. Word V ) |
| 93 | 92 | 3ad2ant1 | |- ( ( f ( SPaths ` G ) p /\ ( # ` f ) = 2 /\ ( a = ( p ` 0 ) /\ b = ( p ` 1 ) /\ c = ( p ` 2 ) ) ) -> p e. Word V ) |
| 94 | 12 | anim1i | |- ( ( ( G e. UPGraph /\ a e. V ) /\ ( b e. V /\ c e. V ) ) -> ( a e. V /\ ( b e. V /\ c e. V ) ) ) |
| 95 | 3anass | |- ( ( a e. V /\ b e. V /\ c e. V ) <-> ( a e. V /\ ( b e. V /\ c e. V ) ) ) |
|
| 96 | 94 95 | sylibr | |- ( ( ( G e. UPGraph /\ a e. V ) /\ ( b e. V /\ c e. V ) ) -> ( a e. V /\ b e. V /\ c e. V ) ) |
| 97 | eqwrds3 | |- ( ( p e. Word V /\ ( a e. V /\ b e. V /\ c e. V ) ) -> ( p = <" a b c "> <-> ( ( # ` p ) = 3 /\ ( ( p ` 0 ) = a /\ ( p ` 1 ) = b /\ ( p ` 2 ) = c ) ) ) ) |
|
| 98 | 93 96 97 | syl2anr | |- ( ( ( ( G e. UPGraph /\ a e. V ) /\ ( b e. V /\ c e. V ) ) /\ ( f ( SPaths ` G ) p /\ ( # ` f ) = 2 /\ ( a = ( p ` 0 ) /\ b = ( p ` 1 ) /\ c = ( p ` 2 ) ) ) ) -> ( p = <" a b c "> <-> ( ( # ` p ) = 3 /\ ( ( p ` 0 ) = a /\ ( p ` 1 ) = b /\ ( p ` 2 ) = c ) ) ) ) |
| 99 | 90 98 | mpbird | |- ( ( ( ( G e. UPGraph /\ a e. V ) /\ ( b e. V /\ c e. V ) ) /\ ( f ( SPaths ` G ) p /\ ( # ` f ) = 2 /\ ( a = ( p ` 0 ) /\ b = ( p ` 1 ) /\ c = ( p ` 2 ) ) ) ) -> p = <" a b c "> ) |
| 100 | 59 | biimpcd | |- ( f ( SPaths ` G ) p -> ( p = <" a b c "> -> f ( SPaths ` G ) <" a b c "> ) ) |
| 101 | 100 | 3ad2ant1 | |- ( ( f ( SPaths ` G ) p /\ ( # ` f ) = 2 /\ ( a = ( p ` 0 ) /\ b = ( p ` 1 ) /\ c = ( p ` 2 ) ) ) -> ( p = <" a b c "> -> f ( SPaths ` G ) <" a b c "> ) ) |
| 102 | 101 | adantl | |- ( ( ( ( G e. UPGraph /\ a e. V ) /\ ( b e. V /\ c e. V ) ) /\ ( f ( SPaths ` G ) p /\ ( # ` f ) = 2 /\ ( a = ( p ` 0 ) /\ b = ( p ` 1 ) /\ c = ( p ` 2 ) ) ) ) -> ( p = <" a b c "> -> f ( SPaths ` G ) <" a b c "> ) ) |
| 103 | 102 | imp | |- ( ( ( ( ( G e. UPGraph /\ a e. V ) /\ ( b e. V /\ c e. V ) ) /\ ( f ( SPaths ` G ) p /\ ( # ` f ) = 2 /\ ( a = ( p ` 0 ) /\ b = ( p ` 1 ) /\ c = ( p ` 2 ) ) ) ) /\ p = <" a b c "> ) -> f ( SPaths ` G ) <" a b c "> ) |
| 104 | 48 | a1i | |- ( ( ( ( ( G e. UPGraph /\ a e. V ) /\ ( b e. V /\ c e. V ) ) /\ ( f ( SPaths ` G ) p /\ ( # ` f ) = 2 /\ ( a = ( p ` 0 ) /\ b = ( p ` 1 ) /\ c = ( p ` 2 ) ) ) ) /\ p = <" a b c "> ) -> ( <" a b c "> ` 0 ) = a ) |
| 105 | fveq2 | |- ( ( # ` f ) = 2 -> ( <" a b c "> ` ( # ` f ) ) = ( <" a b c "> ` 2 ) ) |
|
| 106 | 105 54 | eqtrdi | |- ( ( # ` f ) = 2 -> ( <" a b c "> ` ( # ` f ) ) = c ) |
| 107 | 106 | 3ad2ant2 | |- ( ( f ( SPaths ` G ) p /\ ( # ` f ) = 2 /\ ( a = ( p ` 0 ) /\ b = ( p ` 1 ) /\ c = ( p ` 2 ) ) ) -> ( <" a b c "> ` ( # ` f ) ) = c ) |
| 108 | 107 | ad2antlr | |- ( ( ( ( ( G e. UPGraph /\ a e. V ) /\ ( b e. V /\ c e. V ) ) /\ ( f ( SPaths ` G ) p /\ ( # ` f ) = 2 /\ ( a = ( p ` 0 ) /\ b = ( p ` 1 ) /\ c = ( p ` 2 ) ) ) ) /\ p = <" a b c "> ) -> ( <" a b c "> ` ( # ` f ) ) = c ) |
| 109 | 103 104 108 | 3jca | |- ( ( ( ( ( G e. UPGraph /\ a e. V ) /\ ( b e. V /\ c e. V ) ) /\ ( f ( SPaths ` G ) p /\ ( # ` f ) = 2 /\ ( a = ( p ` 0 ) /\ b = ( p ` 1 ) /\ c = ( p ` 2 ) ) ) ) /\ p = <" a b c "> ) -> ( f ( SPaths ` G ) <" a b c "> /\ ( <" a b c "> ` 0 ) = a /\ ( <" a b c "> ` ( # ` f ) ) = c ) ) |
| 110 | wlkiswwlks1 | |- ( G e. UPGraph -> ( f ( Walks ` G ) p -> p e. ( WWalks ` G ) ) ) |
|
| 111 | 110 | adantr | |- ( ( G e. UPGraph /\ a e. V ) -> ( f ( Walks ` G ) p -> p e. ( WWalks ` G ) ) ) |
| 112 | 111 | adantr | |- ( ( ( G e. UPGraph /\ a e. V ) /\ ( b e. V /\ c e. V ) ) -> ( f ( Walks ` G ) p -> p e. ( WWalks ` G ) ) ) |
| 113 | 72 112 | syl5com | |- ( f ( SPaths ` G ) p -> ( ( ( G e. UPGraph /\ a e. V ) /\ ( b e. V /\ c e. V ) ) -> p e. ( WWalks ` G ) ) ) |
| 114 | 113 | 3ad2ant1 | |- ( ( f ( SPaths ` G ) p /\ ( # ` f ) = 2 /\ ( a = ( p ` 0 ) /\ b = ( p ` 1 ) /\ c = ( p ` 2 ) ) ) -> ( ( ( G e. UPGraph /\ a e. V ) /\ ( b e. V /\ c e. V ) ) -> p e. ( WWalks ` G ) ) ) |
| 115 | 114 | impcom | |- ( ( ( ( G e. UPGraph /\ a e. V ) /\ ( b e. V /\ c e. V ) ) /\ ( f ( SPaths ` G ) p /\ ( # ` f ) = 2 /\ ( a = ( p ` 0 ) /\ b = ( p ` 1 ) /\ c = ( p ` 2 ) ) ) ) -> p e. ( WWalks ` G ) ) |
| 116 | 115 | adantr | |- ( ( ( ( ( G e. UPGraph /\ a e. V ) /\ ( b e. V /\ c e. V ) ) /\ ( f ( SPaths ` G ) p /\ ( # ` f ) = 2 /\ ( a = ( p ` 0 ) /\ b = ( p ` 1 ) /\ c = ( p ` 2 ) ) ) ) /\ p = <" a b c "> ) -> p e. ( WWalks ` G ) ) |
| 117 | eleq1 | |- ( p = <" a b c "> -> ( p e. ( WWalks ` G ) <-> <" a b c "> e. ( WWalks ` G ) ) ) |
|
| 118 | 117 | bicomd | |- ( p = <" a b c "> -> ( <" a b c "> e. ( WWalks ` G ) <-> p e. ( WWalks ` G ) ) ) |
| 119 | 118 | adantl | |- ( ( ( ( ( G e. UPGraph /\ a e. V ) /\ ( b e. V /\ c e. V ) ) /\ ( f ( SPaths ` G ) p /\ ( # ` f ) = 2 /\ ( a = ( p ` 0 ) /\ b = ( p ` 1 ) /\ c = ( p ` 2 ) ) ) ) /\ p = <" a b c "> ) -> ( <" a b c "> e. ( WWalks ` G ) <-> p e. ( WWalks ` G ) ) ) |
| 120 | 116 119 | mpbird | |- ( ( ( ( ( G e. UPGraph /\ a e. V ) /\ ( b e. V /\ c e. V ) ) /\ ( f ( SPaths ` G ) p /\ ( # ` f ) = 2 /\ ( a = ( p ` 0 ) /\ b = ( p ` 1 ) /\ c = ( p ` 2 ) ) ) ) /\ p = <" a b c "> ) -> <" a b c "> e. ( WWalks ` G ) ) |
| 121 | s3len | |- ( # ` <" a b c "> ) = 3 |
|
| 122 | df-3 | |- 3 = ( 2 + 1 ) |
|
| 123 | 121 122 | eqtri | |- ( # ` <" a b c "> ) = ( 2 + 1 ) |
| 124 | 120 123 | jctir | |- ( ( ( ( ( G e. UPGraph /\ a e. V ) /\ ( b e. V /\ c e. V ) ) /\ ( f ( SPaths ` G ) p /\ ( # ` f ) = 2 /\ ( a = ( p ` 0 ) /\ b = ( p ` 1 ) /\ c = ( p ` 2 ) ) ) ) /\ p = <" a b c "> ) -> ( <" a b c "> e. ( WWalks ` G ) /\ ( # ` <" a b c "> ) = ( 2 + 1 ) ) ) |
| 125 | 54 | a1i | |- ( ( ( ( ( G e. UPGraph /\ a e. V ) /\ ( b e. V /\ c e. V ) ) /\ ( f ( SPaths ` G ) p /\ ( # ` f ) = 2 /\ ( a = ( p ` 0 ) /\ b = ( p ` 1 ) /\ c = ( p ` 2 ) ) ) ) /\ p = <" a b c "> ) -> ( <" a b c "> ` 2 ) = c ) |
| 126 | 124 104 125 | 3jca | |- ( ( ( ( ( G e. UPGraph /\ a e. V ) /\ ( b e. V /\ c e. V ) ) /\ ( f ( SPaths ` G ) p /\ ( # ` f ) = 2 /\ ( a = ( p ` 0 ) /\ b = ( p ` 1 ) /\ c = ( p ` 2 ) ) ) ) /\ p = <" a b c "> ) -> ( ( <" a b c "> e. ( WWalks ` G ) /\ ( # ` <" a b c "> ) = ( 2 + 1 ) ) /\ ( <" a b c "> ` 0 ) = a /\ ( <" a b c "> ` 2 ) = c ) ) |
| 127 | 109 126 | jca | |- ( ( ( ( ( G e. UPGraph /\ a e. V ) /\ ( b e. V /\ c e. V ) ) /\ ( f ( SPaths ` G ) p /\ ( # ` f ) = 2 /\ ( a = ( p ` 0 ) /\ b = ( p ` 1 ) /\ c = ( p ` 2 ) ) ) ) /\ p = <" a b c "> ) -> ( ( f ( SPaths ` G ) <" a b c "> /\ ( <" a b c "> ` 0 ) = a /\ ( <" a b c "> ` ( # ` f ) ) = c ) /\ ( ( <" a b c "> e. ( WWalks ` G ) /\ ( # ` <" a b c "> ) = ( 2 + 1 ) ) /\ ( <" a b c "> ` 0 ) = a /\ ( <" a b c "> ` 2 ) = c ) ) ) |
| 128 | 99 127 | mpdan | |- ( ( ( ( G e. UPGraph /\ a e. V ) /\ ( b e. V /\ c e. V ) ) /\ ( f ( SPaths ` G ) p /\ ( # ` f ) = 2 /\ ( a = ( p ` 0 ) /\ b = ( p ` 1 ) /\ c = ( p ` 2 ) ) ) ) -> ( ( f ( SPaths ` G ) <" a b c "> /\ ( <" a b c "> ` 0 ) = a /\ ( <" a b c "> ` ( # ` f ) ) = c ) /\ ( ( <" a b c "> e. ( WWalks ` G ) /\ ( # ` <" a b c "> ) = ( 2 + 1 ) ) /\ ( <" a b c "> ` 0 ) = a /\ ( <" a b c "> ` 2 ) = c ) ) ) |
| 129 | 128 | ex | |- ( ( ( G e. UPGraph /\ a e. V ) /\ ( b e. V /\ c e. V ) ) -> ( ( f ( SPaths ` G ) p /\ ( # ` f ) = 2 /\ ( a = ( p ` 0 ) /\ b = ( p ` 1 ) /\ c = ( p ` 2 ) ) ) -> ( ( f ( SPaths ` G ) <" a b c "> /\ ( <" a b c "> ` 0 ) = a /\ ( <" a b c "> ` ( # ` f ) ) = c ) /\ ( ( <" a b c "> e. ( WWalks ` G ) /\ ( # ` <" a b c "> ) = ( 2 + 1 ) ) /\ ( <" a b c "> ` 0 ) = a /\ ( <" a b c "> ` 2 ) = c ) ) ) ) |
| 130 | 129 | exlimdv | |- ( ( ( G e. UPGraph /\ a e. V ) /\ ( b e. V /\ c e. V ) ) -> ( E. p ( f ( SPaths ` G ) p /\ ( # ` f ) = 2 /\ ( a = ( p ` 0 ) /\ b = ( p ` 1 ) /\ c = ( p ` 2 ) ) ) -> ( ( f ( SPaths ` G ) <" a b c "> /\ ( <" a b c "> ` 0 ) = a /\ ( <" a b c "> ` ( # ` f ) ) = c ) /\ ( ( <" a b c "> e. ( WWalks ` G ) /\ ( # ` <" a b c "> ) = ( 2 + 1 ) ) /\ ( <" a b c "> ` 0 ) = a /\ ( <" a b c "> ` 2 ) = c ) ) ) ) |
| 131 | 71 130 | impbid | |- ( ( ( G e. UPGraph /\ a e. V ) /\ ( b e. V /\ c e. V ) ) -> ( ( ( f ( SPaths ` G ) <" a b c "> /\ ( <" a b c "> ` 0 ) = a /\ ( <" a b c "> ` ( # ` f ) ) = c ) /\ ( ( <" a b c "> e. ( WWalks ` G ) /\ ( # ` <" a b c "> ) = ( 2 + 1 ) ) /\ ( <" a b c "> ` 0 ) = a /\ ( <" a b c "> ` 2 ) = c ) ) <-> E. p ( f ( SPaths ` G ) p /\ ( # ` f ) = 2 /\ ( a = ( p ` 0 ) /\ b = ( p ` 1 ) /\ c = ( p ` 2 ) ) ) ) ) |
| 132 | 131 | adantr | |- ( ( ( ( G e. UPGraph /\ a e. V ) /\ ( b e. V /\ c e. V ) ) /\ W = <" a b c "> ) -> ( ( ( f ( SPaths ` G ) <" a b c "> /\ ( <" a b c "> ` 0 ) = a /\ ( <" a b c "> ` ( # ` f ) ) = c ) /\ ( ( <" a b c "> e. ( WWalks ` G ) /\ ( # ` <" a b c "> ) = ( 2 + 1 ) ) /\ ( <" a b c "> ` 0 ) = a /\ ( <" a b c "> ` 2 ) = c ) ) <-> E. p ( f ( SPaths ` G ) p /\ ( # ` f ) = 2 /\ ( a = ( p ` 0 ) /\ b = ( p ` 1 ) /\ c = ( p ` 2 ) ) ) ) ) |
| 133 | 27 132 | bitrd | |- ( ( ( ( G e. UPGraph /\ a e. V ) /\ ( b e. V /\ c e. V ) ) /\ W = <" a b c "> ) -> ( ( f ( a ( SPathsOn ` G ) c ) <" a b c "> /\ <" a b c "> e. ( a ( 2 WWalksNOn G ) c ) ) <-> E. p ( f ( SPaths ` G ) p /\ ( # ` f ) = 2 /\ ( a = ( p ` 0 ) /\ b = ( p ` 1 ) /\ c = ( p ` 2 ) ) ) ) ) |
| 134 | 133 | exbidv | |- ( ( ( ( G e. UPGraph /\ a e. V ) /\ ( b e. V /\ c e. V ) ) /\ W = <" a b c "> ) -> ( E. f ( f ( a ( SPathsOn ` G ) c ) <" a b c "> /\ <" a b c "> e. ( a ( 2 WWalksNOn G ) c ) ) <-> E. f E. p ( f ( SPaths ` G ) p /\ ( # ` f ) = 2 /\ ( a = ( p ` 0 ) /\ b = ( p ` 1 ) /\ c = ( p ` 2 ) ) ) ) ) |
| 135 | 11 134 | bitrid | |- ( ( ( ( G e. UPGraph /\ a e. V ) /\ ( b e. V /\ c e. V ) ) /\ W = <" a b c "> ) -> ( ( <" a b c "> e. ( a ( 2 WWalksNOn G ) c ) /\ E. f f ( a ( SPathsOn ` G ) c ) <" a b c "> ) <-> E. f E. p ( f ( SPaths ` G ) p /\ ( # ` f ) = 2 /\ ( a = ( p ` 0 ) /\ b = ( p ` 1 ) /\ c = ( p ` 2 ) ) ) ) ) |
| 136 | 8 135 | bitrid | |- ( ( ( ( G e. UPGraph /\ a e. V ) /\ ( b e. V /\ c e. V ) ) /\ W = <" a b c "> ) -> ( <" a b c "> e. ( a ( 2 WSPathsNOn G ) c ) <-> E. f E. p ( f ( SPaths ` G ) p /\ ( # ` f ) = 2 /\ ( a = ( p ` 0 ) /\ b = ( p ` 1 ) /\ c = ( p ` 2 ) ) ) ) ) |
| 137 | 136 | pm5.32da | |- ( ( ( G e. UPGraph /\ a e. V ) /\ ( b e. V /\ c e. V ) ) -> ( ( W = <" a b c "> /\ <" a b c "> e. ( a ( 2 WSPathsNOn G ) c ) ) <-> ( W = <" a b c "> /\ E. f E. p ( f ( SPaths ` G ) p /\ ( # ` f ) = 2 /\ ( a = ( p ` 0 ) /\ b = ( p ` 1 ) /\ c = ( p ` 2 ) ) ) ) ) ) |
| 138 | 137 | 2rexbidva | |- ( ( G e. UPGraph /\ a e. V ) -> ( E. b e. V E. c e. V ( W = <" a b c "> /\ <" a b c "> e. ( a ( 2 WSPathsNOn G ) c ) ) <-> E. b e. V E. c e. V ( W = <" a b c "> /\ E. f E. p ( f ( SPaths ` G ) p /\ ( # ` f ) = 2 /\ ( a = ( p ` 0 ) /\ b = ( p ` 1 ) /\ c = ( p ` 2 ) ) ) ) ) ) |
| 139 | 7 138 | bitrid | |- ( ( G e. UPGraph /\ a e. V ) -> ( E. c e. V E. b e. V ( W = <" a b c "> /\ <" a b c "> e. ( a ( 2 WSPathsNOn G ) c ) ) <-> E. b e. V E. c e. V ( W = <" a b c "> /\ E. f E. p ( f ( SPaths ` G ) p /\ ( # ` f ) = 2 /\ ( a = ( p ` 0 ) /\ b = ( p ` 1 ) /\ c = ( p ` 2 ) ) ) ) ) ) |
| 140 | 139 | rexbidva | |- ( G e. UPGraph -> ( E. a e. V E. c e. V E. b e. V ( W = <" a b c "> /\ <" a b c "> e. ( a ( 2 WSPathsNOn G ) c ) ) <-> E. a e. V E. b e. V E. c e. V ( W = <" a b c "> /\ E. f E. p ( f ( SPaths ` G ) p /\ ( # ` f ) = 2 /\ ( a = ( p ` 0 ) /\ b = ( p ` 1 ) /\ c = ( p ` 2 ) ) ) ) ) ) |
| 141 | 3 6 140 | 3bitrd | |- ( G e. UPGraph -> ( W e. ( 2 WSPathsN G ) <-> E. a e. V E. b e. V E. c e. V ( W = <" a b c "> /\ E. f E. p ( f ( SPaths ` G ) p /\ ( # ` f ) = 2 /\ ( a = ( p ` 0 ) /\ b = ( p ` 1 ) /\ c = ( p ` 2 ) ) ) ) ) ) |