Theorem: LO.System.implyRight_cons_disj'! (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 𝓢
inst✝ : HasEFQ 𝓢
⊢ 𝓢 ⊢! p ⟶ (q :: Γ).disj' ↔ 𝓢 ⊢! p ⟶ q ⋎ Γ.disj'
Tactic:
induction Γ with
| nil =>
  simp;
  constructor;
  . intro h; exact imp_trans! h disj₁!;
  . intro h; exact imp_trans! h $ disj₃''! imp_id! efq!;
| cons q ih => simp;
State after:
no goals

State before:
case nil
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 𝓢
inst✝ : HasEFQ 𝓢
⊢ 𝓢 ⊢! p ⟶ [q].disj' ↔ 𝓢 ⊢! p ⟶ q ⋎ [].disj'
Tactic:
simp
State after:
case nil
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 𝓢
inst✝ : HasEFQ 𝓢
⊢ 𝓢 ⊢! p ⟶ q ↔ 𝓢 ⊢! p ⟶ q ⋎ ⊥

State before:
case nil
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 𝓢
inst✝ : HasEFQ 𝓢
⊢ 𝓢 ⊢! p ⟶ q ↔ 𝓢 ⊢! p ⟶ q ⋎ ⊥
Tactic:
constructor
State after:
case nil.mp
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 𝓢
inst✝ : HasEFQ 𝓢
⊢ 𝓢 ⊢! p ⟶ q → 𝓢 ⊢! p ⟶ q ⋎ ⊥

case nil.mpr
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 𝓢
inst✝ : HasEFQ 𝓢
⊢ 𝓢 ⊢! p ⟶ q ⋎ ⊥ → 𝓢 ⊢! p ⟶ q

State before:
case nil.mp
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 𝓢
inst✝ : HasEFQ 𝓢
⊢ 𝓢 ⊢! p ⟶ q → 𝓢 ⊢! p ⟶ q ⋎ ⊥

case nil.mpr
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 𝓢
inst✝ : HasEFQ 𝓢
⊢ 𝓢 ⊢! p ⟶ q ⋎ ⊥ → 𝓢 ⊢! p ⟶ q
Tactic:
. intro h; exact imp_trans! h disj₁!;
State after:
case nil.mpr
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 𝓢
inst✝ : HasEFQ 𝓢
⊢ 𝓢 ⊢! p ⟶ q ⋎ ⊥ → 𝓢 ⊢! p ⟶ q

State before:
case nil.mpr
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 𝓢
inst✝ : HasEFQ 𝓢
⊢ 𝓢 ⊢! p ⟶ q ⋎ ⊥ → 𝓢 ⊢! p ⟶ q
Tactic:
. intro h; exact imp_trans! h $ disj₃''! imp_id! efq!;
State after:
no goals

State before:
case nil.mp
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 𝓢
inst✝ : HasEFQ 𝓢
⊢ 𝓢 ⊢! p ⟶ q → 𝓢 ⊢! p ⟶ q ⋎ ⊥
Tactic:
intro h
State after:
case nil.mp
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 𝓢
inst✝ : HasEFQ 𝓢
h : 𝓢 ⊢! p ⟶ q
⊢ 𝓢 ⊢! p ⟶ q ⋎ ⊥

State before:
case nil.mp
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 𝓢
inst✝ : HasEFQ 𝓢
h : 𝓢 ⊢! p ⟶ q
⊢ 𝓢 ⊢! p ⟶ q ⋎ ⊥
Tactic:
exact imp_trans! h disj₁!
State after:
no goals

State before:
case nil.mpr
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 𝓢
inst✝ : HasEFQ 𝓢
⊢ 𝓢 ⊢! p ⟶ q ⋎ ⊥ → 𝓢 ⊢! p ⟶ q
Tactic:
intro h
State after:
case nil.mpr
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 𝓢
inst✝ : HasEFQ 𝓢
h : 𝓢 ⊢! p ⟶ q ⋎ ⊥
⊢ 𝓢 ⊢! p ⟶ q

State before:
case nil.mpr
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 𝓢
inst✝ : HasEFQ 𝓢
h : 𝓢 ⊢! p ⟶ q ⋎ ⊥
⊢ 𝓢 ⊢! p ⟶ q
Tactic:
exact imp_trans! h $ disj₃''! imp_id! efq!
State after:
no goals

State before:
case cons
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 𝓢
inst✝ : HasEFQ 𝓢
q : F
ih : List F
tail_ih✝ : 𝓢 ⊢! p ⟶ (q✝ :: ih).disj' ↔ 𝓢 ⊢! p ⟶ q✝ ⋎ ih.disj'
⊢ 𝓢 ⊢! p ⟶ (q✝ :: q :: ih).disj' ↔ 𝓢 ⊢! p ⟶ q✝ ⋎ (q :: ih).disj'
Tactic:
simp
State after:
no goals