internlm/Lean-Github huggingface dataset:
Theorem: localRuleApp_does_not_increase_vocab
Proof state before:
C : List TNode
L R : Finset Formula
ruleA : LocalRuleApp (L, R) C
ress : List SubPair
Lcond Rcond : Finset Formula
rule : LocalRule (Lcond, Rcond) ress
hC : C = applyLocalRule rule (L, R)
preproof : Lcond ⊆ L ∧ Rcond ⊆ R
c : TNode
cinC : c ∈ C
ℓ : Char
ℓ_in_c : (∃ a ∈ c.1, ℓ ∈ vocabOfFormula a) ∧ ∃ a ∈ c.2, ℓ ∈ vocabOfFormula a
Lφ : Formula
Lφ_in_cL : Lφ ∈ c.1
ℓ_in_Lφ : ℓ ∈ vocabOfFormula Lφ
not_Lφ_in_L : Lφ ∉ L
Lφ_in_res : ∃ res ∈ ress, Lφ ∈ res.1
res : SubPair
res_in_ress : res ∈ ress
Lφ_in_res_L : Lφ ∈ res.1
voc_res_ss_Lcond : ∀ x ∈ res.1, vocabOfFormula x ⊆ Lcond.biUnion vocabOfFormula
⊢ ∃ ψ ∈ Lcond, ℓ ∈ voc ψ
Tactic:
let ℓ_in_voc_Lcond := voc_res_ss_Lcond Lφ Lφ_in_res_L ℓ_in_Lφ
Proof state after:
C : List TNode
L R : Finset Formula
ruleA : LocalRuleApp (L, R) C
ress : List SubPair
Lcond Rcond : Finset Formula
rule : LocalRule (Lcond, Rcond) ress
hC : C = applyLocalRule rule (L, R)
preproof : Lcond ⊆ L ∧ Rcond ⊆ R
c : TNode
cinC : c ∈ C
ℓ : Char
ℓ_in_c : (∃ a ∈ c.1, ℓ ∈ vocabOfFormula a) ∧ ∃ a ∈ c.2, ℓ ∈ vocabOfFormula a
Lφ : Formula
Lφ_in_cL : Lφ ∈ c.1
ℓ_in_Lφ : ℓ ∈ vocabOfFormula Lφ
not_Lφ_in_L : Lφ ∉ L
Lφ_in_res : ∃ res ∈ ress, Lφ ∈ res.1
res : SubPair
res_in_ress : res ∈ ress
Lφ_in_res_L : Lφ ∈ res.1
voc_res_ss_Lcond : ∀ x ∈ res.1, vocabOfFormula x ⊆ Lcond.biUnion vocabOfFormula
ℓ_in_voc_Lcond : ℓ ∈ Lcond.biUnion vocabOfFormula := voc_res_ss_Lcond Lφ Lφ_in_res_L ℓ_in_Lφ
⊢ ∃ ψ ∈ Lcond, ℓ ∈ voc ψ
Theorem: localRuleApp_does_not_increase_vocab
Proof state before:
C : List TNode
L R : Finset Formula
ruleA : LocalRuleApp (L, R) C
ress : List SubPair
Lcond Rcond : Finset Formula
rule : LocalRule (Lcond, Rcond) ress
hC : C = applyLocalRule rule (L, R)
preproof : Lcond ⊆ L ∧ Rcond ⊆ R
c : TNode
cinC : c ∈ C
ℓ : Char
ℓ_in_c : (∃ a ∈ c.1, ℓ ∈ vocabOfFormula a) ∧ ∃ a ∈ c.2, ℓ ∈ vocabOfFormula a
Lφ : Formula
Lφ_in_cL : Lφ ∈ c.1
ℓ_in_Lφ : ℓ ∈ vocabOfFormula Lφ
not_Lφ_in_L : Lφ ∉ L
Lφ_in_res : ∃ res ∈ ress, Lφ ∈ res.1
res : SubPair
res_in_ress : res ∈ ress
Lφ_in_res_L : Lφ ∈ res.1
voc_res_ss_Lcond : ∀ x ∈ res.1, vocabOfFormula x ⊆ Lcond.biUnion vocabOfFormula
ℓ_in_voc_Lcond : ℓ ∈ Lcond.biUnion vocabOfFormula := voc_res_ss_Lcond Lφ Lφ_in_res_L ℓ_in_Lφ
⊢ ∃ ψ ∈ Lcond, ℓ ∈ voc ψ
Tactic:
simp at ℓ_in_voc_Lcond
Proof state after:
C : List TNode
L R : Finset Formula
ruleA : LocalRuleApp (L, R) C
ress : List SubPair
Lcond Rcond : Finset Formula
rule : LocalRule (Lcond, Rcond) ress
hC : C = applyLocalRule rule (L, R)
preproof : Lcond ⊆ L ∧ Rcond ⊆ R
c : TNode
cinC : c ∈ C
ℓ : Char
ℓ_in_c : (∃ a ∈ c.1, ℓ ∈ vocabOfFormula a) ∧ ∃ a ∈ c.2, ℓ ∈ vocabOfFormula a
Lφ : Formula
Lφ_in_cL : Lφ ∈ c.1
ℓ_in_Lφ : ℓ ∈ vocabOfFormula Lφ
not_Lφ_in_L : Lφ ∉ L
Lφ_in_res : ∃ res ∈ ress, Lφ ∈ res.1
res : SubPair
res_in_ress : res ∈ ress
Lφ_in_res_L : Lφ ∈ res.1
voc_res_ss_Lcond : ∀ x ∈ res.1, vocabOfFormula x ⊆ Lcond.biUnion vocabOfFormula
ℓ_in_voc_Lcond : ∃ a ∈ Lcond, ℓ ∈ vocabOfFormula a
⊢ ∃ ψ ∈ Lcond, ℓ ∈ voc ψ
Theorem: localRuleApp_does_not_increase_vocab
Proof state before:
C : List TNode
L R : Finset Formula
ruleA : LocalRuleApp (L, R) C
ress : List SubPair
Lcond Rcond : Finset Formula
rule : LocalRule (Lcond, Rcond) ress
hC : C = applyLocalRule rule (L, R)
preproof : Lcond ⊆ L ∧ Rcond ⊆ R
c : TNode
cinC : c ∈ C
ℓ : Char
ℓ_in_c : (∃ a ∈ c.1, ℓ ∈ vocabOfFormula a) ∧ ∃ a ∈ c.2, ℓ ∈ vocabOfFormula a
Lφ : Formula
Lφ_in_cL : Lφ ∈ c.1
ℓ_in_Lφ : ℓ ∈ vocabOfFormula Lφ
not_Lφ_in_L : Lφ ∉ L
Lφ_in_res : ∃ res ∈ ress, Lφ ∈ res.1
res : SubPair
res_in_ress : res ∈ ress
Lφ_in_res_L : Lφ ∈ res.1
voc_res_ss_Lcond : ∀ x ∈ res.1, vocabOfFormula x ⊆ Lcond.biUnion vocabOfFormula
ℓ_in_voc_Lcond : ∃ a ∈ Lcond, ℓ ∈ vocabOfFormula a
⊢ ∃ ψ ∈ Lcond, ℓ ∈ voc ψ
Tactic:
exact ℓ_in_voc_Lcond
Proof state after:
no goals
Theorem: localRuleApp_does_not_increase_vocab
Proof state before:
C : List TNode
L R : Finset Formula
ruleA : LocalRuleApp (L, R) C
ress : List SubPair
Lcond Rcond : Finset Formula
rule : LocalRule (Lcond, Rcond) ress
hC : C = applyLocalRule rule (L, R)
preproof : Lcond ⊆ L ∧ Rcond ⊆ R
c : TNode
cinC : c ∈ C
ℓ : Char
ℓ_in_c : (∃ a ∈ c.1, ℓ ∈ vocabOfFormula a) ∧ ∃ a ∈ c.2, ℓ ∈ vocabOfFormula a
Lφ : Formula
Lφ_in_cL : Lφ ∈ c.1
ℓ_in_Lφ : ℓ ∈ vocabOfFormula Lφ
not_Lφ_in_L : Lφ ∉ L
Lφ_in_res : ∃ res ∈ ress, Lφ ∈ res.1
res : SubPair
res_in_ress : res ∈ ress
Lφ_in_res_L : Lφ ∈ res.1
ℓ_in_ψ_in_Lcond : ∃ ψ ∈ Lcond, ℓ ∈ voc ψ
ψ : Formula
ψ_in_Lcond : ψ ∈ Lcond
ℓ_in_ψ : ℓ ∈ voc ψ
⊢ ψ ∈ L
Tactic:
aesop
Proof state after:
no goals
Theorem: localRuleApp_does_not_increase_vocab
Proof state before:
case right
C : List TNode
L R : Finset Formula
ruleA : LocalRuleApp (L, R) C
ress : List SubPair
Lcond Rcond : Finset Formula
rule : LocalRule (Lcond, Rcond) ress
hC : C = applyLocalRule rule (L, R)
preproof : Lcond ⊆ L ∧ Rcond ⊆ R
c : TNode
cinC : c ∈ C
ℓ : Char
ℓ_in_c : (∃ a ∈ c.1, ℓ ∈ vocabOfFormula a) ∧ ∃ a ∈ c.2, ℓ ∈ vocabOfFormula a
⊢ ∃ a ∈ R, ℓ ∈ vocabOfFormula a
Tactic:
have ⟨Rφ,Rφ_in_cR, ℓ_in_Rφ⟩ := ℓ_in_c.right
Proof state after:
case right
C : List TNode
L R : Finset Formula
ruleA : LocalRuleApp (L, R) C
ress : List SubPair
Lcond Rcond : Finset Formula
rule : LocalRule (Lcond, Rcond) ress
hC : C = applyLocalRule rule (L, R)
preproof : Lcond ⊆ L ∧ Rcond ⊆ R
c : TNode
cinC : c ∈ C
ℓ : Char
ℓ_in_c : (∃ a ∈ c.1, ℓ ∈ vocabOfFormula a) ∧ ∃ a ∈ c.2, ℓ ∈ vocabOfFormula a
Rφ : Formula
Rφ_in_cR : Rφ ∈ c.2
ℓ_in_Rφ : ℓ ∈ vocabOfFormula Rφ
⊢ ∃ a ∈ R, ℓ ∈ vocabOfFormula a
Theorem: localRuleApp_does_not_increase_vocab
Proof state before:
case right
C : List TNode
L R : Finset Formula
ruleA : LocalRuleApp (L, R) C
ress : List SubPair
Lcond Rcond : Finset Formula
rule : LocalRule (Lcond, Rcond) ress
hC : C = applyLocalRule rule (L, R)
preproof : Lcond ⊆ L ∧ Rcond ⊆ R
c : TNode
cinC : c ∈ C
ℓ : Char
ℓ_in_c : (∃ a ∈ c.1, ℓ ∈ vocabOfFormula a) ∧ ∃ a ∈ c.2, ℓ ∈ vocabOfFormula a
Rφ : Formula
Rφ_in_cR : Rφ ∈ c.2
ℓ_in_Rφ : ℓ ∈ vocabOfFormula Rφ
⊢ ∃ a ∈ R, ℓ ∈ vocabOfFormula a
Tactic:
apply Or.elim (em (Rφ ∈ R))
Proof state after:
case right.left
C : List TNode
L R : Finset Formula
ruleA : LocalRuleApp (L, R) C
ress : List SubPair
Lcond Rcond : Finset Formula
rule : LocalRule (Lcond, Rcond) ress
hC : C = applyLocalRule rule (L, R)
preproof : Lcond ⊆ L ∧ Rcond ⊆ R
c : TNode
cinC : c ∈ C
ℓ : Char
ℓ_in_c : (∃ a ∈ c.1, ℓ ∈ vocabOfFormula a) ∧ ∃ a ∈ c.2, ℓ ∈ vocabOfFormula a
Rφ : Formula
Rφ_in_cR : Rφ ∈ c.2
ℓ_in_Rφ : ℓ ∈ vocabOfFormula Rφ
⊢ Rφ ∈ R → ∃ a ∈ R, ℓ ∈ vocabOfFormula a

case right.right
C : List TNode
L R : Finset Formula
ruleA : LocalRuleApp (L, R) C
ress : List SubPair
Lcond Rcond : Finset Formula
rule : LocalRule (Lcond, Rcond) ress
hC : C = applyLocalRule rule (L, R)
preproof : Lcond ⊆ L ∧ Rcond ⊆ R
c : TNode
cinC : c ∈ C
ℓ : Char
ℓ_in_c : (∃ a ∈ c.1, ℓ ∈ vocabOfFormula a) ∧ ∃ a ∈ c.2, ℓ ∈ vocabOfFormula a
Rφ : Formula
Rφ_in_cR : Rφ ∈ c.2
ℓ_in_Rφ : ℓ ∈ vocabOfFormula Rφ
⊢ Rφ ∉ R → ∃ a ∈ R, ℓ ∈ vocabOfFormula a
Theorem: localRuleApp_does_not_increase_vocab
Proof state before:
case right.left
C : List TNode
L R : Finset Formula
ruleA : LocalRuleApp (L, R) C
ress : List SubPair
Lcond Rcond : Finset Formula
rule : LocalRule (Lcond, Rcond) ress
hC : C = applyLocalRule rule (L, R)
preproof : Lcond ⊆ L ∧ Rcond ⊆ R
c : TNode
cinC : c ∈ C
ℓ : Char
ℓ_in_c : (∃ a ∈ c.1, ℓ ∈ vocabOfFormula a) ∧ ∃ a ∈ c.2, ℓ ∈ vocabOfFormula a
Rφ : Formula
Rφ_in_cR : Rφ ∈ c.2
ℓ_in_Rφ : ℓ ∈ vocabOfFormula Rφ
⊢ Rφ ∈ R → ∃ a ∈ R, ℓ ∈ vocabOfFormula a
Tactic:
intro Rφ_in_R
Proof state after:
case right.left
C : List TNode
L R : Finset Formula
ruleA : LocalRuleApp (L, R) C
ress : List SubPair
Lcond Rcond : Finset Formula
rule : LocalRule (Lcond, Rcond) ress
hC : C = applyLocalRule rule (L, R)
preproof : Lcond ⊆ L ∧ Rcond ⊆ R
c : TNode
cinC : c ∈ C
ℓ : Char
ℓ_in_c : (∃ a ∈ c.1, ℓ ∈ vocabOfFormula a) ∧ ∃ a ∈ c.2, ℓ ∈ vocabOfFormula a
Rφ : Formula
Rφ_in_cR : Rφ ∈ c.2
ℓ_in_Rφ : ℓ ∈ vocabOfFormula Rφ
Rφ_in_R : Rφ ∈ R
⊢ ∃ a ∈ R, ℓ ∈ vocabOfFormula a
Theorem: localRuleApp_does_not_increase_vocab
Proof state before:
case right.left
C : List TNode
L R : Finset Formula
ruleA : LocalRuleApp (L, R) C
ress : List SubPair
Lcond Rcond : Finset Formula
rule : LocalRule (Lcond, Rcond) ress
hC : C = applyLocalRule rule (L, R)
preproof : Lcond ⊆ L ∧ Rcond ⊆ R
c : TNode
cinC : c ∈ C
ℓ : Char
ℓ_in_c : (∃ a ∈ c.1, ℓ ∈ vocabOfFormula a) ∧ ∃ a ∈ c.2, ℓ ∈ vocabOfFormula a
Rφ : Formula
Rφ_in_cR : Rφ ∈ c.2
ℓ_in_Rφ : ℓ ∈ vocabOfFormula Rφ
Rφ_in_R : Rφ ∈ R
⊢ ∃ a ∈ R, ℓ ∈ vocabOfFormula a
Tactic:
use Rφ
Proof state after:
no goals
Theorem: localRuleApp_does_not_increase_vocab
Proof state before:
case right.right
C : List TNode
L R : Finset Formula
ruleA : LocalRuleApp (L, R) C
ress : List SubPair
Lcond Rcond : Finset Formula
rule : LocalRule (Lcond, Rcond) ress
hC : C = applyLocalRule rule (L, R)
preproof : Lcond ⊆ L ∧ Rcond ⊆ R
c : TNode
cinC : c ∈ C
ℓ : Char
ℓ_in_c : (∃ a ∈ c.1, ℓ ∈ vocabOfFormula a) ∧ ∃ a ∈ c.2, ℓ ∈ vocabOfFormula a
Rφ : Formula
Rφ_in_cR : Rφ ∈ c.2
ℓ_in_Rφ : ℓ ∈ vocabOfFormula Rφ
⊢ Rφ ∉ R → ∃ a ∈ R, ℓ ∈ vocabOfFormula a
Tactic:
intro not_Rφ_in_R
Proof state after:
case right.right
C : List TNode
L R : Finset Formula
ruleA : LocalRuleApp (L, R) C
ress : List SubPair
Lcond Rcond : Finset Formula
rule : LocalRule (Lcond, Rcond) ress
hC : C = applyLocalRule rule (L, R)
preproof : Lcond ⊆ L ∧ Rcond ⊆ R
c : TNode
cinC : c ∈ C
ℓ : Char
ℓ_in_c : (∃ a ∈ c.1, ℓ ∈ vocabOfFormula a) ∧ ∃ a ∈ c.2, ℓ ∈ vocabOfFormula a
Rφ : Formula
Rφ_in_cR : Rφ ∈ c.2
ℓ_in_Rφ : ℓ ∈ vocabOfFormula Rφ
not_Rφ_in_R : Rφ ∉ R
⊢ ∃ a ∈ R, ℓ ∈ vocabOfFormula a
Theorem: localRuleApp_does_not_increase_vocab
Proof state before:
case right.right
C : List TNode
L R : Finset Formula
ruleA : LocalRuleApp (L, R) C
ress : List SubPair
Lcond Rcond : Finset Formula
rule : LocalRule (Lcond, Rcond) ress
hC : C = applyLocalRule rule (L, R)
preproof : Lcond ⊆ L ∧ Rcond ⊆ R
c : TNode
cinC : c ∈ C
ℓ : Char
ℓ_in_c : (∃ a ∈ c.1, ℓ ∈ vocabOfFormula a) ∧ ∃ a ∈ c.2, ℓ ∈ vocabOfFormula a
Rφ : Formula
Rφ_in_cR : Rφ ∈ c.2
ℓ_in_Rφ : ℓ ∈ vocabOfFormula Rφ
not_Rφ_in_R : Rφ ∉ R
⊢ ∃ a ∈ R, ℓ ∈ vocabOfFormula a
Tactic:
have Rφ_in_res : ∃res ∈ ress, Rφ ∈ res.2 := by aesop
Proof state after:
case right.right
C : List TNode
L R : Finset Formula
ruleA : LocalRuleApp (L, R) C
ress : List SubPair
Lcond Rcond : Finset Formula
rule : LocalRule (Lcond, Rcond) ress
hC : C = applyLocalRule rule (L, R)
preproof : Lcond ⊆ L ∧ Rcond ⊆ R
c : TNode
cinC : c ∈ C
ℓ : Char
ℓ_in_c : (∃ a ∈ c.1, ℓ ∈ vocabOfFormula a) ∧ ∃ a ∈ c.2, ℓ ∈ vocabOfFormula a
Rφ : Formula
Rφ_in_cR : Rφ ∈ c.2
ℓ_in_Rφ : ℓ ∈ vocabOfFormula Rφ
not_Rφ_in_R : Rφ ∉ R
Rφ_in_res : ∃ res ∈ ress, Rφ ∈ res.2
⊢ ∃ a ∈ R, ℓ ∈ vocabOfFormula a
Theorem: localRuleApp_does_not_increase_vocab
Proof state before:
case right.right
C : List TNode
L R : Finset Formula
ruleA : LocalRuleApp (L, R) C
ress : List SubPair
Lcond Rcond : Finset Formula
rule : LocalRule (Lcond, Rcond) ress
hC : C = applyLocalRule rule (L, R)
preproof : Lcond ⊆ L ∧ Rcond ⊆ R
c : TNode
cinC : c ∈ C
ℓ : Char
ℓ_in_c : (∃ a ∈ c.1, ℓ ∈ vocabOfFormula a) ∧ ∃ a ∈ c.2, ℓ ∈ vocabOfFormula a
Rφ : Formula
Rφ_in_cR : Rφ ∈ c.2
ℓ_in_Rφ : ℓ ∈ vocabOfFormula Rφ
not_Rφ_in_R : Rφ ∉ R
Rφ_in_res : ∃ res ∈ ress, Rφ ∈ res.2
⊢ ∃ a ∈ R, ℓ ∈ vocabOfFormula a
Tactic:
let ⟨res, res_in_ress, Rφ_in_res_R⟩ := Rφ_in_res
Proof state after:
case right.right
C : List TNode
L R : Finset Formula
ruleA : LocalRuleApp (L, R) C
ress : List SubPair
Lcond Rcond : Finset Formula
rule : LocalRule (Lcond, Rcond) ress
hC : C = applyLocalRule rule (L, R)
preproof : Lcond ⊆ L ∧ Rcond ⊆ R
c : TNode
cinC : c ∈ C
ℓ : Char
ℓ_in_c : (∃ a ∈ c.1, ℓ ∈ vocabOfFormula a) ∧ ∃ a ∈ c.2, ℓ ∈ vocabOfFormula a
Rφ : Formula
Rφ_in_cR : Rφ ∈ c.2
ℓ_in_Rφ : ℓ ∈ vocabOfFormula Rφ
not_Rφ_in_R : Rφ ∉ R
Rφ_in_res : ∃ res ∈ ress, Rφ ∈ res.2
res : SubPair
res_in_ress : res ∈ ress
Rφ_in_res_R : Rφ ∈ res.2
⊢ ∃ a ∈ R, ℓ ∈ vocabOfFormula a
Theorem: localRuleApp_does_not_increase_vocab
Proof state before:
case right.right
C : List TNode
L R : Finset Formula
ruleA : LocalRuleApp (L, R) C
ress : List SubPair
Lcond Rcond : Finset Formula
rule : LocalRule (Lcond, Rcond) ress
hC : C = applyLocalRule rule (L, R)
preproof : Lcond ⊆ L ∧ Rcond ⊆ R
c : TNode
cinC : c ∈ C
ℓ : Char
ℓ_in_c : (∃ a ∈ c.1, ℓ ∈ vocabOfFormula a) ∧ ∃ a ∈ c.2, ℓ ∈ vocabOfFormula a
Rφ : Formula
Rφ_in_cR : Rφ ∈ c.2
ℓ_in_Rφ : ℓ ∈ vocabOfFormula Rφ
not_Rφ_in_R : Rφ ∉ R
Rφ_in_res : ∃ res ∈ ress, Rφ ∈ res.2
res : SubPair
res_in_ress : res ∈ ress
Rφ_in_res_R : Rφ ∈ res.2
⊢ ∃ a ∈ R, ℓ ∈ vocabOfFormula a
Tactic:
have ℓ_in_ψ_in_Rcond : ∃ψ ∈ Rcond, ℓ ∈ voc ψ := by
  let voc_res_ss_Rcond := localRule_does_not_increase_vocab_R rule res res_in_ress
  simp at voc_res_ss_Rcond
  let ℓ_in_voc_Rcond := voc_res_ss_Rcond Rφ Rφ_in_res_R ℓ_in_Rφ
  simp at ℓ_in_voc_Rcond
  exact ℓ_in_voc_Rcond
Proof state after:
case right.right
C : List TNode
L R : Finset Formula
ruleA : LocalRuleApp (L, R) C
ress : List SubPair
Lcond Rcond : Finset Formula
rule : LocalRule (Lcond, Rcond) ress
hC : C = applyLocalRule rule (L, R)
preproof : Lcond ⊆ L ∧ Rcond ⊆ R
c : TNode
cinC : c ∈ C
ℓ : Char
ℓ_in_c : (∃ a ∈ c.1, ℓ ∈ vocabOfFormula a) ∧ ∃ a ∈ c.2, ℓ ∈ vocabOfFormula a
Rφ : Formula
Rφ_in_cR : Rφ ∈ c.2
ℓ_in_Rφ : ℓ ∈ vocabOfFormula Rφ
not_Rφ_in_R : Rφ ∉ R
Rφ_in_res : ∃ res ∈ ress, Rφ ∈ res.2
res : SubPair
res_in_ress : res ∈ ress
Rφ_in_res_R : Rφ ∈ res.2
ℓ_in_ψ_in_Rcond : ∃ ψ ∈ Rcond, ℓ ∈ voc ψ
⊢ ∃ a ∈ R, ℓ ∈ vocabOfFormula a
Theorem: localRuleApp_does_not_increase_vocab
Proof state before:
case right.right
C : List TNode
L R : Finset Formula
ruleA : LocalRuleApp (L, R) C
ress : List SubPair
Lcond Rcond : Finset Formula
rule : LocalRule (Lcond, Rcond) ress
hC : C = applyLocalRule rule (L, R)
preproof : Lcond ⊆ L ∧ Rcond ⊆ R
c : TNode
cinC : c ∈ C
ℓ : Char
ℓ_in_c : (∃ a ∈ c.1, ℓ ∈ vocabOfFormula a) ∧ ∃ a ∈ c.2, ℓ ∈ vocabOfFormula a
Rφ : Formula
Rφ_in_cR : Rφ ∈ c.2
ℓ_in_Rφ : ℓ ∈ vocabOfFormula Rφ
not_Rφ_in_R : Rφ ∉ R
Rφ_in_res : ∃ res ∈ ress, Rφ ∈ res.2
res : SubPair
res_in_ress : res ∈ ress
Rφ_in_res_R : Rφ ∈ res.2
ℓ_in_ψ_in_Rcond : ∃ ψ ∈ Rcond, ℓ ∈ voc ψ
⊢ ∃ a ∈ R, ℓ ∈ vocabOfFormula a
Tactic:
let ⟨ψ, ψ_in_Rcond, ℓ_in_ψ⟩ := ℓ_in_ψ_in_Rcond
Proof state after:
case right.right
C : List TNode
L R : Finset Formula
ruleA : LocalRuleApp (L, R) C
ress : List SubPair
Lcond Rcond : Finset Formula
rule : LocalRule (Lcond, Rcond) ress
hC : C = applyLocalRule rule (L, R)
preproof : Lcond ⊆ L ∧ Rcond ⊆ R
c : TNode
cinC : c ∈ C
ℓ : Char
ℓ_in_c : (∃ a ∈ c.1, ℓ ∈ vocabOfFormula a) ∧ ∃ a ∈ c.2, ℓ ∈ vocabOfFormula a
Rφ : Formula
Rφ_in_cR : Rφ ∈ c.2
ℓ_in_Rφ : ℓ ∈ vocabOfFormula Rφ
not_Rφ_in_R : Rφ ∉ R
Rφ_in_res : ∃ res ∈ ress, Rφ ∈ res.2
res : SubPair
res_in_ress : res ∈ ress
Rφ_in_res_R : Rφ ∈ res.2
ℓ_in_ψ_in_Rcond : ∃ ψ ∈ Rcond, ℓ ∈ voc ψ
ψ : Formula
ψ_in_Rcond : ψ ∈ Rcond
ℓ_in_ψ : ℓ ∈ voc ψ
⊢ ∃ a ∈ R, ℓ ∈ vocabOfFormula a
Theorem: localRuleApp_does_not_increase_vocab
Proof state before:
case right.right
C : List TNode
L R : Finset Formula
ruleA : LocalRuleApp (L, R) C
ress : List SubPair
Lcond Rcond : Finset Formula
rule : LocalRule (Lcond, Rcond) ress
hC : C = applyLocalRule rule (L, R)
preproof : Lcond ⊆ L ∧ Rcond ⊆ R
c : TNode
cinC : c ∈ C
ℓ : Char
ℓ_in_c : (∃ a ∈ c.1, ℓ ∈ vocabOfFormula a) ∧ ∃ a ∈ c.2, ℓ ∈ vocabOfFormula a
Rφ : Formula
Rφ_in_cR : Rφ ∈ c.2
ℓ_in_Rφ : ℓ ∈ vocabOfFormula Rφ
not_Rφ_in_R : Rφ ∉ R
Rφ_in_res : ∃ res ∈ ress, Rφ ∈ res.2
res : SubPair
res_in_ress : res ∈ ress
Rφ_in_res_R : Rφ ∈ res.2
ℓ_in_ψ_in_Rcond : ∃ ψ ∈ Rcond, ℓ ∈ voc ψ
ψ : Formula
ψ_in_Rcond : ψ ∈ Rcond
ℓ_in_ψ : ℓ ∈ voc ψ
⊢ ∃ a ∈ R, ℓ ∈ vocabOfFormula a
Tactic:
use ψ, (by aesop), ℓ_in_ψ
Proof state after:
no goals
Theorem: localRuleApp_does_not_increase_vocab
Proof state before:
C : List TNode
L R : Finset Formula
ruleA : LocalRuleApp (L, R) C
ress : List SubPair
Lcond Rcond : Finset Formula
rule : LocalRule (Lcond, Rcond) ress
hC : C = applyLocalRule rule (L, R)
preproof : Lcond ⊆ L ∧ Rcond ⊆ R
c : TNode
cinC : c ∈ C
ℓ : Char
ℓ_in_c : (∃ a ∈ c.1, ℓ ∈ vocabOfFormula a) ∧ ∃ a ∈ c.2, ℓ ∈ vocabOfFormula a
Rφ : Formula
Rφ_in_cR : Rφ ∈ c.2
ℓ_in_Rφ : ℓ ∈ vocabOfFormula Rφ
not_Rφ_in_R : Rφ ∉ R
⊢ ∃ res ∈ ress, Rφ ∈ res.2
Tactic:
aesop
Proof state after:
no goals
Theorem: localRuleApp_does_not_increase_vocab
Proof state before:
C : List TNode
L R : Finset Formula
ruleA : LocalRuleApp (L, R) C
ress : List SubPair
Lcond Rcond : Finset Formula
rule : LocalRule (Lcond, Rcond) ress
hC : C = applyLocalRule rule (L, R)
preproof : Lcond ⊆ L ∧ Rcond ⊆ R
c : TNode
cinC : c ∈ C
ℓ : Char
ℓ_in_c : (∃ a ∈ c.1, ℓ ∈ vocabOfFormula a) ∧ ∃ a ∈ c.2, ℓ ∈ vocabOfFormula a
Rφ : Formula
Rφ_in_cR : Rφ ∈ c.2
ℓ_in_Rφ : ℓ ∈ vocabOfFormula Rφ
not_Rφ_in_R : Rφ ∉ R
Rφ_in_res : ∃ res ∈ ress, Rφ ∈ res.2
res : SubPair
res_in_ress : res ∈ ress
Rφ_in_res_R : Rφ ∈ res.2
⊢ ∃ ψ ∈ Rcond, ℓ ∈ voc ψ
Tactic:
let voc_res_ss_Rcond := localRule_does_not_increase_vocab_R rule res res_in_ress
Proof state after:
C : List TNode
L R : Finset Formula
ruleA : LocalRuleApp (L, R) C
ress : List SubPair
Lcond Rcond : Finset Formula
rule : LocalRule (Lcond, Rcond) ress
hC : C = applyLocalRule rule (L, R)
preproof : Lcond ⊆ L ∧ Rcond ⊆ R
c : TNode
cinC : c ∈ C
ℓ : Char
ℓ_in_c : (∃ a ∈ c.1, ℓ ∈ vocabOfFormula a) ∧ ∃ a ∈ c.2, ℓ ∈ vocabOfFormula a
Rφ : Formula
Rφ_in_cR : Rφ ∈ c.2
ℓ_in_Rφ : ℓ ∈ vocabOfFormula Rφ
not_Rφ_in_R : Rφ ∉ R
Rφ_in_res : ∃ res ∈ ress, Rφ ∈ res.2
res : SubPair
res_in_ress : res ∈ ress
Rφ_in_res_R : Rφ ∈ res.2
voc_res_ss_Rcond : voc res.2 ⊆ voc Rcond := localRule_does_not_increase_vocab_R rule res res_in_ress
⊢ ∃ ψ ∈ Rcond, ℓ ∈ voc ψ
Theorem: localRuleApp_does_not_increase_vocab
Proof state before:
C : List TNode
L R : Finset Formula
ruleA : LocalRuleApp (L, R) C
ress : List SubPair
Lcond Rcond : Finset Formula
rule : LocalRule (Lcond, Rcond) ress
hC : C = applyLocalRule rule (L, R)
preproof : Lcond ⊆ L ∧ Rcond ⊆ R
c : TNode
cinC : c ∈ C
ℓ : Char
ℓ_in_c : (∃ a ∈ c.1, ℓ ∈ vocabOfFormula a) ∧ ∃ a ∈ c.2, ℓ ∈ vocabOfFormula a
Rφ : Formula
Rφ_in_cR : Rφ ∈ c.2
ℓ_in_Rφ : ℓ ∈ vocabOfFormula Rφ
not_Rφ_in_R : Rφ ∉ R
Rφ_in_res : ∃ res ∈ ress, Rφ ∈ res.2
res : SubPair
res_in_ress : res ∈ ress
Rφ_in_res_R : Rφ ∈ res.2
voc_res_ss_Rcond : voc res.2 ⊆ voc Rcond := localRule_does_not_increase_vocab_R rule res res_in_ress
⊢ ∃ ψ ∈ Rcond, ℓ ∈ voc ψ
Tactic:
simp at voc_res_ss_Rcond
Proof state after:
C : List TNode
L R : Finset Formula
ruleA : LocalRuleApp (L, R) C
ress : List SubPair
Lcond Rcond : Finset Formula
rule : LocalRule (Lcond, Rcond) ress
hC : C = applyLocalRule rule (L, R)
preproof : Lcond ⊆ L ∧ Rcond ⊆ R
c : TNode
cinC : c ∈ C
ℓ : Char
ℓ_in_c : (∃ a ∈ c.1, ℓ ∈ vocabOfFormula a) ∧ ∃ a ∈ c.2, ℓ ∈ vocabOfFormula a
Rφ : Formula
Rφ_in_cR : Rφ ∈ c.2
ℓ_in_Rφ : ℓ ∈ vocabOfFormula Rφ
not_Rφ_in_R : Rφ ∉ R
Rφ_in_res : ∃ res ∈ ress, Rφ ∈ res.2
res : SubPair
res_in_ress : res ∈ ress
Rφ_in_res_R : Rφ ∈ res.2
voc_res_ss_Rcond : ∀ x ∈ res.2, vocabOfFormula x ⊆ Rcond.biUnion vocabOfFormula
⊢ ∃ ψ ∈ Rcond, ℓ ∈ voc ψ
Theorem: localRuleApp_does_not_increase_vocab
Proof state before:
C : List TNode
L R : Finset Formula
ruleA : LocalRuleApp (L, R) C
ress : List SubPair
Lcond Rcond : Finset Formula
rule : LocalRule (Lcond, Rcond) ress
hC : C = applyLocalRule rule (L, R)
preproof : Lcond ⊆ L ∧ Rcond ⊆ R
c : TNode
cinC : c ∈ C
ℓ : Char
ℓ_in_c : (∃ a ∈ c.1, ℓ ∈ vocabOfFormula a) ∧ ∃ a ∈ c.2, ℓ ∈ vocabOfFormula a
Rφ : Formula
Rφ_in_cR : Rφ ∈ c.2
ℓ_in_Rφ : ℓ ∈ vocabOfFormula Rφ
not_Rφ_in_R : Rφ ∉ R
Rφ_in_res : ∃ res ∈ ress, Rφ ∈ res.2
res : SubPair
res_in_ress : res ∈ ress
Rφ_in_res_R : Rφ ∈ res.2
voc_res_ss_Rcond : ∀ x ∈ res.2, vocabOfFormula x ⊆ Rcond.biUnion vocabOfFormula
⊢ ∃ ψ ∈ Rcond, ℓ ∈ voc ψ
Tactic:
let ℓ_in_voc_Rcond := voc_res_ss_Rcond Rφ Rφ_in_res_R ℓ_in_Rφ
Proof state after:
C : List TNode
L R : Finset Formula
ruleA : LocalRuleApp (L, R) C
ress : List SubPair
Lcond Rcond : Finset Formula
rule : LocalRule (Lcond, Rcond) ress
hC : C = applyLocalRule rule (L, R)
preproof : Lcond ⊆ L ∧ Rcond ⊆ R
c : TNode
cinC : c ∈ C
ℓ : Char
ℓ_in_c : (∃ a ∈ c.1, ℓ ∈ vocabOfFormula a) ∧ ∃ a ∈ c.2, ℓ ∈ vocabOfFormula a
Rφ : Formula
Rφ_in_cR : Rφ ∈ c.2
ℓ_in_Rφ : ℓ ∈ vocabOfFormula Rφ
not_Rφ_in_R : Rφ ∉ R
Rφ_in_res : ∃ res ∈ ress, Rφ ∈ res.2
res : SubPair
res_in_ress : res ∈ ress
Rφ_in_res_R : Rφ ∈ res.2
voc_res_ss_Rcond : ∀ x ∈ res.2, vocabOfFormula x ⊆ Rcond.biUnion vocabOfFormula
ℓ_in_voc_Rcond : ℓ ∈ Rcond.biUnion vocabOfFormula := voc_res_ss_Rcond Rφ Rφ_in_res_R ℓ_in_Rφ
⊢ ∃ ψ ∈ Rcond, ℓ ∈ voc ψ
Theorem: localRuleApp_does_not_increase_vocab
Proof state before:
C : List TNode
L R : Finset Formula
ruleA : LocalRuleApp (L, R) C
ress : List SubPair
Lcond Rcond : Finset Formula
rule : LocalRule (Lcond, Rcond) ress
hC : C = applyLocalRule rule (L, R)
preproof : Lcond ⊆ L ∧ Rcond ⊆ R
c : TNode
cinC : c ∈ C
ℓ : Char
ℓ_in_c : (∃ a ∈ c.1, ℓ ∈ vocabOfFormula a) ∧ ∃ a ∈ c.2, ℓ ∈ vocabOfFormula a
Rφ : Formula
Rφ_in_cR : Rφ ∈ c.2
ℓ_in_Rφ : ℓ ∈ vocabOfFormula Rφ
not_Rφ_in_R : Rφ ∉ R
Rφ_in_res : ∃ res ∈ ress, Rφ ∈ res.2
res : SubPair
res_in_ress : res ∈ ress
Rφ_in_res_R : Rφ ∈ res.2
voc_res_ss_Rcond : ∀ x ∈ res.2, vocabOfFormula x ⊆ Rcond.biUnion vocabOfFormula
ℓ_in_voc_Rcond : ℓ ∈ Rcond.biUnion vocabOfFormula := voc_res_ss_Rcond Rφ Rφ_in_res_R ℓ_in_Rφ
⊢ ∃ ψ ∈ Rcond, ℓ ∈ voc ψ
Tactic:
simp at ℓ_in_voc_Rcond
Proof state after:
C : List TNode
L R : Finset Formula
ruleA : LocalRuleApp (L, R) C
ress : List SubPair
Lcond Rcond : Finset Formula
rule : LocalRule (Lcond, Rcond) ress
hC : C = applyLocalRule rule (L, R)
preproof : Lcond ⊆ L ∧ Rcond ⊆ R
c : TNode
cinC : c ∈ C
ℓ : Char
ℓ_in_c : (∃ a ∈ c.1, ℓ ∈ vocabOfFormula a) ∧ ∃ a ∈ c.2, ℓ ∈ vocabOfFormula a
Rφ : Formula
Rφ_in_cR : Rφ ∈ c.2
ℓ_in_Rφ : ℓ ∈ vocabOfFormula Rφ
not_Rφ_in_R : Rφ ∉ R
Rφ_in_res : ∃ res ∈ ress, Rφ ∈ res.2
res : SubPair
res_in_ress : res ∈ ress
Rφ_in_res_R : Rφ ∈ res.2
voc_res_ss_Rcond : ∀ x ∈ res.2, vocabOfFormula x ⊆ Rcond.biUnion vocabOfFormula
ℓ_in_voc_Rcond : ∃ a ∈ Rcond, ℓ ∈ vocabOfFormula a
⊢ ∃ ψ ∈ Rcond, ℓ ∈ voc ψ
Theorem: localRuleApp_does_not_increase_vocab
Proof state before:
C : List TNode
L R : Finset Formula
ruleA : LocalRuleApp (L, R) C
ress : List SubPair
Lcond Rcond : Finset Formula
rule : LocalRule (Lcond, Rcond) ress
hC : C = applyLocalRule rule (L, R)
preproof : Lcond ⊆ L ∧ Rcond ⊆ R
c : TNode
cinC : c ∈ C
ℓ : Char
ℓ_in_c : (∃ a ∈ c.1, ℓ ∈ vocabOfFormula a) ∧ ∃ a ∈ c.2, ℓ ∈ vocabOfFormula a
Rφ : Formula
Rφ_in_cR : Rφ ∈ c.2
ℓ_in_Rφ : ℓ ∈ vocabOfFormula Rφ
not_Rφ_in_R : Rφ ∉ R
Rφ_in_res : ∃ res ∈ ress, Rφ ∈ res.2
res : SubPair
res_in_ress : res ∈ ress
Rφ_in_res_R : Rφ ∈ res.2
voc_res_ss_Rcond : ∀ x ∈ res.2, vocabOfFormula x ⊆ Rcond.biUnion vocabOfFormula
ℓ_in_voc_Rcond : ∃ a ∈ Rcond, ℓ ∈ vocabOfFormula a
⊢ ∃ ψ ∈ Rcond, ℓ ∈ voc ψ
Tactic:
exact ℓ_in_voc_Rcond
Proof state after:
no goals
Theorem: localRuleApp_does_not_increase_vocab
Proof state before:
C : List TNode
L R : Finset Formula
ruleA : LocalRuleApp (L, R) C
ress : List SubPair
Lcond Rcond : Finset Formula
rule : LocalRule (Lcond, Rcond) ress
hC : C = applyLocalRule rule (L, R)
preproof : Lcond ⊆ L ∧ Rcond ⊆ R
c : TNode
cinC : c ∈ C
ℓ : Char
ℓ_in_c : (∃ a ∈ c.1, ℓ ∈ vocabOfFormula a) ∧ ∃ a ∈ c.2, ℓ ∈ vocabOfFormula a
Rφ : Formula
Rφ_in_cR : Rφ ∈ c.2
ℓ_in_Rφ : ℓ ∈ vocabOfFormula Rφ
not_Rφ_in_R : Rφ ∉ R
Rφ_in_res : ∃ res ∈ ress, Rφ ∈ res.2
res : SubPair
res_in_ress : res ∈ ress
Rφ_in_res_R : Rφ ∈ res.2
ℓ_in_ψ_in_Rcond : ∃ ψ ∈ Rcond, ℓ ∈ voc ψ
ψ : Formula
ψ_in_Rcond : ψ ∈ Rcond
ℓ_in_ψ : ℓ ∈ voc ψ
⊢ ψ ∈ R
Tactic:
aesop
Proof state after:
no goals
Theorem: LocalRuleUniqueL
Proof state before:
α : Formula
L R : Finset Formula
C : List TNode
precond : Finset Formula
ress : List (Finset Formula)
α_in_L : α ∈ L
lrApp : LocalRuleApp (L, R) C
orule : OneSidedLocalRule precond ress
precond_eq : precond = {α}
⊢ ∀ c ∈ C, α ∈ c.1 ∨ ∃ res ∈ ress, res ⊆ c.1
Tactic:
intro c c_in
Proof state after:
α : Formula
L R : Finset Formula
C : List TNode
precond : Finset Formula
ress : List (Finset Formula)
α_in_L : α ∈ L
lrApp : LocalRuleApp (L, R) C
orule : OneSidedLocalRule precond ress
precond_eq : precond = {α}
c : TNode
c_in : c ∈ C
⊢ α ∈ c.1 ∨ ∃ res ∈ ress, res ⊆ c.1