fact: Definition FullySharpenedUnderDelegates (Sig : ADTSig) (spec : ADT Sig) (adt : SharpenedUnderDelegates Sig) := forall (DelegateReps : Fin.t (Sharpened_DelegateIDs adt) -> Type) (DelegateImpls : forall idx, pcADT (Sharpened_DelegateSigs adt idx) (DelegateReps idx)) (ValidImpls : forall idx : Fin.t (Sharpened_DelegateIDs adt), refineADT (Sharpened_DelegateSpecs adt idx) (LiftcADT (existT _ _ (DelegateImpls idx)))), refineADT spec (LiftcADT (Sharpened_Implementation adt DelegateReps DelegateImpls)).
imports: Coq.Lists.List Coq.Strings.String Fiat.Common Fiat.Common.ilist Fiat.Common.BoundedLookup Fiat.ADT.Core Fiat.ADT.ComputationalADT Fiat.ADTRefinement.Core Fiat.ADTRefinement.SetoidMorphisms