fact: Definition derived_eqst2 (s1 s2 : Stream A) : hd s1 = hd s2 -> EqSt2 A (tl s1) (tl s2) -> EqSt2 A s1 s2 := let (x, x0) as s return (hd s = hd s2 -> EqSt2 A (tl s) (tl s2) -> EqSt2 A s s2) := s1 in (let (a, s) as s return (forall (a : A) (s0 : Stream A), hd (Cons a s0) = hd s -> EqSt2 A (tl (Cons a s0)) (tl s) -> EqSt2 A (Cons a s0) s) := s2 in fun (a0 : A) (s0 : Stream A) (H : hd (Cons a0 s0) = hd (Cons a s)) (H0 : EqSt2 A (tl (Cons a0 s0)) (tl (Cons a s))) => match H in (_ = a1) return (EqSt2 A (Cons a0 s0) (Cons a1 s)) with | refl_equal => eqst2 A s0 s a0 H0 end) x x0.
imports: Plus Streams