Use mathlib definition of inverses for Isomorphism.lean
Signed-off-by: Danila Fedorin <danila.fedorin@gmail.com>
This commit is contained in:
@@ -5,20 +5,18 @@ namespace Spa
|
||||
def FiniteHeightLattice.transport {α β : Type*} [Lattice α] [Lattice β]
|
||||
[I : FiniteHeightLattice α] (f : α → β) (g : β → α)
|
||||
(hf : Monotone f) (hg : Monotone g)
|
||||
(hgf : ∀ a, g (f a) = a) (hfg : ∀ b, f (g b) = b) :
|
||||
(hgf : Function.LeftInverse g f) (hfg : Function.LeftInverse f g) :
|
||||
FiniteHeightLattice β where
|
||||
bot := f ⊥
|
||||
top := f ⊤
|
||||
height := I.height
|
||||
longestChain :=
|
||||
{ series :=
|
||||
I.longestChain.series.map f
|
||||
(hf.strictMono_of_injective (Function.LeftInverse.injective hgf))
|
||||
I.longestChain.series.map f (hf.strictMono_of_injective hgf.injective)
|
||||
head_series := congrArg f I.longestChain.head_series
|
||||
last_series := congrArg f I.longestChain.last_series
|
||||
length_series := I.longestChain.length_series }
|
||||
chains_bounded := fun c =>
|
||||
I.chains_bounded
|
||||
(c.map g (hg.strictMono_of_injective (Function.LeftInverse.injective hfg)))
|
||||
I.chains_bounded (c.map g (hg.strictMono_of_injective hfg.injective))
|
||||
|
||||
end Spa
|
||||
|
||||
@@ -516,7 +516,7 @@ def fixedHeight [FiniteHeightLattice B] (ks : List A) :
|
||||
FiniteHeightLattice (FiniteMap A B ks) :=
|
||||
FiniteHeightLattice.transport
|
||||
(ofIter ks) toIter (ofIter_monotone ks) toIter_monotone
|
||||
(toIter_ofIter ks) (fun fm => ofIter_toIter fm)
|
||||
(toIter_ofIter ks) ofIter_toIter
|
||||
|
||||
instance [FiniteHeightLattice B] : FiniteHeightLattice (FiniteMap A B ks) :=
|
||||
fixedHeight ks
|
||||
|
||||
Reference in New Issue
Block a user