mirror of
https://github.com/idris-lang/Idris2.git
synced 2024-12-01 01:09:03 +03:00
c17d4ff0a5
This is quite fiddly as it the blocks might be in different contexts so we need to keep track of which variables correspond in the scrutinees of the blocks. Once that's done, check the terms at the leaves convert, then check the corresponding variables convert. This may not be perfect yet, because we only look at case scrutinees to find correspondence. It might also be a bit slower than it could be, but at least these checks are quite rare. Fixes #208 and maybe some others?
13 lines
398 B
Idris
13 lines
398 B
Idris
twice : Char -> Char -> Char -> Char -> Nat -> (Nat, Nat)
|
|
twice w x y z Z = (Z, Z)
|
|
twice m n o p (S x)
|
|
= case twice m n o p x of
|
|
(a, b) => (S a, S b)
|
|
|
|
bothS : Int -> String -> (Nat, Nat) -> (Nat, Nat)
|
|
bothS test dummy = \(c, d) => (S c, S d)
|
|
|
|
pf : (x : Nat) -> twice 'a' 'b' 'c' 'd' (S x)
|
|
= bothS 99 "red balloons" (twice 'a' 'b' 'c' 'd' x)
|
|
pf k = Refl -- Refl
|