internlm/Lean-Github huggingface dataset:
Theorem: LocalRuleUniqueR
Proof state before:
case mk.intro
α : Formula
R L precond : Finset Formula
ress : List (Finset Formula)
α_in_R : α ∈ R
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.2 ∨ ∃ res ∈ ress, res ⊆ c.2
Tactic:
cases lr'
Proof state after:
case mk.intro.oneSidedL
α : Formula
R L precond : Finset Formula
ress : List (Finset Formula)
α_in_R : α ∈ R
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.2 ∨ ∃ res ∈ ress, res ⊆ c.2

case mk.intro.oneSidedR
α : Formula
R L precond : Finset Formula
ress : List (Finset Formula)
α_in_R : α ∈ R
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.2 ∨ ∃ res ∈ ress, res ⊆ c.2

case mk.intro.LRnegL
α : Formula
R L precond : Finset Formula
ress : List (Finset Formula)
α_in_R : α ∈ R
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.2 ∨ ∃ res ∈ ress, res ⊆ c.2

case mk.intro.LRnegR
α : Formula
R L precond : Finset Formula
ress : List (Finset Formula)
α_in_R : α ∈ R
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.2 ∨ ∃ res ∈ ress, res ⊆ c.2
Theorem: LocalRuleUniqueR
Proof state before:
α : Formula
R L precond : Finset Formula
ress✝ : List (Finset Formula)
α_in_R : α ∈ R
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.2 ∨ ∃ res ∈ ress✝, res ⊆ c.2
Tactic:
case oneSidedR 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: LocalRuleUniqueR
Proof state before:
α : Formula
R L precond : Finset Formula
ress : List (Finset Formula)
α_in_R : α ∈ R
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.2 ∨ ∃ res ∈ ress, res ⊆ c.2
Tactic:
case oneSidedL orule' =>
  apply Or.inl
  aesop
Proof state after:
no goals
Theorem: LocalRuleUniqueR
Proof state before:
case mk.intro.LRnegL
α : Formula
R L precond : Finset Formula
ress : List (Finset Formula)
α_in_R : α ∈ R
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.2 ∨ ∃ res ∈ ress, res ⊆ c.2

case mk.intro.LRnegR
α : Formula
R L precond : Finset Formula
ress : List (Finset Formula)
α_in_R : α ∈ R
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.2 ∨ ∃ res ∈ ress, res ⊆ c.2
Tactic:
all_goals simp_all
Proof state after:
no goals
Theorem: LocalRuleUniqueR
Proof state before:
α : Formula
R L precond : Finset Formula
ress✝ : List (Finset Formula)
α_in_R : α ∈ R
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.2 ∨ ∃ res ∈ ress✝, res ⊆ c.2
Tactic:
cases orule
Proof state after:
case bot
α : Formula
R L : Finset Formula
α_in_R : α ∈ R
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)
precond_eq : {⊥} = {α}
⊢ α ∈ c.2 ∨ ∃ res ∈ ∅, res ⊆ c.2

case not
α : Formula
R L : Finset Formula
α_in_R : α ∈ R
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)
φ✝ : Formula
precond_eq : {φ✝, ~φ✝} = {α}
⊢ α ∈ c.2 ∨ ∃ res ∈ ∅, res ⊆ c.2

case neg
α : Formula
R L : Finset Formula
α_in_R : α ∈ R
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)
φ✝ : Formula
precond_eq : {~~φ✝} = {α}
⊢ α ∈ c.2 ∨ ∃ res ∈ [{φ✝}], res ⊆ c.2

case con
α : Formula
R L : Finset Formula
α_in_R : α ∈ R
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)
φ✝ ψ✝ : Formula
precond_eq : {φ✝⋀ψ✝} = {α}
⊢ α ∈ c.2 ∨ ∃ res ∈ [{φ✝, ψ✝}], res ⊆ c.2

case ncon
α : Formula
R L : Finset Formula
α_in_R : α ∈ R
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)
φ✝ ψ✝ : Formula
precond_eq : {~(φ✝⋀ψ✝)} = {α}
⊢ α ∈ c.2 ∨ ∃ res ∈ [{~φ✝}, {~ψ✝}], res ⊆ c.2
Theorem: LocalRuleUniqueR
Proof state before:
α : Formula
R L : Finset Formula
α_in_R : α ∈ R
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)
precond_eq : {⊥} = {α}
⊢ α ∈ c.2 ∨ ∃ res ∈ ∅, res ⊆ c.2
Tactic:
case bot =>
  cases orule'
  all_goals aesop
Proof state after:
no goals
Theorem: LocalRuleUniqueR
Proof state before:
α : Formula
R L : Finset Formula
α_in_R : α ∈ R
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)
φ : Formula
precond_eq : {φ, ~φ} = {α}
⊢ α ∈ c.2 ∨ ∃ res ∈ ∅, res ⊆ c.2
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: LocalRuleUniqueR
Proof state before:
α : Formula
R L : Finset Formula
α_in_R : α ∈ R
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)
φ : Formula
precond_eq : {~~φ} = {α}
⊢ α ∈ c.2 ∨ ∃ res ∈ [{φ}], res ⊆ c.2
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: LocalRuleUniqueR
Proof state before:
α : Formula
R L : Finset Formula
α_in_R : α ∈ R
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)
φ ψ : Formula
precond_eq : {φ⋀ψ} = {α}
⊢ α ∈ c.2 ∨ ∃ res ∈ [{φ, ψ}], res ⊆ c.2
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: LocalRuleUniqueR
Proof state before:
α : Formula
R L : Finset Formula
α_in_R : α ∈ R
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)
φ ψ : Formula
precond_eq : {~(φ⋀ψ)} = {α}
⊢ α ∈ c.2 ∨ ∃ res ∈ [{~φ}, {~ψ}], res ⊆ c.2
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: LocalRuleUniqueR
Proof state before:
α : Formula
R L : Finset Formula
α_in_R : α ∈ R
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)
precond_eq : {⊥} = {α}
⊢ α ∈ c.2 ∨ ∃ res ∈ ∅, res ⊆ c.2
Tactic:
cases orule'
Proof state after:
case bot
α : Formula
R L : Finset Formula
α_in_R : α ∈ R
c : TNode
L_cond_in : ∅ ⊆ L
precond_eq : {⊥} = {α}
R_cond_in : {⊥} ⊆ R
c_in : c ∈ applyLocalRule (LocalRule.oneSidedR OneSidedLocalRule.bot) (L, R)
⊢ α ∈ c.2 ∨ ∃ res ∈ ∅, res ⊆ c.2

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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