def Comparse.NonExtensibleMessageFormat.isomorphic {Bytes : Type} [BytesLike Bytes] {a b : Type} (mf : NonExtensibleMessageFormat Bytes a) (f : a → b) (g : b → a) :
NonExtensibleMessageFormat Bytes b
Equations
- mf.isomorphic f g = mf.subsetIsomorphic (fun (x : a) => some (f x)) g
Instances For
- left_inv : Function.LeftInverse g f
Instances
- right_inv : Function.RightInverse g f
Instances
instance Comparse.NonExtensibleMessageFormat.isomorphic.instIsNonAmbiguousOfRightInverse {Bytes : Type} [BytesLike Bytes] {a b : Type} (mf : NonExtensibleMessageFormat Bytes a) (f : a → b) (g : b → a) [mf.IsNonAmbiguous] [RightInverse g f] :
(mf.isomorphic f g).IsNonAmbiguous
instance Comparse.NonExtensibleMessageFormat.isomorphic.instHasUniqueRepresentationOfLeftInverse {Bytes : Type} [BytesLike Bytes] {a b : Type} (mf : NonExtensibleMessageFormat Bytes a) (f : a → b) (g : b → a) [mf.HasUniqueRepresentation] [LeftInverse g f] :
(mf.isomorphic f g).HasUniqueRepresentation
instance Comparse.NonExtensibleMessageFormat.isomorphic.instParseConsumes {Bytes : Type} [BytesLike Bytes] {a b : Type} (mf : NonExtensibleMessageFormat Bytes a) (f : a → b) (g : b → a) [mf.ParseConsumes] :
(mf.isomorphic f g).ParseConsumes
@[simp]
theorem Comparse.NonExtensibleMessageFormat.isomorphic.wf_eq {Bytes : Type} [BytesLike Bytes] {a b : Type} (mf : NonExtensibleMessageFormat Bytes a) (f : a → b) (g : b → a) (pred : Bytes → Prop) [BytesCompatiblePred pred] (x : b) :
def Comparse.NonExtensibleMessageFormat.triviallyIsomorphic {Bytes : Type} [BytesLike Bytes] {a b : Type} (mf : NonExtensibleMessageFormat Bytes a) (f : a → b) (g : b → a) :
Equations
- mf.triviallyIsomorphic f g x✝¹ x✝ = mf.isomorphic f g
Instances For
instance Comparse.NonExtensibleMessageFormat.triviallyIsomorphic.instIsNonAmbiguous {Bytes : Type} [BytesLike Bytes] {a b : Type} (mf : NonExtensibleMessageFormat Bytes a) (f : a → b) (g : b → a) (h_left : Function.LeftInverse g f) (h_right : Function.RightInverse g f) [mf.IsNonAmbiguous] :
(mf.triviallyIsomorphic f g h_left h_right).IsNonAmbiguous
instance Comparse.NonExtensibleMessageFormat.triviallyIsomorphic.instHasUniqueRepresentation {Bytes : Type} [BytesLike Bytes] {a b : Type} (mf : NonExtensibleMessageFormat Bytes a) (f : a → b) (g : b → a) (h_left : Function.LeftInverse g f) (h_right : Function.RightInverse g f) [mf.HasUniqueRepresentation] :
(mf.triviallyIsomorphic f g h_left h_right).HasUniqueRepresentation
instance Comparse.NonExtensibleMessageFormat.triviallyIsomorphic.instParseConsumes {Bytes : Type} [BytesLike Bytes] {a b : Type} (mf : NonExtensibleMessageFormat Bytes a) (f : a → b) (g : b → a) (h_left : Function.LeftInverse g f) (h_right : Function.RightInverse g f) [mf.ParseConsumes] :
(mf.triviallyIsomorphic f g h_left h_right).ParseConsumes
@[simp]
theorem Comparse.NonExtensibleMessageFormat.triviallyIsomorphic.wf_eq {Bytes : Type} [BytesLike Bytes] {a b : Type} (mf : NonExtensibleMessageFormat Bytes a) (f : a → b) (g : b → a) (h_left : Function.LeftInverse g f) (h_right : Function.RightInverse g f) (pred : Bytes → Prop) [BytesCompatiblePred pred] (x : b) :
def Comparse.ExtensibleMessageFormat.isomorphic {Bytes : Type} [BytesLike Bytes] {a b : Type} (mf : ExtensibleMessageFormat Bytes a) (f : a → b) (g : b → a) :
ExtensibleMessageFormat Bytes b
Equations
- mf.isomorphic f g = mf.subsetIsomorphic (fun (x : a) => some (f x)) g
Instances For
instance Comparse.ExtensibleMessageFormat.isomorphic.instIsNonAmbiguousOfRightInverse {Bytes : Type} [BytesLike Bytes] {a b : Type} (mf : ExtensibleMessageFormat Bytes a) (f : a → b) (g : b → a) [mf.IsNonAmbiguous] [RightInverse g f] :
(mf.isomorphic f g).IsNonAmbiguous
instance Comparse.ExtensibleMessageFormat.isomorphic.instHasUniqueRepresentationOfLeftInverse {Bytes : Type} [BytesLike Bytes] {a b : Type} (mf : ExtensibleMessageFormat Bytes a) (f : a → b) (g : b → a) [mf.HasUniqueRepresentation] [LeftInverse g f] :
(mf.isomorphic f g).HasUniqueRepresentation
@[simp]
theorem Comparse.ExtensibleMessageFormat.isomorphic.wf_eq {Bytes : Type} [BytesLike Bytes] {a b : Type} (mf : ExtensibleMessageFormat Bytes a) (f : a → b) (g : b → a) (pred : Bytes → Prop) [BytesCompatiblePred pred] (x : b) :
def Comparse.ExtensibleMessageFormat.triviallyIsomorphic {Bytes : Type} [BytesLike Bytes] {a b : Type} (mf : ExtensibleMessageFormat Bytes a) (f : a → b) (g : b → a) :
Equations
- mf.triviallyIsomorphic f g x✝¹ x✝ = mf.isomorphic f g
Instances For
instance Comparse.ExtensibleMessageFormat.triviallyIsomorphic.instIsNonAmbiguous {Bytes : Type} [BytesLike Bytes] {a b : Type} (mf : ExtensibleMessageFormat Bytes a) (f : a → b) (g : b → a) (h_left : Function.LeftInverse g f) (h_right : Function.RightInverse g f) [mf.IsNonAmbiguous] :
(mf.triviallyIsomorphic f g h_left h_right).IsNonAmbiguous
instance Comparse.ExtensibleMessageFormat.triviallyIsomorphic.instHasUniqueRepresentation {Bytes : Type} [BytesLike Bytes] {a b : Type} (mf : ExtensibleMessageFormat Bytes a) (f : a → b) (g : b → a) (h_left : Function.LeftInverse g f) (h_right : Function.RightInverse g f) [mf.HasUniqueRepresentation] :
(mf.triviallyIsomorphic f g h_left h_right).HasUniqueRepresentation
@[simp]
theorem Comparse.ExtensibleMessageFormat.triviallyIsomorphic.wf_eq {Bytes : Type} [BytesLike Bytes] {a b : Type} (mf : ExtensibleMessageFormat Bytes a) (f : a → b) (g : b → a) (h_left : Function.LeftInverse g f) (h_right : Function.RightInverse g f) (pred : Bytes → Prop) [BytesCompatiblePred pred] (x : b) :
def Comparse.NonExtensibleMessageFormat.subtype {Bytes : Type} [BytesLike Bytes] {a : Type} (mf : NonExtensibleMessageFormat Bytes a) (p : a → Prop) [DecidablePred p] :
NonExtensibleMessageFormat Bytes (Subtype p)
Equations
Instances For
instance Comparse.NonExtensibleMessageFormat.subtype.instIsNonAmbiguousSubtype {Bytes : Type} [BytesLike Bytes] {a : Type} (mf : NonExtensibleMessageFormat Bytes a) (p : a → Prop) [DecidablePred p] [mf.IsNonAmbiguous] :
(mf.subtype p).IsNonAmbiguous
instance Comparse.NonExtensibleMessageFormat.subtype.instHasUniqueRepresentationSubtype {Bytes : Type} [BytesLike Bytes] {a : Type} (mf : NonExtensibleMessageFormat Bytes a) (p : a → Prop) [DecidablePred p] [mf.HasUniqueRepresentation] :
(mf.subtype p).HasUniqueRepresentation
instance Comparse.NonExtensibleMessageFormat.subtype.instParseConsumesSubtype {Bytes : Type} [BytesLike Bytes] {a : Type} (mf : NonExtensibleMessageFormat Bytes a) (p : a → Prop) [DecidablePred p] [mf.ParseConsumes] :
(mf.subtype p).ParseConsumes
@[simp]
theorem Comparse.NonExtensibleMessageFormat.subtype.wf_eq {Bytes : Type} [BytesLike Bytes] {a : Type} (mf : NonExtensibleMessageFormat Bytes a) (p : a → Prop) [DecidablePred p] (pred : Bytes → Prop) [BytesCompatiblePred pred] (x : Subtype p) :
def Comparse.ExtensibleMessageFormat.subtype {Bytes : Type} [BytesLike Bytes] {a : Type} (mf : ExtensibleMessageFormat Bytes a) (p : a → Prop) [DecidablePred p] :
ExtensibleMessageFormat Bytes (Subtype p)
Equations
Instances For
instance Comparse.ExtensibleMessageFormat.subtype.instIsNonAmbiguousSubtype {Bytes : Type} [BytesLike Bytes] {a : Type} (mf : ExtensibleMessageFormat Bytes a) (p : a → Prop) [DecidablePred p] [mf.IsNonAmbiguous] :
(mf.subtype p).IsNonAmbiguous
instance Comparse.ExtensibleMessageFormat.subtype.instHasUniqueRepresentationSubtype {Bytes : Type} [BytesLike Bytes] {a : Type} (mf : ExtensibleMessageFormat Bytes a) (p : a → Prop) [DecidablePred p] [mf.HasUniqueRepresentation] :
(mf.subtype p).HasUniqueRepresentation
@[simp]
theorem Comparse.ExtensibleMessageFormat.subtype.wf_eq {Bytes : Type} [BytesLike Bytes] {a : Type} (mf : ExtensibleMessageFormat Bytes a) (p : a → Prop) [DecidablePred p] (pred : Bytes → Prop) [BytesCompatiblePred pred] (x : Subtype p) :
def Comparse.NonExtensibleMessageFormat.prod {Bytes : Type} [BytesLike Bytes] {a b : Type} (mfa : NonExtensibleMessageFormat Bytes a) (mfb : NonExtensibleMessageFormat Bytes b) :
NonExtensibleMessageFormat Bytes (a × b)
Equations
- mfa.prod mfb = (mfa.sigma fun (x : a) => mfb).isomorphic Comparse.NonExtensibleMessageFormat.prod.f✝ Comparse.NonExtensibleMessageFormat.prod.g✝
Instances For
instance Comparse.NonExtensibleMessageFormat.prod.instIsNonAmbiguousProd {Bytes : Type} [BytesLike Bytes] {a b : Type} (mfa : NonExtensibleMessageFormat Bytes a) (mfb : NonExtensibleMessageFormat Bytes b) [mfa.IsNonAmbiguous] [mfb.IsNonAmbiguous] :
(mfa.prod mfb).IsNonAmbiguous
instance Comparse.NonExtensibleMessageFormat.prod.instHasUniqueRepresentationProd {Bytes : Type} [BytesLike Bytes] {a b : Type} (mfa : NonExtensibleMessageFormat Bytes a) (mfb : NonExtensibleMessageFormat Bytes b) [mfa.HasUniqueRepresentation] [mfb.HasUniqueRepresentation] :
(mfa.prod mfb).HasUniqueRepresentation
instance Comparse.NonExtensibleMessageFormat.prod.instParseConsumesProd {Bytes : Type} [BytesLike Bytes] {a b : Type} (mfa : NonExtensibleMessageFormat Bytes a) (mfb : NonExtensibleMessageFormat Bytes b) [mfa.ParseConsumes] :
(mfa.prod mfb).ParseConsumes
instance Comparse.NonExtensibleMessageFormat.prod.instParseConsumesProd_1 {Bytes : Type} [BytesLike Bytes] {a b : Type} (mfa : NonExtensibleMessageFormat Bytes a) (mfb : NonExtensibleMessageFormat Bytes b) [mfb.ParseConsumes] :
(mfa.prod mfb).ParseConsumes
@[simp]
theorem Comparse.NonExtensibleMessageFormat.prod.wf_eq {Bytes : Type} [BytesLike Bytes] {a b : Type} (mfa : NonExtensibleMessageFormat Bytes a) (mfb : NonExtensibleMessageFormat Bytes b) (pred : Bytes → Prop) [BytesCompatiblePred pred] (x : a × b) :
def Comparse.ExtensibleMessageFormat.prod {Bytes : Type} [BytesLike Bytes] {a b : Type} (mfa : NonExtensibleMessageFormat Bytes a) (mfb : ExtensibleMessageFormat Bytes b) :
ExtensibleMessageFormat Bytes (a × b)
Equations
- One or more equations did not get rendered due to their size.
Instances For
instance Comparse.ExtensibleMessageFormat.prod.instIsNonAmbiguousProdOfIsNonAmbiguous {Bytes : Type} [BytesLike Bytes] {a b : Type} (mfa : NonExtensibleMessageFormat Bytes a) (mfb : ExtensibleMessageFormat Bytes b) [mfa.IsNonAmbiguous] [mfb.IsNonAmbiguous] :
(prod mfa mfb).IsNonAmbiguous
instance Comparse.ExtensibleMessageFormat.prod.instHasUniqueRepresentationProdOfHasUniqueRepresentation {Bytes : Type} [BytesLike Bytes] {a b : Type} (mfa : NonExtensibleMessageFormat Bytes a) (mfb : ExtensibleMessageFormat Bytes b) [mfa.HasUniqueRepresentation] [mfb.HasUniqueRepresentation] :
(prod mfa mfb).HasUniqueRepresentation
@[simp]
theorem Comparse.ExtensibleMessageFormat.prod.wf_eq {Bytes : Type} [BytesLike Bytes] {a b : Type} (mfa : NonExtensibleMessageFormat Bytes a) (mfb : ExtensibleMessageFormat Bytes b) (pred : Bytes → Prop) [BytesCompatiblePred pred] (x : a × b) :
Equations
Instances For
instance Comparse.ExtensibleMessageFormat.instIsNonAmbiguousByteArrayByteArray {Bytes : Type} [BytesLike Bytes] :
@[simp]
theorem Comparse.ExtensibleMessageFormat.byteArray.wf_eq {Bytes : Type} [BytesLike Bytes] (pred : Bytes → Prop) [BytesCompatiblePred pred] (x : ByteArray) :
Equations
- One or more equations did not get rendered due to their size.
Instances For
instance Comparse.ExtensibleMessageFormat.instIsNonAmbiguousStringString {Bytes : Type} [BytesLike Bytes] :
instance Comparse.ExtensibleMessageFormat.instHasUniqueRepresentationStringString {Bytes : Type} [BytesLike Bytes] :
@[simp]
theorem Comparse.ExtensibleMessageFormat.string.wf_eq {Bytes : Type} [BytesLike Bytes] (pred : Bytes → Prop) [BytesCompatiblePred pred] (x : String) :
def Comparse.NonExtensibleMessageFormat.fixedLengthBytes {Bytes : Type} [BytesLike Bytes] (len : Nat) :
NonExtensibleMessageFormat Bytes { b : Bytes // BytesLike.length b = len }
Equations
- Comparse.NonExtensibleMessageFormat.fixedLengthBytes len = (Comparse.ExtensibleMessageFormat.bytes.subtype fun (b : Bytes) => Comparse.BytesLike.length b = len).toNonExtensible len ⋯
Instances For
instance Comparse.NonExtensibleMessageFormat.instIsNonAmbiguousSubtypeEqNatLengthFixedLengthBytes {Bytes : Type} [BytesLike Bytes] (len : Nat) :
instance Comparse.NonExtensibleMessageFormat.instHasUniqueRepresentationSubtypeEqNatLengthFixedLengthBytes {Bytes : Type} [BytesLike Bytes] (len : Nat) :
instance Comparse.NonExtensibleMessageFormat.fixedLengthBytes.instParseConsumesSubtypeEqNatLengthOfNeZero {Bytes : Type} [BytesLike Bytes] (len : Nat) [NeZero len] :
@[simp]
theorem Comparse.NonExtensibleMessageFormat.fixedLengthBytes.wf_eq {Bytes : Type} [BytesLike Bytes] (len : Nat) (pred : Bytes → Prop) [BytesCompatiblePred pred] (x : { b : Bytes // BytesLike.length b = len }) :
instance Comparse.NonExtensibleMessageFormat.instIsNonAmbiguousSubtypeByteArrayEqNatSizeFixedLengthByteArray {Bytes : Type} [BytesLike Bytes] (len : Nat) :
instance Comparse.NonExtensibleMessageFormat.instHasUniqueRepresentationSubtypeByteArrayEqNatSizeFixedLengthByteArray {Bytes : Type} [BytesLike Bytes] (len : Nat) :
instance Comparse.NonExtensibleMessageFormat.fixedLengthByteArray.instParseConsumesSubtypeByteArrayEqNatSizeOfNeZero {Bytes : Type} [BytesLike Bytes] (len : Nat) [NeZero len] :
def Comparse.NonExtensibleMessageFormat.bitVec {Bytes : Type} [BytesLike Bytes] (w : Nat) :
NonExtensibleMessageFormat Bytes (BitVec (8 * w))
Equations
- One or more equations did not get rendered due to their size.
Instances For
instance Comparse.NonExtensibleMessageFormat.instIsNonAmbiguousBitVecHMulNatOfNatBitVec {Bytes : Type} [BytesLike Bytes] (w : Nat) :
(bitVec w).IsNonAmbiguous
instance Comparse.NonExtensibleMessageFormat.instHasUniqueRepresentationBitVecHMulNatOfNatBitVec {Bytes : Type} [BytesLike Bytes] (w : Nat) :
instance Comparse.NonExtensibleMessageFormat.bitVec.instParseConsumesBitVecHMulNatOfNatOfNeZero {Bytes : Type} [BytesLike Bytes] (w : Nat) [NeZero w] :
(bitVec w).ParseConsumes
Equations
Instances For
instance Comparse.NonExtensibleMessageFormat.instIsNonAmbiguousUInt8Uint8 {Bytes : Type} [BytesLike Bytes] :
instance Comparse.NonExtensibleMessageFormat.instHasUniqueRepresentationUInt8Uint8 {Bytes : Type} [BytesLike Bytes] :
instance Comparse.NonExtensibleMessageFormat.instParseConsumesUInt8Uint8 {Bytes : Type} [BytesLike Bytes] :
@[simp]
theorem Comparse.NonExtensibleMessageFormat.uint8.wf_eq {Bytes : Type} [BytesLike Bytes] (pred : Bytes → Prop) [BytesCompatiblePred pred] (x : UInt8) :
Equations
Instances For
instance Comparse.NonExtensibleMessageFormat.instIsNonAmbiguousUInt16Uint16 {Bytes : Type} [BytesLike Bytes] :
instance Comparse.NonExtensibleMessageFormat.instHasUniqueRepresentationUInt16Uint16 {Bytes : Type} [BytesLike Bytes] :
instance Comparse.NonExtensibleMessageFormat.instParseConsumesUInt16Uint16 {Bytes : Type} [BytesLike Bytes] :
@[simp]
theorem Comparse.NonExtensibleMessageFormat.uint16.wf_eq {Bytes : Type} [BytesLike Bytes] (pred : Bytes → Prop) [BytesCompatiblePred pred] (x : UInt16) :
Equations
Instances For
instance Comparse.NonExtensibleMessageFormat.instIsNonAmbiguousUInt32Uint32 {Bytes : Type} [BytesLike Bytes] :
instance Comparse.NonExtensibleMessageFormat.instHasUniqueRepresentationUInt32Uint32 {Bytes : Type} [BytesLike Bytes] :
instance Comparse.NonExtensibleMessageFormat.instParseConsumesUInt32Uint32 {Bytes : Type} [BytesLike Bytes] :
@[simp]
theorem Comparse.NonExtensibleMessageFormat.uint32.wf_eq {Bytes : Type} [BytesLike Bytes] (pred : Bytes → Prop) [BytesCompatiblePred pred] (x : UInt32) :
Equations
Instances For
instance Comparse.NonExtensibleMessageFormat.instIsNonAmbiguousUInt64Uint64 {Bytes : Type} [BytesLike Bytes] :
instance Comparse.NonExtensibleMessageFormat.instHasUniqueRepresentationUInt64Uint64 {Bytes : Type} [BytesLike Bytes] :
instance Comparse.NonExtensibleMessageFormat.instParseConsumesUInt64Uint64 {Bytes : Type} [BytesLike Bytes] :
@[simp]
theorem Comparse.NonExtensibleMessageFormat.uint64.wf_eq {Bytes : Type} [BytesLike Bytes] (pred : Bytes → Prop) [BytesCompatiblePred pred] (x : UInt64) :
def Comparse.NonExtensibleMessageFormat.fin8 {Bytes : Type} [BytesLike Bytes] (n : Nat) (h : n ≤ 256) :
NonExtensibleMessageFormat Bytes (Fin n)
Equations
- One or more equations did not get rendered due to their size.
Instances For
instance Comparse.NonExtensibleMessageFormat.instIsNonAmbiguousFinFin8 {Bytes : Type} [BytesLike Bytes] (n : Nat) (h : n ≤ 256) :
(fin8 n h).IsNonAmbiguous
instance Comparse.NonExtensibleMessageFormat.instHasUniqueRepresentationFinFin8 {Bytes : Type} [BytesLike Bytes] (n : Nat) (h : n ≤ 256) :
(fin8 n h).HasUniqueRepresentation
instance Comparse.NonExtensibleMessageFormat.instParseConsumesFinFin8 {Bytes : Type} [BytesLike Bytes] (n : Nat) (h : n ≤ 256) :
(fin8 n h).ParseConsumes
Equations
- One or more equations did not get rendered due to their size.
Instances For
instance Comparse.NonExtensibleMessageFormat.instIsNonAmbiguousBoolBool {Bytes : Type} [BytesLike Bytes] :
instance Comparse.NonExtensibleMessageFormat.instHasUniqueRepresentationBoolBool {Bytes : Type} [BytesLike Bytes] :
instance Comparse.NonExtensibleMessageFormat.instParseConsumesBoolBool {Bytes : Type} [BytesLike Bytes] :
@[simp]
theorem Comparse.NonExtensibleMessageFormat.bool.wf_eq {Bytes : Type} [BytesLike Bytes] (pred : Bytes → Prop) [BytesCompatiblePred pred] (x : Bool) :
Equations
- One or more equations did not get rendered due to their size.
Instances For
instance Comparse.NonExtensibleMessageFormat.instIsNonAmbiguousNatSlowNat {Bytes : Type} [BytesLike Bytes] :
instance Comparse.NonExtensibleMessageFormat.instHasUniqueRepresentationNatSlowNat {Bytes : Type} [BytesLike Bytes] :
instance Comparse.NonExtensibleMessageFormat.instParseConsumesNatSlowNat {Bytes : Type} [BytesLike Bytes] :
@[simp]
theorem Comparse.NonExtensibleMessageFormat.slowNat.wf_eq {Bytes : Type} [BytesLike Bytes] (pred : Bytes → Prop) [BytesCompatiblePred pred] (x : Nat) :
def Comparse.NonExtensibleMessageFormat.slowBytes {Bytes : Type} [BytesLike Bytes] :
NonExtensibleMessageFormat Bytes Bytes
Equations
- One or more equations did not get rendered due to their size.
Instances For
instance Comparse.NonExtensibleMessageFormat.instIsNonAmbiguousSlowBytes {Bytes : Type} [BytesLike Bytes] :
instance Comparse.NonExtensibleMessageFormat.instHasUniqueRepresentationSlowBytes {Bytes : Type} [BytesLike Bytes] :
instance Comparse.NonExtensibleMessageFormat.instParseConsumesSlowBytes {Bytes : Type} [BytesLike Bytes] :
@[simp]
theorem Comparse.NonExtensibleMessageFormat.slowBytes.wf_eq {Bytes : Type} [BytesLike Bytes] (pred : Bytes → Prop) [BytesCompatiblePred pred] (x : Bytes) :
Equations
- One or more equations did not get rendered due to their size.
Instances For
instance Comparse.NonExtensibleMessageFormat.instIsNonAmbiguousStringSlowString {Bytes : Type} [BytesLike Bytes] :
instance Comparse.NonExtensibleMessageFormat.instParseConsumesStringSlowString {Bytes : Type} [BytesLike Bytes] :
@[simp]
theorem Comparse.NonExtensibleMessageFormat.slowString.wf_eq {Bytes : Type} [BytesLike Bytes] (pred : Bytes → Prop) [BytesCompatiblePred pred] (x : String) :
slowString.wf pred x