have : evaluate M w (discon ress) := by
  rw [← osTruth, conEval]
  intro f f_in; apply w_LRO
  simp only [List.mem_union_iff, List.mem_append]
  exact Or.inl $ Or.inl $ List.Sublist.subset preconditionProof f_in
case mp
W : Type
L R : List Formula
O : Option (NegLoadFormula ⊕ NegLoadFormula)
M : KripkeModel W
w : W
Lcond : List Formula
ress : List (List Formula)
orule : OneSidedLocalRule Lcond ress
osTruth : evaluate M w (Con Lcond) ↔ evaluate M w (discon ress)
preconditionProof : Lcond.Sublist L
w_LRO : (M, w)⊨(L, R, O)
⊢ ∃ a ∈ ress, (M, w)⊨(L.diff Lcond ++ a, R, O)
case mp
W : Type
L R : List Formula
O : Option (NegLoadFormula ⊕ NegLoadFormula)
M : KripkeModel W
w : W
Lcond : List Formula
ress : List (List Formula)
orule : OneSidedLocalRule Lcond ress
osTruth : evaluate M w (Con Lcond) ↔ evaluate M w (discon ress)
preconditionProof : Lcond.Sublist L
w_LRO : (M, w)⊨(L, R, O)
this : evaluate M w (discon ress)
⊢ ∃ a ∈ ress, (M, w)⊨(L.diff Lcond ++ a, R, O)