As a rough and untutored background, in [HoTT](http://homotopytypetheory.org "HoTT"), one deduces the heck out of the inductively defined type

```
Inductive paths {X : Type } : X -> X -> Type :=
 | idpath : forall x: X, paths x x.

```

which allows the very general construction

```
Lemma transport {X : Type } (P : X -> Type ){ x y : X} (γ : paths x y):
  P x -> P y.
Proof.
 induction γ.
 exact (fun a => a).
Defined.

```

The `Lemma transport` *would* be at the heart of HoTT "replace" or "rewrite" tactics; the trick, so far as I understand it, would be, supposing a goal which you or I can abstractly recognize as

```
...
H : paths x y
[ Q : (G x) ]
_____________
(G y)

```

to figure out what is the necessary dependent type G, so that we can `apply (transport G H)`. So far, all I've figured out is that

```
Ltac transport_along γ :=
match (type of γ) with 
| ?a ~~> ?b =>
 match goal with
 |- ?F b => apply (transport F γ)
 | _ => idtac "apparently couldn't abstract" b "from the goal."  end 
| _ => idtac "Are you sure" γ "is a path?" end.

```

isn't general enough. That is, the first `idtac` gets used rather often.

The question is

> 
> [Is there a | what is the] *Right Thing to Do*?
> 
> 
>