Theorem: Matroid.loopless_iff_forall_circuit (Matroid/Loop.lean)

State before:
α : Type u_1
β : Type u_2
M N : Matroid α
e f : α
B L L' I X Y Z F C K : Set α
⊢ M.Loopless ↔ ∀ (C : Set α), M.Circuit C → 1 < C.encard
Tactic:
simp_rw [lt_iff_not_le, encard_le_one_iff_eq, not_or, not_exists, ← nonempty_iff_ne_empty]
State after:
α : Type u_1
β : Type u_2
M N : Matroid α
e f : α
B L L' I X Y Z F C K : Set α
⊢ M.Loopless ↔ ∀ (C : Set α), M.Circuit C → C.Nonempty ∧ ∀ (x : α), ¬C = {x}

State before:
α : Type u_1
β : Type u_2
M N : Matroid α
e f : α
B L L' I X Y Z F C K : Set α
⊢ M.Loopless ↔ ∀ (C : Set α), M.Circuit C → C.Nonempty ∧ ∀ (x : α), ¬C = {x}
Tactic:
refine ⟨fun h C hC ↦ ⟨hC.nonempty, fun e ↦ ?_⟩,
  fun h ↦ loopless_iff_forall_nonloop.2 fun e he ↦ (not_loop_iff he).1 fun hel ↦
    (h _ (singleton_circuit.2 hel)).2 e rfl⟩
State after:
α : Type u_1
β : Type u_2
M N : Matroid α
e✝ f : α
B L L' I X Y Z F C✝ K : Set α
h : M.Loopless
C : Set α
hC : M.Circuit C
e : α
⊢ ¬C = {e}

State before:
α : Type u_1
β : Type u_2
M N : Matroid α
e✝ f : α
B L L' I X Y Z F C✝ K : Set α
h : M.Loopless
C : Set α
hC : M.Circuit C
e : α
⊢ ¬C = {e}
Tactic:
rintro rfl
State after:
α : Type u_1
β : Type u_2
M N : Matroid α
e✝ f : α
B L L' I X Y Z F C K : Set α
h : M.Loopless
e : α
hC : M.Circuit {e}
⊢ False

State before:
α : Type u_1
β : Type u_2
M N : Matroid α
e✝ f : α
B L L' I X Y Z F C K : Set α
h : M.Loopless
e : α
hC : M.Circuit {e}
⊢ False
Tactic:
rw [singleton_circuit] at hC
State after:
α : Type u_1
β : Type u_2
M N : Matroid α
e✝ f : α
B L L' I X Y Z F C K : Set α
h : M.Loopless
e : α
hC : M.Loop e
⊢ False

State before:
α : Type u_1
β : Type u_2
M N : Matroid α
e✝ f : α
B L L' I X Y Z F C K : Set α
h : M.Loopless
e : α
hC : M.Loop e
⊢ False
Tactic:
exact M.not_loop e hC
State after:
no goals