internlm/Lean-Github huggingface dataset:
Theorem: oneSidedRule_preserves_other_side_R
Proof state before:
L R : Finset Formula
C : List TNode
snd✝ : Finset Formula
a✝ : List (Finset Formula)
rule : LocalRule (∅, snd✝) (List.map (fun res => (∅, res)) a✝)
hC : C = applyLocalRule rule (L, R)
preproof : ∅ ⊆ L ∧ snd✝ ⊆ R
orule : OneSidedLocalRule snd✝ a✝
ruleApp : LocalRuleApp (L, R) C
hmyrule : ruleApp = LocalRuleApp.mk (List.map (fun res => (∅, res)) a✝) ∅ snd✝ rule preproof
rule_is_right : rule = LocalRule.oneSidedR orule
⊢ ∀ c ∈ C, c.1 = L
Tactic:
aesop
Proof state after:
no goals
Theorem: localRule_does_not_increase_vocab_L
Proof state before:
Lcond Rcond : Finset Formula
ress : List SubPair
rule : LocalRule (Lcond, Rcond) ress
⊢ ∀ res ∈ ress, voc res.1 ⊆ voc Lcond
Tactic:
intro res ress_in_ress ℓ ℓ_in_res
Proof state after:
Lcond Rcond : Finset Formula
ress : List SubPair
rule : LocalRule (Lcond, Rcond) ress
res : SubPair
ress_in_ress : res ∈ ress
ℓ : Char
ℓ_in_res : ℓ ∈ voc res.1
⊢ ℓ ∈ voc Lcond
Theorem: localRule_does_not_increase_vocab_L
Proof state before:
Lcond Rcond : Finset Formula
ress : List SubPair
rule : LocalRule (Lcond, Rcond) ress
res : SubPair
ress_in_ress : res ∈ ress
ℓ : Char
ℓ_in_res : ℓ ∈ voc res.1
⊢ ℓ ∈ voc Lcond
Tactic:
cases rule
Proof state after:
case oneSidedL
Lcond : Finset Formula
res : SubPair
ℓ : Char
ℓ_in_res : ℓ ∈ voc res.1
ress✝ : List (Finset Formula)
orule✝ : OneSidedLocalRule Lcond ress✝
ress_in_ress : res ∈ List.map (fun res => (res, ∅)) ress✝
⊢ ℓ ∈ voc Lcond

case oneSidedR
Rcond : Finset Formula
res : SubPair
ℓ : Char
ℓ_in_res : ℓ ∈ voc res.1
ress✝ : List (Finset Formula)
orule✝ : OneSidedLocalRule Rcond ress✝
ress_in_ress : res ∈ List.map (fun res => (∅, res)) ress✝
⊢ ℓ ∈ voc ∅

case LRnegL
res : SubPair
ℓ : Char
ℓ_in_res : ℓ ∈ voc res.1
ϕ✝ : Formula
ress_in_ress : res ∈ ∅
⊢ ℓ ∈ voc {ϕ✝}

case LRnegR
res : SubPair
ℓ : Char
ℓ_in_res : ℓ ∈ voc res.1
ϕ✝ : Formula
ress_in_ress : res ∈ ∅
⊢ ℓ ∈ voc {~ϕ✝}
Theorem: localRule_does_not_increase_vocab_L
Proof state before:
Lcond : Finset Formula
res : SubPair
ℓ : Char
ℓ_in_res : ℓ ∈ voc res.1
ress : List (Finset Formula)
orule : OneSidedLocalRule Lcond ress
ress_in_ress : res ∈ List.map (fun res => (res, ∅)) ress
⊢ ℓ ∈ voc Lcond
Tactic:
case oneSidedL ress orule => cases orule <;> aesop
Proof state after:
no goals
Theorem: localRule_does_not_increase_vocab_L
Proof state before:
case oneSidedR
Rcond : Finset Formula
res : SubPair
ℓ : Char
ℓ_in_res : ℓ ∈ voc res.1
ress✝ : List (Finset Formula)
orule✝ : OneSidedLocalRule Rcond ress✝
ress_in_ress : res ∈ List.map (fun res => (∅, res)) ress✝
⊢ ℓ ∈ voc ∅

case LRnegL
res : SubPair
ℓ : Char
ℓ_in_res : ℓ ∈ voc res.1
ϕ✝ : Formula
ress_in_ress : res ∈ ∅
⊢ ℓ ∈ voc {ϕ✝}

case LRnegR
res : SubPair
ℓ : Char
ℓ_in_res : ℓ ∈ voc res.1
ϕ✝ : Formula
ress_in_ress : res ∈ ∅
⊢ ℓ ∈ voc {~ϕ✝}
Tactic:
all_goals aesop
Proof state after:
no goals
Theorem: localRule_does_not_increase_vocab_L
Proof state before:
Lcond : Finset Formula
res : SubPair
ℓ : Char
ℓ_in_res : ℓ ∈ voc res.1
ress : List (Finset Formula)
orule : OneSidedLocalRule Lcond ress
ress_in_ress : res ∈ List.map (fun res => (res, ∅)) ress
⊢ ℓ ∈ voc Lcond
Tactic:
cases orule <;> aesop
Proof state after:
no goals
Theorem: localRule_does_not_increase_vocab_L
Proof state before:
case LRnegR
res : SubPair
ℓ : Char
ℓ_in_res : ℓ ∈ voc res.1
ϕ✝ : Formula
ress_in_ress : res ∈ ∅
⊢ ℓ ∈ voc {~ϕ✝}
Tactic:
aesop
Proof state after:
no goals
Theorem: localRule_does_not_increase_vocab_R
Proof state before:
Lcond Rcond : Finset Formula
ress : List SubPair
rule : LocalRule (Lcond, Rcond) ress
⊢ ∀ res ∈ ress, voc res.2 ⊆ voc Rcond
Tactic:
intro res ress_in_ress ℓ ℓ_in_res
Proof state after:
Lcond Rcond : Finset Formula
ress : List SubPair
rule : LocalRule (Lcond, Rcond) ress
res : SubPair
ress_in_ress : res ∈ ress
ℓ : Char
ℓ_in_res : ℓ ∈ voc res.2
⊢ ℓ ∈ voc Rcond
Theorem: localRule_does_not_increase_vocab_R
Proof state before:
Lcond Rcond : Finset Formula
ress : List SubPair
rule : LocalRule (Lcond, Rcond) ress
res : SubPair
ress_in_ress : res ∈ ress
ℓ : Char
ℓ_in_res : ℓ ∈ voc res.2
⊢ ℓ ∈ voc Rcond
Tactic:
cases rule
Proof state after:
case oneSidedL
Lcond : Finset Formula
res : SubPair
ℓ : Char
ℓ_in_res : ℓ ∈ voc res.2
ress✝ : List (Finset Formula)
orule✝ : OneSidedLocalRule Lcond ress✝
ress_in_ress : res ∈ List.map (fun res => (res, ∅)) ress✝
⊢ ℓ ∈ voc ∅

case oneSidedR
Rcond : Finset Formula
res : SubPair
ℓ : Char
ℓ_in_res : ℓ ∈ voc res.2
ress✝ : List (Finset Formula)
orule✝ : OneSidedLocalRule Rcond ress✝
ress_in_ress : res ∈ List.map (fun res => (∅, res)) ress✝
⊢ ℓ ∈ voc Rcond

case LRnegL
res : SubPair
ℓ : Char
ℓ_in_res : ℓ ∈ voc res.2
ϕ✝ : Formula
ress_in_ress : res ∈ ∅
⊢ ℓ ∈ voc {~ϕ✝}

case LRnegR
res : SubPair
ℓ : Char
ℓ_in_res : ℓ ∈ voc res.2
ϕ✝ : Formula
ress_in_ress : res ∈ ∅
⊢ ℓ ∈ voc {ϕ✝}
Theorem: localRule_does_not_increase_vocab_R
Proof state before:
Rcond : Finset Formula
res : SubPair
ℓ : Char
ℓ_in_res : ℓ ∈ voc res.2
ress : List (Finset Formula)
orule : OneSidedLocalRule Rcond ress
ress_in_ress : res ∈ List.map (fun res => (∅, res)) ress
⊢ ℓ ∈ voc Rcond
Tactic:
case oneSidedR ress orule => cases orule <;> aesop
Proof state after:
no goals
Theorem: localRule_does_not_increase_vocab_R
Proof state before:
case oneSidedL
Lcond : Finset Formula
res : SubPair
ℓ : Char
ℓ_in_res : ℓ ∈ voc res.2
ress✝ : List (Finset Formula)
orule✝ : OneSidedLocalRule Lcond ress✝
ress_in_ress : res ∈ List.map (fun res => (res, ∅)) ress✝
⊢ ℓ ∈ voc ∅

case LRnegL
res : SubPair
ℓ : Char
ℓ_in_res : ℓ ∈ voc res.2
ϕ✝ : Formula
ress_in_ress : res ∈ ∅
⊢ ℓ ∈ voc {~ϕ✝}

case LRnegR
res : SubPair
ℓ : Char
ℓ_in_res : ℓ ∈ voc res.2
ϕ✝ : Formula
ress_in_ress : res ∈ ∅
⊢ ℓ ∈ voc {ϕ✝}
Tactic:
all_goals aesop
Proof state after:
no goals
Theorem: localRule_does_not_increase_vocab_R
Proof state before:
Rcond : Finset Formula
res : SubPair
ℓ : Char
ℓ_in_res : ℓ ∈ voc res.2
ress : List (Finset Formula)
orule : OneSidedLocalRule Rcond ress
ress_in_ress : res ∈ List.map (fun res => (∅, res)) ress
⊢ ℓ ∈ voc Rcond
Tactic:
cases orule <;> aesop
Proof state after:
no goals
Theorem: localRule_does_not_increase_vocab_R
Proof state before:
case LRnegR
res : SubPair
ℓ : Char
ℓ_in_res : ℓ ∈ voc res.2
ϕ✝ : Formula
ress_in_ress : res ∈ ∅
⊢ ℓ ∈ voc {ϕ✝}
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
⊢ ∀ cLR ∈ C, jvoc cLR ⊆ jvoc (L, R)
Tactic:
intro c cinC ℓ ℓ_in_c
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 : ℓ ∈ jvoc c
⊢ ℓ ∈ jvoc (L, R)
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 : ℓ ∈ jvoc c
⊢ ℓ ∈ jvoc (L, R)
Tactic:
simp at ℓ_in_c
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
⊢ ℓ ∈ jvoc (L, R)
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
⊢ ℓ ∈ jvoc (L, R)
Tactic:
simp
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
⊢ (∃ a ∈ L, ℓ ∈ vocabOfFormula a) ∧ ∃ a ∈ R, ℓ ∈ vocabOfFormula a
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
⊢ (∃ a ∈ L, ℓ ∈ vocabOfFormula a) ∧ ∃ a ∈ R, ℓ ∈ vocabOfFormula a
Tactic:
constructor
Proof state after:
case 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
⊢ ∃ a ∈ L, ℓ ∈ vocabOfFormula a

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
Theorem: localRuleApp_does_not_increase_vocab
Proof state before:
case 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
⊢ ∃ a ∈ L, ℓ ∈ vocabOfFormula a
Tactic:
have ⟨Lφ,Lφ_in_cL, ℓ_in_Lφ⟩ := ℓ_in_c.left
Proof state after:
case 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
Lφ : Formula
Lφ_in_cL : Lφ ∈ c.1
ℓ_in_Lφ : ℓ ∈ vocabOfFormula Lφ
⊢ ∃ a ∈ L, ℓ ∈ vocabOfFormula a
Theorem: localRuleApp_does_not_increase_vocab
Proof state before:
case 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
Lφ : Formula
Lφ_in_cL : Lφ ∈ c.1
ℓ_in_Lφ : ℓ ∈ vocabOfFormula Lφ
⊢ ∃ a ∈ L, ℓ ∈ vocabOfFormula a
Tactic:
apply Or.elim (em (Lφ ∈ L))
Proof state after:
case left.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
Lφ : Formula
Lφ_in_cL : Lφ ∈ c.1
ℓ_in_Lφ : ℓ ∈ vocabOfFormula Lφ
⊢ Lφ ∈ L → ∃ a ∈ L, ℓ ∈ vocabOfFormula a

case left.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
Lφ : Formula
Lφ_in_cL : Lφ ∈ c.1
ℓ_in_Lφ : ℓ ∈ vocabOfFormula Lφ
⊢ Lφ ∉ L → ∃ a ∈ L, ℓ ∈ vocabOfFormula a
Theorem: localRuleApp_does_not_increase_vocab
Proof state before:
case left.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
Lφ : Formula
Lφ_in_cL : Lφ ∈ c.1
ℓ_in_Lφ : ℓ ∈ vocabOfFormula Lφ
⊢ Lφ ∈ L → ∃ a ∈ L, ℓ ∈ vocabOfFormula a
Tactic:
intro Lφ_in_L
Proof state after:
case left.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
Lφ : Formula
Lφ_in_cL : Lφ ∈ c.1
ℓ_in_Lφ : ℓ ∈ vocabOfFormula Lφ
Lφ_in_L : Lφ ∈ L
⊢ ∃ a ∈ L, ℓ ∈ vocabOfFormula a
Theorem: localRuleApp_does_not_increase_vocab
Proof state before:
case left.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
Lφ : Formula
Lφ_in_cL : Lφ ∈ c.1
ℓ_in_Lφ : ℓ ∈ vocabOfFormula Lφ
Lφ_in_L : Lφ ∈ L
⊢ ∃ a ∈ L, ℓ ∈ vocabOfFormula a
Tactic:
use Lφ
Proof state after:
no goals
Theorem: localRuleApp_does_not_increase_vocab
Proof state before:
case left.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
Lφ : Formula
Lφ_in_cL : Lφ ∈ c.1
ℓ_in_Lφ : ℓ ∈ vocabOfFormula Lφ
⊢ Lφ ∉ L → ∃ a ∈ L, ℓ ∈ vocabOfFormula a
Tactic:
intro not_Lφ_in_L
Proof state after:
case left.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
Lφ : Formula
Lφ_in_cL : Lφ ∈ c.1
ℓ_in_Lφ : ℓ ∈ vocabOfFormula Lφ
not_Lφ_in_L : Lφ ∉ L
⊢ ∃ a ∈ L, ℓ ∈ vocabOfFormula a
Theorem: localRuleApp_does_not_increase_vocab
Proof state before:
case left.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
Lφ : Formula
Lφ_in_cL : Lφ ∈ c.1
ℓ_in_Lφ : ℓ ∈ vocabOfFormula Lφ
not_Lφ_in_L : Lφ ∉ L
⊢ ∃ a ∈ L, ℓ ∈ vocabOfFormula a
Tactic:
have Lφ_in_res : ∃res ∈ ress, Lφ ∈ res.1 := by aesop
Proof state after:
case left.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
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
⊢ ∃ a ∈ L, ℓ ∈ vocabOfFormula a
Theorem: localRuleApp_does_not_increase_vocab
Proof state before:
case left.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
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
⊢ ∃ a ∈ L, ℓ ∈ vocabOfFormula a
Tactic:
let ⟨res, res_in_ress, Lφ_in_res_L⟩ := Lφ_in_res
Proof state after:
case left.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
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
⊢ ∃ a ∈ L, ℓ ∈ vocabOfFormula a
Theorem: localRuleApp_does_not_increase_vocab
Proof state before:
case left.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
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
⊢ ∃ a ∈ L, ℓ ∈ vocabOfFormula a
Tactic:
have ℓ_in_ψ_in_Lcond : ∃ψ ∈ Lcond, ℓ ∈ voc ψ := by
  let voc_res_ss_Lcond := localRule_does_not_increase_vocab_L rule res res_in_ress
  simp at voc_res_ss_Lcond
  let ℓ_in_voc_Lcond := voc_res_ss_Lcond Lφ Lφ_in_res_L ℓ_in_Lφ
  simp at ℓ_in_voc_Lcond
  exact ℓ_in_voc_Lcond
Proof state after:
case left.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
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 ψ
⊢ ∃ a ∈ L, ℓ ∈ vocabOfFormula a
Theorem: localRuleApp_does_not_increase_vocab
Proof state before:
case left.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
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 ψ
⊢ ∃ a ∈ L, ℓ ∈ vocabOfFormula a
Tactic:
let ⟨ψ, ψ_in_Lcond, ℓ_in_ψ⟩ := ℓ_in_ψ_in_Lcond
Proof state after:
case left.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
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 ψ
⊢ ∃ a ∈ L, ℓ ∈ vocabOfFormula a
Theorem: localRuleApp_does_not_increase_vocab
Proof state before:
case left.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
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 ψ
⊢ ∃ a ∈ L, ℓ ∈ 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
Lφ : Formula
Lφ_in_cL : Lφ ∈ c.1
ℓ_in_Lφ : ℓ ∈ vocabOfFormula Lφ
not_Lφ_in_L : Lφ ∉ L
⊢ ∃ res ∈ ress, Lφ ∈ res.1
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
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
⊢ ∃ ψ ∈ Lcond, ℓ ∈ voc ψ
Tactic:
let voc_res_ss_Lcond := localRule_does_not_increase_vocab_L 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
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 : voc res.1 ⊆ voc Lcond := localRule_does_not_increase_vocab_L rule res res_in_ress
⊢ ∃ ψ ∈ 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 : voc res.1 ⊆ voc Lcond := localRule_does_not_increase_vocab_L rule res res_in_ress
⊢ ∃ ψ ∈ Lcond, ℓ ∈ voc ψ
Tactic:
simp at voc_res_ss_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
⊢ ∃ ψ ∈ Lcond, ℓ ∈ voc ψ