Metamath Proof Explorer


Theorem 3spthd

Description: A simple path of length 3 from one vertex to another, different vertex via a third vertex. (Contributed by AV, 10-Feb-2021) (Revised by AV, 24-Mar-2021) (Proof shortened by AV, 30-Oct-2021)

Ref Expression
Hypotheses 3wlkd.p
|- P = <" A B C D ">
3wlkd.f
|- F = <" J K L ">
3wlkd.s
|- ( ph -> ( ( A e. V /\ B e. V ) /\ ( C e. V /\ D e. V ) ) )
3wlkd.n
|- ( ph -> ( ( A =/= B /\ A =/= C ) /\ ( B =/= C /\ B =/= D ) /\ C =/= D ) )
3wlkd.e
|- ( ph -> ( { A , B } C_ ( I ` J ) /\ { B , C } C_ ( I ` K ) /\ { C , D } C_ ( I ` L ) ) )
3wlkd.v
|- V = ( Vtx ` G )
3wlkd.i
|- I = ( iEdg ` G )
3trld.n
|- ( ph -> ( J =/= K /\ J =/= L /\ K =/= L ) )
3spthd.n
|- ( ph -> A =/= D )
Assertion 3spthd
|- ( ph -> F ( SPaths ` G ) P )

Proof

Step Hyp Ref Expression
1 3wlkd.p
 |-  P = <" A B C D ">
2 3wlkd.f
 |-  F = <" J K L ">
3 3wlkd.s
 |-  ( ph -> ( ( A e. V /\ B e. V ) /\ ( C e. V /\ D e. V ) ) )
4 3wlkd.n
 |-  ( ph -> ( ( A =/= B /\ A =/= C ) /\ ( B =/= C /\ B =/= D ) /\ C =/= D ) )
5 3wlkd.e
 |-  ( ph -> ( { A , B } C_ ( I ` J ) /\ { B , C } C_ ( I ` K ) /\ { C , D } C_ ( I ` L ) ) )
6 3wlkd.v
 |-  V = ( Vtx ` G )
7 3wlkd.i
 |-  I = ( iEdg ` G )
8 3trld.n
 |-  ( ph -> ( J =/= K /\ J =/= L /\ K =/= L ) )
9 3spthd.n
 |-  ( ph -> A =/= D )
10 1 2 3 4 5 6 7 8 3trld
 |-  ( ph -> F ( Trails ` G ) P )
11 simpr
 |-  ( ( ph /\ F ( Trails ` G ) P ) -> F ( Trails ` G ) P )
12 df-3an
 |-  ( ( A =/= B /\ A =/= C /\ A =/= D ) <-> ( ( A =/= B /\ A =/= C ) /\ A =/= D ) )
13 12 simplbi2
 |-  ( ( A =/= B /\ A =/= C ) -> ( A =/= D -> ( A =/= B /\ A =/= C /\ A =/= D ) ) )
14 13 3ad2ant1
 |-  ( ( ( A =/= B /\ A =/= C ) /\ ( B =/= C /\ B =/= D ) /\ C =/= D ) -> ( A =/= D -> ( A =/= B /\ A =/= C /\ A =/= D ) ) )
15 9 14 mpan9
 |-  ( ( ph /\ ( ( A =/= B /\ A =/= C ) /\ ( B =/= C /\ B =/= D ) /\ C =/= D ) ) -> ( A =/= B /\ A =/= C /\ A =/= D ) )
16 simpr2
 |-  ( ( ph /\ ( ( A =/= B /\ A =/= C ) /\ ( B =/= C /\ B =/= D ) /\ C =/= D ) ) -> ( B =/= C /\ B =/= D ) )
17 simpr3
 |-  ( ( ph /\ ( ( A =/= B /\ A =/= C ) /\ ( B =/= C /\ B =/= D ) /\ C =/= D ) ) -> C =/= D )
18 15 16 17 3jca
 |-  ( ( ph /\ ( ( A =/= B /\ A =/= C ) /\ ( B =/= C /\ B =/= D ) /\ C =/= D ) ) -> ( ( A =/= B /\ A =/= C /\ A =/= D ) /\ ( B =/= C /\ B =/= D ) /\ C =/= D ) )
19 4 18 mpdan
 |-  ( ph -> ( ( A =/= B /\ A =/= C /\ A =/= D ) /\ ( B =/= C /\ B =/= D ) /\ C =/= D ) )
20 funcnvs4
 |-  ( ( ( ( A e. V /\ B e. V ) /\ ( C e. V /\ D e. V ) ) /\ ( ( A =/= B /\ A =/= C /\ A =/= D ) /\ ( B =/= C /\ B =/= D ) /\ C =/= D ) ) -> Fun `' <" A B C D "> )
21 3 19 20 syl2anc
 |-  ( ph -> Fun `' <" A B C D "> )
22 21 adantr
 |-  ( ( ph /\ F ( Trails ` G ) P ) -> Fun `' <" A B C D "> )
23 1 a1i
 |-  ( ( ph /\ F ( Trails ` G ) P ) -> P = <" A B C D "> )
24 23 cnveqd
 |-  ( ( ph /\ F ( Trails ` G ) P ) -> `' P = `' <" A B C D "> )
25 24 funeqd
 |-  ( ( ph /\ F ( Trails ` G ) P ) -> ( Fun `' P <-> Fun `' <" A B C D "> ) )
26 22 25 mpbird
 |-  ( ( ph /\ F ( Trails ` G ) P ) -> Fun `' P )
27 isspth
 |-  ( F ( SPaths ` G ) P <-> ( F ( Trails ` G ) P /\ Fun `' P ) )
28 11 26 27 sylanbrc
 |-  ( ( ph /\ F ( Trails ` G ) P ) -> F ( SPaths ` G ) P )
29 10 28 mpdan
 |-  ( ph -> F ( SPaths ` G ) P )