Theorem: LO.System.forthbackConjRemove (Logic/Logic/HilbertStyle/Supplemental.lean)

State before:
F : Type u_1
inst✝⁴ : LogicalConnective F
inst✝³ : DecidableEq F
S : Type u_2
inst✝² : System F S
𝓢 : S
inst✝¹ : Minimal 𝓢
p q r : F
Γ Δ : List F
inst✝ : System.NegationEquiv 𝓢
⊢ 𝓢 ⊢! (List.remove p Γ).conj' ⋏ p ⟶ Γ.conj'
Tactic:
apply deduct'!
State after:
case h
F : Type u_1
inst✝⁴ : LogicalConnective F
inst✝³ : DecidableEq F
S : Type u_2
inst✝² : System F S
𝓢 : S
inst✝¹ : Minimal 𝓢
p q r : F
Γ Δ : List F
inst✝ : System.NegationEquiv 𝓢
⊢ [(List.remove p Γ).conj' ⋏ p] ⊢[𝓢]! Γ.conj'

State before:
case h
F : Type u_1
inst✝⁴ : LogicalConnective F
inst✝³ : DecidableEq F
S : Type u_2
inst✝² : System F S
𝓢 : S
inst✝¹ : Minimal 𝓢
p q r : F
Γ Δ : List F
inst✝ : System.NegationEquiv 𝓢
⊢ [(List.remove p Γ).conj' ⋏ p] ⊢[𝓢]! Γ.conj'
Tactic:
apply iff_provable_list_conj.mpr
State after:
case h
F : Type u_1
inst✝⁴ : LogicalConnective F
inst✝³ : DecidableEq F
S : Type u_2
inst✝² : System F S
𝓢 : S
inst✝¹ : Minimal 𝓢
p q r : F
Γ Δ : List F
inst✝ : System.NegationEquiv 𝓢
⊢ ∀ p_1 ∈ Γ, { ctx := [(List.remove p Γ).conj' ⋏ p] } ⊢! p_1

State before:
case h
F : Type u_1
inst✝⁴ : LogicalConnective F
inst✝³ : DecidableEq F
S : Type u_2
inst✝² : System F S
𝓢 : S
inst✝¹ : Minimal 𝓢
p q r : F
Γ Δ : List F
inst✝ : System.NegationEquiv 𝓢
⊢ ∀ p_1 ∈ Γ, { ctx := [(List.remove p Γ).conj' ⋏ p] } ⊢! p_1
Tactic:
intro q hq
State after:
case h
F : Type u_1
inst✝⁴ : LogicalConnective F
inst✝³ : DecidableEq F
S : Type u_2
inst✝² : System F S
𝓢 : S
inst✝¹ : Minimal 𝓢
p q✝ r : F
Γ Δ : List F
inst✝ : System.NegationEquiv 𝓢
q : F
hq : q ∈ Γ
⊢ { ctx := [(List.remove p Γ).conj' ⋏ p] } ⊢! q

State before:
case h
F : Type u_1
inst✝⁴ : LogicalConnective F
inst✝³ : DecidableEq F
S : Type u_2
inst✝² : System F S
𝓢 : S
inst✝¹ : Minimal 𝓢
p q✝ r : F
Γ Δ : List F
inst✝ : System.NegationEquiv 𝓢
q : F
hq : q ∈ Γ
⊢ { ctx := [(List.remove p Γ).conj' ⋏ p] } ⊢! q
Tactic:
by_cases e : q = p
State after:
case pos
F : Type u_1
inst✝⁴ : LogicalConnective F
inst✝³ : DecidableEq F
S : Type u_2
inst✝² : System F S
𝓢 : S
inst✝¹ : Minimal 𝓢
p q✝ r : F
Γ Δ : List F
inst✝ : System.NegationEquiv 𝓢
q : F
hq : q ∈ Γ
e : q = p
⊢ { ctx := [(List.remove p Γ).conj' ⋏ p] } ⊢! q

case neg
F : Type u_1
inst✝⁴ : LogicalConnective F
inst✝³ : DecidableEq F
S : Type u_2
inst✝² : System F S
𝓢 : S
inst✝¹ : Minimal 𝓢
p q✝ r : F
Γ Δ : List F
inst✝ : System.NegationEquiv 𝓢
q : F
hq : q ∈ Γ
e : ¬q = p
⊢ { ctx := [(List.remove p Γ).conj' ⋏ p] } ⊢! q

State before:
case pos
F : Type u_1
inst✝⁴ : LogicalConnective F
inst✝³ : DecidableEq F
S : Type u_2
inst✝² : System F S
𝓢 : S
inst✝¹ : Minimal 𝓢
p q✝ r : F
Γ Δ : List F
inst✝ : System.NegationEquiv 𝓢
q : F
hq : q ∈ Γ
e : q = p
⊢ { ctx := [(List.remove p Γ).conj' ⋏ p] } ⊢! q

case neg
F : Type u_1
inst✝⁴ : LogicalConnective F
inst✝³ : DecidableEq F
S : Type u_2
inst✝² : System F S
𝓢 : S
inst✝¹ : Minimal 𝓢
p q✝ r : F
Γ Δ : List F
inst✝ : System.NegationEquiv 𝓢
q : F
hq : q ∈ Γ
e : ¬q = p
⊢ { ctx := [(List.remove p Γ).conj' ⋏ p] } ⊢! q
Tactic:
. subst e; exact conj₂'! id!;
State after:
case neg
F : Type u_1
inst✝⁴ : LogicalConnective F
inst✝³ : DecidableEq F
S : Type u_2
inst✝² : System F S
𝓢 : S
inst✝¹ : Minimal 𝓢
p q✝ r : F
Γ Δ : List F
inst✝ : System.NegationEquiv 𝓢
q : F
hq : q ∈ Γ
e : ¬q = p
⊢ { ctx := [(List.remove p Γ).conj' ⋏ p] } ⊢! q

State before:
case neg
F : Type u_1
inst✝⁴ : LogicalConnective F
inst✝³ : DecidableEq F
S : Type u_2
inst✝² : System F S
𝓢 : S
inst✝¹ : Minimal 𝓢
p q✝ r : F
Γ Δ : List F
inst✝ : System.NegationEquiv 𝓢
q : F
hq : q ∈ Γ
e : ¬q = p
⊢ { ctx := [(List.remove p Γ).conj' ⋏ p] } ⊢! q
Tactic:
. exact iff_provable_list_conj.mp (conj₁'! id!) q (by apply List.mem_remove_iff.mpr; simp_all);
State after:
no goals

State before:
case pos
F : Type u_1
inst✝⁴ : LogicalConnective F
inst✝³ : DecidableEq F
S : Type u_2
inst✝² : System F S
𝓢 : S
inst✝¹ : Minimal 𝓢
p q✝ r : F
Γ Δ : List F
inst✝ : System.NegationEquiv 𝓢
q : F
hq : q ∈ Γ
e : q = p
⊢ { ctx := [(List.remove p Γ).conj' ⋏ p] } ⊢! q
Tactic:
subst e
State after:
case pos
F : Type u_1
inst✝⁴ : LogicalConnective F
inst✝³ : DecidableEq F
S : Type u_2
inst✝² : System F S
𝓢 : S
inst✝¹ : Minimal 𝓢
q✝ r : F
Γ Δ : List F
inst✝ : System.NegationEquiv 𝓢
q : F
hq : q ∈ Γ
⊢ { ctx := [(List.remove q Γ).conj' ⋏ q] } ⊢! q

State before:
case pos
F : Type u_1
inst✝⁴ : LogicalConnective F
inst✝³ : DecidableEq F
S : Type u_2
inst✝² : System F S
𝓢 : S
inst✝¹ : Minimal 𝓢
q✝ r : F
Γ Δ : List F
inst✝ : System.NegationEquiv 𝓢
q : F
hq : q ∈ Γ
⊢ { ctx := [(List.remove q Γ).conj' ⋏ q] } ⊢! q
Tactic:
exact conj₂'! id!
State after:
no goals

State before:
case neg
F : Type u_1
inst✝⁴ : LogicalConnective F
inst✝³ : DecidableEq F
S : Type u_2
inst✝² : System F S
𝓢 : S
inst✝¹ : Minimal 𝓢
p q✝ r : F
Γ Δ : List F
inst✝ : System.NegationEquiv 𝓢
q : F
hq : q ∈ Γ
e : ¬q = p
⊢ { ctx := [(List.remove p Γ).conj' ⋏ p] } ⊢! q
Tactic:
exact iff_provable_list_conj.mp (conj₁'! id!) q (by apply List.mem_remove_iff.mpr; simp_all)
State after:
no goals

State before:
F : Type u_1
inst✝⁴ : LogicalConnective F
inst✝³ : DecidableEq F
S : Type u_2
inst✝² : System F S
𝓢 : S
inst✝¹ : Minimal 𝓢
p q✝ r : F
Γ Δ : List F
inst✝ : System.NegationEquiv 𝓢
q : F
hq : q ∈ Γ
e : ¬q = p
⊢ q ∈ List.remove p Γ
Tactic:
apply List.mem_remove_iff.mpr
State after:
F : Type u_1
inst✝⁴ : LogicalConnective F
inst✝³ : DecidableEq F
S : Type u_2
inst✝² : System F S
𝓢 : S
inst✝¹ : Minimal 𝓢
p q✝ r : F
Γ Δ : List F
inst✝ : System.NegationEquiv 𝓢
q : F
hq : q ∈ Γ
e : ¬q = p
⊢ q ∈ Γ ∧ q ≠ p

State before:
F : Type u_1
inst✝⁴ : LogicalConnective F
inst✝³ : DecidableEq F
S : Type u_2
inst✝² : System F S
𝓢 : S
inst✝¹ : Minimal 𝓢
p q✝ r : F
Γ Δ : List F
inst✝ : System.NegationEquiv 𝓢
q : F
hq : q ∈ Γ
e : ¬q = p
⊢ q ∈ Γ ∧ q ≠ p
Tactic:
simp_all
State after:
no goals