exact h insertUnit_fold_success
case intro
n : Nat
assignments : Array Assignment
assignments_size : assignments.size = n
units : Array (Literal (PosFin n))
foundContradiction : Bool
l : List (Literal (PosFin n))
insertUnit_fold_res : Array (Literal (PosFin n)) × Array Assignment × Bool :=
  List.foldl insertUnit (units, assignments, foundContradiction) l
h0 : foundContradiction = true → ∃ i, assignments[i.val] = both
insertUnit_fold_success : insertUnit_fold_res.snd.snd = true
acc0 : Array (Literal (PosFin n)) × Array Assignment × Bool := (units, assignments, foundContradiction)
hb : ∃ _hsize, acc0.snd.snd = true → ∃ j, acc0.snd.fst[j.val] = both
hl :
  ∀ (acc : Array (Literal (PosFin n)) × Array Assignment × Bool),
    (∃ hsize, acc.snd.snd = true → ∃ j, acc.snd.fst[j.val] = both) →
      ∀ (l' : Literal (PosFin n)),
        l' ∈ l →
          let insertUnit_res := insertUnit acc l';
          ∃ hsize, insertUnit_res.snd.snd = true → ∃ j, insertUnit_res.snd.fst[j.val] = both
w✝ : (List.foldl insertUnit acc0 l).snd.fst.size = n
h : (List.foldl insertUnit acc0 l).snd.snd = true → ∃ j, (List.foldl insertUnit acc0 l).snd.fst[j.val] = both
⊢ ∃ j, insertUnit_fold_res.snd.fst[j.val] = both
no goals