internlm/Lean-Github huggingface dataset:
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 : TNode
c_in : c ∈ C
⊢ α ∈ c.1 ∨ ∃ res ∈ ress, res ⊆ c.1
Tactic:
rcases lrApp with ⟨ress', Lcond', Rcond', lr', L_cond_in, R_cond_in⟩
Proof state after:
case mk.intro
α : Formula
L R : Finset Formula
C : List TNode
precond : Finset Formula
ress : List (Finset Formula)
α_in_L : α ∈ L
orule : OneSidedLocalRule precond ress
precond_eq : precond = {α}
c : TNode
c_in : c ∈ C
ress' : List SubPair
Lcond' Rcond' : Finset Formula
lr' : LocalRule (Lcond', Rcond') ress'
hC✝ : C = applyLocalRule lr' (L, R)
L_cond_in : Lcond' ⊆ L
R_cond_in : Rcond' ⊆ R
⊢ α ∈ c.1 ∨ ∃ res ∈ ress, res ⊆ c.1
Theorem: LocalRuleUniqueL
Proof state before:
case mk.intro
α : Formula
L R : Finset Formula
C : List TNode
precond : Finset Formula
ress : List (Finset Formula)
α_in_L : α ∈ L
orule : OneSidedLocalRule precond ress
precond_eq : precond = {α}
c : TNode
c_in : c ∈ C
ress' : List SubPair
Lcond' Rcond' : Finset Formula
lr' : LocalRule (Lcond', Rcond') ress'
hC✝ : C = applyLocalRule lr' (L, R)
L_cond_in : Lcond' ⊆ L
R_cond_in : Rcond' ⊆ R
⊢ α ∈ c.1 ∨ ∃ res ∈ ress, res ⊆ c.1
Tactic:
rename_i C_eq
Proof state after:
case mk.intro
α : Formula
L R : Finset Formula
C : List TNode
precond : Finset Formula
ress : List (Finset Formula)
α_in_L : α ∈ L
orule : OneSidedLocalRule precond ress
precond_eq : precond = {α}
c : TNode
c_in : c ∈ C
ress' : List SubPair
Lcond' Rcond' : Finset Formula
lr' : LocalRule (Lcond', Rcond') ress'
C_eq : C = applyLocalRule lr' (L, R)
L_cond_in : Lcond' ⊆ L
R_cond_in : Rcond' ⊆ R
⊢ α ∈ c.1 ∨ ∃ res ∈ ress, res ⊆ c.1
Theorem: LocalRuleUniqueL
Proof state before:
case mk.intro
α : Formula
L R : Finset Formula
C : List TNode
precond : Finset Formula
ress : List (Finset Formula)
α_in_L : α ∈ L
orule : OneSidedLocalRule precond ress
precond_eq : precond = {α}
c : TNode
c_in : c ∈ C
ress' : List SubPair
Lcond' Rcond' : Finset Formula
lr' : LocalRule (Lcond', Rcond') ress'
C_eq : C = applyLocalRule lr' (L, R)
L_cond_in : Lcond' ⊆ L
R_cond_in : Rcond' ⊆ R
⊢ α ∈ c.1 ∨ ∃ res ∈ ress, res ⊆ c.1
Tactic:
subst C_eq
Proof state after:
case mk.intro
α : Formula
L R precond : Finset Formula
ress : List (Finset Formula)
α_in_L : α ∈ L
orule : OneSidedLocalRule precond ress
precond_eq : precond = {α}
c : TNode
ress' : List SubPair
Lcond' Rcond' : Finset Formula
lr' : LocalRule (Lcond', Rcond') ress'
L_cond_in : Lcond' ⊆ L
R_cond_in : Rcond' ⊆ R
c_in : c ∈ applyLocalRule lr' (L, R)
⊢ α ∈ c.1 ∨ ∃ res ∈ ress, res ⊆ c.1
Theorem: LocalRuleUniqueL
Proof state before:
case mk.intro
α : Formula
L R precond : Finset Formula
ress : List (Finset Formula)
α_in_L : α ∈ L
orule : OneSidedLocalRule precond ress
precond_eq : precond = {α}
c : TNode
ress' : List SubPair
Lcond' Rcond' : Finset Formula
lr' : LocalRule (Lcond', Rcond') ress'
L_cond_in : Lcond' ⊆ L
R_cond_in : Rcond' ⊆ R
c_in : c ∈ applyLocalRule lr' (L, R)
⊢ α ∈ c.1 ∨ ∃ res ∈ ress, res ⊆ c.1
Tactic:
cases lr'
Proof state after:
case mk.intro.oneSidedL
α : Formula
L R precond : Finset Formula
ress : List (Finset Formula)
α_in_L : α ∈ L
orule : OneSidedLocalRule precond ress
precond_eq : precond = {α}
c : TNode
Lcond' : Finset Formula
L_cond_in : Lcond' ⊆ L
ress✝ : List (Finset Formula)
orule✝ : OneSidedLocalRule Lcond' ress✝
R_cond_in : ∅ ⊆ R
c_in : c ∈ applyLocalRule (LocalRule.oneSidedL orule✝) (L, R)
⊢ α ∈ c.1 ∨ ∃ res ∈ ress, res ⊆ c.1

case mk.intro.oneSidedR
α : Formula
L R precond : Finset Formula
ress : List (Finset Formula)
α_in_L : α ∈ L
orule : OneSidedLocalRule precond ress
precond_eq : precond = {α}
c : TNode
Rcond' : Finset Formula
R_cond_in : Rcond' ⊆ R
ress✝ : List (Finset Formula)
L_cond_in : ∅ ⊆ L
orule✝ : OneSidedLocalRule Rcond' ress✝
c_in : c ∈ applyLocalRule (LocalRule.oneSidedR orule✝) (L, R)
⊢ α ∈ c.1 ∨ ∃ res ∈ ress, res ⊆ c.1

case mk.intro.LRnegL
α : Formula
L R precond : Finset Formula
ress : List (Finset Formula)
α_in_L : α ∈ L
orule : OneSidedLocalRule precond ress
precond_eq : precond = {α}
c : TNode
ϕ✝ : Formula
L_cond_in : {ϕ✝} ⊆ L
R_cond_in : {~ϕ✝} ⊆ R
c_in : c ∈ applyLocalRule (LocalRule.LRnegL ϕ✝) (L, R)
⊢ α ∈ c.1 ∨ ∃ res ∈ ress, res ⊆ c.1

case mk.intro.LRnegR
α : Formula
L R precond : Finset Formula
ress : List (Finset Formula)
α_in_L : α ∈ L
orule : OneSidedLocalRule precond ress
precond_eq : precond = {α}
c : TNode
ϕ✝ : Formula
L_cond_in : {~ϕ✝} ⊆ L
R_cond_in : {ϕ✝} ⊆ R
c_in : c ∈ applyLocalRule (LocalRule.LRnegR ϕ✝) (L, R)
⊢ α ∈ c.1 ∨ ∃ res ∈ ress, res ⊆ c.1
Theorem: LocalRuleUniqueL
Proof state before:
α : Formula
L R precond : Finset Formula
ress✝ : List (Finset Formula)
α_in_L : α ∈ L
orule : OneSidedLocalRule precond ress✝
precond_eq : precond = {α}
c : TNode
Lcond' : Finset Formula
L_cond_in : Lcond' ⊆ L
ress : List (Finset Formula)
orule' : OneSidedLocalRule Lcond' ress
R_cond_in : ∅ ⊆ R
c_in : c ∈ applyLocalRule (LocalRule.oneSidedL orule') (L, R)
⊢ α ∈ c.1 ∨ ∃ res ∈ ress✝, res ⊆ c.1
Tactic:
case oneSidedL ress orule' =>
  cases orule
  case bot =>
    cases orule'
    all_goals aesop
  case not φ =>
    apply Finset.subset_of_eq at precond_eq
    rw [Finset.subset_singleton_iff'] at precond_eq
    simp_all
    rcases precond_eq with ⟨l,r⟩
    subst l
    cases r
  case neg φ =>
    cases orule'
    case neg φ' =>
      simp_all
      subst c_in
      subst precond_eq
      if φ = φ'
      then simp_all
      else simp_all
    all_goals aesop
  case con φ ψ =>
    cases orule'
    case con φ' ψ' =>
      simp_all
      subst c_in
      subst precond_eq
      if φ = φ' ∧ ψ = ψ'
      then
        apply Or.inr
        refine Finset.insert_subset_iff.mpr ?_
        aesop
      else aesop
    all_goals aesop
  case ncon φ ψ =>
    simp_all
    cases orule'
    case ncon φ' ψ' =>
      simp at c_in
      subst precond_eq
      cases c_in
      case inl c_eq =>
        subst c_eq
        if φ = φ'
        then simp_all
        else aesop
      case inr c_eq =>
        subst c_eq
        if ψ = ψ'
        then simp_all
        else aesop
    all_goals aesop
Proof state after:
no goals
Theorem: LocalRuleUniqueL
Proof state before:
α : Formula
L R precond : Finset Formula
ress : List (Finset Formula)
α_in_L : α ∈ L
orule : OneSidedLocalRule precond ress
precond_eq : precond = {α}
c : TNode
Rcond' : Finset Formula
R_cond_in : Rcond' ⊆ R
ress✝ : List (Finset Formula)
L_cond_in : ∅ ⊆ L
orule' : OneSidedLocalRule Rcond' ress✝
c_in : c ∈ applyLocalRule (LocalRule.oneSidedR orule') (L, R)
⊢ α ∈ c.1 ∨ ∃ res ∈ ress, res ⊆ c.1
Tactic:
case oneSidedR orule' =>
  apply Or.inl
  aesop
Proof state after:
no goals
Theorem: LocalRuleUniqueL
Proof state before:
case mk.intro.LRnegL
α : Formula
L R precond : Finset Formula
ress : List (Finset Formula)
α_in_L : α ∈ L
orule : OneSidedLocalRule precond ress
precond_eq : precond = {α}
c : TNode
ϕ✝ : Formula
L_cond_in : {ϕ✝} ⊆ L
R_cond_in : {~ϕ✝} ⊆ R
c_in : c ∈ applyLocalRule (LocalRule.LRnegL ϕ✝) (L, R)
⊢ α ∈ c.1 ∨ ∃ res ∈ ress, res ⊆ c.1

case mk.intro.LRnegR
α : Formula
L R precond : Finset Formula
ress : List (Finset Formula)
α_in_L : α ∈ L
orule : OneSidedLocalRule precond ress
precond_eq : precond = {α}
c : TNode
ϕ✝ : Formula
L_cond_in : {~ϕ✝} ⊆ L
R_cond_in : {ϕ✝} ⊆ R
c_in : c ∈ applyLocalRule (LocalRule.LRnegR ϕ✝) (L, R)
⊢ α ∈ c.1 ∨ ∃ res ∈ ress, res ⊆ c.1
Tactic:
all_goals simp_all
Proof state after:
no goals
Theorem: LocalRuleUniqueL
Proof state before:
α : Formula
L R precond : Finset Formula
ress✝ : List (Finset Formula)
α_in_L : α ∈ L
orule : OneSidedLocalRule precond ress✝
precond_eq : precond = {α}
c : TNode
Lcond' : Finset Formula
L_cond_in : Lcond' ⊆ L
ress : List (Finset Formula)
orule' : OneSidedLocalRule Lcond' ress
R_cond_in : ∅ ⊆ R
c_in : c ∈ applyLocalRule (LocalRule.oneSidedL orule') (L, R)
⊢ α ∈ c.1 ∨ ∃ res ∈ ress✝, res ⊆ c.1
Tactic:
cases orule
Proof state after:
case bot
α : Formula
L R : Finset Formula
α_in_L : α ∈ L
c : TNode
Lcond' : Finset Formula
L_cond_in : Lcond' ⊆ L
ress : List (Finset Formula)
orule' : OneSidedLocalRule Lcond' ress
R_cond_in : ∅ ⊆ R
c_in : c ∈ applyLocalRule (LocalRule.oneSidedL orule') (L, R)
precond_eq : {⊥} = {α}
⊢ α ∈ c.1 ∨ ∃ res ∈ ∅, res ⊆ c.1

case not
α : Formula
L R : Finset Formula
α_in_L : α ∈ L
c : TNode
Lcond' : Finset Formula
L_cond_in : Lcond' ⊆ L
ress : List (Finset Formula)
orule' : OneSidedLocalRule Lcond' ress
R_cond_in : ∅ ⊆ R
c_in : c ∈ applyLocalRule (LocalRule.oneSidedL orule') (L, R)
φ✝ : Formula
precond_eq : {φ✝, ~φ✝} = {α}
⊢ α ∈ c.1 ∨ ∃ res ∈ ∅, res ⊆ c.1

case neg
α : Formula
L R : Finset Formula
α_in_L : α ∈ L
c : TNode
Lcond' : Finset Formula
L_cond_in : Lcond' ⊆ L
ress : List (Finset Formula)
orule' : OneSidedLocalRule Lcond' ress
R_cond_in : ∅ ⊆ R
c_in : c ∈ applyLocalRule (LocalRule.oneSidedL orule') (L, R)
φ✝ : Formula
precond_eq : {~~φ✝} = {α}
⊢ α ∈ c.1 ∨ ∃ res ∈ [{φ✝}], res ⊆ c.1

case con
α : Formula
L R : Finset Formula
α_in_L : α ∈ L
c : TNode
Lcond' : Finset Formula
L_cond_in : Lcond' ⊆ L
ress : List (Finset Formula)
orule' : OneSidedLocalRule Lcond' ress
R_cond_in : ∅ ⊆ R
c_in : c ∈ applyLocalRule (LocalRule.oneSidedL orule') (L, R)
φ✝ ψ✝ : Formula
precond_eq : {φ✝⋀ψ✝} = {α}
⊢ α ∈ c.1 ∨ ∃ res ∈ [{φ✝, ψ✝}], res ⊆ c.1

case ncon
α : Formula
L R : Finset Formula
α_in_L : α ∈ L
c : TNode
Lcond' : Finset Formula
L_cond_in : Lcond' ⊆ L
ress : List (Finset Formula)
orule' : OneSidedLocalRule Lcond' ress
R_cond_in : ∅ ⊆ R
c_in : c ∈ applyLocalRule (LocalRule.oneSidedL orule') (L, R)
φ✝ ψ✝ : Formula
precond_eq : {~(φ✝⋀ψ✝)} = {α}
⊢ α ∈ c.1 ∨ ∃ res ∈ [{~φ✝}, {~ψ✝}], res ⊆ c.1
Theorem: LocalRuleUniqueL
Proof state before:
α : Formula
L R : Finset Formula
α_in_L : α ∈ L
c : TNode
Lcond' : Finset Formula
L_cond_in : Lcond' ⊆ L
ress : List (Finset Formula)
orule' : OneSidedLocalRule Lcond' ress
R_cond_in : ∅ ⊆ R
c_in : c ∈ applyLocalRule (LocalRule.oneSidedL orule') (L, R)
precond_eq : {⊥} = {α}
⊢ α ∈ c.1 ∨ ∃ res ∈ ∅, res ⊆ c.1
Tactic:
case bot =>
  cases orule'
  all_goals aesop
Proof state after:
no goals
Theorem: LocalRuleUniqueL
Proof state before:
α : Formula
L R : Finset Formula
α_in_L : α ∈ L
c : TNode
Lcond' : Finset Formula
L_cond_in : Lcond' ⊆ L
ress : List (Finset Formula)
orule' : OneSidedLocalRule Lcond' ress
R_cond_in : ∅ ⊆ R
c_in : c ∈ applyLocalRule (LocalRule.oneSidedL orule') (L, R)
φ : Formula
precond_eq : {φ, ~φ} = {α}
⊢ α ∈ c.1 ∨ ∃ res ∈ ∅, res ⊆ c.1
Tactic:
case not φ =>
  apply Finset.subset_of_eq at precond_eq
  rw [Finset.subset_singleton_iff'] at precond_eq
  simp_all
  rcases precond_eq with ⟨l,r⟩
  subst l
  cases r
Proof state after:
no goals
Theorem: LocalRuleUniqueL
Proof state before:
α : Formula
L R : Finset Formula
α_in_L : α ∈ L
c : TNode
Lcond' : Finset Formula
L_cond_in : Lcond' ⊆ L
ress : List (Finset Formula)
orule' : OneSidedLocalRule Lcond' ress
R_cond_in : ∅ ⊆ R
c_in : c ∈ applyLocalRule (LocalRule.oneSidedL orule') (L, R)
φ : Formula
precond_eq : {~~φ} = {α}
⊢ α ∈ c.1 ∨ ∃ res ∈ [{φ}], res ⊆ c.1
Tactic:
case neg φ =>
  cases orule'
  case neg φ' =>
    simp_all
    subst c_in
    subst precond_eq
    if φ = φ'
    then simp_all
    else simp_all
  all_goals aesop
Proof state after:
no goals
Theorem: LocalRuleUniqueL
Proof state before:
α : Formula
L R : Finset Formula
α_in_L : α ∈ L
c : TNode
Lcond' : Finset Formula
L_cond_in : Lcond' ⊆ L
ress : List (Finset Formula)
orule' : OneSidedLocalRule Lcond' ress
R_cond_in : ∅ ⊆ R
c_in : c ∈ applyLocalRule (LocalRule.oneSidedL orule') (L, R)
φ ψ : Formula
precond_eq : {φ⋀ψ} = {α}
⊢ α ∈ c.1 ∨ ∃ res ∈ [{φ, ψ}], res ⊆ c.1
Tactic:
case con φ ψ =>
  cases orule'
  case con φ' ψ' =>
    simp_all
    subst c_in
    subst precond_eq
    if φ = φ' ∧ ψ = ψ'
    then
      apply Or.inr
      refine Finset.insert_subset_iff.mpr ?_
      aesop
    else aesop
  all_goals aesop
Proof state after:
no goals
Theorem: LocalRuleUniqueL
Proof state before:
α : Formula
L R : Finset Formula
α_in_L : α ∈ L
c : TNode
Lcond' : Finset Formula
L_cond_in : Lcond' ⊆ L
ress : List (Finset Formula)
orule' : OneSidedLocalRule Lcond' ress
R_cond_in : ∅ ⊆ R
c_in : c ∈ applyLocalRule (LocalRule.oneSidedL orule') (L, R)
φ ψ : Formula
precond_eq : {~(φ⋀ψ)} = {α}
⊢ α ∈ c.1 ∨ ∃ res ∈ [{~φ}, {~ψ}], res ⊆ c.1
Tactic:
case ncon φ ψ =>
  simp_all
  cases orule'
  case ncon φ' ψ' =>
    simp at c_in
    subst precond_eq
    cases c_in
    case inl c_eq =>
      subst c_eq
      if φ = φ'
      then simp_all
      else aesop
    case inr c_eq =>
      subst c_eq
      if ψ = ψ'
      then simp_all
      else aesop
  all_goals aesop
Proof state after:
no goals
Theorem: LocalRuleUniqueL
Proof state before:
α : Formula
L R : Finset Formula
α_in_L : α ∈ L
c : TNode
Lcond' : Finset Formula
L_cond_in : Lcond' ⊆ L
ress : List (Finset Formula)
orule' : OneSidedLocalRule Lcond' ress
R_cond_in : ∅ ⊆ R
c_in : c ∈ applyLocalRule (LocalRule.oneSidedL orule') (L, R)
precond_eq : {⊥} = {α}
⊢ α ∈ c.1 ∨ ∃ res ∈ ∅, res ⊆ c.1
Tactic:
cases orule'
Proof state after:
case bot
α : Formula
L R : Finset Formula
α_in_L : α ∈ L
c : TNode
R_cond_in : ∅ ⊆ R
precond_eq : {⊥} = {α}
L_cond_in : {⊥} ⊆ L
c_in : c ∈ applyLocalRule (LocalRule.oneSidedL OneSidedLocalRule.bot) (L, R)
⊢ α ∈ c.1 ∨ ∃ res ∈ ∅, res ⊆ c.1

case not
α : Formula
L R : Finset Formula
α_in_L : α ∈ L
c : TNode
R_cond_in : ∅ ⊆ R
precond_eq : {⊥} = {α}
φ✝ : Formula
L_cond_in : {φ✝, ~φ✝} ⊆ L
c_in : c ∈ applyLocalRule (LocalRule.oneSidedL (OneSidedLocalRule.not φ✝)) (L, R)
⊢ α ∈ c.1 ∨ ∃ res ∈ ∅, res ⊆ c.1

case neg
α : Formula
L R : Finset Formula
α_in_L : α ∈ L
c : TNode
R_cond_in : ∅ ⊆ R
precond_eq : {⊥} = {α}
φ✝ : Formula
L_cond_in : {~~φ✝} ⊆ L
c_in : c ∈ applyLocalRule (LocalRule.oneSidedL (OneSidedLocalRule.neg φ✝)) (L, R)
⊢ α ∈ c.1 ∨ ∃ res ∈ ∅, res ⊆ c.1

case con
α : Formula
L R : Finset Formula
α_in_L : α ∈ L
c : TNode
R_cond_in : ∅ ⊆ R
precond_eq : {⊥} = {α}
φ✝ ψ✝ : Formula
L_cond_in : {φ✝⋀ψ✝} ⊆ L
c_in : c ∈ applyLocalRule (LocalRule.oneSidedL (OneSidedLocalRule.con φ✝ ψ✝)) (L, R)
⊢ α ∈ c.1 ∨ ∃ res ∈ ∅, res ⊆ c.1

case ncon
α : Formula
L R : Finset Formula
α_in_L : α ∈ L
c : TNode
R_cond_in : ∅ ⊆ R
precond_eq : {⊥} = {α}
φ✝ ψ✝ : Formula
L_cond_in : {~(φ✝⋀ψ✝)} ⊆ L
c_in : c ∈ applyLocalRule (LocalRule.oneSidedL (OneSidedLocalRule.ncon φ✝ ψ✝)) (L, R)
⊢ α ∈ c.1 ∨ ∃ res ∈ ∅, res ⊆ c.1
Theorem: LocalRuleUniqueL
Proof state before:
case bot
α : Formula
L R : Finset Formula
α_in_L : α ∈ L
c : TNode
R_cond_in : ∅ ⊆ R
precond_eq : {⊥} = {α}
L_cond_in : {⊥} ⊆ L
c_in : c ∈ applyLocalRule (LocalRule.oneSidedL OneSidedLocalRule.bot) (L, R)
⊢ α ∈ c.1 ∨ ∃ res ∈ ∅, res ⊆ c.1

case not
α : Formula
L R : Finset Formula
α_in_L : α ∈ L
c : TNode
R_cond_in : ∅ ⊆ R
precond_eq : {⊥} = {α}
φ✝ : Formula
L_cond_in : {φ✝, ~φ✝} ⊆ L
c_in : c ∈ applyLocalRule (LocalRule.oneSidedL (OneSidedLocalRule.not φ✝)) (L, R)
⊢ α ∈ c.1 ∨ ∃ res ∈ ∅, res ⊆ c.1

case neg
α : Formula
L R : Finset Formula
α_in_L : α ∈ L
c : TNode
R_cond_in : ∅ ⊆ R
precond_eq : {⊥} = {α}
φ✝ : Formula
L_cond_in : {~~φ✝} ⊆ L
c_in : c ∈ applyLocalRule (LocalRule.oneSidedL (OneSidedLocalRule.neg φ✝)) (L, R)
⊢ α ∈ c.1 ∨ ∃ res ∈ ∅, res ⊆ c.1

case con
α : Formula
L R : Finset Formula
α_in_L : α ∈ L
c : TNode
R_cond_in : ∅ ⊆ R
precond_eq : {⊥} = {α}
φ✝ ψ✝ : Formula
L_cond_in : {φ✝⋀ψ✝} ⊆ L
c_in : c ∈ applyLocalRule (LocalRule.oneSidedL (OneSidedLocalRule.con φ✝ ψ✝)) (L, R)
⊢ α ∈ c.1 ∨ ∃ res ∈ ∅, res ⊆ c.1

case ncon
α : Formula
L R : Finset Formula
α_in_L : α ∈ L
c : TNode
R_cond_in : ∅ ⊆ R
precond_eq : {⊥} = {α}
φ✝ ψ✝ : Formula
L_cond_in : {~(φ✝⋀ψ✝)} ⊆ L
c_in : c ∈ applyLocalRule (LocalRule.oneSidedL (OneSidedLocalRule.ncon φ✝ ψ✝)) (L, R)
⊢ α ∈ c.1 ∨ ∃ res ∈ ∅, res ⊆ c.1
Tactic:
all_goals aesop
Proof state after:
no goals
Theorem: LocalRuleUniqueL
Proof state before:
case ncon
α : Formula
L R : Finset Formula
α_in_L : α ∈ L
c : TNode
R_cond_in : ∅ ⊆ R
precond_eq : {⊥} = {α}
φ✝ ψ✝ : Formula
L_cond_in : {~(φ✝⋀ψ✝)} ⊆ L
c_in : c ∈ applyLocalRule (LocalRule.oneSidedL (OneSidedLocalRule.ncon φ✝ ψ✝)) (L, R)
⊢ α ∈ c.1 ∨ ∃ res ∈ ∅, res ⊆ c.1
Tactic:
aesop
Proof state after:
no goals
Theorem: LocalRuleUniqueL
Proof state before:
α : Formula
L R : Finset Formula
α_in_L : α ∈ L
c : TNode
Lcond' : Finset Formula
L_cond_in : Lcond' ⊆ L
ress : List (Finset Formula)
orule' : OneSidedLocalRule Lcond' ress
R_cond_in : ∅ ⊆ R
c_in : c ∈ applyLocalRule (LocalRule.oneSidedL orule') (L, R)
φ : Formula
precond_eq : {φ, ~φ} = {α}
⊢ α ∈ c.1 ∨ ∃ res ∈ ∅, res ⊆ c.1
Tactic:
apply Finset.subset_of_eq at precond_eq
Proof state after:
α : Formula
L R : Finset Formula
α_in_L : α ∈ L
c : TNode
Lcond' : Finset Formula
L_cond_in : Lcond' ⊆ L
ress : List (Finset Formula)
orule' : OneSidedLocalRule Lcond' ress
R_cond_in : ∅ ⊆ R
c_in : c ∈ applyLocalRule (LocalRule.oneSidedL orule') (L, R)
φ : Formula
precond_eq : {φ, ~φ} ⊆ {α}
⊢ α ∈ c.1 ∨ ∃ res ∈ ∅, res ⊆ c.1
Theorem: LocalRuleUniqueL
Proof state before:
α : Formula
L R : Finset Formula
α_in_L : α ∈ L
c : TNode
Lcond' : Finset Formula
L_cond_in : Lcond' ⊆ L
ress : List (Finset Formula)
orule' : OneSidedLocalRule Lcond' ress
R_cond_in : ∅ ⊆ R
c_in : c ∈ applyLocalRule (LocalRule.oneSidedL orule') (L, R)
φ : Formula
precond_eq : {φ, ~φ} ⊆ {α}
⊢ α ∈ c.1 ∨ ∃ res ∈ ∅, res ⊆ c.1
Tactic:
rw [Finset.subset_singleton_iff'] at precond_eq
Proof state after:
α : Formula
L R : Finset Formula
α_in_L : α ∈ L
c : TNode
Lcond' : Finset Formula
L_cond_in : Lcond' ⊆ L
ress : List (Finset Formula)
orule' : OneSidedLocalRule Lcond' ress
R_cond_in : ∅ ⊆ R
c_in : c ∈ applyLocalRule (LocalRule.oneSidedL orule') (L, R)
φ : Formula
precond_eq : ∀ b ∈ {φ, ~φ}, b = α
⊢ α ∈ c.1 ∨ ∃ res ∈ ∅, res ⊆ c.1
Theorem: LocalRuleUniqueL
Proof state before:
α : Formula
L R : Finset Formula
α_in_L : α ∈ L
c : TNode
Lcond' : Finset Formula
L_cond_in : Lcond' ⊆ L
ress : List (Finset Formula)
orule' : OneSidedLocalRule Lcond' ress
R_cond_in : ∅ ⊆ R
c_in : c ∈ applyLocalRule (LocalRule.oneSidedL orule') (L, R)
φ : Formula
precond_eq : ∀ b ∈ {φ, ~φ}, b = α
⊢ α ∈ c.1 ∨ ∃ res ∈ ∅, res ⊆ c.1
Tactic:
simp_all
Proof state after:
α : Formula
L R : Finset Formula
α_in_L : α ∈ L
c : TNode
Lcond' : Finset Formula
L_cond_in : Lcond' ⊆ L
ress : List (Finset Formula)
orule' : OneSidedLocalRule Lcond' ress
φ : Formula
c_in : ∃ a ∈ ress, (L \ Lcond' ∪ a, R) = c
precond_eq : φ = α ∧ ~φ = α
⊢ α ∈ c.1
Theorem: LocalRuleUniqueL
Proof state before:
α : Formula
L R : Finset Formula
α_in_L : α ∈ L
c : TNode
Lcond' : Finset Formula
L_cond_in : Lcond' ⊆ L
ress : List (Finset Formula)
orule' : OneSidedLocalRule Lcond' ress
φ : Formula
c_in : ∃ a ∈ ress, (L \ Lcond' ∪ a, R) = c
precond_eq : φ = α ∧ ~φ = α
⊢ α ∈ c.1
Tactic:
rcases precond_eq with ⟨l,r⟩
Proof state after:
case intro
α : Formula
L R : Finset Formula
α_in_L : α ∈ L
c : TNode
Lcond' : Finset Formula
L_cond_in : Lcond' ⊆ L
ress : List (Finset Formula)
orule' : OneSidedLocalRule Lcond' ress
φ : Formula
c_in : ∃ a ∈ ress, (L \ Lcond' ∪ a, R) = c
l : φ = α
r : ~φ = α
⊢ α ∈ c.1
Theorem: LocalRuleUniqueL
Proof state before:
case intro
α : Formula
L R : Finset Formula
α_in_L : α ∈ L
c : TNode
Lcond' : Finset Formula
L_cond_in : Lcond' ⊆ L
ress : List (Finset Formula)
orule' : OneSidedLocalRule Lcond' ress
φ : Formula
c_in : ∃ a ∈ ress, (L \ Lcond' ∪ a, R) = c
l : φ = α
r : ~φ = α
⊢ α ∈ c.1
Tactic:
subst l
Proof state after:
case intro
L R : Finset Formula
c : TNode
Lcond' : Finset Formula
L_cond_in : Lcond' ⊆ L
ress : List (Finset Formula)
orule' : OneSidedLocalRule Lcond' ress
φ : Formula
c_in : ∃ a ∈ ress, (L \ Lcond' ∪ a, R) = c
α_in_L : φ ∈ L
r : ~φ = φ
⊢ φ ∈ c.1
Theorem: LocalRuleUniqueL
Proof state before:
case intro
L R : Finset Formula
c : TNode
Lcond' : Finset Formula
L_cond_in : Lcond' ⊆ L
ress : List (Finset Formula)
orule' : OneSidedLocalRule Lcond' ress
φ : Formula
c_in : ∃ a ∈ ress, (L \ Lcond' ∪ a, R) = c
α_in_L : φ ∈ L
r : ~φ = φ
⊢ φ ∈ c.1
Tactic:
cases r
Proof state after:
no goals
Theorem: LocalRuleUniqueL
Proof state before:
α : Formula
L R : Finset Formula
α_in_L : α ∈ L
c : TNode
Lcond' : Finset Formula
L_cond_in : Lcond' ⊆ L
ress : List (Finset Formula)
orule' : OneSidedLocalRule Lcond' ress
R_cond_in : ∅ ⊆ R
c_in : c ∈ applyLocalRule (LocalRule.oneSidedL orule') (L, R)
φ : Formula
precond_eq : {~~φ} = {α}
⊢ α ∈ c.1 ∨ ∃ res ∈ [{φ}], res ⊆ c.1
Tactic:
cases orule'
Proof state after:
case bot
α : Formula
L R : Finset Formula
α_in_L : α ∈ L
c : TNode
R_cond_in : ∅ ⊆ R
φ : Formula
precond_eq : {~~φ} = {α}
L_cond_in : {⊥} ⊆ L
c_in : c ∈ applyLocalRule (LocalRule.oneSidedL OneSidedLocalRule.bot) (L, R)
⊢ α ∈ c.1 ∨ ∃ res ∈ [{φ}], res ⊆ c.1

case not
α : Formula
L R : Finset Formula
α_in_L : α ∈ L
c : TNode
R_cond_in : ∅ ⊆ R
φ : Formula
precond_eq : {~~φ} = {α}
φ✝ : Formula
L_cond_in : {φ✝, ~φ✝} ⊆ L
c_in : c ∈ applyLocalRule (LocalRule.oneSidedL (OneSidedLocalRule.not φ✝)) (L, R)
⊢ α ∈ c.1 ∨ ∃ res ∈ [{φ}], res ⊆ c.1

case neg
α : Formula
L R : Finset Formula
α_in_L : α ∈ L
c : TNode
R_cond_in : ∅ ⊆ R
φ : Formula
precond_eq : {~~φ} = {α}
φ✝ : Formula
L_cond_in : {~~φ✝} ⊆ L
c_in : c ∈ applyLocalRule (LocalRule.oneSidedL (OneSidedLocalRule.neg φ✝)) (L, R)
⊢ α ∈ c.1 ∨ ∃ res ∈ [{φ}], res ⊆ c.1

case con
α : Formula
L R : Finset Formula
α_in_L : α ∈ L
c : TNode
R_cond_in : ∅ ⊆ R
φ : Formula
precond_eq : {~~φ} = {α}
φ✝ ψ✝ : Formula
L_cond_in : {φ✝⋀ψ✝} ⊆ L
c_in : c ∈ applyLocalRule (LocalRule.oneSidedL (OneSidedLocalRule.con φ✝ ψ✝)) (L, R)
⊢ α ∈ c.1 ∨ ∃ res ∈ [{φ}], res ⊆ c.1

case ncon
α : Formula
L R : Finset Formula
α_in_L : α ∈ L
c : TNode
R_cond_in : ∅ ⊆ R
φ : Formula
precond_eq : {~~φ} = {α}
φ✝ ψ✝ : Formula
L_cond_in : {~(φ✝⋀ψ✝)} ⊆ L
c_in : c ∈ applyLocalRule (LocalRule.oneSidedL (OneSidedLocalRule.ncon φ✝ ψ✝)) (L, R)
⊢ α ∈ c.1 ∨ ∃ res ∈ [{φ}], res ⊆ c.1
Theorem: LocalRuleUniqueL
Proof state before:
α : Formula
L R : Finset Formula
α_in_L : α ∈ L
c : TNode
R_cond_in : ∅ ⊆ R
φ : Formula
precond_eq : {~~φ} = {α}
φ' : Formula
L_cond_in : {~~φ'} ⊆ L
c_in : c ∈ applyLocalRule (LocalRule.oneSidedL (OneSidedLocalRule.neg φ')) (L, R)
⊢ α ∈ c.1 ∨ ∃ res ∈ [{φ}], res ⊆ c.1
Tactic:
case neg φ' =>
  simp_all
  subst c_in
  subst precond_eq
  if φ = φ'
  then simp_all
  else simp_all
Proof state after:
no goals
Theorem: LocalRuleUniqueL
Proof state before:
case bot
α : Formula
L R : Finset Formula
α_in_L : α ∈ L
c : TNode
R_cond_in : ∅ ⊆ R
φ : Formula
precond_eq : {~~φ} = {α}
L_cond_in : {⊥} ⊆ L
c_in : c ∈ applyLocalRule (LocalRule.oneSidedL OneSidedLocalRule.bot) (L, R)
⊢ α ∈ c.1 ∨ ∃ res ∈ [{φ}], res ⊆ c.1

case not
α : Formula
L R : Finset Formula
α_in_L : α ∈ L
c : TNode
R_cond_in : ∅ ⊆ R
φ : Formula
precond_eq : {~~φ} = {α}
φ✝ : Formula
L_cond_in : {φ✝, ~φ✝} ⊆ L
c_in : c ∈ applyLocalRule (LocalRule.oneSidedL (OneSidedLocalRule.not φ✝)) (L, R)
⊢ α ∈ c.1 ∨ ∃ res ∈ [{φ}], res ⊆ c.1

case con
α : Formula
L R : Finset Formula
α_in_L : α ∈ L
c : TNode
R_cond_in : ∅ ⊆ R
φ : Formula
precond_eq : {~~φ} = {α}
φ✝ ψ✝ : Formula
L_cond_in : {φ✝⋀ψ✝} ⊆ L
c_in : c ∈ applyLocalRule (LocalRule.oneSidedL (OneSidedLocalRule.con φ✝ ψ✝)) (L, R)
⊢ α ∈ c.1 ∨ ∃ res ∈ [{φ}], res ⊆ c.1

case ncon
α : Formula
L R : Finset Formula
α_in_L : α ∈ L
c : TNode
R_cond_in : ∅ ⊆ R
φ : Formula
precond_eq : {~~φ} = {α}
φ✝ ψ✝ : Formula
L_cond_in : {~(φ✝⋀ψ✝)} ⊆ L
c_in : c ∈ applyLocalRule (LocalRule.oneSidedL (OneSidedLocalRule.ncon φ✝ ψ✝)) (L, R)
⊢ α ∈ c.1 ∨ ∃ res ∈ [{φ}], res ⊆ c.1
Tactic:
all_goals aesop
Proof state after:
no goals
Theorem: LocalRuleUniqueL
Proof state before:
α : Formula
L R : Finset Formula
α_in_L : α ∈ L
c : TNode
R_cond_in : ∅ ⊆ R
φ : Formula
precond_eq : {~~φ} = {α}
φ' : Formula
L_cond_in : {~~φ'} ⊆ L
c_in : c ∈ applyLocalRule (LocalRule.oneSidedL (OneSidedLocalRule.neg φ')) (L, R)
⊢ α ∈ c.1 ∨ ∃ res ∈ [{φ}], res ⊆ c.1
Tactic:
simp_all
Proof state after:
α : Formula
L R : Finset Formula
α_in_L : α ∈ L
c : TNode
φ φ' : Formula
precond_eq : ~~φ = α
L_cond_in : ~~φ' ∈ L
c_in : c = (insert φ' (L.erase (~~φ')), R)
⊢ (α = φ' ∨ ¬α = ~~φ') ∨ φ = φ' ∨ ¬φ = ~~φ' ∧ φ ∈ L
Theorem: LocalRuleUniqueL
Proof state before:
α : Formula
L R : Finset Formula
α_in_L : α ∈ L
c : TNode
φ φ' : Formula
precond_eq : ~~φ = α
L_cond_in : ~~φ' ∈ L
c_in : c = (insert φ' (L.erase (~~φ')), R)
⊢ (α = φ' ∨ ¬α = ~~φ') ∨ φ = φ' ∨ ¬φ = ~~φ' ∧ φ ∈ L
Tactic:
subst c_in
Proof state after:
α : Formula
L R : Finset Formula
α_in_L : α ∈ L
φ φ' : Formula
precond_eq : ~~φ = α
L_cond_in : ~~φ' ∈ L
⊢ (α = φ' ∨ ¬α = ~~φ') ∨ φ = φ' ∨ ¬φ = ~~φ' ∧ φ ∈ L