import Spa.Lattice namespace Spa def FiniteHeightLattice.transport {α β : Type*} [Lattice β] [I : FiniteHeightLattice α] (f : α → β) (g : β → α) (hf : Monotone f) (hg : Monotone g) (hgf : Function.LeftInverse g f) (hfg : Function.LeftInverse f g) : FiniteHeightLattice β where toLattice := inferInstance longestChain := I.longestChain.map f (hf.strictMono_of_injective hgf.injective) chains_bounded := fun c => I.chains_bounded (c.map g (hg.strictMono_of_injective hfg.injective)) end Spa