# closure -- closure of a subset of a matroid

## Synopsis

• Usage:
closure(M, S)
• Inputs:
• M, ,
• S, a set, of indices, or a list of elements in M
• Outputs:

## Description

The closure of a subset S of a matroid (E, B) is the set cl(S) := {x $\in$ E : rank(S) = rank(S $\cup \{x\}$) }. The closure operator 2^E -> 2^E, S $\mapsto$ cl(S), completely determines the matroid (indeed, the maximal proper closed sets - i.e. hyperplanes - already determine the matroid).

 i1 : M = matroid({a,b,c,d},{{a,b},{a,c}}) o1 = a matroid of rank 2 on 4 elements o1 : Matroid i2 : for s in subsets M_* do print(toString s | " has closure " | toString closure_M s) {} has closure {3} {a} has closure {0, 3} {b} has closure {1, 2, 3} {a, b} has closure {0, 1, 2, 3} {c} has closure {1, 2, 3} {a, c} has closure {0, 1, 2, 3} {b, c} has closure {1, 2, 3} {a, b, c} has closure {0, 1, 2, 3} {d} has closure {3} {a, d} has closure {0, 3} {b, d} has closure {1, 2, 3} {a, b, d} has closure {0, 1, 2, 3} {c, d} has closure {1, 2, 3} {a, c, d} has closure {0, 1, 2, 3} {b, c, d} has closure {1, 2, 3} {a, b, c, d} has closure {0, 1, 2, 3} i3 : F = flats M o3 = {set {3}, set {0, 3}, set {1, 2, 3}, set {0, 1, 2, 3}} o3 : List i4 : all(F, f -> closure_M f === f) o4 = true