Goal:
    A : Type  B : Type  f : ∀ x : A, In x [] → B
  ============================
   (∀ (f0 : A → B) (l : list A) (g : ∀ x : A, In x l → B),
      g = (λ (x : A) (_ : In x l), f0 x)
      → {| pr1 := []; pr2 := f |} = {| pr1 := l; pr2 := g |}
        → [] = map_InP l g
          → let H := CoreTactics.block in map_InP l g = map f0 l)


DEBUG:Going to execute:
simplify * || simplify ?; cbv beta