Skip to main content

lemma_bind_spec_parse_congruence

Function lemma_bind_spec_parse_congruence 

Source
pub proof fn lemma_bind_spec_parse_congruence<A1: SpecParser, A2: SpecParser<PVal = A1::PVal>, B1: SpecMap<Input = A1::PVal>, B2: SpecMap<Input = A2::PVal>, OutVal>(
    a1: A1,
    a2: A2,
    b1: B1,
    b2: B2,
)
where B1::Output: SpecParser<PVal = OutVal>, B2::Output: SpecParser<PVal = OutVal>,
Expand description
requires
forall |x: Seq<u8>| #[trigger] a1.spec_parse(x) == a2.spec_parse(x),
forall |key: A1::PVal, x: Seq<u8>| {
    #[trigger] b1.spec_map(key).spec_parse(x) == b2.spec_map(key).spec_parse(x)
},
ensures
forall |x: Seq<u8>| #[trigger] Bind(a1, b1).spec_parse(x) == Bind(a2, b2).spec_parse(x),