Matroid.SupportClass γ means that for M : Matroid α, terms of type γ α have a notion of
'supported' that depends only on the ground set of M. For sets, this is containment in M.E,
and for elements, this is membership in M.E.
Instances
Supportedness of a pure sort. (Everything is supported.)
Supportedness of lists.
Equations
- Matroid.SupportClass.list = { supported := fun {α : Type ?u.1} (M : Matroid α) (X : List α) => ∀ e ∈ X, e ∈ M.E, congr := @Matroid.SupportClass.list._proof_1 }
Supportedness of elements.
Equations
- Matroid.SupportClass.id = { supported := fun {α : Type ?u.1} (M : Matroid α) (x : id α) => x ∈ M.E, congr := @Matroid.SupportClass.id._proof_1 }
Supportedness of sets.
Equations
- Matroid.SupportClass.set = { supported := fun {α : Type ?u.1} (M : Matroid α) (X : Set α) => X ⊆ M.E, congr := @Matroid.SupportClass.set._proof_1 }
Supportedness of sets of supported types.
Equations
- Matroid.SupportClass.toSet γ = { supported := fun {α : Type ?u.2} (M : Matroid α) (s : Set (γ α)) => ∀ x ∈ s, Matroid.SupportClass.supported M x, congr := ⋯ }
Supportedness of tuples of supported types.
Equations
- Matroid.SupportClass.toFun = { supported := fun {α : Type ?u.2} (M : Matroid α) (X : ι → γ α) => ∀ (i : ι), Matroid.SupportClass.supported M (X i), congr := ⋯ }
Supportedness of lists of supported types.
Equations
- Matroid.SupportClass.toList = { supported := fun {α : Type ?u.2} (M : Matroid α) (L : List (γ α)) => ∀ x ∈ L, Matroid.SupportClass.supported M x, congr := ⋯ }
Matroid.TransferClass γ δ contains the data needed to move terms of type
γ α to ones of type δ β via a function f : α → β. Transferred values need to respect
supportedness in a given matroid.
- transferEmpty {α : Type u} {β : Type v} : IsEmpty β → (x : γ α) → SupportClass.supported (emptyOn α) x → δ β
- supported_transfer ⦃α : Type u⦄ ⦃β : Type v⦄ ⦃M : Matroid α⦄ ⦃f : α → β⦄ (hf : Set.InjOn f M.E) ⦃x : γ α⦄ : SupportClass.supported M x → SupportClass.supported (M.map f hf) (transfer f x)
- supported_transferEmpty ⦃α : Type u⦄ ⦃β : Type v⦄ (hβ : IsEmpty β) (x : γ α) (hx : SupportClass.supported (emptyOn α) x) : SupportClass.supported (emptyOn β) (transferEmpty hβ x hx)
Instances
Equations
- One or more equations did not get rendered due to their size.
Equations
- One or more equations did not get rendered due to their size.
Equations
- One or more equations did not get rendered due to their size.
Equations
- One or more equations did not get rendered due to their size.
Equations
- One or more equations did not get rendered due to their size.
Equations
- One or more equations did not get rendered due to their size.
Equations
- One or more equations did not get rendered due to their size.
A function from matroids is grounded if it always takes values in the ground set.
Instances
- supported ⦃α : Type u⦄ (M : Matroid α) (x : γ α) : SupportClass.supported M x → SupportClass.supported M (F M x)
Instances
A predicate of type γ α → Prop is a GroundedPred if it is only true for elements of γ α
that are supported by M.
Instances
- supported ⦃α : Type u⦄ ⦃M : Matroid α⦄ ⦃x : γ₁ α⦄ ⦃y : γ₂ α⦄ : P M x y → SupportClass.supported M x ∧ SupportClass.supported M y
Instances
Instances
- of_empty ⦃α : Type u⦄ ⦃β : Type v⦄ (hβ : IsEmpty β) ⦃x : γ₁ α⦄ (hx : SupportClass.supported (emptyOn α) x) (hx' : SupportClass.supported (emptyOn α) (F (emptyOn α) x)) : TransferClass.transferEmpty hβ (F (emptyOn α) x) hx' = G (emptyOn β) (TransferClass.transferEmpty hβ x hx)
- map_eq ⦃α : Type u⦄ ⦃β : Type v⦄ ⦃M : Matroid α⦄ ⦃f : α → β⦄ (hf : Set.InjOn f M.E) ⦃x : γ₁ α⦄ : SupportClass.supported M x → TransferClass.transfer f (F M x) = G (M.map f hf) (TransferClass.transfer f x)
Instances
This could be generalized further like InvariantFun,
allowing the output type to take values in a sort depending on the matroid type
- of_empty ⦃α : Type u⦄ ⦃β : Type v⦄ (hβ : IsEmpty β) ⦃x : γ₁ α⦄ ⦃x' : γ₂ α⦄ (hx : SupportClass.supported (emptyOn α) x) (hx' : SupportClass.supported (emptyOn α) x') : F (emptyOn α) x x' = G (emptyOn β) (TransferClass.transferEmpty hβ x hx) (TransferClass.transferEmpty hβ x' hx')
- map_eq ⦃α : Type u⦄ ⦃β : Type v⦄ ⦃M : Matroid α⦄ ⦃f : α → β⦄ (hf : Set.InjOn f M.E) ⦃x : γ₁ α⦄ ⦃x' : γ₂ α⦄ : SupportClass.supported M x → SupportClass.supported M x' → F M x x' = G (M.map f hf) (TransferClass.transfer f x) (TransferClass.transfer f x')