Theorem: Digraph.Walk.transfer_append (GraphProjects/DigraphConnectivity.lean)

State before:
V : Type u
V' : Type v
V'' : Type w
G : Digraph V
G' : Digraph V'
G'' : Digraph V''
u v : V
p : Walk G u v
w : V
H : Digraph V
q : Walk G v w
hpq : ∀ (e : V × V), e ∈ edges (append p q) → e ∈ edgeSet H
e : V × V
he : e ∈ edges p
⊢ e ∈ edges (append p q)
Tactic:
simp [he]
State after:
no goals

State before:
V : Type u
V' : Type v
V'' : Type w
G : Digraph V
G' : Digraph V'
G'' : Digraph V''
u v : V
p : Walk G u v
w : V
H : Digraph V
q : Walk G v w
hpq : ∀ (e : V × V), e ∈ edges (append p q) → e ∈ edgeSet H
e : V × V
he : e ∈ edges q
⊢ e ∈ edges (append p q)
Tactic:
simp [he]
State after:
no goals

State before:
V : Type u
V' : Type v
V'' : Type w
G : Digraph V
G' : Digraph V'
G'' : Digraph V''
u v : V
p : Walk G u v
w : V
H : Digraph V
q : Walk G v w
hpq : ∀ (e : V × V), e ∈ edges (append p q) → e ∈ edgeSet H
⊢ Walk.transfer (append p q) H hpq =
    append (Walk.transfer p H (_ : ∀ (e : V × V), e ∈ edges p → e ∈ edgeSet H))
      (Walk.transfer q H (_ : ∀ (e : V × V), e ∈ edges q → e ∈ edgeSet H))
Tactic:
induction p with
| nil => simp
| cons _ _ ih => simp only [Walk.transfer, cons_append, cons.injEq, heq_eq_eq, true_and, ih]
State after:
no goals

State before:
case nil
V : Type u
V' : Type v
V'' : Type w
G : Digraph V
G' : Digraph V'
G'' : Digraph V''
u v : V
p : Walk G u v
w : V
H : Digraph V
u✝ : V
q : Walk G u✝ w
hpq : ∀ (e : V × V), e ∈ edges (append nil q) → e ∈ edgeSet H
⊢ Walk.transfer (append nil q) H hpq =
    append (Walk.transfer nil H (_ : ∀ (e : V × V), e ∈ edges nil → e ∈ edgeSet H))
      (Walk.transfer q H (_ : ∀ (e : V × V), e ∈ edges q → e ∈ edgeSet H))
Tactic:
simp
State after:
no goals

State before:
case cons
V : Type u
V' : Type v
V'' : Type w
G : Digraph V
G' : Digraph V'
G'' : Digraph V''
u v : V
p : Walk G u v
w : V
H : Digraph V
u✝ v✝ w✝ : V
h✝ : G.Adj u✝ v✝
p✝ : Walk G v✝ w✝
ih :
  ∀ (q : Walk G w✝ w) (hpq : ∀ (e : V × V), e ∈ edges (append p✝ q) → e ∈ edgeSet H),
    Walk.transfer (append p✝ q) H hpq =
      append (Walk.transfer p✝ H (_ : ∀ (e : V × V), e ∈ edges p✝ → e ∈ edgeSet H))
        (Walk.transfer q H (_ : ∀ (e : V × V), e ∈ edges q → e ∈ edgeSet H))
q : Walk G w✝ w
hpq : ∀ (e : V × V), e ∈ edges (append (cons h✝ p✝) q) → e ∈ edgeSet H
⊢ Walk.transfer (append (cons h✝ p✝) q) H hpq =
    append (Walk.transfer (cons h✝ p✝) H (_ : ∀ (e : V × V), e ∈ edges (cons h✝ p✝) → e ∈ edgeSet H))
      (Walk.transfer q H (_ : ∀ (e : V × V), e ∈ edges q → e ∈ edgeSet H))
Tactic:
simp only [Walk.transfer, cons_append, cons.injEq, heq_eq_eq, true_and, ih]
State after:
no goals