fact: Definition Notation_Friendly_BuildMostlySharpenedcADT {n n'} {consSigs : Vector.t consSig n} {methSigs : Vector.t methSig n'} (DelegateIDs : nat) (DelegateSigs : Fin.t DelegateIDs -> ADTSig) (rep : (Fin.t DelegateIDs -> Type) -> Type) (cConstructors : forall (DelegateReps : Fin.t DelegateIDs -> Type) (DelegateImpls : forall idx, ComputationalADT.pcADT (DelegateSigs idx) (DelegateReps idx)), ilist (B := fun Sig : consSig => ComputationalADT.cConstructorType (rep DelegateReps) (consDom Sig)) consSigs) (cMethods : forall (DelegateReps : Fin.t DelegateIDs -> Type) (DelegateImpls : forall idx, ComputationalADT.pcADT (DelegateSigs idx) (DelegateReps idx)), ilist (B := fun Sig : methSig => ComputationalADT.cMethodType (rep DelegateReps) (methDom Sig) (methCod Sig)) methSigs) (DelegateReps : Fin.t DelegateIDs -> Type) (DelegateImpls : forall idx, ComputationalADT.pcADT (DelegateSigs idx) (DelegateReps idx)) : ComputationalADT.cADT (BuildADTSig consSigs methSigs) := BuildcADT (imap (Build_cConsDef (rep DelegateReps)) (cConstructors DelegateReps DelegateImpls)) (imap (Build_cMethDef (Rep:=rep DelegateReps)) (cMethods DelegateReps DelegateImpls)).
imports: Coq.Lists.List Coq.Arith.Arith Fiat.Common Fiat.Computation Fiat.ADT.ADTSig Fiat.ADT.Core Fiat.ADT.ComputationalADT Fiat.Common.BoundedLookup Fiat.Common.ilist Fiat.Common.IterateBoundedIndex Fiat.ADTNotation.BuildADTSig Fiat.ADTNotation.BuildADT Fiat.ADTNotation.BuildComputationalADT Fiat.ADTNotation.BuildADTReplaceMethods Fiat.ADTRefinement.Core Fiat.ADTRefinement.GeneralRefinements Fiat.ADTRefinement.SetoidMorphisms Fiat.ADTRefinement.BuildADTSetoidMorphisms Coq.Strings.String