Theorem: LocalRuleUniqueR (Bml/Tableau.lean)

State before:
α : Formula
R L : Finset Formula
C : List TNode
precond : Finset Formula
ress : List (Finset Formula)
α_in_R : α ∈ R
lrApp : LocalRuleApp (L, R) C
orule : OneSidedLocalRule precond ress
precond_eq : precond = {α}
⊢ ∀ c ∈ C, α ∈ c.2 ∨ ∃ res ∈ ress, res ⊆ c.2
Tactic:
intro c c_in
State after:
α : Formula
R L : Finset Formula
C : List TNode
precond : Finset Formula
ress : List (Finset Formula)
α_in_R : α ∈ R
lrApp : LocalRuleApp (L, R) C
orule : OneSidedLocalRule precond ress
precond_eq : precond = {α}
c : TNode
c_in : c ∈ C
⊢ α ∈ c.2 ∨ ∃ res ∈ ress, res ⊆ c.2

State before:
α : Formula
R L : Finset Formula
C : List TNode
precond : Finset Formula
ress : List (Finset Formula)
α_in_R : α ∈ R
lrApp : LocalRuleApp (L, R) C
orule : OneSidedLocalRule precond ress
precond_eq : precond = {α}
c : TNode
c_in : c ∈ C
⊢ α ∈ c.2 ∨ ∃ res ∈ ress, res ⊆ c.2
Tactic:
rcases lrApp with ⟨ress', Lcond', Rcond', lr', L_cond_in, R_cond_in⟩
State after:
case mk.intro
α : Formula
R L : Finset Formula
C : List TNode
precond : Finset Formula
ress : List (Finset Formula)
α_in_R : α ∈ R
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.2 ∨ ∃ res ∈ ress, res ⊆ c.2

State before:
case mk.intro
α : Formula
R L : Finset Formula
C : List TNode
precond : Finset Formula
ress : List (Finset Formula)
α_in_R : α ∈ R
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.2 ∨ ∃ res ∈ ress, res ⊆ c.2
Tactic:
rename_i C_eq
State after:
case mk.intro
α : Formula
R L : Finset Formula
C : List TNode
precond : Finset Formula
ress : List (Finset Formula)
α_in_R : α ∈ R
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.2 ∨ ∃ res ∈ ress, res ⊆ c.2

State before:
case mk.intro
α : Formula
R L : Finset Formula
C : List TNode
precond : Finset Formula
ress : List (Finset Formula)
α_in_R : α ∈ R
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.2 ∨ ∃ res ∈ ress, res ⊆ c.2
Tactic:
subst C_eq
State after:
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

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'
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

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
State after:
no goals

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
State after:
no goals

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
State after:
no goals

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
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

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
State after:
no goals

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
State after:
no goals

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
State after:
no goals

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
State after:
no goals

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
State after:
no goals

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'
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

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
State after:
no goals

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
State after:
no goals

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
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

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
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

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
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

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⟩
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

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
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

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
State after:
no goals

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'
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

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
State after:
no goals

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
State after:
no goals

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
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

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
State after:
α : Formula
R L : Finset Formula
α_in_R : α ∈ R
φ φ' : Formula
precond_eq : ~~φ = α
R_cond_in : ~~φ' ∈ R
⊢ (α = φ' ∨ ¬α = ~~φ') ∨ φ = φ' ∨ ¬φ = ~~φ' ∧ φ ∈ R

State before:
α : Formula
R L : Finset Formula
α_in_R : α ∈ R
φ φ' : Formula
precond_eq : ~~φ = α
R_cond_in : ~~φ' ∈ R
⊢ (α = φ' ∨ ¬α = ~~φ') ∨ φ = φ' ∨ ¬φ = ~~φ' ∧ φ ∈ R
Tactic:
subst precond_eq
State after:
R L : Finset Formula
φ φ' : Formula
R_cond_in : ~~φ' ∈ R
α_in_R : ~~φ ∈ R
⊢ (~~φ = φ' ∨ ¬~~φ = ~~φ') ∨ φ = φ' ∨ ¬φ = ~~φ' ∧ φ ∈ R

State before:
R L : Finset Formula
φ φ' : Formula
R_cond_in : ~~φ' ∈ R
α_in_R : ~~φ ∈ R
⊢ (~~φ = φ' ∨ ¬~~φ = ~~φ') ∨ φ = φ' ∨ ¬φ = ~~φ' ∧ φ ∈ R
Tactic:
if φ = φ'
then simp_all
else simp_all
State after:
no goals

State before:
R L : Finset Formula
φ φ' : Formula
R_cond_in : ~~φ' ∈ R
α_in_R : ~~φ ∈ R
h✝ : φ = φ'
⊢ (~~φ = φ' ∨ ¬~~φ = ~~φ') ∨ φ = φ' ∨ ¬φ = ~~φ' ∧ φ ∈ R
Tactic:
simp_all
State after:
no goals

State before:
R L : Finset Formula
φ φ' : Formula
R_cond_in : ~~φ' ∈ R
α_in_R : ~~φ ∈ R
h✝ : ¬φ = φ'
⊢ (~~φ = φ' ∨ ¬~~φ = ~~φ') ∨ φ = φ' ∨ ¬φ = ~~φ' ∧ φ ∈ R
Tactic:
simp_all
State after:
no goals

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
State after:
no goals

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'
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

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.con φ' ψ')) (L, R)
⊢ α ∈ c.2 ∨ ∃ res ∈ [{φ, ψ}], res ⊆ c.2
Tactic:
case con φ' ψ' =>
  simp_all
  subst c_in
  subst precond_eq
  if φ = φ' ∧ ψ = ψ'
  then
    apply Or.inr
    refine Finset.insert_subset_iff.mpr ?_
    aesop
  else aesop
State after:
no goals

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 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 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
State after:
no goals

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.con φ' ψ')) (L, R)
⊢ α ∈ c.2 ∨ ∃ res ∈ [{φ, ψ}], res ⊆ c.2
Tactic:
simp_all
State after:
α : Formula
R L : Finset Formula
α_in_R : α ∈ R
c : TNode
φ ψ φ' ψ' : Formula
precond_eq : φ⋀ψ = α
R_cond_in : φ'⋀ψ' ∈ R
c_in : c = (L, insert φ' (insert ψ' (R.erase (φ'⋀ψ'))))
⊢ (α = φ' ∨ α = ψ' ∨ ¬α = φ'⋀ψ') ∨ {φ, ψ} ⊆ insert φ' (insert ψ' (R.erase (φ'⋀ψ')))

State before:
α : Formula
R L : Finset Formula
α_in_R : α ∈ R
c : TNode
φ ψ φ' ψ' : Formula
precond_eq : φ⋀ψ = α
R_cond_in : φ'⋀ψ' ∈ R
c_in : c = (L, insert φ' (insert ψ' (R.erase (φ'⋀ψ'))))
⊢ (α = φ' ∨ α = ψ' ∨ ¬α = φ'⋀ψ') ∨ {φ, ψ} ⊆ insert φ' (insert ψ' (R.erase (φ'⋀ψ')))
Tactic:
subst c_in
State after:
α : Formula
R L : Finset Formula
α_in_R : α ∈ R
φ ψ φ' ψ' : Formula
precond_eq : φ⋀ψ = α
R_cond_in : φ'⋀ψ' ∈ R
⊢ (α = φ' ∨ α = ψ' ∨ ¬α = φ'⋀ψ') ∨ {φ, ψ} ⊆ insert φ' (insert ψ' (R.erase (φ'⋀ψ')))

State before:
α : Formula
R L : Finset Formula
α_in_R : α ∈ R
φ ψ φ' ψ' : Formula
precond_eq : φ⋀ψ = α
R_cond_in : φ'⋀ψ' ∈ R
⊢ (α = φ' ∨ α = ψ' ∨ ¬α = φ'⋀ψ') ∨ {φ, ψ} ⊆ insert φ' (insert ψ' (R.erase (φ'⋀ψ')))
Tactic:
subst precond_eq
State after:
R L : Finset Formula
φ ψ φ' ψ' : Formula
R_cond_in : φ'⋀ψ' ∈ R
α_in_R : φ⋀ψ ∈ R
⊢ (φ⋀ψ = φ' ∨ φ⋀ψ = ψ' ∨ ¬φ⋀ψ = φ'⋀ψ') ∨ {φ, ψ} ⊆ insert φ' (insert ψ' (R.erase (φ'⋀ψ')))

State before:
R L : Finset Formula
φ ψ φ' ψ' : Formula
R_cond_in : φ'⋀ψ' ∈ R
α_in_R : φ⋀ψ ∈ R
⊢ (φ⋀ψ = φ' ∨ φ⋀ψ = ψ' ∨ ¬φ⋀ψ = φ'⋀ψ') ∨ {φ, ψ} ⊆ insert φ' (insert ψ' (R.erase (φ'⋀ψ')))
Tactic:
if φ = φ' ∧ ψ = ψ'
then
  apply Or.inr
  refine Finset.insert_subset_iff.mpr ?_
  aesop
else aesop
State after:
no goals

State before:
R L : Finset Formula
φ ψ φ' ψ' : Formula
R_cond_in : φ'⋀ψ' ∈ R
α_in_R : φ⋀ψ ∈ R
h✝ : φ = φ' ∧ ψ = ψ'
⊢ (φ⋀ψ = φ' ∨ φ⋀ψ = ψ' ∨ ¬φ⋀ψ = φ'⋀ψ') ∨ {φ, ψ} ⊆ insert φ' (insert ψ' (R.erase (φ'⋀ψ')))
Tactic:
apply Or.inr
State after:
case h
R L : Finset Formula
φ ψ φ' ψ' : Formula
R_cond_in : φ'⋀ψ' ∈ R
α_in_R : φ⋀ψ ∈ R
h✝ : φ = φ' ∧ ψ = ψ'
⊢ {φ, ψ} ⊆ insert φ' (insert ψ' (R.erase (φ'⋀ψ')))

State before:
case h
R L : Finset Formula
φ ψ φ' ψ' : Formula
R_cond_in : φ'⋀ψ' ∈ R
α_in_R : φ⋀ψ ∈ R
h✝ : φ = φ' ∧ ψ = ψ'
⊢ {φ, ψ} ⊆ insert φ' (insert ψ' (R.erase (φ'⋀ψ')))
Tactic:
refine Finset.insert_subset_iff.mpr ?_
State after:
case h
R L : Finset Formula
φ ψ φ' ψ' : Formula
R_cond_in : φ'⋀ψ' ∈ R
α_in_R : φ⋀ψ ∈ R
h✝ : φ = φ' ∧ ψ = ψ'
⊢ φ ∈ insert φ' (insert ψ' (R.erase (φ'⋀ψ'))) ∧ {ψ} ⊆ insert φ' (insert ψ' (R.erase (φ'⋀ψ')))

State before:
case h
R L : Finset Formula
φ ψ φ' ψ' : Formula
R_cond_in : φ'⋀ψ' ∈ R
α_in_R : φ⋀ψ ∈ R
h✝ : φ = φ' ∧ ψ = ψ'
⊢ φ ∈ insert φ' (insert ψ' (R.erase (φ'⋀ψ'))) ∧ {ψ} ⊆ insert φ' (insert ψ' (R.erase (φ'⋀ψ')))
Tactic:
aesop
State after:
no goals

State before:
R L : Finset Formula
φ ψ φ' ψ' : Formula
R_cond_in : φ'⋀ψ' ∈ R
α_in_R : φ⋀ψ ∈ R
h✝ : ¬(φ = φ' ∧ ψ = ψ')
⊢ (φ⋀ψ = φ' ∨ φ⋀ψ = ψ' ∨ ¬φ⋀ψ = φ'⋀ψ') ∨ {φ, ψ} ⊆ insert φ' (insert ψ' (R.erase (φ'⋀ψ')))
Tactic:
aesop
State after:
no goals

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
State after:
no goals

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:
simp_all
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 ∨ ~φ ∈ c.2 ∨ ~ψ ∈ c.2

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 ∨ ~φ ∈ c.2 ∨ ~ψ ∈ c.2
Tactic:
cases orule'
State after:
case bot
α : Formula
R L : Finset Formula
α_in_R : α ∈ R
c : TNode
φ ψ : Formula
precond_eq : ~(φ⋀ψ) = α
R_cond_in : {⊥} ⊆ R
c_in : ∃ a ∈ ∅, (L, R \ {⊥} ∪ a) = c
⊢ α ∈ c.2 ∨ ~φ ∈ c.2 ∨ ~ψ ∈ c.2

case not
α : Formula
R L : Finset Formula
α_in_R : α ∈ R
c : TNode
φ ψ : Formula
precond_eq : ~(φ⋀ψ) = α
φ✝ : Formula
R_cond_in : {φ✝, ~φ✝} ⊆ R
c_in : ∃ a ∈ ∅, (L, R \ {φ✝, ~φ✝} ∪ a) = c
⊢ α ∈ c.2 ∨ ~φ ∈ c.2 ∨ ~ψ ∈ c.2

case neg
α : Formula
R L : Finset Formula
α_in_R : α ∈ R
c : TNode
φ ψ : Formula
precond_eq : ~(φ⋀ψ) = α
φ✝ : Formula
R_cond_in : {~~φ✝} ⊆ R
c_in : ∃ a ∈ [{φ✝}], (L, R \ {~~φ✝} ∪ a) = c
⊢ α ∈ c.2 ∨ ~φ ∈ c.2 ∨ ~ψ ∈ c.2

case con
α : Formula
R L : Finset Formula
α_in_R : α ∈ R
c : TNode
φ ψ : Formula
precond_eq : ~(φ⋀ψ) = α
φ✝ ψ✝ : Formula
R_cond_in : {φ✝⋀ψ✝} ⊆ R
c_in : ∃ a ∈ [{φ✝, ψ✝}], (L, R \ {φ✝⋀ψ✝} ∪ a) = c
⊢ α ∈ c.2 ∨ ~φ ∈ c.2 ∨ ~ψ ∈ c.2

case ncon
α : Formula
R L : Finset Formula
α_in_R : α ∈ R
c : TNode
φ ψ : Formula
precond_eq : ~(φ⋀ψ) = α
φ✝ ψ✝ : Formula
R_cond_in : {~(φ✝⋀ψ✝)} ⊆ R
c_in : ∃ a ∈ [{~φ✝}, {~ψ✝}], (L, R \ {~(φ✝⋀ψ✝)} ∪ a) = c
⊢ α ∈ c.2 ∨ ~φ ∈ c.2 ∨ ~ψ ∈ c.2

State before:
α : Formula
R L : Finset Formula
α_in_R : α ∈ R
c : TNode
φ ψ : Formula
precond_eq : ~(φ⋀ψ) = α
φ' ψ' : Formula
R_cond_in : {~(φ'⋀ψ')} ⊆ R
c_in : ∃ a ∈ [{~φ'}, {~ψ'}], (L, R \ {~(φ'⋀ψ')} ∪ a) = c
⊢ α ∈ c.2 ∨ ~φ ∈ c.2 ∨ ~ψ ∈ c.2
Tactic:
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
State after:
no goals

State before:
case bot
α : Formula
R L : Finset Formula
α_in_R : α ∈ R
c : TNode
φ ψ : Formula
precond_eq : ~(φ⋀ψ) = α
R_cond_in : {⊥} ⊆ R
c_in : ∃ a ∈ ∅, (L, R \ {⊥} ∪ a) = c
⊢ α ∈ c.2 ∨ ~φ ∈ c.2 ∨ ~ψ ∈ c.2

case not
α : Formula
R L : Finset Formula
α_in_R : α ∈ R
c : TNode
φ ψ : Formula
precond_eq : ~(φ⋀ψ) = α
φ✝ : Formula
R_cond_in : {φ✝, ~φ✝} ⊆ R
c_in : ∃ a ∈ ∅, (L, R \ {φ✝, ~φ✝} ∪ a) = c
⊢ α ∈ c.2 ∨ ~φ ∈ c.2 ∨ ~ψ ∈ c.2

case neg
α : Formula
R L : Finset Formula
α_in_R : α ∈ R
c : TNode
φ ψ : Formula
precond_eq : ~(φ⋀ψ) = α
φ✝ : Formula
R_cond_in : {~~φ✝} ⊆ R
c_in : ∃ a ∈ [{φ✝}], (L, R \ {~~φ✝} ∪ a) = c
⊢ α ∈ c.2 ∨ ~φ ∈ c.2 ∨ ~ψ ∈ c.2

case con
α : Formula
R L : Finset Formula
α_in_R : α ∈ R
c : TNode
φ ψ : Formula
precond_eq : ~(φ⋀ψ) = α
φ✝ ψ✝ : Formula
R_cond_in : {φ✝⋀ψ✝} ⊆ R
c_in : ∃ a ∈ [{φ✝, ψ✝}], (L, R \ {φ✝⋀ψ✝} ∪ a) = c
⊢ α ∈ c.2 ∨ ~φ ∈ c.2 ∨ ~ψ ∈ c.2
Tactic:
all_goals aesop
State after:
no goals

State before:
α : Formula
R L : Finset Formula
α_in_R : α ∈ R
c : TNode
φ ψ : Formula
precond_eq : ~(φ⋀ψ) = α
φ' ψ' : Formula
R_cond_in : {~(φ'⋀ψ')} ⊆ R
c_in : ∃ a ∈ [{~φ'}, {~ψ'}], (L, R \ {~(φ'⋀ψ')} ∪ a) = c
⊢ α ∈ c.2 ∨ ~φ ∈ c.2 ∨ ~ψ ∈ c.2
Tactic:
simp at c_in
State after:
α : Formula
R L : Finset Formula
α_in_R : α ∈ R
c : TNode
φ ψ : Formula
precond_eq : ~(φ⋀ψ) = α
φ' ψ' : Formula
R_cond_in : {~(φ'⋀ψ')} ⊆ R
c_in : (L, insert (~φ') (R.erase (~(φ'⋀ψ')))) = c ∨ (L, insert (~ψ') (R.erase (~(φ'⋀ψ')))) = c
⊢ α ∈ c.2 ∨ ~φ ∈ c.2 ∨ ~ψ ∈ c.2

State before:
α : Formula
R L : Finset Formula
α_in_R : α ∈ R
c : TNode
φ ψ : Formula
precond_eq : ~(φ⋀ψ) = α
φ' ψ' : Formula
R_cond_in : {~(φ'⋀ψ')} ⊆ R
c_in : (L, insert (~φ') (R.erase (~(φ'⋀ψ')))) = c ∨ (L, insert (~ψ') (R.erase (~(φ'⋀ψ')))) = c
⊢ α ∈ c.2 ∨ ~φ ∈ c.2 ∨ ~ψ ∈ c.2
Tactic:
subst precond_eq
State after:
R L : Finset Formula
c : TNode
φ ψ φ' ψ' : Formula
R_cond_in : {~(φ'⋀ψ')} ⊆ R
c_in : (L, insert (~φ') (R.erase (~(φ'⋀ψ')))) = c ∨ (L, insert (~ψ') (R.erase (~(φ'⋀ψ')))) = c
α_in_R : ~(φ⋀ψ) ∈ R
⊢ ~(φ⋀ψ) ∈ c.2 ∨ ~φ ∈ c.2 ∨ ~ψ ∈ c.2

State before:
R L : Finset Formula
c : TNode
φ ψ φ' ψ' : Formula
R_cond_in : {~(φ'⋀ψ')} ⊆ R
c_in : (L, insert (~φ') (R.erase (~(φ'⋀ψ')))) = c ∨ (L, insert (~ψ') (R.erase (~(φ'⋀ψ')))) = c
α_in_R : ~(φ⋀ψ) ∈ R
⊢ ~(φ⋀ψ) ∈ c.2 ∨ ~φ ∈ c.2 ∨ ~ψ ∈ c.2
Tactic:
cases c_in
State after:
case inl
R L : Finset Formula
c : TNode
φ ψ φ' ψ' : Formula
R_cond_in : {~(φ'⋀ψ')} ⊆ R
α_in_R : ~(φ⋀ψ) ∈ R
h✝ : (L, insert (~φ') (R.erase (~(φ'⋀ψ')))) = c
⊢ ~(φ⋀ψ) ∈ c.2 ∨ ~φ ∈ c.2 ∨ ~ψ ∈ c.2

case inr
R L : Finset Formula
c : TNode
φ ψ φ' ψ' : Formula
R_cond_in : {~(φ'⋀ψ')} ⊆ R
α_in_R : ~(φ⋀ψ) ∈ R
h✝ : (L, insert (~ψ') (R.erase (~(φ'⋀ψ')))) = c
⊢ ~(φ⋀ψ) ∈ c.2 ∨ ~φ ∈ c.2 ∨ ~ψ ∈ c.2

State before:
R L : Finset Formula
c : TNode
φ ψ φ' ψ' : Formula
R_cond_in : {~(φ'⋀ψ')} ⊆ R
α_in_R : ~(φ⋀ψ) ∈ R
c_eq : (L, insert (~φ') (R.erase (~(φ'⋀ψ')))) = c
⊢ ~(φ⋀ψ) ∈ c.2 ∨ ~φ ∈ c.2 ∨ ~ψ ∈ c.2
Tactic:
case inl c_eq =>
  subst c_eq
  if φ = φ'
  then simp_all
  else aesop
State after:
no goals

State before:
R L : Finset Formula
c : TNode
φ ψ φ' ψ' : Formula
R_cond_in : {~(φ'⋀ψ')} ⊆ R
α_in_R : ~(φ⋀ψ) ∈ R
c_eq : (L, insert (~ψ') (R.erase (~(φ'⋀ψ')))) = c
⊢ ~(φ⋀ψ) ∈ c.2 ∨ ~φ ∈ c.2 ∨ ~ψ ∈ c.2
Tactic:
case inr c_eq =>
  subst c_eq
  if ψ = ψ'
  then simp_all
  else aesop
State after:
no goals

State before:
R L : Finset Formula
c : TNode
φ ψ φ' ψ' : Formula
R_cond_in : {~(φ'⋀ψ')} ⊆ R
α_in_R : ~(φ⋀ψ) ∈ R
c_eq : (L, insert (~φ') (R.erase (~(φ'⋀ψ')))) = c
⊢ ~(φ⋀ψ) ∈ c.2 ∨ ~φ ∈ c.2 ∨ ~ψ ∈ c.2
Tactic:
subst c_eq
State after:
R L : Finset Formula
φ ψ φ' ψ' : Formula
R_cond_in : {~(φ'⋀ψ')} ⊆ R
α_in_R : ~(φ⋀ψ) ∈ R
⊢ ~(φ⋀ψ) ∈ (L, insert (~φ') (R.erase (~(φ'⋀ψ')))).2 ∨
    ~φ ∈ (L, insert (~φ') (R.erase (~(φ'⋀ψ')))).2 ∨ ~ψ ∈ (L, insert (~φ') (R.erase (~(φ'⋀ψ')))).2

State before:
R L : Finset Formula
φ ψ φ' ψ' : Formula
R_cond_in : {~(φ'⋀ψ')} ⊆ R
α_in_R : ~(φ⋀ψ) ∈ R
⊢ ~(φ⋀ψ) ∈ (L, insert (~φ') (R.erase (~(φ'⋀ψ')))).2 ∨
    ~φ ∈ (L, insert (~φ') (R.erase (~(φ'⋀ψ')))).2 ∨ ~ψ ∈ (L, insert (~φ') (R.erase (~(φ'⋀ψ')))).2
Tactic:
if φ = φ'
then simp_all
else aesop
State after:
no goals

State before:
R L : Finset Formula
φ ψ φ' ψ' : Formula
R_cond_in : {~(φ'⋀ψ')} ⊆ R
α_in_R : ~(φ⋀ψ) ∈ R
h✝ : φ = φ'
⊢ ~(φ⋀ψ) ∈ (L, insert (~φ') (R.erase (~(φ'⋀ψ')))).2 ∨
    ~φ ∈ (L, insert (~φ') (R.erase (~(φ'⋀ψ')))).2 ∨ ~ψ ∈ (L, insert (~φ') (R.erase (~(φ'⋀ψ')))).2
Tactic:
simp_all
State after:
no goals

State before:
R L : Finset Formula
φ ψ φ' ψ' : Formula
R_cond_in : {~(φ'⋀ψ')} ⊆ R
α_in_R : ~(φ⋀ψ) ∈ R
h✝ : ¬φ = φ'
⊢ ~(φ⋀ψ) ∈ (L, insert (~φ') (R.erase (~(φ'⋀ψ')))).2 ∨
    ~φ ∈ (L, insert (~φ') (R.erase (~(φ'⋀ψ')))).2 ∨ ~ψ ∈ (L, insert (~φ') (R.erase (~(φ'⋀ψ')))).2
Tactic:
aesop
State after:
no goals

State before:
R L : Finset Formula
c : TNode
φ ψ φ' ψ' : Formula
R_cond_in : {~(φ'⋀ψ')} ⊆ R
α_in_R : ~(φ⋀ψ) ∈ R
c_eq : (L, insert (~ψ') (R.erase (~(φ'⋀ψ')))) = c
⊢ ~(φ⋀ψ) ∈ c.2 ∨ ~φ ∈ c.2 ∨ ~ψ ∈ c.2
Tactic:
subst c_eq
State after:
R L : Finset Formula
φ ψ φ' ψ' : Formula
R_cond_in : {~(φ'⋀ψ')} ⊆ R
α_in_R : ~(φ⋀ψ) ∈ R
⊢ ~(φ⋀ψ) ∈ (L, insert (~ψ') (R.erase (~(φ'⋀ψ')))).2 ∨
    ~φ ∈ (L, insert (~ψ') (R.erase (~(φ'⋀ψ')))).2 ∨ ~ψ ∈ (L, insert (~ψ') (R.erase (~(φ'⋀ψ')))).2

State before:
R L : Finset Formula
φ ψ φ' ψ' : Formula
R_cond_in : {~(φ'⋀ψ')} ⊆ R
α_in_R : ~(φ⋀ψ) ∈ R
⊢ ~(φ⋀ψ) ∈ (L, insert (~ψ') (R.erase (~(φ'⋀ψ')))).2 ∨
    ~φ ∈ (L, insert (~ψ') (R.erase (~(φ'⋀ψ')))).2 ∨ ~ψ ∈ (L, insert (~ψ') (R.erase (~(φ'⋀ψ')))).2
Tactic:
if ψ = ψ'
then simp_all
else aesop
State after:
no goals

State before:
R L : Finset Formula
φ ψ φ' ψ' : Formula
R_cond_in : {~(φ'⋀ψ')} ⊆ R
α_in_R : ~(φ⋀ψ) ∈ R
h✝ : ψ = ψ'
⊢ ~(φ⋀ψ) ∈ (L, insert (~ψ') (R.erase (~(φ'⋀ψ')))).2 ∨
    ~φ ∈ (L, insert (~ψ') (R.erase (~(φ'⋀ψ')))).2 ∨ ~ψ ∈ (L, insert (~ψ') (R.erase (~(φ'⋀ψ')))).2
Tactic:
simp_all
State after:
no goals

State before:
R L : Finset Formula
φ ψ φ' ψ' : Formula
R_cond_in : {~(φ'⋀ψ')} ⊆ R
α_in_R : ~(φ⋀ψ) ∈ R
h✝ : ¬ψ = ψ'
⊢ ~(φ⋀ψ) ∈ (L, insert (~ψ') (R.erase (~(φ'⋀ψ')))).2 ∨
    ~φ ∈ (L, insert (~ψ') (R.erase (~(φ'⋀ψ')))).2 ∨ ~ψ ∈ (L, insert (~ψ') (R.erase (~(φ'⋀ψ')))).2
Tactic:
aesop
State after:
no goals

State before:
case con
α : Formula
R L : Finset Formula
α_in_R : α ∈ R
c : TNode
φ ψ : Formula
precond_eq : ~(φ⋀ψ) = α
φ✝ ψ✝ : Formula
R_cond_in : {φ✝⋀ψ✝} ⊆ R
c_in : ∃ a ∈ [{φ✝, ψ✝}], (L, R \ {φ✝⋀ψ✝} ∪ a) = c
⊢ α ∈ c.2 ∨ ~φ ∈ c.2 ∨ ~ψ ∈ c.2
Tactic:
aesop
State after:
no goals

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:
apply Or.inl
State after:
case h
α : 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

State before:
case h
α : 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
Tactic:
aesop
State after:
no goals

State before:
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:
simp_all
State after:
no goals