Theorem: LO.System.implyLeft_cons_conj'! (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 𝓢
⊢ 𝓢 ⊢! (p :: Γ).conj' ⟶ q ↔ 𝓢 ⊢! p ⋏ Γ.conj' ⟶ q
Tactic:
induction Γ with
| nil =>
  simp [andImplyIffImplyImply'!];
  constructor;
  . intro h; apply imp_swap'!; exact dhyp! h;
  . intro h; exact imp_swap'! h ⨀ verum!;
| 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 𝓢
⊢ 𝓢 ⊢! [p].conj' ⟶ q ↔ 𝓢 ⊢! p ⋏ [].conj' ⟶ q
Tactic:
simp [andImplyIffImplyImply'!]
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 𝓢
⊢ 𝓢 ⊢! 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 𝓢
⊢ 𝓢 ⊢! 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 𝓢
⊢ 𝓢 ⊢! 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 𝓢
⊢ 𝓢 ⊢! 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 𝓢
⊢ 𝓢 ⊢! 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 𝓢
⊢ 𝓢 ⊢! p ⟶ ⊤ ⟶ q → 𝓢 ⊢! p ⟶ q
Tactic:
. intro h; apply imp_swap'!; exact dhyp! 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 𝓢
⊢ 𝓢 ⊢! 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 𝓢
⊢ 𝓢 ⊢! p ⟶ ⊤ ⟶ q → 𝓢 ⊢! p ⟶ q
Tactic:
. intro h; exact imp_swap'! h ⨀ verum!;
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 𝓢
⊢ 𝓢 ⊢! 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 𝓢
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 𝓢
h : 𝓢 ⊢! p ⟶ q
⊢ 𝓢 ⊢! p ⟶ ⊤ ⟶ q
Tactic:
apply imp_swap'!
State after:
case nil.mp.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 𝓢
h : 𝓢 ⊢! p ⟶ q
⊢ 𝓢 ⊢! ⊤ ⟶ p ⟶ q

State before:
case nil.mp.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 𝓢
h : 𝓢 ⊢! p ⟶ q
⊢ 𝓢 ⊢! ⊤ ⟶ p ⟶ q
Tactic:
exact dhyp! h
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 𝓢
⊢ 𝓢 ⊢! 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 𝓢
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 𝓢
h : 𝓢 ⊢! p ⟶ ⊤ ⟶ q
⊢ 𝓢 ⊢! p ⟶ q
Tactic:
exact imp_swap'! h ⨀ verum!
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 𝓢
q : F
ih : List F
tail_ih✝ : 𝓢 ⊢! (p :: ih).conj' ⟶ q✝ ↔ 𝓢 ⊢! p ⋏ ih.conj' ⟶ q✝
⊢ 𝓢 ⊢! (p :: q :: ih).conj' ⟶ q✝ ↔ 𝓢 ⊢! p ⋏ (q :: ih).conj' ⟶ q✝
Tactic:
simp
State after:
no goals