theorem
merge_second_dom :
∀ {α : Type} {F : Factory α} {m₁ : Meas} {ms₁ : List Meas} {m₂ : Meas} (ms₂ : List Meas),
pareto F (m₁ :: ms₁) →
dominates F m₂ m₁ = true →
¬dominates F m₁ m₂ = true →
∃ n,
merge F (m₁ :: ms₁, m₂ :: ms₂) = m₂ :: merge F (List.drop n ms₁, ms₂) ∧ ∀ (m : Meas), m ∈ List.take n ms₁ → dominates F m₂ m = true
theorem
merge_head_either :
∀ {α : Type} {F : Factory α} {m₁ : Meas} {ms₁ : List Meas} {m₂ : Meas} {ms₂ : List Meas},
pareto F (m₁ :: ms₁) →
pareto F (m₂ :: ms₂) →
m₁ = List.head (merge F (m₁ :: ms₁, m₂ :: ms₂)) (_ : merge F (m₁ :: ms₁, m₂ :: ms₂) ≠ []) ∨ m₂ = List.head (merge F (m₁ :: ms₁, m₂ :: ms₂)) (_ : merge F (m₁ :: ms₁, m₂ :: ms₂) ≠ [])