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
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)
Y : List Formula
Y_in : Y ∈ ress
claim : ∀ f ∈ Y, evaluate M w f
⊢ Y ∈ ress ∧ (M, w)⊨(L.diff Lcond ++ Y, R, O)
Tactic:
constructor
Proof state after:
case h.left
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)
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
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)
Y : List Formula
Y_in : Y ∈ ress
claim : ∀ f ∈ Y, evaluate M w f
⊢ (M, w)⊨(L.diff Lcond ++ Y, R, O)
Theorem: localRuleTruth
Proof state before:
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)
⊢ 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
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)
⊢ ∀ f ∈ Lcond, evaluate M w f
Theorem: localRuleTruth
Proof state before:
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)
⊢ ∀ f ∈ Lcond, 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
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)
f : Formula
f_in : f ∈ Lcond
⊢ evaluate M w f
Theorem: localRuleTruth
Proof state before:
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)
f : Formula
f_in : f ∈ Lcond
⊢ 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
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)
f : Formula
f_in : f ∈ Lcond
⊢ 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
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)
f : Formula
f_in : f ∈ Lcond
⊢ 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
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)
f : Formula
f_in : f ∈ Lcond
⊢ (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
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)
f : Formula
f_in : f ∈ Lcond
⊢ (f ∈ L ∨ f ∈ R) ∨ f ∈ (Option.map (Sum.elim negUnload negUnload) O).toList
Tactic:
exact Or.inl $ Or.inl $ 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
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)
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
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)
Y : List Formula
Y_in : Y ∈ ress
claim : ∀ f ∈ Y, evaluate M w f
⊢ (M, w)⊨(L.diff Lcond ++ Y, R, 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
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)
Y : List Formula
Y_in : Y ∈ ress
claim : ∀ f ∈ Y, evaluate M w f
f : Formula
f_in : f ∈ L.diff Lcond ++ Y ∪ R ∪ (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
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)
Y : List Formula
Y_in : Y ∈ ress
claim : ∀ f ∈ Y, evaluate M w f
f : Formula
f_in : f ∈ L.diff Lcond ++ Y ∪ 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 h.right
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)
Y : List Formula
Y_in : Y ∈ ress
claim : ∀ f ∈ Y, evaluate M w f
f : Formula
f_in : ((f ∈ L.diff Lcond ∨ f ∈ Y) ∨ f ∈ R) ∨ 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
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)
Y : List Formula
Y_in : Y ∈ ress
claim : ∀ f ∈ Y, evaluate M w f
f : Formula
f_in : ((f ∈ L.diff Lcond ∨ f ∈ Y) ∨ 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_Y) | f_in_R) | f_in_O)
Proof state after:
case h.right.inl.inl.inl
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)
Y : List Formula
Y_in : Y ∈ ress
claim : ∀ f ∈ Y, evaluate M w f
f : Formula
f_in_L : f ∈ L.diff Lcond
⊢ evaluate M w f

case h.right.inl.inl.inr
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)
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.inl.inr
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)
Y : List Formula
Y_in : Y ∈ ress
claim : ∀ f ∈ Y, evaluate M w f
f : Formula
f_in_R : f ∈ R
⊢ evaluate M w f

case h.right.inr
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)
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.inl
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)
Y : List Formula
Y_in : Y ∈ ress
claim : ∀ f ∈ Y, evaluate M w f
f : Formula
f_in_L : f ∈ L.diff Lcond
⊢ evaluate M w f
Tactic:
apply w_LRO f
Proof state after:
case h.right.inl.inl.inl
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)
Y : List Formula
Y_in : Y ∈ ress
claim : ∀ f ∈ Y, evaluate M w f
f : Formula
f_in_L : f ∈ L.diff Lcond
⊢ f ∈ L ∪ R ∪ (Option.map (Sum.elim negUnload negUnload) O).toList
Theorem: localRuleTruth
Proof state before:
case h.right.inl.inl.inl
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)
Y : List Formula
Y_in : Y ∈ ress
claim : ∀ f ∈ Y, evaluate M w f
f : Formula
f_in_L : f ∈ L.diff Lcond
⊢ 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.inl
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)
Y : List Formula
Y_in : Y ∈ ress
claim : ∀ f ∈ Y, evaluate M w f
f : Formula
f_in_L : f ∈ L.diff Lcond
⊢ (f ∈ L ∨ f ∈ R) ∨ f ∈ (Option.map (Sum.elim negUnload negUnload) O).toList
Theorem: localRuleTruth
Proof state before:
case h.right.inl.inl.inl
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)
Y : List Formula
Y_in : Y ∈ ress
claim : ∀ f ∈ Y, evaluate M w f
f : Formula
f_in_L : f ∈ L.diff Lcond
⊢ (f ∈ L ∨ f ∈ R) ∨ f ∈ (Option.map (Sum.elim negUnload negUnload) O).toList
Tactic:
exact Or.inl $ Or.inl $ List.diff_subset L Lcond f_in_L
Proof state after:
no goals
Theorem: localRuleTruth
Proof state before:
case h.right.inl.inl.inr
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)
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.inl.inr
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)
Y : List Formula
Y_in : Y ∈ ress
claim : ∀ f ∈ Y, evaluate M w f
f : Formula
f_in_R : f ∈ R
⊢ evaluate M w f
Tactic:
apply w_LRO f
Proof state after:
case h.right.inl.inr
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)
Y : List Formula
Y_in : Y ∈ ress
claim : ∀ f ∈ Y, evaluate M w f
f : Formula
f_in_R : f ∈ R
⊢ f ∈ L ∪ R ∪ (Option.map (Sum.elim negUnload negUnload) O).toList
Theorem: localRuleTruth
Proof state before:
case h.right.inl.inr
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)
Y : List Formula
Y_in : Y ∈ ress
claim : ∀ f ∈ Y, evaluate M w f
f : Formula
f_in_R : f ∈ R
⊢ 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
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)
Y : List Formula
Y_in : Y ∈ ress
claim : ∀ f ∈ Y, evaluate M w f
f : Formula
f_in_R : f ∈ R
⊢ (f ∈ L ∨ f ∈ R) ∨ f ∈ (Option.map (Sum.elim negUnload negUnload) O).toList
Theorem: localRuleTruth
Proof state before:
case h.right.inl.inr
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)
Y : List Formula
Y_in : Y ∈ ress
claim : ∀ f ∈ Y, evaluate M w f
f : Formula
f_in_R : f ∈ R
⊢ (f ∈ L ∨ f ∈ R) ∨ f ∈ (Option.map (Sum.elim negUnload negUnload) O).toList
Tactic:
tauto
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
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)
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
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)
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
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)
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
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)
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
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)
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
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
⊢ (∃ a ∈ ress, (M, w)⊨(L.diff Lcond ++ a, R, 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
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
Y : List Formula
Y_in : Y ∈ ress
w_LYRO : (M, w)⊨(L.diff Lcond ++ Y, R, 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
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
Y : List Formula
Y_in : Y ∈ ress
w_LYRO : (M, w)⊨(L.diff Lcond ++ Y, R, 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
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
Y : List Formula
Y_in : Y ∈ ress
w_LYRO : (M, w)⊨(L.diff Lcond ++ Y, R, 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
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
Y : List Formula
Y_in : Y ∈ ress
w_LYRO : (M, w)⊨(L.diff Lcond ++ Y, R, 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
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
Y : List Formula
Y_in : Y ∈ ress
w_LYRO : (M, w)⊨(L.diff Lcond ++ Y, R, 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
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
Y : List Formula
Y_in : Y ∈ ress
w_LYRO : (M, w)⊨(L.diff Lcond ++ Y, R, 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
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
Y : List Formula
Y_in : Y ∈ ress
w_LYRO : (M, w)⊨(L.diff Lcond ++ Y, R, 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
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
Y : List Formula
Y_in : Y ∈ ress
w_LYRO : (M, w)⊨(L.diff Lcond ++ Y, R, 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
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
Y : List Formula
Y_in : Y ∈ ress
w_LYRO : (M, w)⊨(L.diff Lcond ++ Y, R, O)
f : Formula
f_in_O : f ∈ (Option.map (Sum.elim negUnload negUnload) O).toList
⊢ evaluate M w f