Goal:
  
  A : Type
  B : Type
  P : B → A → A → Type
  idx0 : list B
  idx1 : list A
  idx : list A
  a : OnOne2All P idx0 idx1 idx
  ============================
   (NoConfusion_OnOne2All A B P
      {|
        pr1 := {| pr1 := idx0; pr2 := {| pr1 := idx1; pr2 := idx |} |};
        pr2 := a
      |}
      {|
        pr1 := {| pr1 := idx0; pr2 := {| pr1 := idx1; pr2 := idx |} |};
        pr2 := a
      |})


DEBUG:Going to execute:
destruct id
Level 4: evaluation returns
idtac of type tacvalue


Goals:
  
  A : Type
  B : Type
  P : B → A → A → Type
  b : B
  bs : list B
  hd : A
  hd' : A
  tl : list A
  p : P b hd hd'
  e : #|bs| = #|tl|
  ============================
   (NoConfusion_OnOne2All A B P
      {|
        pr1 :=
          {|
            pr1 := b :: bs; pr2 := {| pr1 := hd :: tl; pr2 := hd' :: tl |}
          |};
        pr2 := OnOne2All_hd P b bs hd hd' tl p e
      |}
      {|
        pr1 :=
          {|
            pr1 := b :: bs; pr2 := {| pr1 := hd :: tl; pr2 := hd' :: tl |}
          |};
        pr2 := OnOne2All_hd P b bs hd hd' tl p e
      |})

  
  A : Type
  B : Type
  P : B → A → A → Type
  b : B
  bs : list B
  hd : A
  tl : list A
  tl' : list A
  a : OnOne2All P bs tl tl'
  ============================
   (NoConfusion_OnOne2All A B P
      {|
        pr1 :=
          {|
            pr1 := b :: bs; pr2 := {| pr1 := hd :: tl; pr2 := hd :: tl' |}
          |};
        pr2 := OnOne2All_tl P b bs hd tl tl' a
      |}
      {|
        pr1 :=
          {|
            pr1 := b :: bs; pr2 := {| pr1 := hd :: tl; pr2 := hd :: tl' |}
          |};
        pr2 := OnOne2All_tl P b bs hd tl tl' a
      |})


DEBUG:Going to execute:
constructor
Level 2: evaluation returns
idtac of type tacvalue

Level 2: evaluation returns
idtac of type tacvalue


Goals:
  
  A : Type
  B : Type
  P : B → A → A → Type
  b : B
  bs : list B
  hd : A
  hd' : A
  tl : list A
  p : P b hd hd'
  e : #|bs| = #|tl|
  ============================
   (NoConfusion_OnOne2All A B P
      {|
        pr1 :=
          {|
            pr1 := b :: bs; pr2 := {| pr1 := hd :: tl; pr2 := hd' :: tl |}
          |};
        pr2 := OnOne2All_hd P b bs hd hd' tl p e
      |}
      {|
        pr1 :=
          {|
            pr1 := b :: bs; pr2 := {| pr1 := hd :: tl; pr2 := hd' :: tl |}
          |};
        pr2 := OnOne2All_hd P b bs hd hd' tl p e
      |})

  
  A : Type
  B : Type
  P : B → A → A → Type
  b : B
  bs : list B
  hd : A
  tl : list A
  tl' : list A
  a : OnOne2All P bs tl tl'
  ============================
   (NoConfusion_OnOne2All A B P
      {|
        pr1 :=
          {|
            pr1 := b :: bs; pr2 := {| pr1 := hd :: tl; pr2 := hd :: tl' |}
          |};
        pr2 := OnOne2All_tl P b bs hd tl tl' a
      |}
      {|
        pr1 :=
          {|
            pr1 := b :: bs; pr2 := {| pr1 := hd :: tl; pr2 := hd :: tl' |}
          |};
        pr2 := OnOne2All_tl P b bs hd tl tl' a
      |})


DEBUG:Going to execute:
<coq-core.plugins.ltac::constructor@0>