internlm/Lean-Github huggingface dataset:
Theorem: localRuleTruth
Proof state before:
case h
W : Type
L R : List Formula
O : Option (NegLoadFormula ⊕ NegLoadFormula)
M : KripkeModel W
w : W
Rcond : List Formula
ress : List (List Formula)
orule : OneSidedLocalRule Rcond ress
this osTruth : evaluate M w (Con Rcond) ↔ evaluate M w (discon ress)
preconditionProof : Rcond.Sublist R
w_LRO : (M, w)⊨(L, R, O)
Y : List Formula
Y_in : Y ∈ ress
claim : ∀ f ∈ Y, evaluate M w f
⊢ Y ∈ ress ∧ (M, w)⊨(L, R.diff Rcond ++ Y, O)
Tactic:
constructor
Proof state after:
case h.left
W : Type
L R : List Formula
O : Option (NegLoadFormula ⊕ NegLoadFormula)
M : KripkeModel W
w : W
Rcond : List Formula
ress : List (List Formula)
orule : OneSidedLocalRule Rcond ress
this osTruth : evaluate M w (Con Rcond) ↔ evaluate M w (discon ress)
preconditionProof : Rcond.Sublist R
w_LRO : (M, w)⊨(L, R, O)
Y : List Formula
Y_in : Y ∈ ress
claim : ∀ f ∈ Y, evaluate M w f
⊢ Y ∈ ress

case h.right
W : Type
L R : List Formula
O : Option (NegLoadFormula ⊕ NegLoadFormula)
M : KripkeModel W
w : W
Rcond : List Formula
ress : List (List Formula)
orule : OneSidedLocalRule Rcond ress
this osTruth : evaluate M w (Con Rcond) ↔ evaluate M w (discon ress)
preconditionProof : Rcond.Sublist R
w_LRO : (M, w)⊨(L, R, O)
Y : List Formula
Y_in : Y ∈ ress
claim : ∀ f ∈ Y, evaluate M w f
⊢ (M, w)⊨(L, R.diff Rcond ++ Y, O)
Theorem: localRuleTruth
Proof state before:
W : Type
L R : List Formula
O : Option (NegLoadFormula ⊕ NegLoadFormula)
M : KripkeModel W
w : W
Rcond : List Formula
ress : List (List Formula)
orule : OneSidedLocalRule Rcond ress
this osTruth : evaluate M w (Con Rcond) ↔ evaluate M w (discon ress)
preconditionProof : Rcond.Sublist R
w_LRO : (M, w)⊨(L, R, O)
⊢ evaluate M w (discon ress)
Tactic:
rw [← osTruth, conEval]
Proof state after:
W : Type
L R : List Formula
O : Option (NegLoadFormula ⊕ NegLoadFormula)
M : KripkeModel W
w : W
Rcond : List Formula
ress : List (List Formula)
orule : OneSidedLocalRule Rcond ress
this osTruth : evaluate M w (Con Rcond) ↔ evaluate M w (discon ress)
preconditionProof : Rcond.Sublist R
w_LRO : (M, w)⊨(L, R, O)
⊢ ∀ f ∈ Rcond, evaluate M w f
Theorem: localRuleTruth
Proof state before:
W : Type
L R : List Formula
O : Option (NegLoadFormula ⊕ NegLoadFormula)
M : KripkeModel W
w : W
Rcond : List Formula
ress : List (List Formula)
orule : OneSidedLocalRule Rcond ress
this osTruth : evaluate M w (Con Rcond) ↔ evaluate M w (discon ress)
preconditionProof : Rcond.Sublist R
w_LRO : (M, w)⊨(L, R, O)
⊢ ∀ f ∈ Rcond, evaluate M w f
Tactic:
intro f f_in
Proof state after:
W : Type
L R : List Formula
O : Option (NegLoadFormula ⊕ NegLoadFormula)
M : KripkeModel W
w : W
Rcond : List Formula
ress : List (List Formula)
orule : OneSidedLocalRule Rcond ress
this osTruth : evaluate M w (Con Rcond) ↔ evaluate M w (discon ress)
preconditionProof : Rcond.Sublist R
w_LRO : (M, w)⊨(L, R, O)
f : Formula
f_in : f ∈ Rcond
⊢ evaluate M w f
Theorem: localRuleTruth
Proof state before:
W : Type
L R : List Formula
O : Option (NegLoadFormula ⊕ NegLoadFormula)
M : KripkeModel W
w : W
Rcond : List Formula
ress : List (List Formula)
orule : OneSidedLocalRule Rcond ress
this osTruth : evaluate M w (Con Rcond) ↔ evaluate M w (discon ress)
preconditionProof : Rcond.Sublist R
w_LRO : (M, w)⊨(L, R, O)
f : Formula
f_in : f ∈ Rcond
⊢ evaluate M w f
Tactic:
apply w_LRO
Proof state after:
case a
W : Type
L R : List Formula
O : Option (NegLoadFormula ⊕ NegLoadFormula)
M : KripkeModel W
w : W
Rcond : List Formula
ress : List (List Formula)
orule : OneSidedLocalRule Rcond ress
this osTruth : evaluate M w (Con Rcond) ↔ evaluate M w (discon ress)
preconditionProof : Rcond.Sublist R
w_LRO : (M, w)⊨(L, R, O)
f : Formula
f_in : f ∈ Rcond
⊢ f ∈ L ∪ R ∪ (Option.map (Sum.elim negUnload negUnload) O).toList
Theorem: localRuleTruth
Proof state before:
case a
W : Type
L R : List Formula
O : Option (NegLoadFormula ⊕ NegLoadFormula)
M : KripkeModel W
w : W
Rcond : List Formula
ress : List (List Formula)
orule : OneSidedLocalRule Rcond ress
this osTruth : evaluate M w (Con Rcond) ↔ evaluate M w (discon ress)
preconditionProof : Rcond.Sublist R
w_LRO : (M, w)⊨(L, R, O)
f : Formula
f_in : f ∈ Rcond
⊢ f ∈ L ∪ R ∪ (Option.map (Sum.elim negUnload negUnload) O).toList
Tactic:
simp only [List.mem_union_iff, List.mem_append]
Proof state after:
case a
W : Type
L R : List Formula
O : Option (NegLoadFormula ⊕ NegLoadFormula)
M : KripkeModel W
w : W
Rcond : List Formula
ress : List (List Formula)
orule : OneSidedLocalRule Rcond ress
this osTruth : evaluate M w (Con Rcond) ↔ evaluate M w (discon ress)
preconditionProof : Rcond.Sublist R
w_LRO : (M, w)⊨(L, R, O)
f : Formula
f_in : f ∈ Rcond
⊢ (f ∈ L ∨ f ∈ R) ∨ f ∈ (Option.map (Sum.elim negUnload negUnload) O).toList
Theorem: localRuleTruth
Proof state before:
case a
W : Type
L R : List Formula
O : Option (NegLoadFormula ⊕ NegLoadFormula)
M : KripkeModel W
w : W
Rcond : List Formula
ress : List (List Formula)
orule : OneSidedLocalRule Rcond ress
this osTruth : evaluate M w (Con Rcond) ↔ evaluate M w (discon ress)
preconditionProof : Rcond.Sublist R
w_LRO : (M, w)⊨(L, R, O)
f : Formula
f_in : f ∈ Rcond
⊢ (f ∈ L ∨ f ∈ R) ∨ f ∈ (Option.map (Sum.elim negUnload negUnload) O).toList
Tactic:
exact Or.inl $ Or.inr $ List.Sublist.subset preconditionProof f_in
Proof state after:
no goals
Theorem: localRuleTruth
Proof state before:
case h.left
W : Type
L R : List Formula
O : Option (NegLoadFormula ⊕ NegLoadFormula)
M : KripkeModel W
w : W
Rcond : List Formula
ress : List (List Formula)
orule : OneSidedLocalRule Rcond ress
this osTruth : evaluate M w (Con Rcond) ↔ evaluate M w (discon ress)
preconditionProof : Rcond.Sublist R
w_LRO : (M, w)⊨(L, R, O)
Y : List Formula
Y_in : Y ∈ ress
claim : ∀ f ∈ Y, evaluate M w f
⊢ Y ∈ ress
Tactic:
exact Y_in
Proof state after:
no goals
Theorem: localRuleTruth
Proof state before:
case h.right
W : Type
L R : List Formula
O : Option (NegLoadFormula ⊕ NegLoadFormula)
M : KripkeModel W
w : W
Rcond : List Formula
ress : List (List Formula)
orule : OneSidedLocalRule Rcond ress
this osTruth : evaluate M w (Con Rcond) ↔ evaluate M w (discon ress)
preconditionProof : Rcond.Sublist R
w_LRO : (M, w)⊨(L, R, O)
Y : List Formula
Y_in : Y ∈ ress
claim : ∀ f ∈ Y, evaluate M w f
⊢ (M, w)⊨(L, R.diff Rcond ++ Y, O)
Tactic:
intro f f_in
Proof state after:
case h.right
W : Type
L R : List Formula
O : Option (NegLoadFormula ⊕ NegLoadFormula)
M : KripkeModel W
w : W
Rcond : List Formula
ress : List (List Formula)
orule : OneSidedLocalRule Rcond ress
this osTruth : evaluate M w (Con Rcond) ↔ evaluate M w (discon ress)
preconditionProof : Rcond.Sublist R
w_LRO : (M, w)⊨(L, R, O)
Y : List Formula
Y_in : Y ∈ ress
claim : ∀ f ∈ Y, evaluate M w f
f : Formula
f_in : f ∈ L ∪ (R.diff Rcond ++ Y) ∪ (Option.map (Sum.elim negUnload negUnload) O).toList
⊢ evaluate M w f
Theorem: localRuleTruth
Proof state before:
case h.right
W : Type
L R : List Formula
O : Option (NegLoadFormula ⊕ NegLoadFormula)
M : KripkeModel W
w : W
Rcond : List Formula
ress : List (List Formula)
orule : OneSidedLocalRule Rcond ress
this osTruth : evaluate M w (Con Rcond) ↔ evaluate M w (discon ress)
preconditionProof : Rcond.Sublist R
w_LRO : (M, w)⊨(L, R, O)
Y : List Formula
Y_in : Y ∈ ress
claim : ∀ f ∈ Y, evaluate M w f
f : Formula
f_in : f ∈ L ∪ (R.diff Rcond ++ Y) ∪ (Option.map (Sum.elim negUnload negUnload) O).toList
⊢ evaluate M w f
Tactic:
simp only [List.mem_union_iff, List.mem_append] at f_in
Proof state after:
case h.right
W : Type
L R : List Formula
O : Option (NegLoadFormula ⊕ NegLoadFormula)
M : KripkeModel W
w : W
Rcond : List Formula
ress : List (List Formula)
orule : OneSidedLocalRule Rcond ress
this osTruth : evaluate M w (Con Rcond) ↔ evaluate M w (discon ress)
preconditionProof : Rcond.Sublist R
w_LRO : (M, w)⊨(L, R, O)
Y : List Formula
Y_in : Y ∈ ress
claim : ∀ f ∈ Y, evaluate M w f
f : Formula
f_in : (f ∈ L ∨ f ∈ R.diff Rcond ∨ f ∈ Y) ∨ f ∈ (Option.map (Sum.elim negUnload negUnload) O).toList
⊢ evaluate M w f
Theorem: localRuleTruth
Proof state before:
case h.right
W : Type
L R : List Formula
O : Option (NegLoadFormula ⊕ NegLoadFormula)
M : KripkeModel W
w : W
Rcond : List Formula
ress : List (List Formula)
orule : OneSidedLocalRule Rcond ress
this osTruth : evaluate M w (Con Rcond) ↔ evaluate M w (discon ress)
preconditionProof : Rcond.Sublist R
w_LRO : (M, w)⊨(L, R, O)
Y : List Formula
Y_in : Y ∈ ress
claim : ∀ f ∈ Y, evaluate M w f
f : Formula
f_in : (f ∈ L ∨ f ∈ R.diff Rcond ∨ f ∈ Y) ∨ f ∈ (Option.map (Sum.elim negUnload negUnload) O).toList
⊢ evaluate M w f
Tactic:
rcases f_in with ((f_in_L | (f_in_R | f_in_Y)) | f_in_O)
Proof state after:
case h.right.inl.inl
W : Type
L R : List Formula
O : Option (NegLoadFormula ⊕ NegLoadFormula)
M : KripkeModel W
w : W
Rcond : List Formula
ress : List (List Formula)
orule : OneSidedLocalRule Rcond ress
this osTruth : evaluate M w (Con Rcond) ↔ evaluate M w (discon ress)
preconditionProof : Rcond.Sublist R
w_LRO : (M, w)⊨(L, R, O)
Y : List Formula
Y_in : Y ∈ ress
claim : ∀ f ∈ Y, evaluate M w f
f : Formula
f_in_L : f ∈ L
⊢ evaluate M w f

case h.right.inl.inr.inl
W : Type
L R : List Formula
O : Option (NegLoadFormula ⊕ NegLoadFormula)
M : KripkeModel W
w : W
Rcond : List Formula
ress : List (List Formula)
orule : OneSidedLocalRule Rcond ress
this osTruth : evaluate M w (Con Rcond) ↔ evaluate M w (discon ress)
preconditionProof : Rcond.Sublist R
w_LRO : (M, w)⊨(L, R, O)
Y : List Formula
Y_in : Y ∈ ress
claim : ∀ f ∈ Y, evaluate M w f
f : Formula
f_in_R : f ∈ R.diff Rcond
⊢ evaluate M w f

case h.right.inl.inr.inr
W : Type
L R : List Formula
O : Option (NegLoadFormula ⊕ NegLoadFormula)
M : KripkeModel W
w : W
Rcond : List Formula
ress : List (List Formula)
orule : OneSidedLocalRule Rcond ress
this osTruth : evaluate M w (Con Rcond) ↔ evaluate M w (discon ress)
preconditionProof : Rcond.Sublist R
w_LRO : (M, w)⊨(L, R, O)
Y : List Formula
Y_in : Y ∈ ress
claim : ∀ f ∈ Y, evaluate M w f
f : Formula
f_in_Y : f ∈ Y
⊢ evaluate M w f

case h.right.inr
W : Type
L R : List Formula
O : Option (NegLoadFormula ⊕ NegLoadFormula)
M : KripkeModel W
w : W
Rcond : List Formula
ress : List (List Formula)
orule : OneSidedLocalRule Rcond ress
this osTruth : evaluate M w (Con Rcond) ↔ evaluate M w (discon ress)
preconditionProof : Rcond.Sublist R
w_LRO : (M, w)⊨(L, R, O)
Y : List Formula
Y_in : Y ∈ ress
claim : ∀ f ∈ Y, evaluate M w f
f : Formula
f_in_O : f ∈ (Option.map (Sum.elim negUnload negUnload) O).toList
⊢ evaluate M w f
Theorem: localRuleTruth
Proof state before:
case h.right.inl.inl
W : Type
L R : List Formula
O : Option (NegLoadFormula ⊕ NegLoadFormula)
M : KripkeModel W
w : W
Rcond : List Formula
ress : List (List Formula)
orule : OneSidedLocalRule Rcond ress
this osTruth : evaluate M w (Con Rcond) ↔ evaluate M w (discon ress)
preconditionProof : Rcond.Sublist R
w_LRO : (M, w)⊨(L, R, O)
Y : List Formula
Y_in : Y ∈ ress
claim : ∀ f ∈ Y, evaluate M w f
f : Formula
f_in_L : f ∈ L
⊢ evaluate M w f
Tactic:
apply w_LRO f
Proof state after:
case h.right.inl.inl
W : Type
L R : List Formula
O : Option (NegLoadFormula ⊕ NegLoadFormula)
M : KripkeModel W
w : W
Rcond : List Formula
ress : List (List Formula)
orule : OneSidedLocalRule Rcond ress
this osTruth : evaluate M w (Con Rcond) ↔ evaluate M w (discon ress)
preconditionProof : Rcond.Sublist R
w_LRO : (M, w)⊨(L, R, O)
Y : List Formula
Y_in : Y ∈ ress
claim : ∀ f ∈ Y, evaluate M w f
f : Formula
f_in_L : f ∈ L
⊢ f ∈ L ∪ R ∪ (Option.map (Sum.elim negUnload negUnload) O).toList
Theorem: localRuleTruth
Proof state before:
case h.right.inl.inl
W : Type
L R : List Formula
O : Option (NegLoadFormula ⊕ NegLoadFormula)
M : KripkeModel W
w : W
Rcond : List Formula
ress : List (List Formula)
orule : OneSidedLocalRule Rcond ress
this osTruth : evaluate M w (Con Rcond) ↔ evaluate M w (discon ress)
preconditionProof : Rcond.Sublist R
w_LRO : (M, w)⊨(L, R, O)
Y : List Formula
Y_in : Y ∈ ress
claim : ∀ f ∈ Y, evaluate M w f
f : Formula
f_in_L : f ∈ L
⊢ f ∈ L ∪ R ∪ (Option.map (Sum.elim negUnload negUnload) O).toList
Tactic:
simp only [List.mem_union_iff, List.mem_append]
Proof state after:
case h.right.inl.inl
W : Type
L R : List Formula
O : Option (NegLoadFormula ⊕ NegLoadFormula)
M : KripkeModel W
w : W
Rcond : List Formula
ress : List (List Formula)
orule : OneSidedLocalRule Rcond ress
this osTruth : evaluate M w (Con Rcond) ↔ evaluate M w (discon ress)
preconditionProof : Rcond.Sublist R
w_LRO : (M, w)⊨(L, R, O)
Y : List Formula
Y_in : Y ∈ ress
claim : ∀ f ∈ Y, evaluate M w f
f : Formula
f_in_L : f ∈ L
⊢ (f ∈ L ∨ f ∈ R) ∨ f ∈ (Option.map (Sum.elim negUnload negUnload) O).toList
Theorem: localRuleTruth
Proof state before:
case h.right.inl.inl
W : Type
L R : List Formula
O : Option (NegLoadFormula ⊕ NegLoadFormula)
M : KripkeModel W
w : W
Rcond : List Formula
ress : List (List Formula)
orule : OneSidedLocalRule Rcond ress
this osTruth : evaluate M w (Con Rcond) ↔ evaluate M w (discon ress)
preconditionProof : Rcond.Sublist R
w_LRO : (M, w)⊨(L, R, O)
Y : List Formula
Y_in : Y ∈ ress
claim : ∀ f ∈ Y, evaluate M w f
f : Formula
f_in_L : f ∈ L
⊢ (f ∈ L ∨ f ∈ R) ∨ f ∈ (Option.map (Sum.elim negUnload negUnload) O).toList
Tactic:
exact Or.inl $ Or.inl f_in_L
Proof state after:
no goals
Theorem: localRuleTruth
Proof state before:
case h.right.inl.inr.inl
W : Type
L R : List Formula
O : Option (NegLoadFormula ⊕ NegLoadFormula)
M : KripkeModel W
w : W
Rcond : List Formula
ress : List (List Formula)
orule : OneSidedLocalRule Rcond ress
this osTruth : evaluate M w (Con Rcond) ↔ evaluate M w (discon ress)
preconditionProof : Rcond.Sublist R
w_LRO : (M, w)⊨(L, R, O)
Y : List Formula
Y_in : Y ∈ ress
claim : ∀ f ∈ Y, evaluate M w f
f : Formula
f_in_R : f ∈ R.diff Rcond
⊢ evaluate M w f
Tactic:
apply w_LRO f
Proof state after:
case h.right.inl.inr.inl
W : Type
L R : List Formula
O : Option (NegLoadFormula ⊕ NegLoadFormula)
M : KripkeModel W
w : W
Rcond : List Formula
ress : List (List Formula)
orule : OneSidedLocalRule Rcond ress
this osTruth : evaluate M w (Con Rcond) ↔ evaluate M w (discon ress)
preconditionProof : Rcond.Sublist R
w_LRO : (M, w)⊨(L, R, O)
Y : List Formula
Y_in : Y ∈ ress
claim : ∀ f ∈ Y, evaluate M w f
f : Formula
f_in_R : f ∈ R.diff Rcond
⊢ f ∈ L ∪ R ∪ (Option.map (Sum.elim negUnload negUnload) O).toList
Theorem: localRuleTruth
Proof state before:
case h.right.inl.inr.inl
W : Type
L R : List Formula
O : Option (NegLoadFormula ⊕ NegLoadFormula)
M : KripkeModel W
w : W
Rcond : List Formula
ress : List (List Formula)
orule : OneSidedLocalRule Rcond ress
this osTruth : evaluate M w (Con Rcond) ↔ evaluate M w (discon ress)
preconditionProof : Rcond.Sublist R
w_LRO : (M, w)⊨(L, R, O)
Y : List Formula
Y_in : Y ∈ ress
claim : ∀ f ∈ Y, evaluate M w f
f : Formula
f_in_R : f ∈ R.diff Rcond
⊢ f ∈ L ∪ R ∪ (Option.map (Sum.elim negUnload negUnload) O).toList
Tactic:
simp only [List.mem_union_iff, List.mem_append]
Proof state after:
case h.right.inl.inr.inl
W : Type
L R : List Formula
O : Option (NegLoadFormula ⊕ NegLoadFormula)
M : KripkeModel W
w : W
Rcond : List Formula
ress : List (List Formula)
orule : OneSidedLocalRule Rcond ress
this osTruth : evaluate M w (Con Rcond) ↔ evaluate M w (discon ress)
preconditionProof : Rcond.Sublist R
w_LRO : (M, w)⊨(L, R, O)
Y : List Formula
Y_in : Y ∈ ress
claim : ∀ f ∈ Y, evaluate M w f
f : Formula
f_in_R : f ∈ R.diff Rcond
⊢ (f ∈ L ∨ f ∈ R) ∨ f ∈ (Option.map (Sum.elim negUnload negUnload) O).toList
Theorem: localRuleTruth
Proof state before:
case h.right.inl.inr.inl
W : Type
L R : List Formula
O : Option (NegLoadFormula ⊕ NegLoadFormula)
M : KripkeModel W
w : W
Rcond : List Formula
ress : List (List Formula)
orule : OneSidedLocalRule Rcond ress
this osTruth : evaluate M w (Con Rcond) ↔ evaluate M w (discon ress)
preconditionProof : Rcond.Sublist R
w_LRO : (M, w)⊨(L, R, O)
Y : List Formula
Y_in : Y ∈ ress
claim : ∀ f ∈ Y, evaluate M w f
f : Formula
f_in_R : f ∈ R.diff Rcond
⊢ (f ∈ L ∨ f ∈ R) ∨ f ∈ (Option.map (Sum.elim negUnload negUnload) O).toList
Tactic:
exact Or.inl $ Or.inr $ List.diff_subset R Rcond f_in_R
Proof state after:
no goals
Theorem: localRuleTruth
Proof state before:
case h.right.inl.inr.inr
W : Type
L R : List Formula
O : Option (NegLoadFormula ⊕ NegLoadFormula)
M : KripkeModel W
w : W
Rcond : List Formula
ress : List (List Formula)
orule : OneSidedLocalRule Rcond ress
this osTruth : evaluate M w (Con Rcond) ↔ evaluate M w (discon ress)
preconditionProof : Rcond.Sublist R
w_LRO : (M, w)⊨(L, R, O)
Y : List Formula
Y_in : Y ∈ ress
claim : ∀ f ∈ Y, evaluate M w f
f : Formula
f_in_Y : f ∈ Y
⊢ evaluate M w f
Tactic:
exact claim f f_in_Y
Proof state after:
no goals
Theorem: localRuleTruth
Proof state before:
case h.right.inr
W : Type
L R : List Formula
O : Option (NegLoadFormula ⊕ NegLoadFormula)
M : KripkeModel W
w : W
Rcond : List Formula
ress : List (List Formula)
orule : OneSidedLocalRule Rcond ress
this osTruth : evaluate M w (Con Rcond) ↔ evaluate M w (discon ress)
preconditionProof : Rcond.Sublist R
w_LRO : (M, w)⊨(L, R, O)
Y : List Formula
Y_in : Y ∈ ress
claim : ∀ f ∈ Y, evaluate M w f
f : Formula
f_in_O : f ∈ (Option.map (Sum.elim negUnload negUnload) O).toList
⊢ evaluate M w f
Tactic:
apply w_LRO f
Proof state after:
case h.right.inr
W : Type
L R : List Formula
O : Option (NegLoadFormula ⊕ NegLoadFormula)
M : KripkeModel W
w : W
Rcond : List Formula
ress : List (List Formula)
orule : OneSidedLocalRule Rcond ress
this osTruth : evaluate M w (Con Rcond) ↔ evaluate M w (discon ress)
preconditionProof : Rcond.Sublist R
w_LRO : (M, w)⊨(L, R, O)
Y : List Formula
Y_in : Y ∈ ress
claim : ∀ f ∈ Y, evaluate M w f
f : Formula
f_in_O : f ∈ (Option.map (Sum.elim negUnload negUnload) O).toList
⊢ f ∈ L ∪ R ∪ (Option.map (Sum.elim negUnload negUnload) O).toList
Theorem: localRuleTruth
Proof state before:
case h.right.inr
W : Type
L R : List Formula
O : Option (NegLoadFormula ⊕ NegLoadFormula)
M : KripkeModel W
w : W
Rcond : List Formula
ress : List (List Formula)
orule : OneSidedLocalRule Rcond ress
this osTruth : evaluate M w (Con Rcond) ↔ evaluate M w (discon ress)
preconditionProof : Rcond.Sublist R
w_LRO : (M, w)⊨(L, R, O)
Y : List Formula
Y_in : Y ∈ ress
claim : ∀ f ∈ Y, evaluate M w f
f : Formula
f_in_O : f ∈ (Option.map (Sum.elim negUnload negUnload) O).toList
⊢ f ∈ L ∪ R ∪ (Option.map (Sum.elim negUnload negUnload) O).toList
Tactic:
simp only [List.mem_union_iff, List.mem_append]
Proof state after:
case h.right.inr
W : Type
L R : List Formula
O : Option (NegLoadFormula ⊕ NegLoadFormula)
M : KripkeModel W
w : W
Rcond : List Formula
ress : List (List Formula)
orule : OneSidedLocalRule Rcond ress
this osTruth : evaluate M w (Con Rcond) ↔ evaluate M w (discon ress)
preconditionProof : Rcond.Sublist R
w_LRO : (M, w)⊨(L, R, O)
Y : List Formula
Y_in : Y ∈ ress
claim : ∀ f ∈ Y, evaluate M w f
f : Formula
f_in_O : f ∈ (Option.map (Sum.elim negUnload negUnload) O).toList
⊢ (f ∈ L ∨ f ∈ R) ∨ f ∈ (Option.map (Sum.elim negUnload negUnload) O).toList
Theorem: localRuleTruth
Proof state before:
case h.right.inr
W : Type
L R : List Formula
O : Option (NegLoadFormula ⊕ NegLoadFormula)
M : KripkeModel W
w : W
Rcond : List Formula
ress : List (List Formula)
orule : OneSidedLocalRule Rcond ress
this osTruth : evaluate M w (Con Rcond) ↔ evaluate M w (discon ress)
preconditionProof : Rcond.Sublist R
w_LRO : (M, w)⊨(L, R, O)
Y : List Formula
Y_in : Y ∈ ress
claim : ∀ f ∈ Y, evaluate M w f
f : Formula
f_in_O : f ∈ (Option.map (Sum.elim negUnload negUnload) O).toList
⊢ (f ∈ L ∨ f ∈ R) ∨ f ∈ (Option.map (Sum.elim negUnload negUnload) O).toList
Tactic:
exact Or.inr f_in_O
Proof state after:
no goals
Theorem: localRuleTruth
Proof state before:
case mpr
W : Type
L R : List Formula
O : Option (NegLoadFormula ⊕ NegLoadFormula)
M : KripkeModel W
w : W
Rcond : List Formula
ress : List (List Formula)
orule : OneSidedLocalRule Rcond ress
this osTruth : evaluate M w (Con Rcond) ↔ evaluate M w (discon ress)
preconditionProof : Rcond.Sublist R
⊢ (∃ a ∈ ress, (M, w)⊨(L, R.diff Rcond ++ a, O)) → (M, w)⊨(L, R, O)
Tactic:
rintro ⟨Y, Y_in, w_LYRO⟩
Proof state after:
case mpr.intro.intro
W : Type
L R : List Formula
O : Option (NegLoadFormula ⊕ NegLoadFormula)
M : KripkeModel W
w : W
Rcond : List Formula
ress : List (List Formula)
orule : OneSidedLocalRule Rcond ress
this osTruth : evaluate M w (Con Rcond) ↔ evaluate M w (discon ress)
preconditionProof : Rcond.Sublist R
Y : List Formula
Y_in : Y ∈ ress
w_LYRO : (M, w)⊨(L, R.diff Rcond ++ Y, O)
⊢ (M, w)⊨(L, R, O)
Theorem: localRuleTruth
Proof state before:
case mpr.intro.intro
W : Type
L R : List Formula
O : Option (NegLoadFormula ⊕ NegLoadFormula)
M : KripkeModel W
w : W
Rcond : List Formula
ress : List (List Formula)
orule : OneSidedLocalRule Rcond ress
this osTruth : evaluate M w (Con Rcond) ↔ evaluate M w (discon ress)
preconditionProof : Rcond.Sublist R
Y : List Formula
Y_in : Y ∈ ress
w_LYRO : (M, w)⊨(L, R.diff Rcond ++ Y, O)
⊢ (M, w)⊨(L, R, O)
Tactic:
intro f f_in
Proof state after:
case mpr.intro.intro
W : Type
L R : List Formula
O : Option (NegLoadFormula ⊕ NegLoadFormula)
M : KripkeModel W
w : W
Rcond : List Formula
ress : List (List Formula)
orule : OneSidedLocalRule Rcond ress
this osTruth : evaluate M w (Con Rcond) ↔ evaluate M w (discon ress)
preconditionProof : Rcond.Sublist R
Y : List Formula
Y_in : Y ∈ ress
w_LYRO : (M, w)⊨(L, R.diff Rcond ++ Y, O)
f : Formula
f_in : f ∈ L ∪ R ∪ (Option.map (Sum.elim negUnload negUnload) O).toList
⊢ evaluate M w f
Theorem: localRuleTruth
Proof state before:
case mpr.intro.intro
W : Type
L R : List Formula
O : Option (NegLoadFormula ⊕ NegLoadFormula)
M : KripkeModel W
w : W
Rcond : List Formula
ress : List (List Formula)
orule : OneSidedLocalRule Rcond ress
this osTruth : evaluate M w (Con Rcond) ↔ evaluate M w (discon ress)
preconditionProof : Rcond.Sublist R
Y : List Formula
Y_in : Y ∈ ress
w_LYRO : (M, w)⊨(L, R.diff Rcond ++ Y, O)
f : Formula
f_in : f ∈ L ∪ R ∪ (Option.map (Sum.elim negUnload negUnload) O).toList
⊢ evaluate M w f
Tactic:
simp only [List.mem_union_iff, List.mem_append] at f_in
Proof state after:
case mpr.intro.intro
W : Type
L R : List Formula
O : Option (NegLoadFormula ⊕ NegLoadFormula)
M : KripkeModel W
w : W
Rcond : List Formula
ress : List (List Formula)
orule : OneSidedLocalRule Rcond ress
this osTruth : evaluate M w (Con Rcond) ↔ evaluate M w (discon ress)
preconditionProof : Rcond.Sublist R
Y : List Formula
Y_in : Y ∈ ress
w_LYRO : (M, w)⊨(L, R.diff Rcond ++ Y, O)
f : Formula
f_in : (f ∈ L ∨ f ∈ R) ∨ f ∈ (Option.map (Sum.elim negUnload negUnload) O).toList
⊢ evaluate M w f
Theorem: localRuleTruth
Proof state before:
case mpr.intro.intro
W : Type
L R : List Formula
O : Option (NegLoadFormula ⊕ NegLoadFormula)
M : KripkeModel W
w : W
Rcond : List Formula
ress : List (List Formula)
orule : OneSidedLocalRule Rcond ress
this osTruth : evaluate M w (Con Rcond) ↔ evaluate M w (discon ress)
preconditionProof : Rcond.Sublist R
Y : List Formula
Y_in : Y ∈ ress
w_LYRO : (M, w)⊨(L, R.diff Rcond ++ Y, O)
f : Formula
f_in : (f ∈ L ∨ f ∈ R) ∨ f ∈ (Option.map (Sum.elim negUnload negUnload) O).toList
⊢ evaluate M w f
Tactic:
rcases f_in with ((f_in_L | f_in_R) | f_in_O)
Proof state after:
case mpr.intro.intro.inl.inl
W : Type
L R : List Formula
O : Option (NegLoadFormula ⊕ NegLoadFormula)
M : KripkeModel W
w : W
Rcond : List Formula
ress : List (List Formula)
orule : OneSidedLocalRule Rcond ress
this osTruth : evaluate M w (Con Rcond) ↔ evaluate M w (discon ress)
preconditionProof : Rcond.Sublist R
Y : List Formula
Y_in : Y ∈ ress
w_LYRO : (M, w)⊨(L, R.diff Rcond ++ Y, O)
f : Formula
f_in_L : f ∈ L
⊢ evaluate M w f

case mpr.intro.intro.inl.inr
W : Type
L R : List Formula
O : Option (NegLoadFormula ⊕ NegLoadFormula)
M : KripkeModel W
w : W
Rcond : List Formula
ress : List (List Formula)
orule : OneSidedLocalRule Rcond ress
this osTruth : evaluate M w (Con Rcond) ↔ evaluate M w (discon ress)
preconditionProof : Rcond.Sublist R
Y : List Formula
Y_in : Y ∈ ress
w_LYRO : (M, w)⊨(L, R.diff Rcond ++ Y, O)
f : Formula
f_in_R : f ∈ R
⊢ evaluate M w f

case mpr.intro.intro.inr
W : Type
L R : List Formula
O : Option (NegLoadFormula ⊕ NegLoadFormula)
M : KripkeModel W
w : W
Rcond : List Formula
ress : List (List Formula)
orule : OneSidedLocalRule Rcond ress
this osTruth : evaluate M w (Con Rcond) ↔ evaluate M w (discon ress)
preconditionProof : Rcond.Sublist R
Y : List Formula
Y_in : Y ∈ ress
w_LYRO : (M, w)⊨(L, R.diff Rcond ++ Y, O)
f : Formula
f_in_O : f ∈ (Option.map (Sum.elim negUnload negUnload) O).toList
⊢ evaluate M w f