23 lines
769 B
Lean4
23 lines
769 B
Lean4
import Spa.Lattice
|
||
|
||
namespace Spa
|
||
|
||
def FiniteHeightLattice.transport {α β : Type*} [Lattice α] [Lattice β]
|
||
[I : FiniteHeightLattice α] (f : α → β) (g : β → α)
|
||
(hf : Monotone f) (hg : Monotone g)
|
||
(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 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 hfg.injective))
|
||
|
||
end Spa
|