Goal:
  
  A : Type
  B : Type
  C : Type
  f : A → B → C
  a : A
  l : list A
  l' : list B
  IHl : ∀ l' : list B, #|map2 f l l'| = Init.Nat.min #|l| #|l'|
  ============================
   (#|match l' with
      | [] => []
      | hd' :: tl' => f a hd' :: map2 f l tl'
      end| = match #|l'| with
             | 0 => 0
             | S m' => S (Init.Nat.min #|l| m')
             end)


DEBUG:Going to execute:
destruct l'

Goals:
  
  A : Type
  B : Type
  C : Type
  f : A → B → C
  a : A
  l : list A
  IHl : ∀ l' : list B, #|map2 f l l'| = Init.Nat.min #|l| #|l'|
  ============================
   (#|[]| = match #|[]| with
            | 0 => 0
            | S m' => S (Init.Nat.min #|l| m')
            end)

  
  A : Type
  B : Type
  C : Type
  f : A → B → C
  a : A
  l : list A
  b : B
  l' : list B
  IHl : ∀ l' : list B, #|map2 f l l'| = Init.Nat.min #|l| #|l'|
  ============================
   (#|f a b :: map2 f l l'| =
    match #|b :: l'| with
    | 0 => 0
    | S m' => S (Init.Nat.min #|l| m')
    end)


DEBUG:Going to execute:
cbn in *
DEBUG LTAC Evaluated term: l'