def sc_length_take
bend-collections-laws-math@1.0.0.0 · proofs/lib/list.bend:288
import bend-collections-laws-math@1.0.0.0/proofs/lib/list.bend as List
import Base
import bend-collections-laws-math@1.0.0.0/proofs/lib/logic.bend as L
import bend-collections-laws-math@1.0.0.0/proofs/lib/nat.bend as N
import bend-collections-laws-math@1.0.0.0/spec/lib/common.bend as SC
288def sc_length_take(-A: Data, +xs: List<&2, A>, +n: Nat, +h: {Nat.is_le(n, SC.length(A, xs)) == True{} : Bool}) -> {SC.length(A, SC.take(A, xs, n)) == n : Nat}:
289 match xs n:
290 case Nil{} 0n:
291 {==}
292 case Nil{} 1n+m:
293 Empty.absurd({SC.length(A, SC.take(A, Nil{}, 1n+m)) == 1n+m : Nat}, L.false_true(h))
294 case Con{a, t} 0n:
295 {==}
296 case Con{a, t} 1n+m:
297 N.succ_cong(SC.length(A, SC.take(A, t, m)), m, sc_length_take(A, t, m, h))