Theorem: LO.System.or_assoc'! (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 ⋎ q ⋎ r ↔ 𝓢 ⊢! (p ⋎ q) ⋎ r
Tactic:
constructor
State after:
case 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 ⋎ r → 𝓢 ⊢! (p ⋎ q) ⋎ r

case 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) ⋎ r → 𝓢 ⊢! p ⋎ q ⋎ r

State before:
case 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 ⋎ r → 𝓢 ⊢! (p ⋎ q) ⋎ r

case 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) ⋎ r → 𝓢 ⊢! p ⋎ q ⋎ r
Tactic:
. intro h;
  exact disj₃'!
    (implyOrLeft'! $ implyOrLeft'! imp_id!)
    (by
      apply provable_iff_provable.mpr;
      apply deduct_iff.mpr;
      exact disj₃'! (implyOrLeft'! $ implyOrRight'! imp_id!) (implyOrRight'! imp_id!) id!;
    )
    h;
State after:
case 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) ⋎ r → 𝓢 ⊢! p ⋎ q ⋎ r

State before:
case 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) ⋎ r → 𝓢 ⊢! p ⋎ q ⋎ r
Tactic:
. intro h;
  exact disj₃'!
    (by
      apply provable_iff_provable.mpr;
      apply deduct_iff.mpr;
      exact disj₃'! (implyOrLeft'! imp_id!) (implyOrRight'! $ implyOrLeft'! imp_id!) id!;
    )
    (implyOrRight'! $ implyOrRight'! imp_id!)
    h;
State after:
no goals

State before:
case 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 ⋎ r → 𝓢 ⊢! (p ⋎ q) ⋎ r
Tactic:
intro h
State after:
case 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 ⋎ r
⊢ 𝓢 ⊢! (p ⋎ q) ⋎ r

State before:
case 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 ⋎ r
⊢ 𝓢 ⊢! (p ⋎ q) ⋎ r
Tactic:
exact disj₃'!
  (implyOrLeft'! $ implyOrLeft'! imp_id!)
  (by
    apply provable_iff_provable.mpr;
    apply deduct_iff.mpr;
    exact disj₃'! (implyOrLeft'! $ implyOrRight'! imp_id!) (implyOrRight'! imp_id!) id!;
  )
  h
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 𝓢
h : 𝓢 ⊢! p ⋎ q ⋎ r
⊢ 𝓢 ⊢! q ⋎ r ⟶ (p ⋎ q) ⋎ r
Tactic:
apply provable_iff_provable.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 𝓢
h : 𝓢 ⊢! p ⋎ q ⋎ r
⊢ [] ⊢[𝓢]! q ⋎ r ⟶ (p ⋎ q) ⋎ r

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 𝓢
h : 𝓢 ⊢! p ⋎ q ⋎ r
⊢ [] ⊢[𝓢]! q ⋎ r ⟶ (p ⋎ q) ⋎ r
Tactic:
apply deduct_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 𝓢
h : 𝓢 ⊢! p ⋎ q ⋎ r
⊢ [q ⋎ r] ⊢[𝓢]! (p ⋎ q) ⋎ r

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 𝓢
h : 𝓢 ⊢! p ⋎ q ⋎ r
⊢ [q ⋎ r] ⊢[𝓢]! (p ⋎ q) ⋎ r
Tactic:
exact disj₃'! (implyOrLeft'! $ implyOrRight'! imp_id!) (implyOrRight'! imp_id!) id!
State after:
no goals

State before:
case 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) ⋎ r → 𝓢 ⊢! p ⋎ q ⋎ r
Tactic:
intro h
State after:
case 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) ⋎ r
⊢ 𝓢 ⊢! p ⋎ q ⋎ r

State before:
case 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) ⋎ r
⊢ 𝓢 ⊢! p ⋎ q ⋎ r
Tactic:
exact disj₃'!
  (by
    apply provable_iff_provable.mpr;
    apply deduct_iff.mpr;
    exact disj₃'! (implyOrLeft'! imp_id!) (implyOrRight'! $ implyOrLeft'! imp_id!) id!;
  )
  (implyOrRight'! $ implyOrRight'! imp_id!)
  h
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 𝓢
h : 𝓢 ⊢! (p ⋎ q) ⋎ r
⊢ 𝓢 ⊢! p ⋎ q ⟶ p ⋎ q ⋎ r
Tactic:
apply provable_iff_provable.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 𝓢
h : 𝓢 ⊢! (p ⋎ q) ⋎ r
⊢ [] ⊢[𝓢]! p ⋎ q ⟶ p ⋎ q ⋎ r

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 𝓢
h : 𝓢 ⊢! (p ⋎ q) ⋎ r
⊢ [] ⊢[𝓢]! p ⋎ q ⟶ p ⋎ q ⋎ r
Tactic:
apply deduct_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 𝓢
h : 𝓢 ⊢! (p ⋎ q) ⋎ r
⊢ [p ⋎ q] ⊢[𝓢]! p ⋎ q ⋎ r

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 𝓢
h : 𝓢 ⊢! (p ⋎ q) ⋎ r
⊢ [p ⋎ q] ⊢[𝓢]! p ⋎ q ⋎ r
Tactic:
exact disj₃'! (implyOrLeft'! imp_id!) (implyOrRight'! $ implyOrLeft'! imp_id!) id!
State after:
no goals