Goal:
    A : Type  P : list A → A → Type  x : A  a1 : list A  a : All_fold P a1
  ============================
   ([x] = a1
    → let H := CoreTactics.block in let H0 := CoreTactics.block in P [] x)


DEBUG:Going to execute:
destruct p

Goals:
    A : Type  P : list A → A → Type  x : A
  ============================
   ([x] = []
    → let H := CoreTactics.block in let H0 := CoreTactics.block in P [] x)

  
  A : Type
  P : list A → A → Type
  x : A
  d : A
  Γ : list A
  a : All_fold P Γ
  p : P Γ d
  ============================
   ([x] = d :: Γ
    → let H := CoreTactics.block in let H0 := CoreTactics.block in P [] x)


DEBUG:Going to execute:
DepElim.simpl_dep_elim

Goals:
    A : Type  P : list A → A → Type  x : A
  ============================
   ([x] = []
    → let H := CoreTactics.block in let H0 := CoreTactics.block in P [] x)

  
  A : Type
  P : list A → A → Type
  x : A
  d : A
  Γ : list A
  a : All_fold P Γ
  p : P Γ d
  ============================
   ([x] = d :: Γ
    → let H := CoreTactics.block in let H0 := CoreTactics.block in P [] x)


DEBUG:Going to execute:
DepElim.simplify_dep_elim; DepElim.simplify_IH_hyps;
            DepElim.unblock_dep_elim

Goals:
    A : Type  P : list A → A → Type  x : A
  ============================
   ([x] = []
    → let H := CoreTactics.block in let H0 := CoreTactics.block in P [] x)

  
  A : Type
  P : list A → A → Type
  x : A
  d : A
  Γ : list A
  a : All_fold P Γ
  p : P Γ d
  ============================
   ([x] = d :: Γ
    → let H := CoreTactics.block in let H0 := CoreTactics.block in P [] x)


DEBUG:Going to execute:
DepElim.simplify_dep_elim; DepElim.simplify_IH_hyps

Goals:
    A : Type  P : list A → A → Type  x : A
  ============================
   ([x] = []
    → let H := CoreTactics.block in let H0 := CoreTactics.block in P [] x)

  
  A : Type
  P : list A → A → Type
  x : A
  d : A
  Γ : list A
  a : All_fold P Γ
  p : P Γ d
  ============================
   ([x] = d :: Γ
    → let H := CoreTactics.block in let H0 := CoreTactics.block in P [] x)


DEBUG:Going to execute:
DepElim.simplify_dep_elim

Goals:
    A : Type  P : list A → A → Type  x : A
  ============================
   ([x] = []
    → let H := CoreTactics.block in let H0 := CoreTactics.block in P [] x)

  
  A : Type
  P : list A → A → Type
  x : A
  d : A
  Γ : list A
  a : All_fold P Γ
  p : P Γ d
  ============================
   ([x] = d :: Γ
    → let H := CoreTactics.block in let H0 := CoreTactics.block in P [] x)


DEBUG:Going to execute:
repeat DepElim.simplify_one_dep_elim