fact: Fixpoint absMethod' (dom : list Type) (cod : option Type) : (oldRep -> methodType' oldRep dom cod) -> newRep -> (methodType' newRep dom cod) := match dom return (oldRep -> methodType' oldRep dom cod) -> newRep -> (methodType' newRep dom cod) with | nil => match cod return (oldRep -> methodType' oldRep [] cod) -> newRep -> (methodType' newRep [] cod) with | Some cod' => fun oldMethod nr => {nr' | forall or, or ≃ nr -> exists or', (oldMethod or) ↝ or' /\ fst or' ≃ fst nr' /\ snd or' = snd nr'}%comp | None => fun oldMethod nr => {nr' | forall or, or ≃ nr -> exists or', (oldMethod or) ↝ or' /\ or' ≃ nr'}%comp end | cons d dom' => fun oldMethod nr t => absMethod' dom' cod (fun or => oldMethod or t) nr end.
imports: Fiat.Common Fiat.Computation Fiat.ADT.ADTSig Fiat.ADT.Core Fiat.ADTRefinement.Core Fiat.ADTRefinement.SetoidMorphisms Fiat.ADTRefinement.GeneralRefinements